2024-05-31 19:03:46 +08:00
|
|
|
|
import gradio as gr
|
|
|
|
|
import pandas as pd
|
|
|
|
|
import tempfile
|
|
|
|
|
import csv
|
|
|
|
|
from http import HTTPStatus
|
|
|
|
|
import dashscope
|
|
|
|
|
from dashscope import Generation
|
|
|
|
|
import os
|
|
|
|
|
|
|
|
|
|
dashscope.api_key = os.getenv("DASHSCOPE_API_KEY") # Vincent's API key
|
|
|
|
|
|
2024-06-07 18:55:57 +08:00
|
|
|
|
# todo: add question variable
|
|
|
|
|
def response(prompt, temp, question=None):
|
|
|
|
|
# if instruction is not None: # 如果提供了指令,则添加到messages中
|
|
|
|
|
# messages.insert(0, {'role': 'system', 'content': instruction})
|
|
|
|
|
if question is not None: # 如果提供了问题,则添加到messages中
|
|
|
|
|
# if no {question}, raise error
|
|
|
|
|
if '{question}' not in prompt:
|
|
|
|
|
raise ValueError('Please provide a question variable')
|
|
|
|
|
prompt = prompt.replace('{question}', question)
|
|
|
|
|
else:
|
|
|
|
|
pass
|
2024-05-31 19:03:46 +08:00
|
|
|
|
messages = [{'role': 'user', 'content': prompt}]
|
|
|
|
|
response = Generation.call(model='qwen-plus',
|
|
|
|
|
messages=messages,
|
|
|
|
|
seed=1234,
|
|
|
|
|
result_format='message',
|
|
|
|
|
stream=False,
|
|
|
|
|
incremental_output=False,
|
2024-06-07 18:55:57 +08:00
|
|
|
|
temperature=temp,
|
2024-05-31 19:03:46 +08:00
|
|
|
|
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}"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
with gr.Blocks() as demo:
|
2024-06-07 18:55:57 +08:00
|
|
|
|
input_text = gr.Textbox(label="prompt")
|
|
|
|
|
question_text = gr.Textbox(label="question")
|
2024-05-31 19:03:46 +08:00
|
|
|
|
output_text = gr.Textbox(label="输出文本")
|
|
|
|
|
submit_button = gr.Button("submit")
|
|
|
|
|
# 使用 gr.ClearButton 来清除指定的输出组件
|
|
|
|
|
clear_button = gr.ClearButton(components=[output_text], value="Clear processed data")
|
2024-06-07 18:55:57 +08:00
|
|
|
|
temp = gr.Slider(label="Temperature", minimum=0.1, maximum=2.0, step=0.05, value=1.8)
|
2024-05-31 19:03:46 +08:00
|
|
|
|
# 当输入文本发生变化时,调用 response 函数并将结果显示在输出文本框中
|
2024-06-07 18:55:57 +08:00
|
|
|
|
submit_button.click(fn=response, inputs=[input_text, temp, question_text], outputs=output_text)
|
2024-05-31 19:03:46 +08:00
|
|
|
|
|
|
|
|
|
demo.launch()
|
|
|
|
|
|