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('请输入:', ()=>{
    // 输入完成,敲击了

本文标签: 终端功能NodeNewBing