Spaces:
Sleeping
Sleeping
File size: 2,442 Bytes
11e4790 9e3b21a 6530075 11e4790 2320eeb 9e3b21a ef94623 9e3b21a 8414f72 ef94623 8414f72 ef94623 9e3b21a ef94623 9e3b21a ef94623 9e3b21a ef94623 9e3b21a b7653fb 9e3b21a ef94623 9e3b21a ef94623 9e3b21a ef94623 9e3b21a 11e4790 ef94623 9e3b21a aa49250 9e3b21a 11e4790 9e3b21a |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
import gradio as gr
import pandas as pd
import os
from openai import OpenAI
OPEN_AI_KEY = os.getenv("OPEN_AI_KEY")
client = OpenAI(api_key=OPEN_AI_KEY)
def process_file(file):
# 读取文件
if file.name.endswith('.csv'):
df = pd.read_csv(file)
else:
df = pd.read_excel(file)
# 将 DataFrame 转换为字符串
df_string = df.to_string()
# 返回 DataFrame 字符串,以用作聊天机器人的系统提示
return df_string
def respond(user_message, chat_history):
print("=== 變數:user_message ===")
print(user_message)
print("=== 變數:chat_history ===")
print(chat_history)
sys_content = f"你是一個資料分析師,請用 {df_string_output} 為資料進行對話"
messages = [
{"role": "system", "content": sys_content},
{"role": "user", "content": user_message}
]
print("=====messages=====")
print(messages)
print("=====messages=====")
request_payload = {
"model": "gpt-4-1106-preview",
"messages": messages,
"max_tokens": 2000 # 設定一個較大的值,可根據需要調整
}
response = client.chat.completions.create(**request_payload)
print(response)
response_text = response.choices[0].message.content.strip()
# 更新聊天历史
new_chat_history = (user_message, response_text)
if chat_history is None:
chat_history = [new_chat_history]
else:
chat_history.append(new_chat_history)
# 返回聊天历史和空字符串清空输入框
return "", chat_history
with gr.Blocks() as demo:
with gr.Row():
with gr.Column():
file_upload = gr.File(label="Upload your file")
with gr.Column():
df_string_output = gr.Textbox(label="")
with gr.Row():
chatbot = gr.Chatbot()
with gr.Row():
with gr.Column():
with gr.Group():
# password_input = gr.Textbox(label="Password", type="password")
msg = gr.Textbox(label="請输入對話內容")
send_button = gr.Button("發送")
# 当文件上传时,更新 DataFrame 字符串
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()
|