peterchuang commited on
Commit
992901b
1 Parent(s): f828929

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +55 -57
app.py CHANGED
@@ -1,67 +1,65 @@
1
  import gradio as gr
2
  import os
 
 
3
 
4
- # Install the groq package if it is not installed
5
- try:
6
- from groq import Groq
7
- except ImportError:
8
- os.system('pip install groq')
9
- from groq import Groq
10
 
11
- # Set up the Groq client with the secret key
12
- groq_key = os.getenv('groq_key')
13
- if not groq_key:
14
- raise ValueError("groq_key environment variable is not set")
15
 
16
- client = Groq(api_key=groq_key)
 
 
 
 
 
 
 
 
 
 
 
17
 
18
- class SimpleChatBot:
19
- def __init__(self):
20
- self.initial_prompt = [
21
- {
22
- "role": "system",
23
- "content": "你是一個英文老師,會教我背單字,並用蘇格拉底問答引導我,引導時請用繁體中文 zhTW"
24
- }
25
- ]
 
 
26
 
27
- def get_response(self, message, chat_history):
28
- messages = self.initial_prompt + chat_history
29
- messages.append({"role": "user", "content": message})
30
-
31
- completion = client.chat.completions.create(
32
- model="llama-3.1-70b-versatile",
33
- messages=messages,
34
- temperature=1,
35
- max_tokens=1024,
36
- top_p=1,
37
- stream=True,
38
- stop=None,
39
- )
40
-
41
- response_content = ""
42
- for chunk in completion:
43
- response_content += chunk.choices[0].delta.content or ""
44
-
45
- return response_content
46
 
47
- chatbot = SimpleChatBot()
 
 
 
 
48
 
49
- def respond(message, chat_history):
50
- chat_history = [{"role": entry["role"], "content": entry["content"]} for entry in chat_history]
51
- response = chatbot.get_response(message, chat_history)
52
- chat_history.append({"role": "user", "content": message})
53
- chat_history.append({"role": "assistant", "content": response})
54
- return chat_history, ""
55
 
56
- with gr.Blocks(title="簡單的Gradio聊天機器人") as demo:
57
- gr.Markdown("# 簡單的Gradio聊天機器人")
58
-
59
- chatbot_interface = gr.Chatbot(type="messages")
60
-
61
- with gr.Row():
62
- user_input = gr.Textbox(placeholder="輸入訊息...", label="你的訊息")
63
- send_button = gr.Button("發送")
64
-
65
- send_button.click(respond, inputs=[user_input, chatbot_interface], outputs=[chatbot_interface, user_input])
66
-
67
- demo.launch(share=True)
 
1
  import gradio as gr
2
  import os
3
+ from groq import Groq
4
+ from gradio import ChatMessage
5
 
6
+ # 從環境變數中獲取 API 密鑰
7
+ api_key = os.getenv("groq_key")
 
 
 
 
8
 
9
+ # 初始化 groq 客戶端
10
+ client = Groq()
11
+ client.set_api_key(api_key)
 
12
 
13
+ # 定義回應函數
14
+ def respond(message, chat_history):
15
+ # 構建聊天記錄
16
+ messages = [{"role": "system", "content": "你是一個友善的 AI 助手,請幫助使用者解答問題。"}]
17
+ for entry in chat_history:
18
+ if entry['role'] == 'user':
19
+ messages.append({"role": "user", "content": entry['content']})
20
+ else:
21
+ messages.append({"role": "assistant", "content": entry['content']})
22
+
23
+ # 添加當前用戶消息
24
+ messages.append({"role": "user", "content": message})
25
 
26
+ # 獲取回應
27
+ completion = client.chat.completions.create(
28
+ model="llama-3.1-70b-versatile",
29
+ messages=messages,
30
+ temperature=1,
31
+ max_tokens=1024,
32
+ top_p=1,
33
+ stream=True,
34
+ stop=None,
35
+ )
36
 
37
+ reply = ""
38
+ for chunk in completion:
39
+ reply += chunk.choices[0].delta.content or ""
40
+
41
+ # 添加當前回應到聊天記錄
42
+ chat_history.append(ChatMessage(role="user", content=message))
43
+ chat_history.append(ChatMessage(role="assistant", content=reply))
44
+ return chat_history
 
 
 
 
 
 
 
 
 
 
 
45
 
46
+ # 創建 Gradio Chatbot 界面
47
+ with gr.Blocks() as demo:
48
+ chatbot = gr.Chatbot(type='messages')
49
+ msg = gr.Textbox(label="輸入訊息")
50
+ clear = gr.Button("清除聊天")
51
 
52
+ def user(user_message, history):
53
+ return "", history + [ChatMessage(role="user", content=user_message)]
 
 
 
 
54
 
55
+ def bot(history):
56
+ user_message = history[-1]['content']
57
+ history = respond(user_message, history[:-1])
58
+ return history
59
+
60
+ msg.submit(user, [msg, chatbot], [msg, chatbot], queue=False).then(
61
+ bot, chatbot, chatbot
62
+ )
63
+ clear.click(lambda: [], None, chatbot, queue=False)
64
+
65
+ demo.launch()