Spaces:
Runtime error
Runtime error
import gradio as gr | |
import json | |
import asyncio | |
import os | |
import re | |
from EdgeGPT import Chatbot, ConversationStyle | |
# Read cookie from local file | |
with open('./cookies.json', 'r') as f: | |
cookies = json.load(f) | |
# Async function to get model reply | |
async def get_model_reply(prompt, style, context=[]): | |
context += [prompt] | |
bot = Chatbot(cookies=cookies) | |
prompt2 = '\n\n'.join(context)[:4096] | |
raw_data = await bot.ask(prompt2, conversation_style=style) | |
await bot.close() | |
try: | |
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: | |
try: | |
if raw_data["item"]["throttling"]["numUserMessagesInConversation"] > raw_data["item"]["throttling"]["maxNumUserMessagesInConversation"]: | |
response = "> **Oops, I think we've reached the end of this conversation. Please reset the bot!**" | |
context += [response] | |
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 = "> **Error: We're sorry, but you've reached the maximum number of messages you can send to Bing in a 24-hour period. Check back later!**" | |
context += [response] | |
responses = [(u, b) for u, b in zip(context[::2], context[1::2])] | |
return responses, context | |
# Function to send user input to model and get reply | |
def get_reply(inputs, style, state): | |
responses, context = asyncio.run(get_model_reply(inputs, style, state)) | |
chatbot.append_message("user", inputs) | |
chatbot.append_message("bot", responses[-1][1]) | |
state.append(responses) | |
# Define Gradio interface | |
with gr.Blocks() as dialog_app: | |
gr.Markdown("# A Simple Web to use New Bing Without Magic") | |
chatbot = gr.Chatbot() | |
state = gr.State([]) | |
markdown = gr.Markdown(label="Output") | |
with gr.Row(): | |
inputs = gr.Textbox(label="Enter question", placeholder="Enter text and press enter") | |
style = gr.Dropdown(label="Answer tendency", choices=["creative", "balanced", "precise"], multiselect=False, value="balanced", type="value") | |
inputs.submit(get_reply, [inputs, style, state]) | |
send = gr.Button("Send") | |
send.click(get_reply, [inputs, style, state]) | |
dialog_app.launch() | |
# Save state | |
with open('./state.json', 'w') as f: | |
json.dump(state, f) | |
# Save chatbot | |
with open('./chatbot.json', 'w') as f: | |
json.dump(chatbot, f) | |
# Save cookies | |
with open('./cookies.json', 'w') as f: | |
json.dump(cookies, f) | |
# Save |