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

  • ifnull函数(ifnull函数用法)

    ifnull函数(ifnull函数用法)

  • vivox70pro+怎么设置侧滑返回(vivox70pro怎么设置双击亮屏)

    vivox70pro+怎么设置侧滑返回(vivox70pro怎么设置双击亮屏)

  • 苹果二代笔怎么连接ipad(苹果二代笔怎么查序列号和激活时间)

    苹果二代笔怎么连接ipad(苹果二代笔怎么查序列号和激活时间)

  • 微信支付怎么设置密码(微信支付怎么设置零钱优先支付)

    微信支付怎么设置密码(微信支付怎么设置零钱优先支付)

  • 淘宝买东西好友会看见吗(淘宝买东西好友能看到吗)

    淘宝买东西好友会看见吗(淘宝买东西好友能看到吗)

  • 快手12级升级需要多少(快手1级升到22级要多少钱)

    快手12级升级需要多少(快手1级升到22级要多少钱)

  • 华为nova6开发者选项在哪(华为nova6开发者选项在哪里打开)

    华为nova6开发者选项在哪(华为nova6开发者选项在哪里打开)

  • CNKI能搜到信息的元数据吗(cnki可以检索到的文献资料包括)

    CNKI能搜到信息的元数据吗(cnki可以检索到的文献资料包括)

  • 苹果抹除数据和恢复出厂设置一样吗(iphone手机抹除数据 是不是就相当于新机子)

    苹果抹除数据和恢复出厂设置一样吗(iphone手机抹除数据 是不是就相当于新机子)

  • 为什么情侣空间开不了(为什么情侣空间解除了还是有标志)

    为什么情侣空间开不了(为什么情侣空间解除了还是有标志)

  • qq怎么设置特别关心铃声(qq怎么设置特别关心群)

    qq怎么设置特别关心铃声(qq怎么设置特别关心群)

  • wpa2密码是什么(wpa2密码是什么密码)

    wpa2密码是什么(wpa2密码是什么密码)

  • iphone有没有分屏功能(iphone有分屏么)

    iphone有没有分屏功能(iphone有分屏么)

  • 电脑cad怎么下载安装(cad下载电脑版免费下载)

    电脑cad怎么下载安装(cad下载电脑版免费下载)

  • 虚商号码可以转网吗(虚商号码可以转实体运营商吗)

    虚商号码可以转网吗(虚商号码可以转实体运营商吗)

  • 苹果xr卡死机了无法强制关机(苹果xr卡死机了强制关机)

    苹果xr卡死机了无法强制关机(苹果xr卡死机了强制关机)

  • 快手直播怎么举报封号(快手直播怎么直播)

    快手直播怎么举报封号(快手直播怎么直播)

  • 抖音null是谁(抖音名null是谁)

    抖音null是谁(抖音名null是谁)

  • 华为手机有翻译功能吗(华为手机有翻译英语功能吗)

    华为手机有翻译功能吗(华为手机有翻译英语功能吗)

  • 怎么给异地的人订外卖(怎么给异地的人订蛋糕)

    怎么给异地的人订外卖(怎么给异地的人订蛋糕)

  • 如何查看被销毁的闪照(如何查看被销毁的文件)

    如何查看被销毁的闪照(如何查看被销毁的文件)

  • 爱奇艺写着vf什么意思(爱奇艺viq)

    爱奇艺写着vf什么意思(爱奇艺viq)

  • 荣耀nemal10是什么型号(荣耀nemul10是什么型号)

    荣耀nemal10是什么型号(荣耀nemul10是什么型号)

  • 微信如何保存别人的视频(微信如何保存别人朋友圈背景图)

    微信如何保存别人的视频(微信如何保存别人朋友圈背景图)

  • CSS合并单元格四种方式:table/display/flex/grid(css合并为单一边框)

    CSS合并单元格四种方式:table/display/flex/grid(css合并为单一边框)

  • 印花税核定征收文件
  • 股票初始计量后按新金融准则计入哪个科目
  • 通货膨胀有什么危害?
  • 混合销售行为如何缴纳增值税税率
  • 研发费用可以列支成本吗
  • 银行存款没有期初余额的总账怎么填
  • 兼营行为的税务处理办法
  • 增值税进项税转出所得税调整吗
  • 可以用来办理贴现的票据
  • 加盟费摊销会计分录
  • 零申报企业年报资产总额怎么填
  • 税前扣除的职工福利费标准
  • 电力公司安装变压器要多少钱
  • 税会差异例子
  • 跨区域预缴企业所得税
  • 资产减值损失汇算清缴调整表
  • 委托代购商品的核算有
  • 物业公司收的预存水费不够抵减怎么交税
  • 机动车抵扣联是什么
  • 法人往公户打款是实收资本还是借款
  • 文件的类型可以通过什么来区分
  • win10 0×0000007b怎么解决
  • win10电脑键盘灵敏度怎么调
  • 汽车维修费可以入账吗
  • PHP Warning:PHP Startup: in Unknown on line 0解决办法
  • 水利建设基金是税还是费
  • 联想随身充评测
  • mdn php
  • vue实战项目教程
  • 政府的奖励金计入哪个科目
  • 房地产项目如何通过抖音宣传
  • arthas常用命令
  • 报销的费用计入什么科目
  • json与json字符串
  • 服务费可以暂估成本吗
  • springboot比spring做了哪些改进
  • 机器学习——BP神经网络详细介绍及案例Python代码实现
  • javascript猜数字游戏+表单
  • 如何让别人访问自己的qq空间
  • springmvc的执行流程
  • 以固定资产抵债发生的固定资产
  • 进项发票和销项发票金额相同还需要交税金吗
  • 暂估入库会计
  • SQLserver数据库的while附近有语法错误,应为AS
  • python操作yaml文件
  • 挂靠设计公司费用标准怎么记账
  • 海关进口增值税专用缴款书如何抵扣
  • 其他应收应付如何平账
  • 分公司可以独立签约吗
  • PostgreSQL 查看数据库,索引,表,表空间大小的示例代码
  • 单位未足额缴纳社保怎么赔偿
  • 事业单位未取得相关证书不予受理
  • 基金申购费的会计分录
  • 年度所得税费用
  • 固定资产售后回购
  • 进项税留抵怎么做分录
  • 管理费用明细科目设置和核算需要注意哪些问题
  • 编制利润表的主要根据是
  • 企业备用金怎么做账
  • freebsd10安装教程
  • qq远程协助点不动
  • win8热点设置
  • win7打开游戏显示已停止工作
  • windowsxp入门
  • linux禁止root用户远程登录
  • linux groupmod命令参数及用法详解(linux修改组信息命令)
  • w1020h2更新失败
  • Win10 Mobile 10586.312提前体验
  • unity3d怎么删除模型
  • Extjs TriggerField在弹出窗口显示不出问题的解决方法
  • windows批处理命令脚本
  • 非法文件名是什么
  • linux中unzip解压完看不到文件
  • android反编译apk
  • Python的内置字典数据类型为___
  • python里list
  • 未开票收入如何申报增值税
  • 发票纳税人识别号错了能报销吗
  • 环保税征税范围噪音
  • 关于加强税务稽查工作的思考
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设