OpenAI实现根据描述创建shell命令

最近调研openai实现该需求的可行性,这里总结下

同类产品调研

  1. iterm2最近3.5.0 beta版上线了该功能,不过毕竟beta版本体验很鸡肋,大致的实现方案是,根本用户输入的描述拼凑上下文,请求openai,iterm2选择的模型是text-davinci-003即GPT模型。获取多个结果后,都进行了展示,并没有只选择第一个
  2. fig也推出了ai功能,但ai这块并没有直接开源,因此具体细节不确定,但通过开源社区的讨论可以知道背后还是用的openai-codex。体验上描述提交后,只只展示一个
  3. zsh下zsh_codex使用的openai,同时选择的模型是code-davinci-002即codex模型。以zsh_codex实现为例,获取多个结果后,只展示第一个。

由上可以看到,都是使用的openai,区别主要是选择的算法模型-配置不同,同时针对返回的结果处理有所区别即体验区别

验证

demo见这里

实际测试使用gpt/codex来生成shell命令都是可以的,这点符合预期。

但模型/配置在两种模型下有所区别。以下是需要注意的地方。

  1. 模型-prompt

gpt和codex在上下文的构建上有区别。codex需要明确语言环境,gpt需要明确具体需求。

  • codex
1
#!/bin/bash\n\n# ${text}.\n
  • gpt
1
我想写一个命令,需求是${text}。\n
  1. 要有句号,如上可以看到句号和换行,这个有必要
  2. temperature的值0-1差别很大,0是完全准确,1是最大程度可能的答案即模糊,在上面调研部分发现,iterm2配置的0,而zsh配置的0.5。具体多少还是看选择的模型和使用场景决定吧,这里也是仅供参考。

写在最后

  1. 综上,在使用openai前提下,根据描述生成命令很容易实现了。实际体验来说,该功能只能算是个辅助,毕竟单靠一句自然语言描述很难准确生成一条命令,因此在确保体验流畅的前提下给用户提供命令参考OK。

相关文档