admin管理员组文章数量:1130349
目录
前言
准备工作
工作原理
功能设计
实现过程
基础概念
代理
请求
socket
控制台输入模块
配置文件
bingServer请求
bingSocket消息
子线程入口部分
主线程部分
工具函数
效果展示
写在最后
前言
ChatGPT在当下已然成为炙手可热的话题了,随着GPT-4的推出,网上关于其接口的文章也越来越多。但是今天,我们不聊GPT,说说它的老朋友:newbing
之前我发布了几篇关于对接openAI以及chatGPT的文章:Node搭建GPT接口,Node机器人,语音识别及合成,大家对此类文章的兴趣度还是挺高的,于是我决定深入探索一下NewBing的接口及对话方式,如果有兴趣的话就继续往下看吧
准备工作
- Node环境搭建
- VPN
- 可以使用NewBing的账号
- Edge或chathub谷歌插件(搭建服务可以不需要,只做原理展示)
工作原理
首先我们看看NewBing的实现原理是什么
挂VPN,打开必应,登录bing账号
如果显示使用Edge打开,我们可以下载一个Edge或者使用chathub插件。
这里我以Edge为例,在Edge中我们可以点击立即聊天开始使用
我们打开F12,进入网络菜单进行hack,输入一句对话并发送,开启与newbing的聊天
可以看到,在发送和接收对话时,浏览器发送了一个请求用于新建对话,并建立了websocket连接,最后将对话结果发送到页面
功能设计
知道了程序运行的原理,实现功能就有思路了,我的计划是在node控制台中实现一个与NewBing对话的功能,思路如下:
简述一下上面的流程,使用者通过命令打开newBing控制台,直接输入要发送的对话,等待一段时间后,收到消息反馈,继续下面的对话
这种方式不仅仅可以在控制台中使用,也可以尝试写成服务或websocket的形式,提供接口或消息给客户端调用,这里我就抛砖引玉,将后续的功能留给各位大佬实现
实现过程
基础概念
代理
使用proxy-agent模块可以让请求和socket代理到VPN所在的端口通过代理访问Bing获取消息
import ProxyAgent from "proxy-agent"
const agent = ProxyAgent('http://127.0.0.1:10240')// 访问vpn代理地址
通过agent参数使用代理功能
请求
请求函数使用的是我之前写的一个工具包,配合配套的catchAwait函数食用更佳
import { Request, catchAwait } from "utils-lib-js"
const bingRequest = new Request('https://www.bing')// 初始化请求地址
bingRequest.use("error", console.error)// 拦截抛错
const [err, res] = await catchAwait(this.bingRequest.GET("/turing/conversation/create"))// 发起请求
socket
WebSocket的使用可以参照之前的文章
控制台输入模块
使用readline模块可以接收控制台的输入内容
import readline from "readline";
readline.createInterface({
input: process.stdin,
output: process.stdout,
}).question('请输入:', ()=>{
// 输入完成,敲击了目录
前言
准备工作
工作原理
功能设计
实现过程
基础概念
代理
请求
socket
控制台输入模块
配置文件
bingServer请求
bingSocket消息
子线程入口部分
主线程部分
工具函数
效果展示
写在最后
前言
ChatGPT在当下已然成为炙手可热的话题了,随着GPT-4的推出,网上关于其接口的文章也越来越多。但是今天,我们不聊GPT,说说它的老朋友:newbing
之前我发布了几篇关于对接openAI以及chatGPT的文章:Node搭建GPT接口,Node机器人,语音识别及合成,大家对此类文章的兴趣度还是挺高的,于是我决定深入探索一下NewBing的接口及对话方式,如果有兴趣的话就继续往下看吧
准备工作
- Node环境搭建
- VPN
- 可以使用NewBing的账号
- Edge或chathub谷歌插件(搭建服务可以不需要,只做原理展示)
工作原理
首先我们看看NewBing的实现原理是什么
挂VPN,打开必应,登录bing账号
如果显示使用Edge打开,我们可以下载一个Edge或者使用chathub插件。
这里我以Edge为例,在Edge中我们可以点击立即聊天开始使用
我们打开F12,进入网络菜单进行hack,输入一句对话并发送,开启与newbing的聊天
可以看到,在发送和接收对话时,浏览器发送了一个请求用于新建对话,并建立了websocket连接,最后将对话结果发送到页面
功能设计
知道了程序运行的原理,实现功能就有思路了,我的计划是在node控制台中实现一个与NewBing对话的功能,思路如下:
简述一下上面的流程,使用者通过命令打开newBing控制台,直接输入要发送的对话,等待一段时间后,收到消息反馈,继续下面的对话
这种方式不仅仅可以在控制台中使用,也可以尝试写成服务或websocket的形式,提供接口或消息给客户端调用,这里我就抛砖引玉,将后续的功能留给各位大佬实现
实现过程
基础概念
代理
使用proxy-agent模块可以让请求和socket代理到VPN所在的端口通过代理访问Bing获取消息
import ProxyAgent from "proxy-agent"
const agent = ProxyAgent('http://127.0.0.1:10240')// 访问vpn代理地址
通过agent参数使用代理功能
请求
请求函数使用的是我之前写的一个工具包,配合配套的catchAwait函数食用更佳
import { Request, catchAwait } from "utils-lib-js"
const bingRequest = new Request('https://www.bing')// 初始化请求地址
bingRequest.use("error", console.error)// 拦截抛错
const [err, res] = await catchAwait(this.bingRequest.GET("/turing/conversation/create"))// 发起请求
socket
WebSocket的使用可以参照之前的文章
控制台输入模块
使用readline模块可以接收控制台的输入内容
import readline from "readline";
readline.createInterface({
input: process.stdin,
output: process.stdout,
}).question('请输入:', ()=>{
// 输入完成,敲击了版权声明:本文标题:在Node终端实现NewBing对话功能 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://it.en369.cn/jiaocheng/1754605755a2707775.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论