牛逼,用它可以轻松搭建一个AI平台!
哈喽,大家好,我是开源君,一个资深的互联网玩家,致力于为大家分享各领域优质开源项目。
各位开源老铁们,最近公众号改版了,大家记得星标开源指南
,第一时间收到我们优质内容的更新!
今天开源君给大家推荐的项目是chatgpt
,ChatGPT 是由 OpenAI 开发的一个人工智能聊天机器人程序,在该基础上我们增添 TypeScript 规范,封装一个非官方的 Node.js 包装器,我们可以使用它快速构建由 chatgpt 驱动的项目,比如聊天机器人、聊天网站等。
安装
npm install chatgpt puppeteer
兼容性
Node.js >= 18,Node.js 17、16 和 14 在早期版本中是受支持的,但 OpenAI 的 Cloudflare 在 v17 和 v16 更新上导致了一个 undici 错误,现在需确认 Node.js >= 18;
我们建议不要从客户端浏览器代码中使用 chatgpt,因为这会暴露您的私有会话令牌;
如果你想使用 chatgpt 构建一个网站,我们建议您在服务端使用;
使用
基础使用
import { ChatGPTAPIBrowser } fromchatgptasyncfunctionexample() {// use puppeteer to bypass cloudflare (headful because of captchas)const api = new ChatGPTAPIBrowser({email: process.env.OPENAI_EMAIL,password: process.env.OPENAI_PASSWORD})await api.initSession()const result = await api.sendMessage(Hello World!)console.log(result.response)}
基于 REST-based 版本
import { ChatGPTAPI, getOpenAIAuth } fromchatgptasyncfunctionexample() {// use puppeteer to bypass cloudflare (headful because of captchas)const openAIAuth = await getOpenAIAuth({email: process.env.OPENAI_EMAIL,password: process.env.OPENAI_PASSWORD})const api = new ChatGPTAPI({ ...openAIAuth })await api.initSession()// send a message andwaitforthe responseconst result = await api.sendMessage(Write a python version of bubble sort.)// result.response is a markdown-formatted stringconsole.log(result.response)}
chatgpt 默认格式为 markdown,想使用纯文本可如下实例
const api = new ChatGPTAPIBrowser({ email, password, markdown:false})
conversationId 和 messageId 跟踪会话
const api = new ChatGPTAPIBrowser({ email, password })await api.initSession()// send a message andwaitforthe responseletres = await api.sendMessage(What is OpenAI?)console.log(res.response)// send a follow-upres = await api.sendMessage(Can you expand on that?, {conversationId: res.conversationId,parentMessageId: res.messageId})console.log(res.response)// send another follow-up// send a follow-upres = await api.sendMessage(What were we talking about?, {conversationId: res.conversationId,parentMessageId: res.messageId})console.log(res.response)
有时候,chatgpt 在开始响应之前会挂起一段时间。这可能是由于速率限制,也可能是由于 OpenAI 服务器过载。为了缓解这些问题,您可以像这样添加超时。
// timeout after 2 minutes (whichwill also abort the underlying HTTP request)const response = await api.sendMessage(this is a timeout test, {timeoutMs: 2 * 60 * 1000})
动态引入
asyncfunctionexample() {// To use ESMinCommonJS, you can use a dynamic importconst { ChatGPTAPI, getOpenAIAuth } = await import(chatgpt)const openAIAuth = await getOpenAIAuth({email: process.env.OPENAI_EMAIL,password: process.env.OPENAI_PASSWORD})const api = new ChatGPTAPI({ ...openAIAuth })await api.initSession()const result = await api.sendMessage(Hello World!)console.log(result)}
项目地址
https://github.com/transitive-bullshit/chatgpt-api
写在最后
欢迎加入开源指南读者交流群,以摸鱼、白嫖技术课程为主,有一群有趣有料的小伙伴在等你哦!进群方式:开源指南 公众号 回复666
,按提示操作即可进群。