OpenAI实现根据描述创建shell命令
最近调研openai实现该需求的可行性,这里总结下
同类产品调研
- iterm2最近3.5.0 beta版上线了该功能,不过毕竟beta版本体验很鸡肋,大致的实现方案是,根本用户输入的描述拼凑上下文,请求openai,iterm2选择的模型是
text-davinci-003
即GPT模型。获取多个结果后,都进行了展示,并没有只选择第一个 - fig也推出了ai功能,但ai这块并没有直接开源,因此具体细节不确定,但通过开源社区的讨论可以知道背后还是用的openai-codex。体验上描述提交后,只只展示一个
- zsh下zsh_codex使用的openai,同时选择的模型是
code-davinci-002
即codex模型。以zsh_codex实现为例,获取多个结果后,只展示第一个。
由上可以看到,都是使用的openai,区别主要是选择的算法模型-配置不同,同时针对返回的结果处理有所区别即体验区别
验证
demo见这里
实际测试使用gpt/codex来生成shell命令都是可以的,这点符合预期。
但模型/配置在两种模型下有所区别。以下是需要注意的地方。
- 模型-prompt
gpt和codex在上下文的构建上有区别。codex需要明确语言环境,gpt需要明确具体需求。
- codex
1 | #!/bin/bash\n\n# ${text}.\n |
- gpt
1 | 我想写一个命令,需求是${text}。\n |
- 要有句号,如上可以看到句号和换行,这个有必要
- temperature的值0-1差别很大,0是完全准确,1是最大程度可能的答案即模糊,在上面调研部分发现,iterm2配置的0,而zsh配置的0.5。具体多少还是看选择的模型和使用场景决定吧,这里也是仅供参考。
写在最后
- 综上,在使用openai前提下,根据描述生成命令很容易实现了。实际体验来说,该功能只能算是个辅助,毕竟单靠一句自然语言描述很难准确生成一条命令,因此在确保体验流畅的前提下给用户提供命令参考OK。