位置: 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购物车设计报告)

  • 运输费用怎么计算出来
  • 外地预缴所得税的会计分录
  • 小规模免缴增值税吗
  • 出口退税三类企业指什么意思
  • 应付款为什么是负数
  • 销售免税产品要计算销项税吗
  • 结转净利润到利润分配分录
  • 进项税额加计抵扣账务处理
  • 商业企业的购货运费计入什么
  • 冲销去年暂估费用
  • 股东打入公户的钱怎么做账
  • 劳务派遣简易征收备案
  • 烟酒销售公司要交哪些税
  • 个人投资收益要交所得税吗
  • 增值税的会计核算
  • 年终所得税汇算提示成本费用与实际取得发票有差异
  • 应交税费未交增值税怎么计算
  • 如果工程款要不到的话怎么办
  • 创新券兑付怎么操作
  • 消费税税目是否含税
  • 哪些票据可以冲抵增值税
  • 公司购酒的发票可以开多少
  • 车间低值易耗品有哪些
  • 差额纳税的会计处理
  • 收到融资租赁发票怎么做账
  • .exe文件病毒
  • win11隐藏图标怎么弄出来
  • win7为什么现在不能用了
  • 公司购买一辆车
  • 一般纳税人开出普票可以抵扣吗
  • 进项税年末需要结转么
  • 工程发票可以用材料发票抵扣吗
  • 应交所得税和所得税费用的区别计算公式
  • 大雾笼罩的早晨
  • 转让旧固定资产怎么做账
  • React18的useEffect会执行两次
  • php数组查询
  • 企业季度所得税怎么算
  • yolov5结构解析
  • 出口货物不退税进项可以开具普通发票吗
  • 生产设备改良支出需要结转到本年利润吗
  • declare -i
  • laravel 实例
  • 使用Go http重试请求
  • 注销的公司需要清算吗
  • 附有销售退回条件的商品销售
  • 增值税开票系统客服电话
  • 政府会计业务活动费用会计分录
  • 房屋租赁时需要交税吗
  • 其它收益和递延收益的区别
  • 劳务派遣和劳务承揽的区别
  • 其他收益结转到什么科目
  • 应付账款挂账
  • 农村的扶贫政策是什么
  • 管理费用包括哪些税
  • 仲裁是什么意思举个例子
  • 汇总帐凭证处理
  • 会计账薄按其外形特征不同可以分为
  • xp系统控制面板在哪里打开
  • win8.1 multiple edition
  • 一键ghost还原备份
  • acer笔记本重装系统教程
  • 操作系统的定义
  • windows8如何关闭杀毒软件
  • opengl learn
  • js 浏览器全屏
  • jquery 输出
  • nodejs客户端程序开发
  • android车载导航刷机包
  • javascript简单
  • bootstrap layer弹框
  • 在jquery中fadein
  • 纳税人类型税码是什么
  • 河南税务公众号缴费养老保险
  • 20年灵活就业人员社保新标准
  • 为什么医保名字不一样
  • 从价计征和从租计征的区别,有什么优缺点
  • 税控盘抵税申报表怎么填
  • 江苏徐州买房
  • 个人所得税没申报会退吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设