智能AI时代chatgpt AI的部署和源代码

183 阅读3分钟

ChatGPT Next - 私有化部署的网页版聊天机器人

ChatGPT Next

GitHub: https://github.com/xcatliu/chatgpt-next
示例网址: https://chatgpt-next.com

使用 Next.js 构建的 ChatGPT 应用,私有化部署的最佳选择!

特性

  1. 支持私有化部署,通过环境变量配置多组密钥
  2. 支持配置密钥别名,无需暴露 apiKey 就可以分享给朋友
  3. 微信风格的聊天气泡,支持移动 /PC 端,打造最极致的交互体验

备份网址:一站式部署智能AI机器人

已支持 [docker] 运行

docker run --name chatgpt-next -d -p 3000:3000 -e OPENAI_API_KEY_ALIAS xcatliu/chatgpt-next:latest

ChatGPT简介

ChatGPT是一个基于GPT-3(通用语言模型)的聊天机器人。它的目的是能够通过自然语言交流与用户进行对话。它能够理解用户的输入,并根据用户的话语生成相应的回复。

这种技术的出现,标志着人工智能在[自然语言处理]方面取得了新的突破。GPT-3是目前世界上最大规模的语言模型,它被训练在数百万个文本文件上,因此具有非常强大的语言理解能力。通过在GPT-3的基础上构建ChatGPT,我们可以获得一个能够与人进行自然语言对话的机器人,它能够与人类的对话方式非常相似。

ChatGPT的优势在于它能够进行流畅的对话,并能够根据用户的输入自动生成合适的回复。它能够理解语境,因此可以提供更准确、更有帮助的回复。此外,它还具有语言表达能力,可以使用正确的语法和语言风格进行对话。


实际上,上面三段文字完全由ChatGPT自己进行生成,如果你没察觉到异常,说明它已经通过了“图灵测试”。

目前,ChatGPT没有开源,只能通过OpenAi提供的测试界面调试,

ChatGPT官网:chat.openai.com/chat 注:2022-12-12 OpenAi增加了5秒的cloudflare并且大幅缩短了token的存活时间(原24小时缩短为2小时),导致目前国内的一些镜像站均无法使用。

ChatGPT原理

目前ChatGPT没有相关的论文和开源代码,具OpenAi官方所述,ChatGPT是在GPT3.5架构的基础上加入了RLHF(Reinforcement Learning from Human Feedback,人类反馈强化学习)。

ChatGPT采用了InstructGPT的框架,InstructGPT的论文:arxiv.org/pdf/2203.02…

整体训练过程分成三个过程:监督学习、训练奖励模型、引入强化学习迭代模型。

ChatGPT部署

1.注册账号

首先需要注册OpenAi的账号,账号注册使用自己的邮箱,境内手机号验证无法通过,可以使用别的接码平台。 这里使用的是sms(sms-activate.org/cn/cashBack),具体操作步骤很多博文都有提到,不做赘述。

2.获取界面信息

进入到会话界面后,按F12打开开发者工具,在此处提取并记录session_token

同样的位置提取并记录cf_clearance

最后,还需要提取并记录user-agent,这里随便找一个数据包都能够找到这个值

3.调用测试

ChatGPT官方有提供用于调用的API,不过试用次数很少,后续使用价格昂贵。 官方API文档:beta.openai.com/docs/api-re… 调用需要设置自己的密钥:beta.openai.com/account/api…

在Github上,有很多开源的项目提供了很多非官方的调用库,我对于Python最为熟悉,因此使用了这个库github.com/acheong08/C…

安装方式:

pip3 install revChatGPT --upgrade

安装完之后,通过下面的程序进行测试:

from revChatGPT.revChatGPT import Chatbot

config = {
    "session_token": "上一步的session_token",
    "cf_clearance": "上一步的cf_clearance",
    "user_agent": "上一步的user_agent"
}

# 创建ChatGPT实例
chatbot = Chatbot(config, conversation_id=None, debug=True)
message = chatbot.get_chat_response('你好', output="text")
print(message['message'])

这里的参数修改为上一步获取到的参数。

如果使用正常,会输出如下结果: