import gradio as gr from constants import METRICS_TAB_TEXT import requests import re import uuid import random import time handshake_url = "http://127.0.0.1:8000/chatbot/" dialog_url = "http://127.0.0.1:8000/chatbot/dialoginfo" finish_query_url = "http://127.0.0.1:8000/chatbot/finishquery" PRESET_ANSWERS = ["刚到美国的时候,觉得美国人像傻子一样,到处都是漏洞。任何地方的厕所都有免费纸,有些人定期去扯很多回家,纸都不用买。快餐店的饮料,有的可以无限续杯,有些几个人买一份饮料,接回来灌到各自的杯子里;等等。", "尽管美国有许多“漏洞”,但作为超级大国,显然能带给人以无尽的故事与思考。我来分享一下哪些是去了美国才知道的事,主题主要围绕着生活、衣食住行、文化冲击、教育医疗等展开叙说,本文有5千字左右,你也可以跳到感兴趣的部分阅读。" "美国的城市风貌与基础设施1、去到了美国才知道,纽约的城市样貌跟我想象的发达不一样,真实的纽约街景是很嘈杂和市井。例如,在曼哈顿区路旁,随处可见的小摊位,卖鲜花的、卖各种小食、卖自制首饰的,卖艺术品等等。我留意一下,发现每个路边摊都有合法的营业执照。"] def get_internet_ip(): r = requests.get("http://txt.go.sohu.com/ip/soip") ip = re.findall(r'\d+.\d+.\d+.\d+', r.text) if ip is not None and len(ip) > 0: return ip[0] return None def get_chat_answer(query, chatbot): chatbot.append([query, ""]) q_id = str(uuid.uuid1()) this_answer = random.choice(PRESET_ANSWERS) for i in range(0, len(this_answer), 3): time.sleep(0.5) print(uuid.uuid1()) chatbot[-1][-1] = this_answer[:i] + "▌" yield "", chatbot chatbot[-1][-1] = this_answer yield "", chatbot def get_chat_answer_request(query, chatbot): q_id = str(uuid.uuid1()) r = requests.post(handshake_url, json={"q_id": q_id, "query": query, 'history': chatbot}) if r.json()['code'] == 202: for _ in range(1000): r = requests.get(dialog_url, {"dialogid": q_id}) history = r.json()['history'] print(history) while len(history[-1]) == 0: history.pop() r_finish = requests.get(finish_query_url, {"dialogid": q_id}) if r_finish.json() == True: yield "", history print('break') break yield "", history time.sleep(1) def hello(profile: gr.OAuthProfile | None) -> str: if profile is None: return "I don't know you." return f"Hello {profile.name}" css = """ col-container {max-width: 510px; margin-left: auto; margin-right: auto; margin-up: auto; margin-bottom: auto;} """ with gr.Blocks(css=css) as demo: with gr.Column(elem_id="col-container"): with gr.Tab("🧠 模型对话 Dialog"): gr.LoginButton() gr.LogoutButton() gr.Markdown().attach_load_event(hello, None) chatbot = gr.Chatbot([[None, get_internet_ip()]], show_label=False, elem_id="chatbot") query = gr.Textbox(show_label=False, placeholder="请输入提问内容,按回车进行提交") query.submit(get_chat_answer,[query, chatbot], [query, chatbot]) with gr.Tab("🎚️ 模型微调 Fine-tune"): with gr.Row(): with gr.Column(): ft_task_name = gr.Textbox(value="", label="任务名称") ft_task_type = gr.Dropdown(["cat", "dog", "bird"], label="任务类型", info="要创建任务的类型") with gr.Column(): ft_epochs = gr.Textbox(value="", label="epochs") ft_start_lr = gr.Textbox(value="", label="start LR") ft_end_lr = gr.Textbox(value="", label="end LR") submit_btn = gr.Button(value="Submit") with gr.Tab("📈 信息 Info"): gr.Markdown(METRICS_TAB_TEXT, elem_classes="markdown-text") demo.queue(max_size=20).launch()