video_bot_999 / app.py
youngtsai's picture
df_string_output
3c6552e
raw
history blame
No virus
1.61 kB
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()