位置: IT常识 - 正文

把ChatGPT接入我的个人网站

编辑:rootadmin
把ChatGPT接入我的个人网站 效果图

推荐整理分享把ChatGPT接入我的个人网站,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

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

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

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

需要的环境Centos7(其他服务器也行)nodejs把ChatGPT接入我的个人网站

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

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

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

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

本文链接地址:https://www.jiuchutong.com/zhishi/297377.html 转载请保留说明!

上一篇:YOLOv7(目标检测)入门教程详解---检测,推理,训练(yolov5目标检测代码)

下一篇:JavaWeb 购物车项目(javaweb购物车设计报告)

  • 微信我的企业怎么退出删掉(微信我的企业怎么建立的)

    微信我的企业怎么退出删掉(微信我的企业怎么建立的)

  • 快手私信只能发20条吗(快手私信只能发一条是怎么回事)

    快手私信只能发20条吗(快手私信只能发一条是怎么回事)

  • 华为人脸识别禁用多久能用(华为人脸识别禁用多长时间能正常使用)

    华为人脸识别禁用多久能用(华为人脸识别禁用多长时间能正常使用)

  • 腾讯会议记录时长吗(腾讯会议记录时长导出)

    腾讯会议记录时长吗(腾讯会议记录时长导出)

  • 手机写不了字怎么回事(手机写不了字怎么弄?)

    手机写不了字怎么回事(手机写不了字怎么弄?)

  • 12306如何查询几个月前的订单(12306怎么看有几张票)

    12306如何查询几个月前的订单(12306怎么看有几张票)

  • usb-zip是什么意思(usb-zip+ v2)

    usb-zip是什么意思(usb-zip+ v2)

  • 苹果11充电口检测有水咋办(苹果11充电口检测到液体)

    苹果11充电口检测有水咋办(苹果11充电口检测到液体)

  • 短信被拉黑后发消息过去会显示什么(短信被拉黑后发消息对方是否看得到)

    短信被拉黑后发消息过去会显示什么(短信被拉黑后发消息对方是否看得到)

  • 易考通客户端打不开(易考通打不开怎么办)

    易考通客户端打不开(易考通打不开怎么办)

  • 一个微信号只能申请一个健康码吗(一个微信号只能绑定一个企业微信吗)

    一个微信号只能申请一个健康码吗(一个微信号只能绑定一个企业微信吗)

  • qq离线文件和在线文件有什么区别(qq离线文件和在线一样吗)

    qq离线文件和在线文件有什么区别(qq离线文件和在线一样吗)

  • 华为nova6返回键怎么设置(华为nova10返回键在哪里设置)

    华为nova6返回键怎么设置(华为nova10返回键在哪里设置)

  • mq8g2ch/a是什么型号(mq8h2ch/a是什么机型)

    mq8g2ch/a是什么型号(mq8h2ch/a是什么机型)

  • 为什么前置和后置不一样(为什么前置和后置拍照差别那么大)

    为什么前置和后置不一样(为什么前置和后置拍照差别那么大)

  • 苹果夜间模式怎么设置(苹果夜间模式怎么开启)

    苹果夜间模式怎么设置(苹果夜间模式怎么开启)

  • 手机开机特别慢怎么办(手机无法开机是什么原因)

    手机开机特别慢怎么办(手机无法开机是什么原因)

  • 手机文字怎么设置带拼音的(手机文字怎么设置)

    手机文字怎么设置带拼音的(手机文字怎么设置)

  • 华为软件哪些可以卸载(华为软件哪些可以删除)

    华为软件哪些可以卸载(华为软件哪些可以删除)

  •  拼多多拍错了怎么取消(拼多多拍错了怎么办)

    拼多多拍错了怎么取消(拼多多拍错了怎么办)

  • 苹果商店怎么没有喜马拉雅(苹果商店怎么没有photoshop)

    苹果商店怎么没有喜马拉雅(苹果商店怎么没有photoshop)

  • 华为p30微信分身怎么设置(华为mate30微信怎么分身)

    华为p30微信分身怎么设置(华为mate30微信怎么分身)

  • 快手直播条件是什么(快手直播有哪些条件)

    快手直播条件是什么(快手直播有哪些条件)

  • 一般纳税人和小规模纳税人交税区别
  • 企业所得税税负高是什么意思
  • 工业增加值怎么找
  • 制造费用科目一定无余额
  • 固定资产的入账
  • 新车检测费能入什么科目
  • 汇算清缴调表不调账调的是哪张表
  • 累计减税费用是什么意思
  • 第二季度纳税申报
  • 金蝶打印凭证页码范围
  • 微信怎么开公司账户
  • 珠宝属于什么行业领域
  • 付款方式分期付款
  • 增值税转型前后对比
  • 其他应收款账户期初借方余额为35400
  • 事业单位非税收入包括哪些
  • 公司代缴员工个税
  • 普通发票跨年作废有影响吗
  • 国税地税企业所得税划分
  • 工业印花税核定比例
  • 增值税专票给客户的是第几联
  • 上海奉贤区控规图
  • 固定资产怎么填报
  • 利息 财务费用
  • 电子发票怎么作废操作流程视频
  • 1697506445
  • 工地开工购买的鞭炮怎么入账
  • 增值税税率简易征收
  • windows7如何格式化恢复出厂设置
  • 收到银联商务付款短信
  • i911900k与10900k
  • macOS Big Sur 11.1 开发者预览版 Beta 2推送更新
  • 广告公司发生的广告代工费账务怎么处理
  • php ado
  • 最轻薄数码相机
  • 工业企业成本核算流程
  • 图书发行流程
  • 普尔曼多少钱
  • vue3.0配置代理
  • r在数据分析中表示什么意思
  • 如何用html编写一个简单的网页
  • named-config
  • setsid命令
  • php搜索功能怎么实现
  • 个人所得税专项附加扣除标准一览表
  • 工伤补贴如何做帐
  • 帝国cms视频教程
  • 报表中的盈余公积怎么算
  • 资金结存属于资产科目吗
  • MYSQL数据库使用教程
  • 收到的加盟费要交税吗
  • 丁字账户例题及解析
  • 税控盘抄报税逾期怎么办
  • 交纳增值税的账务处理PPT
  • 招待客户住宿属于什么费用
  • 所得税汇算清缴报告在哪查
  • 财政拨付注册资金怎么填
  • Win10预览版桌面图标和任务栏不翼而飞怎么办?
  • 双系统怎么卸载系统
  • linuxcpu监控
  • 后缀是nb是什么程序
  • win10mobile更新出错
  • jquery示例
  • cocos2dx scrollview
  • Androidannotation使用之@Rest与服务器交互的JSON数据转换(二)
  • 批处理语言 从入门到精通
  • perl列表去重
  • cocos游戏开发教程
  • opengl编程实例
  • js存储
  • 深入浅出python
  • JavaScript控制台输出
  • javascript web开发
  • 安全的代码
  • python3.8.3怎么用
  • 重庆市电子税务局官网登录入口注册
  • 台州土地成交
  • 单位车辆购置税怎么申报缴纳
  • 甘肃是什么时候属于中国的
  • 汽车维修费税率是13还是6
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设