import json, requests import gradio as gr def request_to_v2(message, cookie, user_id, channel_id,context=[]): times = 3 context = [message] headers = { # ':Authority': 'claude.ai', # ':Method': 'POST', # ':Path': '/api/append_message', # ':Scheme': 'https', 'Content-Type': 'application/json', 'Origin': 'https://claude.ai', 'Referer': f'https://claude.ai/chat/{channel_id}', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36', 'Cookie': cookie, 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8', # 'Accept-Encoding': 'gzip, deflate, br', 'Accept': 'text/event-stream, text/event-stream', 'Sec-Ch-Ua': '"Not.A/Brand";v="8", "Chromium";v="114", "Google Chrome";v="114"', 'Sec-Ch-Ua-Mobile': '?0', 'Sec-Ch-Ua-Platform': '"Windows"', 'Sec-Fetch-Dest': 'empty', 'Sec-Fetch-Mode': 'cors', 'Sec-Fetch-Site': 'same-origin', 'Connection': 'keep-alive', } post_msg_url = 'https://claude.ai/api/append_message' post_msg_data = { "completion":{ "incremental":True, "prompt": message, "timezone":"Asia/Shanghai", "model":"claude-2" }, "organization_uuid": user_id, "conversation_uuid": channel_id, "text": message, "attachments": [] } post_msg_data = json.dumps(post_msg_data) print(post_msg_data) try: response = requests.post(post_msg_url, headers=headers, data=post_msg_data, verify=False, stream=False) print(response) # print(response.status_code) # print(response.request) bots = "" print("*"*100) for data in response.iter_lines(): if data: print(data) # 将字节字符串转换为字符串 data_str = data.decode('utf-8') # 删除开头的 "data: " 部分 data_str = data_str.replace("data: ", "") data_json = json.loads(data_str) print(data_json) bots = bots + data_json["completion"] context += [bots] responses = [(u, b) for u, b in zip(context[::2], context[1::2])] return responses, context except BaseException as e: print("查询失败,正在重试") print(e) response = e context += [response] responses = [(u, b) for u, b in zip(context[::2], context[1::2])] return responses, context if __name__ == "__main__": with gr.Blocks() as dialog_app: with gr.Tab("Cookies"): cookies = gr.Textbox(lines=2, label="输入cookies",) user_id = gr.Textbox(lines=2, label="输入user_id",) channel_id = gr.Textbox(lines=2, label="输入channel_id",) with gr.Tab("New Bing Chat GPT4"): gr.Markdown(""" # 连接 new-bing 接口,用的是GPT4接口 如果回复为 "1" ,说明目前服务比较火爆,建议过段时间再来用; 如果回复为 "0" , 请刷新网页重来。 如果回复为 "-1" , 需要重新利用梯子去激活一下聊天功能。 如果回复为 "-2" , 说明该账号需要登录bing聊天页面进行人机验证。 ### 由于源码的更新,此时传入 [ choices = None ] 才能返回要求的格式。即不选择特定的choices模式 """) chatbot = gr.Chatbot() state = gr.State([]) markdown = gr.Markdown(label="Output") with gr.Row(): inputs = gr.Textbox( label="输入问题", placeholder="请输入你的文本,确保已经正确填入bing.com中的cookies" ) inputs.submit(request_to_v2, [inputs, cookies, user_id,channel_id,state], [chatbot, state]) send = gr.Button("发送请求.....") send.click(request_to_v2, [inputs, cookies, user_id,channel_id,state], [chatbot, state], api_name="xiaolvgpt") gr.Markdown(""" 如果输入后没有返回结果,大概率是你的 cookies 账号未申请new-bing的聊天功能; 步骤: 1. 在 Edge 浏览器; 2. 登录 个人账号 // 申请新账号; 3. 打开“动力”; 4. https://cn.bing.com/ 网页 或者 https://www.bing.com/new 看是否有聊天功能; 5. 新版的 Edge 浏览器右上角有个bing的图标,点击后就可以进行聊天; 6. 说明可以了,再关掉“动力”,使用国内的网络再次复制cookies。 """) # launches the app in a new local port dialog_app.launch(show_error=True) # 为网站设置密码防止滥用 # dialog_app.launch(auth=("admin", "pass1234"))