peterchuang commited on
Commit
a8512ab
1 Parent(s): 04f2f04

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +52 -54
app.py CHANGED
@@ -1,69 +1,67 @@
1
  import gradio as gr
2
  import os
3
 
4
- from gradio import ChatMessage
5
  try:
6
  from groq import Groq
7
  except ImportError:
8
  os.system('pip install groq')
9
  from groq import Groq
10
- # 從環境變數中獲取 API 密鑰
11
- api_key = os.getenv("groq_key")
12
 
13
- # 初始化 groq 客戶端
14
- client = Groq()
15
- client.set_api_key(api_key)
 
16
 
17
- # 定義回應函數
18
- def respond(message, chat_history):
19
- # 構建聊天記錄
20
- messages = [{"role": "system", "content": "你是一個友善的 AI 助手,請幫助使用者解答問題。"}]
21
- for entry in chat_history:
22
- if entry['role'] == 'user':
23
- messages.append({"role": "user", "content": entry['content']})
24
- else:
25
- messages.append({"role": "assistant", "content": entry['content']})
26
-
27
- # 添加當前用戶消息
28
- messages.append({"role": "user", "content": message})
29
-
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
- reply = ""
42
- for chunk in completion:
43
- reply += chunk.choices[0].delta.content or ""
44
-
45
- # 添加當前回應到聊天記錄
46
- chat_history.append(ChatMessage(role="user", content=message))
47
- chat_history.append(ChatMessage(role="assistant", content=reply))
48
- return chat_history
49
 
50
- # 創建 Gradio Chatbot 界面
51
- with gr.Blocks() as demo:
52
- chatbot = gr.Chatbot(type='messages')
53
- msg = gr.Textbox(label="輸入訊息")
54
- clear = gr.Button("清除聊天")
 
 
 
55
 
56
- def user(user_message, history):
57
- return "", history + [ChatMessage(role="user", content=user_message)]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
58
 
59
- def bot(history):
60
- user_message = history[-1]['content']
61
- history = respond(user_message, history[:-1])
62
- return history
63
 
64
- msg.submit(user, [msg, chatbot], [msg, chatbot], queue=False).then(
65
- bot, chatbot, chatbot
66
- )
67
- clear.click(lambda: [], None, chatbot, queue=False)
 
 
68
 
69
- demo.launch()
 
 
 
 
 
 
 
 
 
 
 
 
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)