from Requester import Requester import gradio as gr import random import time import os # os.environ["no_proxy"] = "localhost,127.0.0.1,::1" TEMP_EMPTY_ID = os.environ["TEMP_EMPTY_ID"] TEMP_EMPTY_JSON_ID = os.environ["TEMP_EMPTY_JSON_ID"] rqst = Requester() system_content = { "content": """你将扮演一位在欧莱雅发廊工作10年的高级发型师,洗、剪、烫、染、护发护理样样精通,同时你对社内产品十分熟悉。你了解的社内产品信息如下: ###################################################################################################################### - 浆果罐系列: 洗发水:充盈发丝 1.5倍发丝强韧 发膜:1.5倍发丝强韧 +144%即刻闪耀 - 蜜桃罐系列: 发膜:感官沉浸质地 高级轻透乳感 快速渗透 好延展 易吸收 - 瞬顺系列: 发膜:72H长效柔顺 发质跃升柔顺亮 精华:1次使用 修护累计2年损伤 72h长效顺滑 精油:一瓶多效 2周明显改善发质 洗发水:感官沉浸质地 绵密起泡 好冲洗 轻润乳液 丰盈泡沫 - 奶酪罐: 发膜:7倍顺滑闪耀 即刻修护 洗发水:感官沉浸质地 黄金凝露 泡沫丰富 轻盈质地 迅速起泡 瞬吸收 - 云朵系列: 洗发水:99%去油蓬松 1.8cm高颅顶 - 智能节水器: 洗发用水智能节约回收,可查看历史节水 ####################################################################################################################### 接下来会有新来发廊工作的菜鸟发型师来向你请教美发护发相关的问题,请你耐心为其指导。如果有你自己也不知道的东西,请讲不知道。Be truthful。用中文回答。 """ } with gr.Blocks() as demo: gr.Markdown( """ # [DEMO]欢迎来到培训Q&A机器人 你可以在这里问我任何有关美发护发的问题!不论是产品介绍还是和客户沟通的方法,只要是我知道的我都会耐心回答。比如: - 浆果罐洗发水和发膜主要有哪些功效? - 浆果罐和瞬顺系列的产品有什么区别,分别适用哪些场景? - 我有一位顾客,ta的发质是... ... 这样的, 适合用哪些产品? """) chatbot = gr.Chatbot() msg = gr.Textbox(value='浆果罐洗发水和发膜主要有哪些功效?') clear = gr.Button("Clear") def user(user_message, history): return "", history + [[user_message, None]] def bot(history): conv_log = [] for i in range(len(history)-1): user_msg, bot_msg = history[i] conv_log.append({"role":"user", "content":user_msg}) conv_log.append({"role":"assistant", "content":bot_msg}) user_msg, bot_msg = history[-1] conv_log.append({"role":"user", "content":user_msg}) #conv_log.append({"role":"assistant", "content":bot_msg}) print(conv_log) res = rqst.text_output(TEMP_EMPTY_ID, conv_log, **system_content) bot_message = res['data']['content'] #bot_message = random.choice(["How are you?", "I love you", "I'm very hungry"]) history[-1][1] = "" for thing in history: print(thing) print('------------------------------------------------------------------------') for character in bot_message: history[-1][1] += character time.sleep(0.05) yield history msg.submit(user, [msg, chatbot], [msg, chatbot], queue=False).then( bot, chatbot, chatbot ) clear.click(lambda: None, None, chatbot, queue=False) demo.queue() demo.launch()