把ChatGPT接入我的个人网站
效果图
详细内容和使用说明可以查看我的个人网站文章 把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接入我的个人网站相关推荐
- ChatGPT接入个人网站指导
效果图如下: 将 ChatGPT 接入您的个人网站需要以下几个步骤: 获取 API 访问凭证:首先,您需要从 OpenAI 获取 ChatGPT 的 API 访问凭证.您可以访问 OpenAI 的官方 ...
- 爆火的ChatGPT接入微信教程——实现ChatGPT自动聊天
当前ChatGPT是一个爆火的项目,近来浏览 Github 的时候,发现一个好玩的项目:微信接入ChatGPT,利用ChatGPT的对话能力,实现微信的自动聊天回复. 这个项目实现了许多有趣的功能,包 ...
- 手把手教你如何将chatgpt接入微信公众号
**众所周知,今年以来话题度最高的莫过于chatgpt,ChatGPT是一种基于GPT-3.5架构的大型语言模型,由OpenAI开发.它可以处理多种语言,包括英语.中文等等.ChatGPT通过在大量的 ...
- 当ChatGpt接入微信群之后。。。
最近我在GitHub上看到一个牛逼的项目:chatgpt-on-wechat 这项目能把ChatGpt接入到微信群里,然后大家可以在群里问ChatGpt问题,这可真是太棒了啊! 说干就干,马上按照文档 ...
- ChatGpt接入Word文档,让你秒变职场达人!
今天跟大家分享下我们如何使用VBA代码,将ChatGpt接入Word文档,操作非常的简单,但是开始之前我们需要做2项准备 1. 获取ChatGpt的API 2. 魔法上网 准备好这2件 ...
- ChatGPT接入微信公众号(手把手教学)
前言 本篇文章参考国内服务器 3 分钟将 ChatGPT 接入微信公众号(超详细)配置,纠正了一些过时的信息. 准备 一个微信公众号 一个能访问外网的梯子 一个ChatGPT账号 有了这些就可以配置了 ...
- (只需五步)ChatGPT接入微信的攻略
先来看下用弱智问题对战ChatGPT的效果: 再看看程序代码能力: 你也可以用它来写作业学习: 接下来,就是把ChatGPT接入微信的教程: 一共五步,很简单的: 1.进入openAI api 官网登 ...
- 保姆级 | ChatGPT接入微信教程
文章目录 0x00 前言 0x01 环境说明 0x02 准备工作 0x03 报错 Not available 解决方法 0x04 登录Open AI账号 0x05 获取账号API 0x06 配置阿里云 ...
- chatgpt接入微信公众号
您好,要想将 chatgpt 接入微信公众号,您需要按照如下步骤进行操作: 在微信公众平台上注册一个订阅号或服务号. 创建一个 chatgpt 的机器人,并获取它的 API 密钥. 在微信公众平台上设 ...
最新文章
- python与php8-Python比php发展快的十大理由
- Python学习笔记__4章 函数式编程
- nginx+tomcat的keepalive验证、bio/nio连接比较
- 【Fabric】Python自动化部署工具-Fabric入门教程
- logs is not in the form of topic-partition or topic-partition.uniqueId-delete
- 史上最萌最认真的机器学习/深度学习/模式识别入门指导手册(一)
- 在html中怎么写背景色渐变,css3背景色渐变
- kibana 查询_干货 | Elasticsearch、Kibana数据导出实战
- python拦截修改数据包_拦截指定数据、修改JS -- mitmproxy
- jqgrid 点击列头的超链接或按钮时,不触发列排序事件
- PAIP.如何选择安全的即时通讯IM工具.txt
- 伺服速度控制模式接线图_伺服驱动器三种控制模式的接线
- ESP-Drone控制板设计的第二个任务-绘制USB-TTL串口下载电路和ESP32-S2芯片内置USB接口电路
- ns3网络设置模块 PointToPoint
- java算法2——费氏数列
- PyMOL | Pymol绘图教程(一)
- 达摩院python教程视频_达摩院官方刚刚发布了最新的Python教程,整套427集系统学习视频...
- 《C++语言程序设计(第4版)学生用书》课程学习(12)——第12章 异常处理
- 微信小程序图片放大预览效果的实现,轮播图点击放大预览
- 机器人轨迹规划——多项式轨迹实战
热门文章
- matlab 怎么画弯矩,如何用matlab 绘制简支梁剪力图弯矩图
- Day03 每日英语 (辨析)
- 基于Java毕业设计材料提交管理系统源码+系统+mysql+lw文档+部署软件
- matlab双循环语句,matlab循环语句
- 用python 入门数据科学_如何高效入门数据科学?
- 快速安装Docker详细图文步骤教程
- Docker推送镜像到阿里云镜像仓库
- 5.22 locahost仅是本地服务域名。★★★v-show引发refs不渲染, created和mounted,npm install xxx区别,display,visibility,opac区
- 【代码审计】模板注入
- Liunx信息显示与文件搜索