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

  • 麒麟9000 4g版和5g版有什么不同(麒麟90004g版和5g版性能)

    麒麟9000 4g版和5g版有什么不同(麒麟90004g版和5g版性能)

  • 小米平板5pro怎么进入开发者模式(小米平板5pro怎么样)

    小米平板5pro怎么进入开发者模式(小米平板5pro怎么样)

  • oppo a92s有nfc功能吗(oppoa92s手机nfc功能在哪里)

    oppo a92s有nfc功能吗(oppoa92s手机nfc功能在哪里)

  • 快捷指令删了怎么恢复(快捷指令删了怎么找回来)

    快捷指令删了怎么恢复(快捷指令删了怎么找回来)

  • 手机短信被轰炸有什么办法解决(电话短信无限轰炸)

    手机短信被轰炸有什么办法解决(电话短信无限轰炸)

  • beatx白灯闪烁但是连接不上

    beatx白灯闪烁但是连接不上

  •  笔记本电脑如何上网课(笔记本电脑如何截屏)

    笔记本电脑如何上网课(笔记本电脑如何截屏)

  • 淘宝红包支付受保障吗(使用淘宝红包支付卖家马上收到钱吗)

    淘宝红包支付受保障吗(使用淘宝红包支付卖家马上收到钱吗)

  • 数据透视图和透视表的区别(数据透视图透出来有3行怎么办)

    数据透视图和透视表的区别(数据透视图透出来有3行怎么办)

  • 佳能打印机三角灯闪烁是怎么回事(佳能打印机三角形灯闪烁怎么处理)

    佳能打印机三角灯闪烁是怎么回事(佳能打印机三角形灯闪烁怎么处理)

  • 高德地图如何关闭hud模式(高德地图如何关闭新手模式)

    高德地图如何关闭hud模式(高德地图如何关闭新手模式)

  • djiango是什么(djia是什么意思)

    djiango是什么(djia是什么意思)

  • p70处理器相当于骁龙(p70处理器相当于麒麟)

    p70处理器相当于骁龙(p70处理器相当于麒麟)

  • 手机qq2g在线有几种可能(手机qq2g在线能收到消息吗)

    手机qq2g在线有几种可能(手机qq2g在线能收到消息吗)

  • 苹果6s16g内存不够用怎么办(16g苹果6sp内存不足)

    苹果6s16g内存不够用怎么办(16g苹果6sp内存不足)

  • led灯驱动器坏了如何修(led灯驱动器坏了灯还会亮吗)

    led灯驱动器坏了如何修(led灯驱动器坏了灯还会亮吗)

  • 苹果xs关机键可以重新设置吗(苹果xs关机键没反应)

    苹果xs关机键可以重新设置吗(苹果xs关机键没反应)

  • 拉黑了还能收到短信吗(拉黑了还能收到添加好友请求吗)

    拉黑了还能收到短信吗(拉黑了还能收到添加好友请求吗)

  • word画线条的快捷键(word 画线条)

    word画线条的快捷键(word 画线条)

  • 怎样给微信头像加一面五星红旗(怎样给微信头像加文字)

    怎样给微信头像加一面五星红旗(怎样给微信头像加文字)

  • 小爱语音引擎有什么用(小爱语音引擎有什么作用)

    小爱语音引擎有什么用(小爱语音引擎有什么作用)

  • 黑马程序员学费是多少(黑马程序员学费可以讲价吗)

    黑马程序员学费是多少(黑马程序员学费可以讲价吗)

  • win10电脑记事本在哪(win10电脑记事本打不开显示错误)

    win10电脑记事本在哪(win10电脑记事本打不开显示错误)

  • 补缴以前年度附加税如何入账
  • 如何计算土地增值税的增值额
  • 小规模销售产品会计分录
  • 劳务税能退税吗现在
  • 扣缴附加税怎么做分录
  • 农户的竹扫把如何开票
  • 通信协会费入什么科目
  • 房地产项目结转条件
  • 企业临时外出经营如何使用发票
  • 接受捐赠计入什么费用
  • 项目部租房办公应计入什么费用
  • 总分公司能互相开票吗
  • 非货币性资产交换损益计算
  • 其他服务费包括哪些内容
  • 一般纳税人年度开票限额
  • 专票密码区出来了一点有关系吗
  • 税盘被锁应该怎么办?
  • 开了发票一定要确认收入吗
  • 河道管理费入什么科目
  • 注册资本与注册资金的区别
  • 已开发票做账联放哪里
  • 债券回购的含义和种类
  • 怎样知道自己是否贫血
  • 企业债券和公司债券
  • 一般纳税人销售二手车增值税税率
  • 鸿蒙系统怎样开启5G
  • 宏病毒感染的文件类型是什么
  • 收到应缴财政款
  • php正则表达式验证url
  • 电脑CPU性能天梯
  • 居民企业应纳税额
  • 累计折旧额怎么计算公式
  • 解决办法总比困难多
  • PHP:imagecopyresampled()的用法_GD库图像处理函数
  • 企业管理的管理系统
  • 旧设备换新设备会计分录
  • 应收账款属于会计要素中的什么科目
  • auto系列软件
  • css案例教程
  • 帝国cms使用手册
  • 报销具体流程
  • 货物赔偿款如何计算
  • 政府税收返还计入什么科目
  • 科技型中小企业享受优惠税收政策
  • 基础电信是什么
  • 增值税申报表填写顺序
  • 红字发票的数量乘以单价可以不等于含税金额吗
  • 银行承兑汇票是什么意思
  • 公司充话费
  • 本年利润怎么结转成未分配利润
  • 企业迁移税务如何办理
  • 计提工会经费是什么凭证
  • 补提去年折旧费不需要调整所得税吗
  • 暂估入库怎么处理
  • 连锁零售药房
  • 资产类科目一般是什么
  • 什么是库存现金限额
  • 仲裁是什么意思举个例子
  • 汇总帐凭证处理
  • sql server使用
  • Win7系统重装后开不了机
  • mac系统如何安装双系统
  • linux svn操作
  • debian7安装教程
  • node.js项目结构
  • 三眼仔啥意思
  • css图片标签
  • Node.js中的construct构造函数
  • Web Inspector:关于在 Sublime Text 中调试Js的介绍
  • unity5.4.0
  • python 编程技巧
  • jquery判断div是否显示
  • jquery cookie用法
  • 面向对象的基础知识
  • android底部弹出页面
  • 充电桩充电怎么收费,几种收费方法
  • 成都交通官网限号查询系统
  • 税收制度的核心是税法
  • 江苏省税务局电话咨询热线
  • 汽车契税和购置税一样吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设