Spaces:
Sleeping
Sleeping
import gradio as gr | |
import pandas as pd | |
import os | |
from openai import OpenAI | |
OPENAI_API_KEY = os.getenv("OPENAI_API_KEY") | |
client = OpenAI(api_key=OPENAI_API_KEY) | |
def process_file(file): | |
# 读取文件 | |
if file.name.endswith('.csv'): | |
df = pd.read_csv(file) | |
else: | |
df = pd.read_excel(file) | |
# 将 DataFrame 转换为字符串 | |
return df.to_string() | |
def respond(user_message, df_string, chat_history): | |
sys_content = f"你是一个资料分析师,以下是数据分析资料:\n{df_string}" | |
messages = chat_history if chat_history is not None else [] | |
messages.append({"role": "system", "content": sys_content}) | |
messages.append({"role": "user", "content": user_message}) | |
request_payload = { | |
"model": "gpt-4-1106-preview", | |
"messages": messages, | |
"max_tokens": 2000 | |
} | |
response = client.chat.completions.create(**request_payload) | |
response_text = response.choices[0].message.content.strip() | |
messages.append({"role": "assistant", "content": response_text}) | |
return "", messages | |
with gr.Blocks() as demo: | |
with gr.Row(): | |
file_upload = gr.File(label="Upload your file") | |
df_string_output = gr.Variable() | |
with gr.Row(): | |
chatbot = gr.Chatbot() | |
with gr.Row(): | |
msg = gr.Textbox(label="请输入对话内容") | |
send_button = gr.Button("发送") | |
file_upload.change(process_file, inputs=file_upload, outputs=df_string_output) | |
send_button.click( | |
respond, | |
inputs=[msg, df_string_output, chatbot], | |
outputs=[msg, chatbot] | |
) | |
demo.launch() | |