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

  • 微博营销和微信营销是互补关系吗?(微博营销和微信营销的特点)

    微博营销和微信营销是互补关系吗?(微博营销和微信营销的特点)

  • 华为平板和苹果平板哪个好(华为p9评测)(华为平板和苹果平板对比评测)

    华为平板和苹果平板哪个好(华为p9评测)(华为平板和苹果平板对比评测)

  • 健康码在别人手机上如何解绑(健康码在别人手机上怎么转到自己手机上)

    健康码在别人手机上如何解绑(健康码在别人手机上怎么转到自己手机上)

  • 美团怎么发起二次配送(美团怎么发起二次退款)

    美团怎么发起二次配送(美团怎么发起二次退款)

  • 为什么注册不了12306(为什么注册不了个人所得税app)

    为什么注册不了12306(为什么注册不了个人所得税app)

  • 苹果耳机三代充电线怎么用(苹果耳机三代充电仓丢了可以配的到吗)

    苹果耳机三代充电线怎么用(苹果耳机三代充电仓丢了可以配的到吗)

  • 热点会查到手机位置吗(热点会查到手机号码吗)

    热点会查到手机位置吗(热点会查到手机号码吗)

  • 华为p40是双卡双待吗(华为p40是双卡双待卡槽在哪里)

    华为p40是双卡双待吗(华为p40是双卡双待卡槽在哪里)

  • 拼多多的保证金是多少(拼多多的保证金可以随时退吗)

    拼多多的保证金是多少(拼多多的保证金可以随时退吗)

  • 计算机的com指什么(计算机comp是什么意思啊)

    计算机的com指什么(计算机comp是什么意思啊)

  • 华为微信暗黑模式怎么设置(微信新版本华为手机怎么设置暗黑模式)

    华为微信暗黑模式怎么设置(微信新版本华为手机怎么设置暗黑模式)

  • 手机如何自己给自己录视频(手机如何自己给自己拨号)

    手机如何自己给自己录视频(手机如何自己给自己拨号)

  • 抖音黑屏特效怎么弄(抖音屏幕黑黑的是什么特效)

    抖音黑屏特效怎么弄(抖音屏幕黑黑的是什么特效)

  • 华为省电模式有啥影响(华为省电模式有闹钟吗)

    华为省电模式有啥影响(华为省电模式有闹钟吗)

  • 账号申诉是什么意思(账号申诉怎么容易成功)

    账号申诉是什么意思(账号申诉怎么容易成功)

  • 在计算机网络中wan指的是(在计算机网络中,LAN指的是)

    在计算机网络中wan指的是(在计算机网络中,LAN指的是)

  • dub-al20是华为什么型号(华为 dub-al20)

    dub-al20是华为什么型号(华为 dub-al20)

  • word2010文档如何做目录(word2010文档如何添加视频)

    word2010文档如何做目录(word2010文档如何添加视频)

  • linux修改文件权限(linux修改文件权限为可读可写可执行)

    linux修改文件权限(linux修改文件权限为可读可写可执行)

  • 怎么关掉酷狗音乐原唱声音(怎么关掉酷狗音乐里面的桌面歌词)

    怎么关掉酷狗音乐原唱声音(怎么关掉酷狗音乐里面的桌面歌词)

  • 华为机器人怎么召唤(华为机器人怎么关闭)

    华为机器人怎么召唤(华为机器人怎么关闭)

  • 钉钉文件怎么发到QQ(钉钉文件怎么发到qq邮箱)

    钉钉文件怎么发到QQ(钉钉文件怎么发到qq邮箱)

  • 手机桌面时间怎么设置(手机桌面时间怎么换样式)

    手机桌面时间怎么设置(手机桌面时间怎么换样式)

  • Javascript中的图像数据对象:Image、ImageData 和 ImageBitmap(javascript图表)

    Javascript中的图像数据对象:Image、ImageData 和 ImageBitmap(javascript图表)

  • 【小程序从0到1】网络数据请求——request合法域名|GET|POST|跨域?Ajax?(小程序从入门到精通)

    【小程序从0到1】网络数据请求——request合法域名|GET|POST|跨域?Ajax?(小程序从入门到精通)

  • 个体工商户超过免税额度如何收税
  • 分税制财政管理体制是什么?
  • 研发设备定义
  • 企业所得税减免税额包括哪些
  • 会展服务费怎么开票
  • 一般纳税人月底增值税如何结转
  • 化工原材料销售挣钱吗
  • 一般劳务报酬和税收区别
  • 未提供一般纳税人证明
  • 增值税一般计税方法
  • 职工取暖费可以一次性发放吗
  • 税务筹划有哪些内容
  • 跨国避税
  • 所得税汇算交的所得税怎么做账
  • 加油站销售加油卡是否征收增值税
  • 营改增后如何纳税
  • 个人遗失的定义
  • 丢失增值税专用发票
  • 源泉扣缴税率是多少
  • 小规模纳税人日用品增值税税率
  • 减免税到什么时候
  • 高温补贴需要交个人所得税吗2019
  • 进项税额转出多转了怎么办
  • 餐饮发票免税能报销吗
  • linux批量操作工具
  • 项目投资净现值计算公式
  • 银行的财务会计
  • 绝地求生闪退怎么解决win10
  • QQPCTray.exe是什么进程 QQPCTray.exe文件介绍
  • mmc.exe是什么进程
  • 房屋装修各项费用比例
  • 股票以公允价值计量
  • php中undefined index
  • php常用命令
  • 国内来料加工会亏本吗
  • echarts series name
  • 机器学习中的数学原理——过拟合、正则化与惩罚函数
  • 论文导语如何写
  • 没有发票的支出可以扣除企业所得税么
  • 出口免税税务备案流程图
  • swoole扩展安装
  • 搜索站内内容
  • mysql使用指南
  • mongodb聚合函数mapreduce
  • 公司给员工交社保对公司有什么好处
  • 编制科目余额表的方法
  • 开票机号填错了怎么办
  • 内账需要哪些单据
  • 如何进行捐款活动
  • 预付检测费未收到发票
  • 出国人员差旅出差补贴标准
  • 以前年度多计提了费用
  • 车辆检验收费
  • 工会经费计算公式的例子
  • 现金日记账根据记账凭证填写吗
  • 银行利息为什么用红字
  • 投资方持有的能够对被投资单位实施
  • sql中varchar和number比较
  • mysql有几种
  • windows98的开始菜单包括了
  • windows xp正式退休
  • win2003和xp一样吗
  • win8怎么取消自动关机
  • xp系统如何进入桌面
  • 进程lsass.exe
  • avc文件用什么打开
  • 彻底禁止win11自动更新
  • win双系统怎么切换
  • win7屏幕颜色不正常
  • win7开机假死
  • linux开启samba服务
  • Win10预览版拆弹
  • jQuery中Nicescroll滚动条插件的用法
  • python计算文件大小
  • 广东国税局发票查询平台
  • 上海社保联网
  • 青海税务app怎么开票
  • 江西发票税率
  • 个人税务登记证怎么注销
  • 何为标兵称号
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设