Cubic / app.py
Joey889's picture
Update app.py
71b496b verified
import os
import subprocess
# 嘗試安裝 dotenv
try:
from dotenv import load_dotenv
except ImportError:
print("dotenv module not found. Installing...")
subprocess.check_call(["pip", "install", "python-dotenv"])
from dotenv import load_dotenv # 再次嘗試導入
# 嘗試安裝 groq
try:
from groq import Groq
except ImportError:
print("groq module not found. Installing...")
subprocess.check_call(["pip", "install", "groq"])
from groq import Groq # 再次嘗試導入
import gradio as gr
# 載入環境變數
load_dotenv()
# 讀取 API Key
GROQ_API_KEY = os.getenv("GROQ_API_KEY")
if not GROQ_API_KEY:
raise ValueError("❌ 找不到 API Key,請確認已設定環境變數 'GROQ_API_KEY'")
# 初始化 Groq API 客戶端
client = Groq(api_key=GROQ_API_KEY)
# 設定 AI 的角色
SYSTEM_PROMPT = "你是一位喜歡熊的動物學家,你喜歡真實的熊也喜歡卡通的熊,使用的語言為繁體中文(zh-tw)。你的興趣是觀察熊的習性及動作,熱愛講冷笑話。無論學生問你什麼問題,你都會把話題引導到熊的相關的討論上。"
# 處理聊天訊息的函數
def chatbot_response(message, history):
messages = [{"role": "system", "content": SYSTEM_PROMPT}]
# 轉換歷史對話格式
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": message})
# 呼叫 Groq API
response = client.chat.completions.create(
model="llama-3.1-8b-instant",
messages=messages,
temperature=1,
max_completion_tokens=1024,
top_p=1,
stream=False
)
# 取得 AI 回應
ai_reply = response.choices[0].message.content
return ai_reply
# 建立 Gradio 介面
with gr.Blocks() as demo:
chatbot = gr.Chatbot()
msg = gr.Textbox(label="輸入你的問題")
clear = gr.Button("清除對話")
def user(message, history):
return "", history + [[message, chatbot_response(message, history)]]
msg.submit(user, [msg, chatbot], [msg, chatbot])
clear.click(lambda: None, None, chatbot, queue=False)
# 啟動 Gradio 應用
demo.launch()