Spaces:
Build error
Build error
| import openai | |
| import gradio as gr | |
| import os | |
| from dotenv import load_dotenv | |
| # 載入 .env 環境變數(如果你有放 .env 檔案) | |
| load_dotenv() | |
| # 設定 API Key | |
| openai.api_key = os.getenv("OPENAI_API_KEY") | |
| if openai.api_key is None: | |
| raise ValueError("請設定環境變數 OPENAI_API_KEY,確保 API Key 可用") | |
| # 建立男友聊天機器人函數,加入 log 訊息 | |
| def boyfriend_chatbot(user_input, history): | |
| history = history or [] | |
| log_messages = [] | |
| # 系統角色說明 | |
| messages = [{"role": "system", "content": "你是一個溫柔、貼心的男友,總是關心對方的感受,給予支持和鼓勵,用輕鬆、暖心的語氣回應。"}] | |
| for user_msg, bot_msg in history: | |
| messages.append({"role": "user", "content": user_msg}) | |
| messages.append({"role": "assistant", "content": bot_msg}) | |
| messages.append({"role": "user", "content": user_input}) | |
| try: | |
| response = openai.ChatCompletion.create( | |
| model="gpt-4o", | |
| messages=messages | |
| ) | |
| reply = response.choices[0].message.content | |
| history.append((user_input, reply)) | |
| log = f"[✅ Success] 回應完成,共 {len(messages)} 則對話。" | |
| except Exception as e: | |
| reply = "抱歉,出現了一些錯誤 😢" | |
| log = f"[❌ Error] {str(e)}" | |
| return reply, history, log | |
| # 使用 Gradio Blocks 來加上 log 顯示 | |
| with gr.Blocks(title="貼心男友聊天機器人") as demo: | |
| gr.Markdown("# 💕 貼心男友聊天機器人 💕") | |
| chatbot = gr.Chatbot() | |
| msg = gr.Textbox(label="輸入你的訊息") | |
| log_output = gr.Textbox(label="狀態日誌", interactive=False) | |
| clear = gr.Button("清除對話") | |
| def respond(user_input, history): | |
| return boyfriend_chatbot(user_input, history) | |
| msg.submit(respond, inputs=[msg, chatbot], outputs=[chatbot, chatbot, log_output]) | |
| clear.click(lambda: ([], "", ""), outputs=[chatbot, msg, log_output]) | |
| # 啟動介面 | |
| demo.launch(share=True) | |