本文发表于入职啦(公众号: ruzhila) 大家可以访问入职啦学习更多的编程实战。
代码已经开源:🚀 fgpt 欢迎大家star⭐和fork 👏
先看看今天达到的效果: 具体效果可以点击查看 原图效果
接着上一篇文章,我们继续实现fgpt
命令行工具,之前已经实现了根据命令行参数返回ChatGPT的结果,这次我们要实现更多的功能,比如支持文件输入、交互式输入等。
Shell的管道输入
Unix/Linux 的Shell是非常强大的,它支持管道输入,比如下面的命令:
git diff | fgpt "Write a git commit bief with follow diff"
这个命令,相当于把git diff
的输出作为输入,传递给fgpt
,然后fgpt
返回一个git commit
的描述。
根据之前的代码实现,是支持多段消息输入的方式, 从程序的数据流程上规划了多段消息的组成:
- 第一部分: 作为系统提示, 在后续的
Code
模式上可以起作用,就是给ChatGPT
设计一个角色 - 第二部分: 作为用户输入, 主要是是命令行的输入, 也就是
Write a git commit bief ...
这段文本 - 第三部分: 作为文件或者管道输入, 也就是
git diff
的输出
对应就是要拼出一个这样的数据结构:
[
{
"role": "system",
"message": "Your are a developer", // 根据参数来确定
},
{
"role": "user",
"message": "Write a git commit bief with follow diff" // 从命令行输入
},
{
"role": "user",
"message": "......" // 从文件或者管道输入
}