import os import gradio as gr import clueai import torch from transformers import T5Tokenizer, T5ForConditionalGeneration base_info = "" def clear_session(): return '', None def ChatYuan(api_key, text_prompt, top_p): cl = clueai.Client(api_key, check_api_key=True) # generate a prediction for a prompt # 需要返回得分的话,指定return_likelihoods="GENERATION" prediction = cl.generate(model_name='ChatYuan-7B', prompt=text_prompt) # print the predicted text #print('prediction: {}'.format(prediction.generations[0].text)) response = prediction.generations[0].text if response == '': response = "很抱歉,我无法回答这个问题" return response def chatyuan_bot_api(api_key, input, history, top_p, num): if not api_key: return "请填写api key再尝试输入", [], [] history = history or [] if len(history) > num: history = history[-num:] #print(f"history{history}") history_context = [f"用户:{input_text}\n小元:{answer_text}" for input_text, answer_text in history] context = "\n".join(history_context) #print(f"context:{context}") while len(context) > 768: history_context = history_context[1:] context = "\n".join(history_context) input_text = context + "\n用户:" + input + "\n小元:" input_text = input_text.strip() output_text = ChatYuan(api_key, input_text, top_p) print("api".center(20, "=")) print(f"api_key:{api_key}\n{input_text}\n{output_text}") history.append((input, output_text)) return '', history, history block = gr.Blocks() with block as demo_1: gr.Markdown("""

元语智能——ChatYuan

回答来自ChatYuan, 以上是模型生成的结果, 请谨慎辨别和参考, 不代表任何人观点 | Answer generated by ChatYuan model 注意:gradio对markdown代码格式展示有限 在使用此功能前,你需要有个API key. API key 可以通过这个平台获取 """) with gr.Row(): with gr.Column(scale=3): chatbot = gr.Chatbot(label='ChatYuan').style(height=400) with gr.Column(scale=1): api_key = gr.inputs.Textbox(label="请输入你的api-key(必填)", default="", type='password') num = gr.Slider(minimum=4, maximum=10, label="最大的对话轮数", value=5, step=1) top_p = gr.Slider(minimum=0, maximum=1, label="top_p", value=0.7, step=0.1) clear_history = gr.Button("👋 清除历史对话 | Clear History") send = gr.Button("🚀 发送 | Send") message = gr.Textbox() state = gr.State() message.submit(chatyuan_bot_api, inputs=[api_key, message, state, top_p, num], outputs=[message, chatbot, state]) send.click(chatyuan_bot_api, inputs=[api_key, message, state, top_p, num], outputs=[message, chatbot, state]) clear_history.click(fn=clear_session, inputs=[], outputs=[chatbot, state], queue=False) block = gr.Blocks() with block as introduction: gr.Markdown("""

元语智能——ChatYuan

😉ChatYuan: 元语功能型对话大模型 | General Model for Dialogue with ChatYuan
👏ChatYuan-7B是一个支持中英双语的功能型对话语言大模型。
ChatYuan-7B is an open-source large language model for dialogue, supports both Chinese and English languages, and in ChatGPT style.
ChatYuan-7B是ChatYuan系列中以轻量化实现高质量效果的模型之一。


< br>
""") gui = gr.TabbedInterface( interface_list=[introduction, demo_1], tab_names=["相关介绍 | Introduction", "API调用"]) gui.launch(quiet=True, show_api=False, share=False)