效果图

详细内容和使用说明可以查看我的个人网站文章 把ChatGPT接入我的个人网站

献给有外网服务器的小伙伴

如果你本人已经有一台外网的服务器,并且页拥有一个OpenAI API Key,那么下面就可以参照我的教程来搭建一个自己的ChatGPT。

需要的环境

  • Centos7(其他服务器也行)
  • nodejs

这里主要用到了node环境,所有的代码也是由JavaScript编写

安装依赖库

首先需要安装OpenAI提供的js库——openai,使用npm安装即可

npm install openai

然后再安装一个用于后面管理js后台运行的库——forever

npm install forever

编写代码

const WebSocket = require('ws')
const {Configuration, OpenAIApi} = require('openai')const wss = new WebSocket.Server({port:8080})
const config = new Configuration({apiKey: 'OPENAI_API_KEY'}); //这里的OPENAI_API_KEY是你自己的keyconst openai = new OpenAIApi(config);const welcomeStr = "Hello,我是胡海龙,这是我基于OpenAI搭建的类似ChatWindow,你可以像使用ChatGPT一样来使用它,如何搭建以及源码可以联系我:hhlworkspace@qq.com";wss.on('connection', ws=>{ws.on('message', async (message)=>{if(message =='[$check$]'){ws.send('[$alive$]')}else{const completion = await openai.createCompletion({model: 'text-davinci-003',prompt: ''+message,max_tokens: 2048,stream: true,user: 'huhailong1121'},{responseType: 'stream'});completion.data.on("data",(data)=>{const lines = data?.toString()?.split("\n").filter((line) => line.trim() !== "");for (const line of lines) {const message = line.replace(/^data: /, "");if (message === "[DONE]") {break; // Stream finished}try {const parsed = JSON.parse(message);ws.send(parsed.choices[0].text)} catch (error) {console.error("Could not JSON parse stream message", message, error);}}})}})
})

上面的代码含义:开启一个Websocket服务,然后接收到用户发送的消息后,使用openai库发起请求,然后把返回的数据推给前端用户,前端用户接收的时候用解析markdown的组件接收就可以。下面主要说一下请求openai的部分

const {Configuration, OpenAIApi} = require('openai')
const config = new Configuration({apiKey: 'OPENAI_API_KEY'});const openai = new OpenAIApi(config);const completion = await openai.createCompletion({model: 'text-davinci-003',prompt: ''+message,max_tokens: 2048,stream: true,user: 'huhailong1121'},{responseType: 'stream'});completion.data.on("data",(data)=>{const lines = data?.toString()?.split("\n").filter((line) => line.trim() !== "");for (const line of lines) {const message = line.replace(/^data: /, "");if (message === "[DONE]") {break; // Stream finished}try {const parsed = JSON.parse(message);ws.send(parsed.choices[0].text)} catch (error) {console.error("Could not JSON parse stream message", message, error);}}})

首先是引入openai库中的 Configuration, OpenAIApi,然后配置apiKey,配置好以后创建请求——openai.createCompletion,注意,这里要使用同步去处理以下,参数的含义:

  • model:使用的模型,目前新的模型是text-davinci-003
  • prompt:用户的提问和需求
  • max_tokens:这个参数决定了能一次返回多少长度的结果,如果不是用stream的话这个设置的小可能会导致结果被截断
  • stream:是否使用流方式返回结果,我这里使用了流方式返回结果,因为这样可以给用户更全的数据,不会截断,而且不会造成长时间阻塞,可以实时的动态的生成结果,给用户的体验更好
  • user:用户标识,这个不设置也可以,还有其他更多的参数可以参考网上的资料

使用流后需要对data进行监听,监听中将返回的流先转为字符串,然后通过换行截取,去掉头部的data字符串后剩余的可以转为一个json对象,其中choices数组里面的text就是我们要的结果,所以将它发送给用户即可。

前端代码相对简单,就是单纯的websocket接收数据,然后渲染,只是样式上需要设计和调整,如果有需要前端代码的小伙伴可以前往我的个人网站进行下载,注册登录后点击资源即可下载:


如果对你有帮助记得要点赞哦~~~。

把ChatGPT接入我的个人网站相关推荐

  1. ChatGPT接入个人网站指导

    效果图如下: 将 ChatGPT 接入您的个人网站需要以下几个步骤: 获取 API 访问凭证:首先,您需要从 OpenAI 获取 ChatGPT 的 API 访问凭证.您可以访问 OpenAI 的官方 ...

  2. 爆火的ChatGPT接入微信教程——实现ChatGPT自动聊天

    当前ChatGPT是一个爆火的项目,近来浏览 Github 的时候,发现一个好玩的项目:微信接入ChatGPT,利用ChatGPT的对话能力,实现微信的自动聊天回复. 这个项目实现了许多有趣的功能,包 ...

  3. 手把手教你如何将chatgpt接入微信公众号

    **众所周知,今年以来话题度最高的莫过于chatgpt,ChatGPT是一种基于GPT-3.5架构的大型语言模型,由OpenAI开发.它可以处理多种语言,包括英语.中文等等.ChatGPT通过在大量的 ...

  4. 当ChatGpt接入微信群之后。。。

    最近我在GitHub上看到一个牛逼的项目:chatgpt-on-wechat 这项目能把ChatGpt接入到微信群里,然后大家可以在群里问ChatGpt问题,这可真是太棒了啊! 说干就干,马上按照文档 ...

  5. ChatGpt接入Word文档,让你秒变职场达人!

    今天跟大家分享下我们如何使用VBA代码,将ChatGpt接入Word文档,操作非常的简单,但是开始之前我们需要做2项准备 1.     获取ChatGpt的API 2.     魔法上网 准备好这2件 ...

  6. ChatGPT接入微信公众号(手把手教学)

    前言 本篇文章参考国内服务器 3 分钟将 ChatGPT 接入微信公众号(超详细)配置,纠正了一些过时的信息. 准备 一个微信公众号 一个能访问外网的梯子 一个ChatGPT账号 有了这些就可以配置了 ...

  7. (只需五步)ChatGPT接入微信的攻略

    先来看下用弱智问题对战ChatGPT的效果: 再看看程序代码能力: 你也可以用它来写作业学习: 接下来,就是把ChatGPT接入微信的教程: 一共五步,很简单的: 1.进入openAI api 官网登 ...

  8. 保姆级 | ChatGPT接入微信教程

    文章目录 0x00 前言 0x01 环境说明 0x02 准备工作 0x03 报错 Not available 解决方法 0x04 登录Open AI账号 0x05 获取账号API 0x06 配置阿里云 ...

  9. chatgpt接入微信公众号

    您好,要想将 chatgpt 接入微信公众号,您需要按照如下步骤进行操作: 在微信公众平台上注册一个订阅号或服务号. 创建一个 chatgpt 的机器人,并获取它的 API 密钥. 在微信公众平台上设 ...

最新文章

  1. python与php8-Python比php发展快的十大理由
  2. Python学习笔记__4章 函数式编程
  3. nginx+tomcat的keepalive验证、bio/nio连接比较
  4. 【Fabric】Python自动化部署工具-Fabric入门教程
  5. logs is not in the form of topic-partition or topic-partition.uniqueId-delete
  6. 史上最萌最认真的机器学习/深度学习/模式识别入门指导手册(一)
  7. 在html中怎么写背景色渐变,css3背景色渐变
  8. kibana 查询_干货 | Elasticsearch、Kibana数据导出实战
  9. python拦截修改数据包_拦截指定数据、修改JS -- mitmproxy
  10. jqgrid 点击列头的超链接或按钮时,不触发列排序事件
  11. PAIP.如何选择安全的即时通讯IM工具.txt
  12. 伺服速度控制模式接线图_伺服驱动器三种控制模式的接线
  13. ESP-Drone控制板设计的第二个任务-绘制USB-TTL串口下载电路和ESP32-S2芯片内置USB接口电路
  14. ns3网络设置模块 PointToPoint
  15. java算法2——费氏数列
  16. PyMOL | Pymol绘图教程(一)
  17. 达摩院python教程视频_达摩院官方刚刚发布了最新的Python教程,整套427集系统学习视频...
  18. 《C++语言程序设计(第4版)学生用书》课程学习(12)——第12章 异常处理
  19. 微信小程序图片放大预览效果的实现,轮播图点击放大预览
  20. 机器人轨迹规划——多项式轨迹实战

热门文章

  1. matlab 怎么画弯矩,如何用matlab 绘制简支梁剪力图弯矩图
  2. Day03 每日英语 (辨析)
  3. 基于Java毕业设计材料提交管理系统源码+系统+mysql+lw文档+部署软件
  4. matlab双循环语句,matlab循环语句
  5. 用python 入门数据科学_如何高效入门数据科学?
  6. 快速安装Docker详细图文步骤教程
  7. Docker推送镜像到阿里云镜像仓库
  8. 5.22 locahost仅是本地服务域名。★★★v-show引发refs不渲染, created和mounted,npm install xxx区别,display,visibility,opac区
  9. 【代码审计】模板注入
  10. Liunx信息显示与文件搜索