File size: 1,549 Bytes
bf4e6ef
 
 
ded59e5
bf4e6ef
85b071b
bf4e6ef
ded59e5
bf4e6ef
 
e92b8de
533f7a7
b7bff66
 
 
 
e92b8de
533f7a7
 
 
 
bf4e6ef
533f7a7
ded59e5
e92b8de
535ef75
ded59e5
b7bff66
 
 
535ef75
e92b8de
535ef75
b7bff66
e92b8de
ded59e5
b7bff66
 
 
 
 
 
ded59e5
533f7a7
b7bff66
ded59e5
 
 
 
 
 
 
 
 
 
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
import openai
import gradio as gr
import os
import time

client = openai.OpenAI(api_key=os.environ['OPENAI_API_KEY'])

# 建立「男友」聊天機器人函數
def boyfriend_chatbot(user_input, history):
    history = history or []

    # 加入系統提示,設定角色
    messages = [{
        "role": "system",
        "content": "你是一個溫柔、貼心的男友,總是關心對方的感受,給予支持和鼓勵,用輕鬆、暖心的語氣回應。"
    }]

    # history 是一串角色訊息(dict),可直接 append
    for msg in history:
        if msg.get("role") in ["user", "assistant"]:
            messages.append(msg)

    # 加入當前使用者訊息
    messages.append({"role": "user", "content": user_input})

    try:
        completion = client.chat.completions.create(
            model="gpt-4o-mini",
            messages=messages,
            temperature=0.7
        )
        response = completion.choices[0].message.content.strip()
    except Exception as e:
        yield f"❌ 發生錯誤(API 回應失敗):{str(e)}"
        return

    try:
        for i in range(1, len(response) + 1):
            yield response[:i]
            time.sleep(0.03)
    except Exception as e:
        yield f"⚠️ 顯示訊息時發生錯誤:{str(e)}"


        
# 建立 Gradio 介面
chat_interface = gr.ChatInterface(
    boyfriend_chatbot,
    chatbot=gr.Chatbot(type="messages"),
    type="messages",
    title="💕 貼心男友聊天機器人 💕"
)

# 啟動介面
chat_interface.launch(share=True)