58 lines
2.4 KiB
Python
58 lines
2.4 KiB
Python
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
|
||
|
||
# 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
|
||
messages = [{'role': 'user', 'content': prompt}]
|
||
response = Generation.call(model='qwen-plus',
|
||
messages=messages,
|
||
seed=1234,
|
||
result_format='message',
|
||
stream=False,
|
||
incremental_output=False,
|
||
temperature=temp,
|
||
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:
|
||
input_text = gr.Textbox(label="prompt")
|
||
question_text = gr.Textbox(label="question")
|
||
output_text = gr.Textbox(label="输出文本")
|
||
submit_button = gr.Button("submit")
|
||
# 使用 gr.ClearButton 来清除指定的输出组件
|
||
clear_button = gr.ClearButton(components=[output_text], value="Clear processed data")
|
||
temp = gr.Slider(label="Temperature", minimum=0.1, maximum=2.0, step=0.05, value=1.8)
|
||
# 当输入文本发生变化时,调用 response 函数并将结果显示在输出文本框中
|
||
submit_button.click(fn=response, inputs=[input_text, temp, question_text], outputs=output_text)
|
||
|
||
demo.launch()
|
||
|