openai+api+key免费
未来几个月或者几年内,真正出现差异化的将是开发人员的生产力。对于积极地将人工智能融入到工作流程的工程师来说,这将是一个巨大的优势。
原文链接: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": "1024x1024" }') 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 如虎添翼。我认为,未来几个月或者几年内,真正出现差异化的将是开发人员的生产力。对于积极地将人工智能融入到工作流程的工程师来说,这将是一个巨大的优势。我认为,即将出现一种快速原型制作与模拟相结合的范例,帮助我们隔离和测试项目的各个组件。我不认为,程序员会被取代,更多的是提供有趣的新方法来尝试和解决更模糊领域更大的问题。
我希望通过本文,能让你对潜在的新工作流程和效率的提升有所了解。
关于评论
评论1:只是代码写得快最多让你成为 5 倍速工程师。找几个写代码快的人很容易。
软件行业中的超高生产力是判断哪些问题需要解决。Richard Hipp 想的不是如何用 golang 订外卖,而是怎样更有效的存储数据。这并不是 ChatGPT 能解决的编程问题。如果 ChatGPT 不能完全解决这个问题,那就是很小的生产力提升, 因为最难的部分在于如何表述问题。
代码写得快,对于高效率工程师来说并不是需要解决的问题。ChatGPT 是个很棒的工具,几年之内我们也都会用它,它会改变一切。但它并不能成为经验丰富的工程师的对手。
评论2:同感,作为开发人员,我的工作是维护已有的系统,大部分工作内容都是决定哪些工作值得做、发掘或收集知识、找出修改哪些代码可以用最小的代价换取最大的成功。
许多时候还需要和客户或非技术人员讨论,判断现有功能能否满足他们的需求。
我一直在观察这次的 AI 热潮,而且一直不理解——我很怀疑,也许 GPT 可以分析成百上千个项目然后告诉我该做什么,甚至会让我把一些私有代码复制粘贴到我自己的项目中,但这并非我所愿。
也许它在编程的一小部分领域中效果不错,但同样,我并不觉得这与阅读文档并生成样板代码有什么区别。而且我对于它能改进代码也不感兴趣,毕竟让它改进代码的前提是你要提出正确的问题,而提出正确的问题才是工作中最难的部分,敲代码反而非常简单。
尉实宁4115一般后台多开脚本是通过什么技术手段实现的?按键精灵 -
许逃裘17878384796 ______ 用插件后台绑定
尉实宁4115CDR和AI主要应用于哪方面最广. -
许逃裘17878384796 ______ 1、cdr是CorelDRAW的简称,广告业用来排版用的,用的最多的也是广告设计2、OpenAL(Open Audio Library)是自由软件界的跨平台音效API.它设计给多通道三维位置音效的特效表现.其 API 风格模仿自 OpenGL. OpenAL 主要的功能是在...
尉实宁4115C#用windows Api Hooks 控制鼠标键盘在一个窗体内 -
许逃裘17878384796 ______ 主要是第一个窗体类.其他的2个类是我封装的WINDOWS API
尉实宁4115api hook -
许逃裘17878384796 ______ 不关API HOOK,是KEYBOARD HOOK.
尉实宁4115我的VC串口在接收 单片机CPU板卡返回的数据时候,会把一整条数据分成两次,有知道怎么解决的嘛 -
许逃裘17878384796 ______ 描述信息太少,不好帮到你.串口接收,如果发送端无法控制,那么两个方法吧,一个是设置串口通信属性(不知道你用什么方式,各种方式不同)将每次接收缓冲放大;另一个,接收过来的字符串如果有明显的标识字节,那么重新拼接起来就好了.
尉实宁4115如何转换MatOfPoint率MatOfPoint2f在OpenCV中的Java API + -
许逃裘17878384796 ______ 1. MatOfPoint2f只有在的(32位和32位浮点整数)类型不同于MatOfPoint.在可行的选择(虽然有性能损失)是制造MatOfPoint2f实例并设置其(中环)等于MatOfPoint源的速度. 有 public void fromArray(Point... lp); public Point[] toArray(); ...
尉实宁4115“Android NDK ”是什么,在什么情况下使用? -
许逃裘17878384796 ______ 1、NDK是一系列工具的集合.2、NDK提供了一份稳定、功能有限的API头文件声明.3、NDK的发布,使“Java+C”的开发方式终于转正,成为官方支持的开发方式.4、NDK将使Android平台支持C开发的开端.NDK使得在android中,java可...
尉实宁4115如何使用国际开源项目构建一个完整的GIS(地理信息)应用系统 -
许逃裘17878384796 ______ 1、GIS内核 Geotools Geotools是一套基于Java平台的开源GIS API中间件,实现了完整的GIS底层功能.2、空间数据导入/转换地理数据的获取 地理数据来自文件、数据库和WMS/WFS服务器.文件方式:支持读取的地理数据文件:ESRI Shape...
尉实宁4115课设:局域网中数据传输的实现 -
许逃裘17878384796 ______ //编译时要将Ws2_32.lib添加到项目中#include #include #include #include //使用方式:int main(i...
尉实宁4115编程 API 给指定的窗口画边框 -
许逃裘17878384796 ______ 你说的是画笔画矩形把?#include <windows.h> int main() { HWND hWnd = (HWND)5244612; // 作为场景窗口句柄 HDC nDc= GetWindowDC(hWnd); SetROP2(nDc,R2_NOTXORPEN); RECT rect; GetWindowRect(hWnd,&rect); //画场景句柄...