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

  • 支付码截图发给别人可以付款吗(支付码截图发给别人付款有危险吗)

    支付码截图发给别人可以付款吗(支付码截图发给别人付款有危险吗)

  • 华为p30pro的屏占比多少(华为p30pro屏幕比例是多少)

    华为p30pro的屏占比多少(华为p30pro屏幕比例是多少)

  • 微信可以一直设置强提醒吗(微信一直设置不了零钱支付)

    微信可以一直设置强提醒吗(微信一直设置不了零钱支付)

  • 屏幕晃动怎么回事(屏幕晃来晃去)

    屏幕晃动怎么回事(屏幕晃来晃去)

  • p2000相当于什么显卡(p2200 相当于)

    p2000相当于什么显卡(p2200 相当于)

  • 抖音豆荚是什么(抖音买1000真人粉需要多少钱)

    抖音豆荚是什么(抖音买1000真人粉需要多少钱)

  • 怎么封掉一个人的全民k歌号(怎么封掉一个人微信)

    怎么封掉一个人的全民k歌号(怎么封掉一个人微信)

  • 抖音有多少人在玩(抖音有多少人在洗黑钱)

    抖音有多少人在玩(抖音有多少人在洗黑钱)

  • 计算机网络病毒来源(计算机网络病毒的传播途径)

    计算机网络病毒来源(计算机网络病毒的传播途径)

  • qq情侣空间设置是双方同步吗(qq情侣空间设置双方好友可见)

    qq情侣空间设置是双方同步吗(qq情侣空间设置双方好友可见)

  • 8p怎么分屏(8p手机如何分屏)

    8p怎么分屏(8p手机如何分屏)

  • 12v充电器能充6v电瓶吗(12V充电器能充16V电池吗)

    12v充电器能充6v电瓶吗(12V充电器能充16V电池吗)

  • iphone11pro max死机怎么重启(iphone11pro max死机无法重启)

    iphone11pro max死机怎么重启(iphone11pro max死机无法重启)

  • 什么是动态号码已失效(动态号码是啥意思)

    什么是动态号码已失效(动态号码是啥意思)

  • 网络受限是什么原因(网络受限是什么原因 登不上国内软件)

    网络受限是什么原因(网络受限是什么原因 登不上国内软件)

  • 微博怎么删除所有粉丝(微博怎么删除所有自己发出的微博)

    微博怎么删除所有粉丝(微博怎么删除所有自己发出的微博)

  • 电脑b站视频怎么下载(电脑b站视频怎么下载到本地)

    电脑b站视频怎么下载(电脑b站视频怎么下载到本地)

  • flash怎么下载(flash怎么下载字体)

    flash怎么下载(flash怎么下载字体)

  • 怎样设置微信头像(怎样设置微信头像有五星红旗)

    怎样设置微信头像(怎样设置微信头像有五星红旗)

  • vivo手机怎么关掉hd(vivo手机怎么关闭无障碍模式)

    vivo手机怎么关掉hd(vivo手机怎么关闭无障碍模式)

  • 手机倒充电怎么回事(手机倒充电怎么恢复)

    手机倒充电怎么回事(手机倒充电怎么恢复)

  • 腾讯地图是哪个公司的(腾讯地图是哪个国家的公司)

    腾讯地图是哪个公司的(腾讯地图是哪个国家的公司)

  • 掉驱动是显卡坏了吗(显卡驱动容易掉)

    掉驱动是显卡坏了吗(显卡驱动容易掉)

  • 苹果一代笔怎么充电(苹果一代笔怎么连接平板)

    苹果一代笔怎么充电(苹果一代笔怎么连接平板)

  • cun aloo是荣耀几(荣耀alooa是华为什么型号)

    cun aloo是荣耀几(荣耀alooa是华为什么型号)

  • oppo手机微信铃声在哪里设置(oppo手机微信铃声大小怎么调)

    oppo手机微信铃声在哪里设置(oppo手机微信铃声大小怎么调)

  • 华为手机网络拒绝接入解决方法(华为手机网络拒绝接入怎么解决)

    华为手机网络拒绝接入解决方法(华为手机网络拒绝接入怎么解决)

  • 织梦后台采集https目标站的一系列问题修正(织梦怎么导入数据库)

    织梦后台采集https目标站的一系列问题修正(织梦怎么导入数据库)

  • 企业所得税年度汇算
  • 一般纳税人内账税金的处理
  • 委托外单位研发的研发费用加计扣除最新政策
  • 收到红字专票怎么做账务处理
  • 城市维护建设税优惠政策
  • 出售的固定资产当月计提折旧吗
  • 销售收入计入其他应付款
  • 现金股利和股票股利的区别
  • 税控盘减免税有时间限制吗?
  • 厂家返利计提会计分录
  • 研发支出费用化支出每个月都要结转吗
  • 代办企业开户
  • 未开发票收入交增值税怎么做账?
  • 公司注销取不到采购发票怎么汇算清缴?
  • 行政相对人和行政管理相对人的区别
  • 企业所得税如何申报操作
  • 月结发票与实缴发票可以一起报销吗
  • 企业所得税季度纳税申报表 a类
  • 生产企业没有进项税如何交增值税
  • 电子银行承兑如何背书给别人
  • 转出未交增值税在借方是什么意思
  • 投资款需要缴纳增值税吗
  • 广播影视服务需要交文化事业建设费吗
  • 城市维护建设税减免税优惠政策
  • 分支机构增值税汇总纳税怎么申报?
  • 软件开发公司研发主管绩效考核
  • 一般纳税人进项税会计分录
  • win11无法打开英雄联盟
  • xp系统怎么取消用户登录
  • 以前年度损益调整属于哪类科目
  • 社保缴费要和工龄一致吗
  • 事业单位非税收入怎么做账
  • 无形资产的增值税怎么算
  • mac可以制作win启动盘吗
  • Yosemite使用技巧 如何使用Yosemite mac信息功能共享电脑屏幕教程
  • 月末结转营业税金及附加分录
  • php对接微信支付教程
  • 提取公益金会计科目
  • 企业负担的社保怎么做分录
  • Zend Framework+smarty用法实例详解
  • php similar_text()函数的定义和用法
  • php的时间戳
  • node.js的安装步骤
  • vue从0创建一个项目
  • showmount命令安装
  • php快速排序非递归
  • 交易性金融资产公允价值变动计入
  • sql server遇到的主要问题及解决方法
  • short int、long、float、double使用问题说明
  • 个人劳务报酬的个税
  • 只有收入没有成本怎么做账
  • 交易性金融资产入账价值怎么计算
  • 初级会计计划成本例题
  • 城镇土地使用税怎么算
  • 印花税算错了地方怎么办
  • 金税盘离线是什么意思
  • 测试账户收入怎么处理
  • 合并两公司的帐务处理
  • 纳税人id
  • 库存商品属于资产类科目吗
  • 公司抽奖的成本怎么算
  • 集资建房有维修基金吗
  • 最新商业会计科目做账
  • sql server错误和使用情况报告
  • WZCSLDR.exe - WZCSLDR是什么进程
  • linux查看当前时间戳
  • Win10 Mobile 10581预览版升级界面曝光 上手视频观赏
  • winxp如何增加c盘空间
  • win8怎么开启蓝牙
  • 电脑怎么连接上隐形wi
  • nodejs的express框架详解
  • 微信公众号摇号软件
  • 深入解析抑郁症:什么是它的表现?别小看它的危害程度!
  • js中的require函数
  • 原生js实现ajax步骤
  • python使用pymysql实现操作mysql
  • python数据类型详解
  • 扬州地方税务局在哪
  • 湖南电子税务申报
  • 供热基础设施配套费
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设