ChatGPT 和我写了个小工具:Pipe2GPT

开通了尊贵的 ChatGPT Plus 之后,在平时做些控制台操作的时候,就多了个习惯——把各种控制台内容投喂给 ChatGPT,看他如何反馈。结果还是不错的,经过适当的 Prompt 设计,ChatGPT 不但能够读懂这些输出内容,更可以提供进一步排查或者解决问题的建议。

懒惰是进步的动力——我连拷贝黏贴都懒了,还是想 ChatGPT 帮我写个小工具吧。按照官方客户端情况来说,Python 才是一等公民,然而为了方便分发,而且不是自己动手,我选择了高大上的 Golang。

实现思路

其实起初我是想模仿 kubectl,用 krew 插件的形式写个 gpt-diag 子命令,例如 kubectl gpt-diag pod xxxx,直接将 Describe Pod 内容输出,结合一个关于诊断 Kubernetes Pod 信息的 Prompt 来对某种对象,于是我让 ChatGPT 使用 Cobra 给我生成一个这样的框架。有趣的是,生成途中,它根据我提供的这些对象名称,自动给这个程序加了个简介——一个 Kubernetes 检查工具。

命令行代码生成之后,要求它用接口、类的方式来定义各种检测行为,这里包含了 Pod、Node、Event、API Server、ETCD 等在 kubectl 命令中能够拿到输出的内容,每个类都有自己的 Prompt,利用 Kubernetes 获取信息,OpenAI Client 进行解答。

在这之后,我意识到一个问题:这玩法太传统了,我压根不需要替 ChatGPT 做这种前期工作,于是我删掉了这套代码,另起炉灶。

所以以下的工作步骤就四班顺滑了:

  1. 要求 ChatGPT 输出 Shell 脚本,用来初始化一个 Golang CLI 应用的目录结构。然后用 Goland 打开。
  2. ChatGPT 生成代码,读取环境变量中的 OpenAI API Key
  3. 加入一个配置文件,要求 ChatGPT 判断命令行参数,根据 JSON 格式,生成代码
  4. 继续生成代码,从管道读取输入,加入 Prompt,调用 OpenAI。

说起来还是比较辛苦的,实际上这些功能在 ChatGPT 4.0 中一个 Prompt 就差不多搞定了:

用 golang 编写一个 CLI 应用,它带有一个配置文件,格式如下: { “data”:{“k8s”: “简明扼要地用 Kubernetes 专家的身份判断一下这段输出有什> 么问题,要整齐列出问题对象和可能原因以及操作建议:”} } 这个命令行接受 –type 参数,参数值就是配置文件中的 data.[key]。 另外这个命令还要从环境变量中读取 OPENAI_APIKEY 运行时,这个工具从管道接收其它应用输出的内容,根据从配置文件中取得的值作为 > Prompt,调用 OpenAI 的 API,获得反馈内容。

我这里测试的时候,只有模型选择不太合适,其它都可以直接进行调试。

生成代码之后,Debug 一下下,基本就 OK 了。

接下来又让他生成了双语版本的 README.md。以及一个用于 golang 交叉构建的 GitHub Action。

最后,这个非人产生的项目保存在了 https://github.com/fleeto/pipe2gpt

运行效果大致如下:

接下来我可能会在项目 README.md 里面写一句:本 REPO 仅接受 AI 生成代码,人工勿入,面斥不雅

Avatar
崔秀龙

简单,是大师的责任;我们凡夫俗子,能做到清楚就很不容易了。

comments powered by Disqus
下一页
上一页