不会写代码,也能部署一个独立ChatGPT?

1.png

本教程使用GPT-3模型接口模拟ChatGPT项目,虽然与真正的ChatGPT存在差异,但是演示了ChatGPT的工作原理。

(ChatGPT服务是基于GPT-3模型,经过大量的微调训练而来的,本教程暂时不包含训练内容,之后我们会讲如何进行二次训练)

部署的本地api接口使用了node-chatgpt-api这个库,库基于Node.js开发。项目地址:
https://github.com/waylaidwanderer/node-chatgpt-api

2.png

要求Node.js环境 >= 16.0.0
如果没有安装Node.js,可以到这里https://nodejs.org/en/下载安装
安装完成后,打开cmd,输入node,可以看到安装完成,版本符合要求

D:\>node
Welcome to Node.js v16.14.0.
Type ".help" for more information.
> .exit

另外还需要你有一个OpenAI的 API KEY,
可以在https://platform.openai.com/account/api-keys获取

3.png

然后同下载项目:

D:\dev2023>git clone https://github.com/waylaidwanderer/node-chatgpt-api.git
Cloning into 'node-chatgpt-api'...
remote: Enumerating objects: 576, done.
remote: Counting objects: 100% (330/330), done.
remote: Compressing objects: 100% (92/92), done.
Receiving objects: 100% (576/576), 232.08 KiB | 805.00 KiB/s, done.246 eceiving objects:  97% (559/576)

Resolving deltas: 100% (351/351), done.

进入项目文件夹:

D:\dev2023>cd node-chatgpt-api

安装项目依赖:

D:\dev2023\node-chatgpt-api>npm i
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE   package: '@waylaidwanderer/fetch-event-source@3.0.1',
npm WARN EBADENGINE   required: { node: '>=16.15' },
npm WARN EBADENGINE   current: { node: 'v16.14.0', npm: '8.5.2' }
npm WARN EBADENGINE }

added 163 packages, and audited 164 packages in 5s

38 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities
npm notice
npm notice New major version of npm available! 8.5.2 -> 9.4.2
npm notice Changelog: https://github.com/npm/cli/releases/tag/v9.4.2
npm notice Run npm install -g npm@9.4.2 to update!

编辑配置文件:
将settings.example.js复制一份为settings.js

D:\dev2023\node-chatgpt-api>copy settings.example.js settings.js
已复制         1 个文件。

然后用编辑器打开settings.js文件进行编辑

export default {
    // OpenAI API 密钥
    openaiApiKey: process.env.OPENAI_API_KEY || '这里填写您的openai密钥',
    chatGptClient: {
        // (可选)在 https://platform.openai.com/docs/api-reference/completions 中描述的参数
        modelOptions: {
            // 默认情况下模型设置为 text-chat-davinci-002-20221122,但您可以在此处覆盖它和其他任何参数
            model: 'text-chat-davinci-002-20221122',
        },
        // (可选)设置自定义说明,而不是“您是 ChatGPT...”
        // promptPrefix: 'You are Bob, a cowboy in Western times...',
        // (可选)为用户设置自定义名称
        // userLabel: 'User',
        // (可选)为 ChatGPT 设置自定义名称
        // chatGptLabel: 'ChatGPT',
        // (可选)设置为 true 以启用 `console.debug()` 日志记录
        debug: false,
    },
    // Keyv 缓存的选项,详见 https://www.npmjs.com/package/keyv。
    // 这用于存储对话,并支持其他驱动程序(默认情况下,对话存储在内存中)
    cacheOptions: {},
    // API 服务器的选项
    apiOptions: {
        port: process.env.API_PORT || 3000,
        host: process.env.API_HOST || 'localhost',
        // (可选)设置为 true 以启用 `console.debug()` 日志记录
        debug: false,
    },
    // 如果设置,ChatGPTClient 将使用 `keyv-file` 将对话存储到此 JSON 文件中,而不是存储在内存中。
    // 但是,如果设置了 cacheOptions.store,它将覆盖此设置。

这里可以过时行很多配置,比如你可以给ChatGPT换一个名字,
比如:你叫小美...
完整的ChatGPT自定义说明:
"You are ChatGPT, a large language model trained by OpenAI. You answer as concisely as possible for each response (e.g. don’t be verbose). It is very important that you answer as concisely as possible, so please remember this. If you are generating a list, do not have too many items. Keep the number of items short. Knowledge cutoff: 2021-09 Current date: 2023-01-31
“你是 ChatGPT,一个由 OpenAI 训练的大型语言模型。对于每个响应,你的回答尽可能简洁(例如,不要冗长)。尽可能简洁地回答是非常重要的,所以请记住这一点。如果您正在生成一个列表,请不要有太多的项目。保持项目的数量短。知识截止日期: 2021-09 当前日期: 2023-01-31”
默认只需要填好密钥就可以进行使用了,
但是模型定义这里可能需要换成官方的付费模型text-davinci-003。
注意,此处的model默认填的 text-chat-davinci-002-20221122 这是一个泄露模型,使用不计费但是经常无法连接,所以如果你想换成正常的,可以填写 text-davinci-003,这个是计费的模型,使用会扣除帐户余额,每个帐户默认赠送18美元,用完之后需要绑定国外信用卡才能继续消费。
使用项目:
输入npm run cli启动对话

D:\dev2023\node-chatgpt-api>npm run cli

> @waylaidwanderer/chatgpt-api@1.10.5 cli
> node bin/cli.js


   ╔═══════════════╗
   ║  ChatGPT CLI  ║
   ╚═══════════════╝

Type "!" to access the command menu.
? Write a message: !
❯ !editor - Open the editor (for multi-line messages)
  !resume - Resume last conversation
  !new - Start new conversation
  !copy - Copy conversation to clipboard
  !delete-all - Delete all conversations
  !exit - Exit ChatGPT CLI

输入!符号可以看到内置了几种命令
!

editor - Open the editor (for multi-line messages) - 打开编辑器(适用于多行消息)
!resume - Resume last conversation - 恢复上一次对话
!new - Start new conversation  - 开始新对话
!copy - Copy conversation to clipboard - 将对话复制到剪贴板
!delete-all - Delete all conversations  - 删除所有对话
!exit - Exit ChatGPT CLI - 退出ChatGPT CLI

我们可以尝试一下聊天:

Type "!" to access the command menu.
? Write a message: 你好

   ┌ ChatGPT ───────────────────┐
   │  你好!我能为你做些什么?│
   └────────────────────────────┘

如果您熟悉Node.js开发,您可以将此项目嵌入到您的项目中进行开发。当然,它也可以作为一个纯粹的API接口来调用,以实现您自己的用户管理系统,管理不同用户的上下文,以及未来将要分享的自定义数据集模型训练以及训练后的使用。

// 启动一个node.js服务器
npm start 或者 npm run server 
// 启动一个docker服务器
docker-compose up

使用方法
发送消息:

{
    "message": "Hello, how are you today?",
    "conversationId": "your-conversation-id (optional)",
    "parentMessageId": "your-parent-message-id (optional)"
}

返回消息:

// HTTP/1.1 200 OK
{
    "response": "I'm doing well, thank you! How are you?",
    "conversationId": "your-conversation-id",
    "messageId": "response-message-id"
}

ChatGPT正在迅速走红,全球都在推广和关注这个项目,许多人也正在尝试从中变现获利。然而,他们所采用的方法往往都过于简单和低门槛,如“写作文”、“写求职信”等。为了实现更高水平的商业价值,我们希望尝试更复杂,更深度定制的方法。例如,我们可以通过收集数据库并进行二次训练,比如训练一个适合公司实际情况的客户服务的机器人。
因此,我们将在以后逐渐分享我们的研究步骤和操作方法,以帮助那些希望深入了解GPT模型训练的朋友。这样,他们就可以以更低的技术门槛实现更高级的商业价值。

我的公众号:@大鹏学开发

我的:aaronpeng2046 加我拉你进交流群

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,366评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,521评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,689评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,925评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,942评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,727评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,447评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,349评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,820评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,990评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,127评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,812评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,471评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,017评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,142评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,388评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,066评论 2 355

推荐阅读更多精彩内容