75 lines
2.8 KiB
Python
75 lines
2.8 KiB
Python
import gradio as gr
|
||
from http import HTTPStatus
|
||
import dashscope
|
||
from dashscope import Generation
|
||
|
||
|
||
dashscope.api_key = # Vincent's API key
|
||
|
||
|
||
def pross_instruction(system, rag_dict):
|
||
"""
|
||
使用format_map()替换字符串中的变量。
|
||
"""
|
||
return system.format_map(rag_dict)
|
||
|
||
|
||
def response(prompt, instruction):
|
||
messages = [{'role': 'system', 'content': instruction},
|
||
{'role': 'user', 'content': prompt}]
|
||
|
||
response = Generation.call(model='qwen-plus',
|
||
messages=messages,
|
||
seed=1234,
|
||
result_format='message',
|
||
stream=False,
|
||
incremental_output=False,
|
||
temperature=1.8,
|
||
top_p=0.9,
|
||
top_k=999
|
||
)
|
||
if response.status_code == HTTPStatus.OK:
|
||
message = response.output.choices[0]['message']['content']
|
||
return message
|
||
else:
|
||
print('Request id: %s, Status code: %s, error code: %s, error message: %s' % (
|
||
response.request_id, response.status_code,
|
||
response.code, response.message
|
||
))
|
||
return f"Error: Could not generate response with Status code: {response.status_code}, error code: {response.code}"
|
||
|
||
|
||
def process_prompts(prompts, instruction):
|
||
"""处理输入的prompts,调用模型,并返回结果。"""
|
||
results = []
|
||
for prompt in prompts.split("\n"): # 分割多个prompts
|
||
if prompt: # 确保prompt不是空字符串
|
||
output = response(prompt, instruction)
|
||
results.append([prompt, output])
|
||
return results
|
||
|
||
|
||
# 定义按钮点击后的事件处理函数,该函数会返回新的数据表格
|
||
def update_output(prompts, instruction):
|
||
return process_prompts(prompts, instruction)
|
||
|
||
|
||
if __name__ == "__main__":
|
||
with gr.Blocks() as demo:
|
||
gr.Markdown("### 大模型测试工具")
|
||
with gr.Accordion("输入说明"):
|
||
gr.Markdown("请在下面的文本框中输入多个prompts,每个prompt占一行。")
|
||
system = gr.Textbox(label="System prompts", lines=2,
|
||
value="A conversation between a user and an LLM-based AI assistant. The assistant gives helpful and honest answers.")
|
||
prompts_input = gr.Textbox(label="Prompts", lines=5, placeholder="在这里输入prompts,每个一行...")
|
||
submit_button = gr.Button("运行模型")
|
||
output_table = gr.Dataframe(headers=["Prompt", "模型输出"])
|
||
|
||
# 当按钮被点击时,调用update_output函数,并将返回的数据表格显示在output_table中
|
||
submit_button.click(fn=update_output, inputs=[prompts_input, system], outputs=output_table)
|
||
|
||
demo.launch()
|
||
|
||
|
||
|