Spaces:
Paused
Paused
| import gradio as gr | |
| import json | |
| import asyncio | |
| import os | |
| import EdgeGPT | |
| from EdgeGPT import Chatbot, ConversationStyle | |
| import re | |
| """ | |
| 参考资料: | |
| https://www.bilibili.com/video/BV1KV4y197bX/?spm_id_from=333.1007.tianma.2-2-5.click&vd_source=9dc7baa799a4531df364244d2e87ee01 | |
| https://blog.csdn.net/xmh_free/article/details/127210992 | |
| python3 -m pip install EdgeGPT --upgrade | |
| https://github.com/acheong08/EdgeGPT/blob/0.4.4/src/EdgeGPT.py | |
| """ | |
| # read cookie from local file | |
| # with open('./cookies.json', 'r') as f: | |
| # cookies = json.load(f) | |
| async def get_model_reply(prompt,style,cookies,context=[]): | |
| # combines the new question with a previous context | |
| context = [prompt] | |
| cookies = json.loads(cookies) | |
| # given the most recent context (4096 characters) | |
| # continue the text up to 2048 tokens ~ 8192 charaters | |
| try: | |
| try: | |
| print(f"使用模式:{style}") | |
| bot = Chatbot(cookies=cookies) | |
| raw_data = await bot.ask(prompt, conversation_style=style) | |
| await bot.close() | |
| print(raw_data) | |
| except Exception as e: | |
| print(f">>>>>> 报错信息:\t -----> 【{e}】\n") | |
| if "throttled" in str(e): | |
| response = "> **错误: 我们很抱歉,但你已经达到了你在24小时内可以向Bing发送消息的最大数量。请稍后再查看!**" | |
| print(response) | |
| context += ["1"] | |
| responses = [(u, b) for u, b in zip(context[::2], context[1::2])] | |
| return responses, context | |
| if "CAPTCHA" in str(e): | |
| response = "> **错误: 账号需要人机验证。请登录聊天页面进行验证**" | |
| print(response) | |
| context += ["-2"] | |
| responses = [(u, b) for u, b in zip(context[::2], context[1::2])] | |
| return responses, context | |
| if "access this service" in str(e): | |
| response = "> **账号过期** >>>> 账号需要重新激活。" | |
| print(response) | |
| context += ["-1"] | |
| responses = [(u, b) for u, b in zip(context[::2], context[1::2])] | |
| return responses, context | |
| try: | |
| response = raw_data["item"]["messages"][1]["text"] | |
| except: | |
| response = raw_data["item"]["messages"][1]["adaptiveCards"][0]["body"][0]["text"] | |
| response = re.sub(r'\^', '', response) | |
| response = response.rstrip() | |
| context += [response] | |
| responses = [(u, b) for u, b in zip(context[::2], context[1::2])] | |
| return responses, context | |
| except EdgeGPT.NotAllowedToAccess: | |
| response = " >>>> 账号需要重新激活。" | |
| print(response) | |
| context += ["-1"] | |
| responses = [(u, b) for u, b in zip(context[::2], context[1::2])] | |
| return responses, context | |
| except: | |
| try: | |
| if raw_data["item"]["throttling"]["numUserMessagesInConversation"] > raw_data["item"]["throttling"][ | |
| "maxNumUserMessagesInConversation"]: | |
| response = ">>>请重新开启新的对话。" | |
| print(response) | |
| context += ["0"] | |
| responses = [(u, b) for u, b in zip(context[::2], context[1::2])] | |
| return responses, context | |
| except: | |
| if raw_data["item"]["result"]["value"] == "Throttled": | |
| response = "> **错误: 我们很抱歉,但你已经达到了你在24小时内可以向Bing发送消息的最大数量。请稍后再查看!**" | |
| print(response) | |
| context += ["1"] | |
| responses = [(u, b) for u, b in zip(context[::2], context[1::2])] | |
| return responses, context | |
| if raw_data["item"]["result"]["value"] == "CaptchaChallenge": | |
| response = "> **错误: 账号需要验证码验证登录。**" | |
| print(response) | |
| context += ["-2"] | |
| responses = [(u, b) for u, b in zip(context[::2], context[1::2])] | |
| return responses, context | |
| # inputs= "你好" | |
| # cookies = list_wo = r"E:\pythonProjectWork\xiaolv\mew-bing\zzceshi的.json" | |
| # a,b = get_model_reply(prompt=inputs,style="precise",cookies = cookies) | |
| with gr.Blocks() as dialog_app: | |
| with gr.Tab("Cookies"): | |
| cookies = gr.Textbox(lines=2, label="输入bing.com中的cookies(JSON格式)",) | |
| 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" | |
| ) | |
| style = gr.Dropdown(label="回答倾向模式选择", choices=["creative", "balanced", "precise"], multiselect=False, | |
| value="precise", type="value") | |
| inputs.submit(get_model_reply, [inputs, style, cookies,state ], [chatbot, state]) | |
| send = gr.Button("发送请求.....") | |
| send.click(get_model_reply, [inputs, style, cookies, 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")) |