未来几个月或者几年内,真正出现差异化的将是开发人员的生产力。对于积极地将人工智能融入到工作流程的工程师来说,这将是一个巨大的优势。
原文链接:https://kadekillary.work/posts/1000x-eng/
未经授权,禁止转载!
译者 | 弯月
责编 | 王子彧
出品 | CSDN(ID:CSDNnews)
几千年来,人们一直在四处寻找 10 倍速工程师。不幸的是,由于通货膨胀的影响,如今 10 倍速工程师已经不够了,我们需要更大的收益、更大的胜利、更多的代码、更多的 PR、更少的 linting 等等……因此,在这篇文章中,我将介绍如何利用 OpenAI 的 API 提供一系列命令行包装函数,大幅提升工作效率。
首先,你需要一个 OpenAI API 密钥。为此,你需要注册 OpenAI 账号(
https://openai.com/blog/openai-api)。
注意,我不使用 bash 或 Mac 的 zsh。我使用的是 Fish。但实际上使用哪种命令行工具并不重要,你也可以试试看在 bash 或 zsh。
下面,我们开始。
Hey GPT
大语言模型能够提高专业开发人员的工作效率,GitHub Copilot 已经证明了这个方向的可行性。这意味着开发人员不必担心未来的工作前景,且软件的生产与分发方式不会发生剧烈的变化。
然而,大语言模型的影响力不仅于此。大语言模型将成为专业程序员的工具,但过于关注狭隘的用途可能会导致我们错失未来推动更大变化的潜力。
我们需要做的第一件事是,获取我们可能遇到的每个问题的答案。
# model: gpt-4 is in private beta (have to get from waitlist)# model: gpt-3.5-turbo (if you don’t have access)function hey_gpt set prompt \'(echo $argv | string join ‘ ‘)\’ set gpt (curl https://api.openai.com/v1/chat/completions -s \ -H “Content-Type: application/json” \ -H “Authorization: Bearer $OPENAI_KEY” \ -d ‘{ “model”: “gpt-4”, “messages”: [{“role”: “user”, “content”: “‘$prompt'”}], “temperature”: 0.7, “stream”: true }’) for text in $gpt if test $text = ‘data: [DONE]’ break else if string match -q –regex “role” $text continue else if string match -q –regex “content” $text echo -n $text | string replace ‘data: ‘ ” | jq -r -j ‘.choices[0].delta.content’ else continue end endend
注意,如果你想复制上述代码的话,
需要安装 jq(
https://ravilabio.info/notes/unix/jq.html)。
我不打算深入介绍模型参数的微调,更多相关内容,请点击这里(
https://platform.openai.com/docs/api-reference/chat/create)。
此处,我给这个函数起了个别名:h,为的是简化输入:
很好,下面我们来尝试一点有用的功能。
Data GPT
我发现自己最常使用的一种模式是:提示+数据。
function data_gpt -a prompt data set prompt_input (echo “$prompt: $data” | string join ‘ ‘) curl https://api.openai.com/v1/chat/completions -s \ -H “Content-Type: application/json” \ -H “Authorization: Bearer $OPENAI_API_KEY” \ -d ‘{ “model”: “gpt-4”, “messages”: [{“role”: “user”, “content”: “‘$prompt_input'”}], “temperature”: 0.7 }’ | jq -r ‘.choices[0].message.content’end
生成的数据集在这里:
https://gist.githubusercontent.com/kadekillary/8c31580c6a339e476ed5b1a92b5c2875/raw/9d98452b688fd1d9feeb37551850294cc8df6580/nba.csv
显然,这里的用例非常广泛。我还尝试了另一个版本,可以读取管道的输入,但转义过程很混乱,现在写入文件和 cat 似乎更整洁了。
到目前为止,这些示例与使用 ChatGPT 获得的体验非常相似。但也存在一些差异:
1.我发现通过命令行拿 GPT 做实验更方便;
2.在其他命令中使用这些功能的能力,例如可以结合 GitHub 的 CLI 或 Jira CLI;
3.最后,你还可以链接多个调用,与使用 LangChain 等工具的感觉一样。
IMG GPT
最后这个例子是创建图像。
function img_gpt -a prompt set create_img (curl https://api.openai.com/v1/images/generations -s \ -H “Content-Type: application/json” \ -H “Authorization: Bearer $OPENAI_API_KEY” \ -d ‘{ “prompt”: “‘$prompt'”, “n”: 1, “size”: “1024×1024” }’) echo $create_img | jq set url (echo $create_img | jq -r ‘.data[0].url’) set rand_num (random 1 1000000) curl -s $url -o img-“$rand_num”.pngend
生成图像如下:
openai edits api
还有一个有用的例子是代码编辑。基本可以实现目标:修改或编辑代码,提高运行时的复杂性,重写为单行指令,添加文档字符串等等。但是,我不打算使用 fish 为其生成包装器,而是使用自己编写的代码:
function openai_edits_api h ‘can you generate a golang script that reads from stdin and sends that to the OpenAI Code Edits API endpoint – include only the code nothing else’ | string replace ‘“`’ ” > openai_edits_api.go h ‘can you generate the commands to build and run the golang script – only include the commands’ | string replace ‘“`’ ” > openai_edits_api.sh data_gpt ‘can you generate some tests for the following golang script’ (cat openai_edits_api.go | string collect) | string replace ‘“`’ ” > openai_edits_api_test.go data_gpt ‘can you generate a makefile for a golang project with the following files’ (ls) | string replace ‘“`’ ” > Makefileend
看上去有点混乱,但经过基本的整理,你至少可以完成90%的工作。
总结
最后,我们需要考虑的一件事是,这只是一个开端。最近,OpenAI 宣布了插件,无疑是让 ChatGPT 如虎添翼。我认为,未来几个月或者几年内,真正出现差异化的将是开发人员的生产力。对于积极地将人工智能融入到工作流程的工程师来说,这将是一个巨大的优势。我认为,即将出现一种快速原型制作与模拟相结合的范例,帮助我们隔离和测试项目的各个组件。我不认为,程序员会被取代,更多的是提供有趣的新方法来尝试和解决更模糊领域更大的问题。
我希望通过本文,能让你对潜在的新工作流程和效率的提升有所了解。