// 生成文章应用,我们可以设计界面让用户输入字数限制,关键词,语言,文体 const words = “牛,马,车,开心” const count = 100 const lang = “中文” const type = “笑话” function getPrompt(words,count,lang,type) { return 使用下列关键词:${words},生成字数${count}字的语言为${lang}的${笑话}
} // 输出:使用下列关键字:牛,马,车,开心,生成字数100字的语言为中文的笑话 复制代码$ npm install openai 复制代码const { Configuration, OpenAIApi } = require(“openai”); const configuration = new Configuration({ apiKey: process.env.OPENAI_API_KEY, }); const openai = new OpenAIApi(configuration); const response = await openai.createCompletion({ model: “text-davinci-003”, prompt: “Say this is a test”, temperature: 0, max_tokens: 7, }); 复制代码$ pip install openai 复制代码import os import openai # Load your API key from an environment variable or secret management service openai.api_key = os.getenv(“OPENAI_API_KEY”) response = openai.Completion.create(model=”text-davinci-003”, prompt=”Say this is a test”, temperature=0, max_tokens=7) 复制代码headers: { “Content-Type”: “application/json”, Authorization: Bearer ${accessToken}
, }, body: JSON.stringify({ action: “next”, messages: [ { id: uuidv4(), role: “user”, content: { content_type: “text”, parts: [question], }, }, ], model: “text-davinci-002-render-sha”, parent_message_id: uuidv4(), }), 复制代码
为什么写篇文章
最近chatgpt很火,我其实也基于chatgpt开发了两款应用。但是我不太想去表达这些东西,因为我觉得我开发的过程过于简单,都是花了一上午。
第一款应用是一个生成英语题目的应用,主要是根据关键字生成文章,可以选择文体和内容,配有填空题,问答题,翻译等题目。我的本意是想用于表弟的英语学习教学。界面,文章和github地址如下:
第二款应用是给B站的视频生成摘要,避免花太多时间获取无效内容。
我贴出这些的原因:
第一是想吸引关注,我个人比较没动力,需要激励
第二是说我确实有写文章的基础。
第三是我看到如下截图:
我感觉到很多人被收智商税了,而且我觉得倒卖api是最低级的应用,最可耻的是还收费,我觉得有些知识应该是免费的。
接下来我会写三到四篇文章来分享我的经验。
第一篇:也是大家最关心的,如何获取到chatgpt的能力,大概有4种方式。
第二篇:我要从开发者的角度谈谈什么是Prompt Engineering, 我们普通开发者如何使用它开发应用。
第三篇:假如大家想看的话,我会说一说我是如何构思和开发我的项目的。
第四篇:作为前端工程师,我想和大家聊聊chatgpt背后,我对人机交互,信息损失的看法。
常见的chatpgt应用的架构
信息收集
很多应用只是单纯地收集用户语言文字,这是比较简单地应用。
其实我们可以帮助用户收集他们收集不到地信息。比如说我的B站视频摘要,就是实现了这么一个功能。
我们也可以转化输入,让用户进行语音输入,然后转为文字。voice-control-for-chatgp就实现了语音输入和输出。
当然我们也可以让用户输入地更加愉快,设计好输入界面。
这些都是我们前端工程师能做地点。
Prompt Engineering
在收集到用户的输入后,我们可以将其和我们的模板混合。达到更好的效果。我简单举一个例子,实际上这个没有这么简单。
使用ui界面去获取用户的输入,words,count,lang,type,你就完成了文章生成器了。你可以将笑话改成任何一种文体。其他参数都可以让用户调整。
微调模型或者训练,或者接入
目前我还没有实现过微调模型或者训练这些部分,有计划去学习,但是可以告诉大家这个肯定是核心。
没有这个能力咋办,那就只能通过各种技术手段接入api呗。下面的文章中,我将介绍4种api的接入技巧
输出
比如说 Prompt Engineering 里面 文章生成器的例子, 你可以提供个文件下载功能,或者语音输出功能。
一切任君想象。
接入chatgpt的4种方式
GPT3
其实openai将GPT3模型做成服务公开出来了。模型的名字为text-davinci-003。
缺点:但是由于是CPT3,效果比较差。
好处:好在有18美金的免费额度。配合无限买号就能提供服务。
下图是可用的模型列表:
nodejs
python
使用无头浏览器模型登录
主要思路还是使用Puppeteer模拟+js注入来使用。
好处:免费的,体验比较好,是真正的chatpgt模型。
坏处:cloudFlare有时候要验证你是不是人类。而且一次只能发送一条信息,一个小时只能用60次,只能配合多账号使用,但是这样资源消耗更加大
目前还有两家可以用:
python方案:acheong08/ChatGPT: Reverse engineered ChatGPT API (github.com)
集成方案:
nodejs容器化部署:bytemate/chatapi-single: Simple and powerful ChatGPT-API-Server (github.com)
浏览器扩展方案
优点:免费的,体验比较好,是真正的chatpgt模型,不用需要购买账号,直接使用用户的账号为用户服务。
缺点:一次只能发送一条信息,一个小时只能用60次,无法使用多账户提高接入能力。太频繁使用有被封的风险,这一点必须告诉用户,因为你用的是他们的账号。
个人还是推荐大家给这个库点个小星星,作者就是我本人,小弟谢谢了。
官方方案
英文不好的朋友我翻译一下,就是openai要推出免费的方案了,但是后面可能收费,而且这次的模型不是gpt3。
好处:正版,稳定,安心,模型性能好 坏处:收费,可能国内不能用。
已经无效的方案,仅供技术参考
模型泄漏
text-chat-davinci-002-20221122这个模型被穷举出来了,现在已经失效。同时这个库也支持bing。
反向代理
好多人都说使用反向代理能帮助我们 passby CloudFlare 网关。但是全部都失效了,而且说避免openai发现,代码都是闭源的,不推荐哈。
贴链接:
PawanOsman/chatgpt-io: ChatGPT Client API, Blazing Fast, without using browser (github.com)
Bing Hacking
Bing 现在已经限制聊天次数了,是不是还有人和我一样在等待队列中。/(ㄒoㄒ)/~~
下面是Bing 接入库:
接入技术解析
协议解析
协议解析的思路主要是用chrome去打断点,单步调试来解析的,下面我简单说一下:
accessToken的获取
当用户登录完openai后,就会去访问:chat.openai.com/api/auth/se… 然后在返回的数据中获取到accessToken这个字段。
关键是accessToken的获取,不同的方案有不同的获取方法。可以在chrome扩展内部获取,也可以开启无头浏览器获取。
利用accesstoken创建对话
访问:chat.openai.com/backend-api…
将header和body设置如下
就能实现访问。
成熟方案
当然如果你觉得太麻烦,可以使用如下方案:
值得注意的是这里使用的账号是在浏览器内部使用用户的账号获取api能力,这样规避了风险,但是必须提醒用户必须对自己的行为导致的封号等后果负责。
个人还是推荐大家给这个库点个小星星,作者就是我本人,小弟谢谢了。
多账号
为了使用模拟浏览器登录方法,必须使用支持多账号登录。
我写过一个,但是后面放弃更新了,现在贴出来供大家交流。
不能保证性能,能运行,仅供思路分享,欢迎点星星。
总结
本文主要提出了常见的chatgpt类型的应用架构,提出里面关键的技术点,ui交互, Prompt Engineering,api接入。
更进一步,本文章介绍了4种可用的接入方式。
- GPT3
- 使用无头浏览器模型登录
- 浏览器扩展方案
- 官方方案
最后,提供一个多账号登录模拟浏览器登录方法的方案。
声明
以上接入方案仅作为技术探讨,本人不提供任何接入chatgpt的账号或接入者服务。
其实Prompt Engineering 才是普通开发者最需要关心的技术部分,因为api的接入总有一天会解决,模型微调又太难了,只能在这个部分发发力。大家感兴趣的话,我下篇文章就写一下。
用心创作,大家觉得有用的话,可以评论,转发,注意要注明出处。谢谢了。
作者:LXfater
链接:https://juejin.cn/post/7201884082645008439
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。