ChingCL commited on
Commit
d8ea470
·
verified ·
1 Parent(s): 49634d6

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +68 -42
app.py CHANGED
@@ -1,44 +1,70 @@
1
- from groq import Groq
 
2
 
 
 
 
 
 
 
 
 
3
  client = Groq()
4
- completion = client.chat.completions.create(
5
- model="llama-3.1-70b-versatile",
6
- messages=[
7
- {
8
- "role": "system",
9
- "content": "你是一個國中國文老師,會出成語遊戲讓學生玩"
10
- },
11
- {
12
- "role": "user",
13
- "content": ""
14
- },
15
- {
16
- "role": "assistant",
17
- "content": "你想玩什麼種類的成語遊戲呢?我可以出的遊戲有:\n\n1. 成語接龍:我們輪流說一句成語,下一個人要說的成語的第一個字要是前一個人的成語的最後一個字。\n2. 成語填空:我會給出一句成語,然後刪掉一個字讓你填空。\n3. 成語徵解:我會給出一句成語,然後你要解釋它的意思。\n4. 成語連點:我會給出幾句成語,你要猜出這些成語之間的聯繫。\n\n你想玩哪一種遊戲呢?"
18
- },
19
- {
20
- "role": "user",
21
- "content": "接龍\n"
22
- },
23
- {
24
- "role": "assistant",
25
- "content": "我們來玩成語接龍遊戲吧!我先說一句成語:\n\n天下無敵\n\n現在換你了,你要說一句成語,第一個字要是這句成語的最後一個字,也就是「敵」。\n\n你準備好了嗎?"
26
- },
27
- {
28
- "role": "user",
29
- "content": "好"
30
- },
31
- {
32
- "role": "assistant",
33
- "content": "你說的成語是什麼呢?\n\n記住,第一個字要是「敵」。\n\n你可以從這些選項中選擇:\n\n敵跡可查\n眼見為信等等\n\n或者你有其他的選擇嗎?\n\n說出來,我們繼續玩!"
34
- }
35
- ],
36
- temperature=1,
37
- max_tokens=1024,
38
- top_p=1,
39
- stream=True,
40
- stop=None,
41
- )
42
-
43
- for chunk in completion:
44
- print(chunk.choices[0].delta.content or "", end="")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import gradio as gr
3
 
4
+ # 確保 groq 已安裝
5
+ try:
6
+ from groq import Groq
7
+ except ImportError:
8
+ os.system('pip install groq')
9
+ from groq import Groq
10
+
11
+ # 初始化 Groq 客戶端
12
  client = Groq()
13
+
14
+ # 獲取 API 密鑰
15
+ api_key = os.getenv('groq_key')
16
+ if not api_key:
17
+ raise ValueError("API key 'groq_key' 未設定於環境變數中!")
18
+
19
+ client.api_key = api_key
20
+
21
+ def chat_with_groq(user_message):
22
+ """與 Groq 模型進行互動"""
23
+ try:
24
+ completion = client.chat.completions.create(
25
+ model="llama-3.1-70b-versatile",
26
+ messages=[
27
+ {
28
+ "role": "system",
29
+ "content": "「你是一位國中國文老師,使用的語言為繁體中文(zh-tw)。你的興趣是讓學生喜歡成語,信手拈來都能用成語融入生活情境。無論學生問你什麼問題,你都會把話題引導到國文成語相關的討論上。」"
30
+ },
31
+ {"role": "user", "content": user_message}
32
+ ],
33
+ temperature=1,
34
+ max_tokens=1024,
35
+ top_p=1,
36
+ stream=False
37
+ )
38
+
39
+ # 確保返回結果格式正確
40
+ if "choices" in completion and len(completion["choices"]) > 0:
41
+ response = completion["choices"][0]["message"]["content"]
42
+ return response or "抱歉,我無法生成有效的回應。"
43
+ else:
44
+ return "抱歉,我無法解析 API 的回應結果。"
45
+
46
+ except Exception as e:
47
+ return f"發生錯誤:{e}"
48
+
49
+ # 定義 Gradio 介面
50
+ def gradio_chatbot():
51
+ def respond(message, history):
52
+ response = chat_with_groq(message)
53
+ history = history or []
54
+ history.append((message, response))
55
+ return history, history
56
+
57
+ with gr.Blocks() as demo:
58
+ gr.Markdown("### 成語遊戲 Chatbot")
59
+ chatbot = gr.Chatbot()
60
+ user_input = gr.Textbox(placeholder="輸入你的訊息...")
61
+ submit_button = gr.Button("送出")
62
+
63
+ submit_button.click(respond, [user_input, chatbot], [chatbot, chatbot])
64
+
65
+ return demo
66
+
67
+ # 啟動應用程式
68
+ if __name__ == "__main__":
69
+ app = gradio_chatbot()
70
+ app.launch()