如何部署一套ChatGPT项目

ChatGPT-Api

个人 ChatGPT 体验地址:http://chatgpt.tycoding.cn/

如果你觉得 ChatGPT 官网注册过于繁琐,可以看看这篇文章。

作者在自己的服务器上部署了一套服务,通过调用 ChatGPT-Api 实现。本篇文章将讲解 Api 的调用过程。

注意:上述服务使用作者个人账户 Key,因为 ChatGPT 逐渐开始收费,个人账户免费的调用额度并不多,不过可以部署一套服务先供给大家玩耍(大家请勿恶意访问,且用且珍惜)

有兴趣的朋友还是建议看作者上篇文章:2023 年了,不许还有人不知道怎么玩 ChatGPT

  • 体验地址:http://chatgpt.tycoding.cn/
  • 官方 API 文档:https://openai.com/api/
  • 依赖的开源项目https://github.com/transitive-bullshit/chatgpt-api/
  • 本人 GitHub:https://github.com/tycoding

Api

打开官方地址:https://openai.com/api/ 登陆并查看相关 API 文档。

如何部署一套ChatGPT项目
image-20230210205325856

如上,对于消息的推送其实只需要调用这一个接口即可实现。调用 JS 伪代码:

const response = await axios.post('https://api.openai.com/v1/completions', {
  promptthis.inputText,
  model"text-davinci-003",
  max_tokens100,
  n1,
  stopnull,
  temperature0.5,
}, {
  headers: {
    'Authorization'`Bearer <API_KEY>`,
    'Content-Type''application/json',
  },
});

API_KEY 怎么拿到?

如何部署一套ChatGPT项目
image-20230210205914979

同样还是刚才的地址,可以创建本账户的 API KEY。目前而言,每个账户有免费的调用额度,超过额度后此账户就无法进行会话了(选择充值 20 美元/月、或者重新注册账号)。

如何部署一套ChatGPT项目
image-20230210210319283

免费的额度目前是 18 美元,在 5 月 1 号之前是免费的。

ChatGpt-Api

上面仅仅介绍了简单实用 JS 如何实现直接调用接口进行会话。

但是,我们知道,官网的会话其实是能识别上下文语境的,而使用上述直接掉接口的方式,是无法做到上下文语句的功能的,每次推送的消息都将是一个新的 ConversationId。

这里就要介绍一个比较著名的开源项目了:https://github.com/transitive-bullshit/chatgpt-api

如何部署一套ChatGPT项目
image-20230210210700584

此项目实现了会话上下文的支持,主要涉及两个参数:

{
 conversationId, //此次会话的conversationId
 parentMessageId //上次会话的messageId
}

提一嘴,官方的 API 文档中,并未出现这两个参数,但是 ConversationId 是确实存在的

如何部署一套ChatGPT项目
image-20230210211820313

但是官方 API 接口中并未暴露太多相关参数。

如何使用

注意:

  1. 此项目是基于 Node.js 的服务端项目,且 Node Version >= 18
  2. 此项目只能是作为 Node 服务端独立运行,不能在 Vite、Webpack 等 Web 组件中调用相关函数
  3. 不能在 Vue 组件中调用此项目的相关函数(因为 Vue 是 Web 组件)

安装:

npm install chatgpt

使用:

import { ChatGPTAPI } from 'chatgpt'

async function example({
  const api = new ChatGPTAPI({
    apiKey: process.env.OPENAI_API_KEY
  })

  const res = await api.sendMessage('Hello World!', {
    conversationId: res.conversationId, //可选
    parentMessageId: res.id //可选
  })
  console.log(res.text)
}

消息存储

同样,ChatGPT 官方并未提供获取 Conversation 下所有历史会话信息的接口,因此想要存储历史会话消息,必须本地数据存储。

幸运的是,chatgpt-api 项目作为一个 Node 后端服务,也封装了数据存储接口。代码如下:

import KeyvRedis from '@keyv/redis'
import Keyv from 'keyv'
import { ChatGPTAPI } from 'chatgpt'

async function example({
  // 选择存储在Redis中
  const redisUrl = process.env.REDIS_URL || 'redis://localhost:6379'
  const store = new KeyvRedis(redisUrl)
  const messageStore = new Keyv({ store, namespace'chatgpt-demo' })

  const api = new ChatGPTAPI({
    apiKey: process.env.OPENAI_API_KEY,
    messageStore
  })

  const res = await api.sendMessage('Hello World!', {
    conversationId: res.conversationId, //可选
    parentMessageId: res.id //可选
  })
  console.log(res.text)
}

但是,此 API 对 Redis 操作的支持很少,仅仅支持基本 String 类型数据的 get/set。

如果想要自定义数据结构,可以使用基于 Node 的其他 DB 依赖做数据处理。

联系我

  • 个人博客:http://tycoding.cn[6]
  • GitHub:https://github.com/tycoding
  • 微信公众号:程序员涂陌
  • QQ 交流群:866685601

原文始发于微信公众号(程序员涂陌):如何部署一套ChatGPT项目

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/145652.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!