BingGPT 国内中转

本项目的github地址

本项目最上层是提供一个使用BingGPT的web接口,仅供学习,如有侵权请联系作者。

预先准备:

  1. 一个可以访问bing的服务器(可在tencent cloud 选购)
  2. 一个在已经注册new_bing_list的账号

使用:

  1. 使用requirements 下载相关包
  2. 将template.py中的相关模板数据替换成你自己的参数,详见下面的详细使用说明A.配置项
  3. 运行web_interface.py 访问HTTP API接口

详细使用说明:

配置

本项目所有的配置放在template.py中,详细参数如下

# 下面这五个常量 为访问过程中的常量 建议不更改
CREATE_CHAT_URL = "https://www.bing/turing/conversation/create"
UNAUTHORIZED = "UnauthorizedRequest"
END_SET = ""
WAKE_CONNECTION = '''{"type":6}'''
CHAT_URL = "wss://sydney.bing/sydney/ChatHub"

# 2023.03.02新增
CREATIVE = "cdxtone=Creative"
BALANCE = "cdxtone=Balanced"
PRECISE = "cdxtone=Precise"
REQUEST_DICT = {"creative": CREATIVE, "balance": BALANCE, "precise": PRECISE}
DEFAULT_MODE = BALANCE
# 支持bing最新出的创造力模式  平衡模式和精确模式
# 配置性常量,项目配置类更改, 可更改可无需更改
ROUND_LIMIT = 6			 		# 目前bing限制每轮对话只有6次, 可跟随微软最新政策自行更改, 需保证小于微软最新的限制数
ROUND_LIMIT_TIME = 300   		# 每轮对话进行一个限时,五分钟后必定刷新为新对话,可自定义,如果没理解也可直接使用无需更改
GET_TRACE_ID = “https://www.bing.com/search?q=AI-Cha”  # 微软的对话的traceId跟随每次搜索的EVent_ID, 此网址可更改为搜索任意内容的网址
CHAT_HEADER 					# websocket 浏览器的请求头,可不更改(我已删减为最少参数)
# 最好更改、不更改可能会出错
CONVERSATION_HEADER 			# 浏览器的请求头, 建议从自己的浏览器上直接复制粘贴即可
ARGUMENT_TEMPLATE 				# 需将参数中的location 和location hints 删除,删除后如下/更换为自己的参数

'''
ARGUMENT_TEMPLATE = '''
{
	"arguments": [{
		"source": "cib",
		"optionsSets": ["nlu_direct_response_filter", "deepleo", "disable_emoji_spoken_text", "responsible_ai_policy_235", "enablemm", "dlislog", "dloffstream", "dv3sugg", "harmonyv3"],
		"allowedMessageTypes": ["Chat", "InternalSearchQuery", "InternalSearchResult", "InternalLoaderMessage", "RenderCardRequest", "AdsQuery", "SemanticSerp"],
		"sliceIds": ["0113dllog", "216dloffstream"],
		"traceId": "63f86e96298d41c09aa2cfcac34d728a",
		"isStartOfSession": false,
		"message": {
			"locale": "zh-CN",
			"market": "zh-CN",
			"region": "US",
			"timestamp": "2023-02-24T16:00:24+08:00",
			"author": "user",
			"inputMethod": "Keyboard",
			"text": "那这些招式都叫什么名字呢",
			"messageType": "Chat"
		},
		"conversationSignature": "EM8oXvBUfD7Ipl/Ptl27ywhKlYMytXvP2g1O7Bfg/iw=",
		"participant": {
			"id": "914798459437187"
		},
		"conversationId": "51D|BingProd|B47307D0C3A2964D246D56BD2AB34C900EA1051628C7AB4DFDFF99DA8929E39F"
	}],
	"invocationId": "1",
	"target": "chat",
	"type": 4
}
'''


'''

更换方法:

  • CONVERSATION_HEADER:替换成你的浏览器访问bing 的请求头,具体操作

    1. 打开浏览器(Edge/ Firefox/Chrome)f12 打开开发工具, 选择网络,

    2. 访问https://www.bing 不要访问重定向回cn的网站,使用相关插件如X_Forward_For等设置,相关内容在Bilibili上有相关使用方法

    3. 抓取network中www.bing包, 单机, 直接复制整个请求头

  • ARGUMENT_TEMPLATE: 抓取bing 连天过程中的chathub 包,把请求的数据直接粘贴下来替换即可,不会的话直接替换为上面代码块中的参数

Mail:

本项目支持mail 提醒,当cookie过期或今日提问次数达到上限(笔者使用时是100句)或项目发生Exception时可以发送邮件提醒

mail 代码与配置均在mail_remain.py中,如不想使用或不会设置将文件中的USE_MAIL = False

使用前置需要发送邮箱开启smtp协议,详情请自行搜索具体邮件如qq或网易开启smtp协议的方法,不赘述

MAIL_CONF = {
    "self_mail": "",								# 开启smtp邮箱的邮箱号码
    "self_smtp_key": "",							# 申请smtp时给的key(有些邮箱可能为自己的密码)
    "self_pop_key": "",    							# 在本项目暂时不用pop3,无需填写
    "mail_type": {
        "qq": "smtp.qq",
        "126": "smtp.126",
    },
    "receiver": ""									# 设定你想接收通知的邮箱
}

Cookie

bing的登录是使用Cookie, Cookie通上面抓取到的CONVERSATION_HEADER中的cookie值。但为保证cookie可由我们更方便的更新,将cookie的获取方式变为从本地读取文件,详见create_conversation.py 中的build cookie函数(都本地文件)

Cookie文件e.g. cookie.txt (自定义命名即可)

cookie: SRCHD=AF=NOFORM; SRCHUID=V=2&GUID=A0802B17DEFE442D85B85A23E49377A5&dmnchg=1; …

运行原理

本项目考虑服务器性能和开发成本没有搞登录,取而代之的时请求中带上你预存的cookie文件名的转码,转码函数在web_interface中的file_name_trans_key函数。此函数在整个项目中没有调用,仅用于给使用者提供一个cookie文件名转码接口。

此转码算法为简单的字符串变化,如想换成更安全的算法直接替换key_trans_file函数即可

本项目没有Exception处理,取而代之的使用了error.py中的错误码描述问题,其中12是正常响应码,其他各码均需深入查看项目理解,不再赘述具体错误码

运行

  1. 下载python >= 3.8版本 运行pip install -r requirements.txt 下载相关包
  2. 完成上述配置阅读和编辑后, 运行 python web_interface.py运行
  3. 请求时访问 http://你的Ip:你的端口/key/cookie文件名转码?question=你的问题

更多推荐

BingGPT 国内中转