import g4f import gradio as gr from g4f.Provider import ( Ails, You, Bing, Yqcloud, Theb, Aichat, Bard, Vercel, Forefront, Lockchat, Liaobots, H2o, ChatgptLogin, DeepAi, GetGpt ) from revChatGPT.V1 import Chatbot import os from g4f.models import Model model_provider_dict = {} # 遍历Model类中的name属性 for name in vars(Model): attr_value = getattr(Model, name) if hasattr(attr_value, 'name'): model_provider_dict[attr_value.name] = attr_value.best_provider # os.environ["no_proxy"] = "localhost,127.0.0.1,:1" with gr.Blocks() as demo: chatbot = gr.Chatbot([[None, None]], label='AI') msg = gr.Textbox(value="", label='') clear = gr.Button("Clear") model_name = gr.Dropdown(model_provider_dict.keys()) def user(user_message, history): return gr.update(value="", interactive=False), history + [[user_message, None]] def bot(history, model_name): history[-1][1] = '' bot_msg = g4f.ChatCompletion.create(model=model_name, provider=model_provider_dict[model_name], messages=[{"role": "user", "content": history[-1][0]}], stream=True) for c in bot_msg: history[-1][1] += c yield history response = msg.submit(user, [msg, chatbot], [msg, chatbot], queue=False).then( bot, [chatbot, model_name], chatbot ) response.then(lambda: gr.update(interactive=True), None, [msg], queue=False) clear.click(lambda: None, None, chatbot, queue=False) demo.title = "AI Chat" demo.queue() demo.launch()