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

  • 小米10长宽高各是多少厘米(小米10长宽高尺寸)

    小米10长宽高各是多少厘米(小米10长宽高尺寸)

  • 打印机打出来的字很淡(打印机打出来的照片有横条怎么办)

    打印机打出来的字很淡(打印机打出来的照片有横条怎么办)

  • 拒收微信是拉黑了吗(微信里面的拒收是不是就是拉黑)

    拒收微信是拉黑了吗(微信里面的拒收是不是就是拉黑)

  • soul注销几天成功(soul注销后必须要等七天吗)

    soul注销几天成功(soul注销后必须要等七天吗)

  • 为什么电脑开不了机按了没反应(为什么电脑开不了声音)

    为什么电脑开不了机按了没反应(为什么电脑开不了声音)

  • 联想电脑按f几进入u盘(联想电脑按f几进入系统)

    联想电脑按f几进入u盘(联想电脑按f几进入系统)

  • hdmi cec设置什么意思(hdmi cec功能怎么用)

    hdmi cec设置什么意思(hdmi cec功能怎么用)

  • 微信对方拒收是拉黑了吗(微信对方拒收是拉黑了还是删除了)

    微信对方拒收是拉黑了吗(微信对方拒收是拉黑了还是删除了)

  • 苹果几可以双卡双待(苹果几可以双卡双待?5g)

    苹果几可以双卡双待(苹果几可以双卡双待?5g)

  • 手环手表怎么充电(手环手表怎么充电充不进去)

    手环手表怎么充电(手环手表怎么充电充不进去)

  • 个人公众号每天只能发一篇吗(个人公众号每天可以发布多少文章)

    个人公众号每天只能发一篇吗(个人公众号每天可以发布多少文章)

  • 怎么将主页另存为html(怎么将主页另存为分层列表)

    怎么将主页另存为html(怎么将主页另存为分层列表)

  • 微信记录找回(自己主动清空的微信记录找回)

    微信记录找回(自己主动清空的微信记录找回)

  • 作业帮的扫一扫在哪里(作业扫一扫秒出答案)

    作业帮的扫一扫在哪里(作业扫一扫秒出答案)

  • 手机怎样查qq好友认识多久(手机qq怎么查好友)

    手机怎样查qq好友认识多久(手机qq怎么查好友)

  • 华为talkback被隐藏了(华为手机误入talkback)

    华为talkback被隐藏了(华为手机误入talkback)

  • iphone热点限制人数(iphone 热点限制)

    iphone热点限制人数(iphone 热点限制)

  • iphone短信特效怎么弄(苹果短信那个特效怎么弄)

    iphone短信特效怎么弄(苹果短信那个特效怎么弄)

  • iqoo充电多久充满(iqoo手机充满电可以用多久)

    iqoo充电多久充满(iqoo手机充满电可以用多久)

  • whatspp安装日期不对(whatsapp下载安装日期错误怎么解决)

    whatspp安装日期不对(whatsapp下载安装日期错误怎么解决)

  • 苹果x11是双卡双待吗(苹果11128g双卡双待)

    苹果x11是双卡双待吗(苹果11128g双卡双待)

  • 钉钉里怎么设置出差状态(钉钉里怎么设置管理员权限)

    钉钉里怎么设置出差状态(钉钉里怎么设置管理员权限)

  • 充电器充电慢什么原因(充电器充电很慢)

    充电器充电慢什么原因(充电器充电很慢)

  • qq怎么迁移聊天记录(qq怎么迁移聊天记录到另一台设备)

    qq怎么迁移聊天记录(qq怎么迁移聊天记录到另一台设备)

  • s8轻奢版和s8的区别(s8轻奢版参数)

    s8轻奢版和s8的区别(s8轻奢版参数)

  • 文档打开空白(腾讯在线文档打开空白)

    文档打开空白(腾讯在线文档打开空白)

  • 图森北部托托利塔山麓上空的雷暴,亚利桑那州索诺拉沙漠 (© Jack Dykinga/Minden Pictures)(图森在哪)

    图森北部托托利塔山麓上空的雷暴,亚利桑那州索诺拉沙漠 (© Jack Dykinga/Minden Pictures)(图森在哪)

  • 广告费的税前扣除是多少
  • 待处理财产损益借贷方向
  • 房地产按揭是什么意思
  • 借款给别的公司收到的利息会计分录怎么写
  • 计提坏账准备需要纳税调增吗
  • 增值税16点税降到13点,补缴税款怎么算
  • 销售货物分期付款怎么确认收入
  • 员工造成损失怎么处理
  • 接受投资款尚未工商变工账务怎么做处理?
  • 多缴所得税返还现金流
  • 失控发票进项转出成本不用转出
  • 建设单位增值税抵扣
  • 合同违约补偿款需要缴纳增值税吗?
  • 购进一批材料,材料已经入库
  • 处理固定资产开什么发票
  • 冲红发票开错了怎么办
  • 当企业预收款项无需退回
  • 不能取得发票的财务费用怎么做明细好一点
  • 技术服务的大类包括
  • 所有者权益变动表范本
  • 旅游费用账务处理
  • window10切换win7
  • 资本溢价和股本差多少
  • 小规模纳税人开票限额是多少
  • 2021前端面试题目100及最佳答案
  • php对象缓存
  • 应付票据转让会计分录
  • 腾达路由器桥接的方法
  • uniapp打包成h5如何调用原生
  • 公允价值变动损益借贷方向增减
  • 季度利润表中的营业收入怎么算
  • php模板引擎执行时间
  • php获取ftp文件目录
  • PHP面向对象程序设计调研
  • vue路由传参的几种方式
  • 2023 年值得关注的 9 个 Web3 发展趋势
  • 学人工智能哪家机构比较好
  • vue系列教程
  • 公司交社保国家承担吗
  • 以前年度损益调整借贷方向
  • 支付银行贷款利息现金流量表填哪里
  • 本月确认收入 发票下月开
  • 公司垫付的工伤医药费怎么报销
  • 织梦前台的菜单怎么换
  • 开票钱收不回怎么办
  • 融资租赁首付租金会计账务处理
  • 企业哪些支出可以用现金支付
  • 新会计准则基本准则
  • 框架合同的印花税
  • 生产成本制造费用借贷方向
  • 个人所得税减免项目有哪些
  • 不单独计价的包装物是什么意思
  • 公司控股另一家公司好与坏
  • 一般纳税人报税流程详细操作
  • 收到法人投资款需要什么手续
  • 印花税减免税优惠政策2019
  • 销项负数发票是红字发票吗
  • 自己开发财务软件
  • 购入商品货款尚未支付
  • mysql如何修改数据库名
  • qq远程协助点不动
  • gamebar.exe是什么进程
  • wwSecure.exe - wwSecure是什么进程
  • win10系统怎么清理
  • raid主要使用三种技术
  • windowsxpsp3是什么版
  • 硬件茶谈win10系统安装
  • js创建类对象的方法
  • windows e
  • python图论算法
  • 安卓性能测试主要测试的是
  • [置顶]游戏名:chivalry2
  • linux归档文件什么意思
  • js如何获取浏览器窗口大小
  • NGUI学习笔记汇总
  • 增值税申报表如何填报
  • 江苏省国家税务局电话号码
  • 税务机关党建动员大会
  • 商铺转让费怎么开票项目
  • 广东揭阳怎么了
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设