Kashif12334 commited on
Commit
378a4c8
·
verified ·
1 Parent(s): 5c67c66

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +83 -82
app.py CHANGED
@@ -1,82 +1,83 @@
1
- import gradio as gr
2
- import os
3
- import requests
4
-
5
- # Load GROQ API key from Hugging Face Secrets
6
- GROQ_API_KEY = os.environ.get("GROQ_API_KEY")
7
-
8
- GROQ_API_URL = "https://api.groq.com/openai/v1/chat/completions"
9
- MODEL_NAME = "llama3-8b-8192"
10
-
11
- # System Prompt (Chatbot Personality)
12
- SYSTEM_PROMPT = """
13
- You are CodeMentor AI, a friendly and expert programming tutor.
14
- You help students learn programming concepts clearly and patiently.
15
-
16
- Your behavior:
17
- - Explain concepts step-by-step
18
- - Use simple language
19
- - Give Python examples when possible
20
- - Encourage learning and curiosity
21
- - Correct mistakes politely
22
- """
23
-
24
- def query_groq(message, chat_history, temperature):
25
- headers = {
26
- "Authorization": f"Bearer {GROQ_API_KEY}",
27
- "Content-Type": "application/json"
28
- }
29
-
30
- messages = [{"role": "system", "content": SYSTEM_PROMPT}]
31
-
32
- for user, bot in chat_history:
33
- messages.append({"role": "user", "content": user})
34
- messages.append({"role": "assistant", "content": bot})
35
-
36
- messages.append({"role": "user", "content": message})
37
-
38
- response = requests.post(
39
- GROQ_API_URL,
40
- headers=headers,
41
- json={
42
- "model": MODEL_NAME,
43
- "messages": messages,
44
- "temperature": temperature
45
- }
46
- )
47
-
48
- if response.status_code == 200:
49
- return response.json()["choices"][0]["message"]["content"]
50
- else:
51
- return f"Error {response.status_code}: {response.text}"
52
-
53
- def respond(message, chat_history, temperature):
54
- bot_reply = query_groq(message, chat_history, temperature)
55
- chat_history.append((message, bot_reply))
56
- return "", chat_history
57
-
58
- with gr.Blocks() as demo:
59
- gr.Markdown("## 💻 CodeMentor AI – Your Programming Tutor")
60
-
61
- chatbot = gr.Chatbot(height=400)
62
- state = gr.State([])
63
-
64
- with gr.Row():
65
- msg = gr.Textbox(label="Ask a programming question")
66
-
67
- # UI Improvement (Requirement #4)
68
- temperature = gr.Slider(
69
- 0.1, 1.0, value=0.7, step=0.1,
70
- label="Response Creativity Level"
71
- )
72
-
73
- with gr.Row():
74
- send = gr.Button("Send")
75
- clear = gr.Button("Clear Chat")
76
-
77
- send.click(respond, [msg, state, temperature], [msg, chatbot])
78
- msg.submit(respond, [msg, state, temperature], [msg, chatbot])
79
- clear.click(lambda: ([], []), None, [chatbot, state])
80
-
81
- demo.launch()
82
-
 
 
1
+ import gradio as gr
2
+ import os
3
+ import requests
4
+
5
+ # Load GROQ API key from Hugging Face Secrets
6
+ GROQ_API_KEY = os.environ.get("GROQ_API_KEY")
7
+
8
+ GROQ_API_URL = "https://api.groq.com/openai/v1/chat/completions"
9
+ MODEL_NAME = "llama-3.1-8b-instant"
10
+
11
+
12
+ # System Prompt (Chatbot Personality)
13
+ SYSTEM_PROMPT = """
14
+ You are CodeMentor AI, a friendly and expert programming tutor.
15
+ You help students learn programming concepts clearly and patiently.
16
+
17
+ Your behavior:
18
+ - Explain concepts step-by-step
19
+ - Use simple language
20
+ - Give Python examples when possible
21
+ - Encourage learning and curiosity
22
+ - Correct mistakes politely
23
+ """
24
+
25
+ def query_groq(message, chat_history, temperature):
26
+ headers = {
27
+ "Authorization": f"Bearer {GROQ_API_KEY}",
28
+ "Content-Type": "application/json"
29
+ }
30
+
31
+ messages = [{"role": "system", "content": SYSTEM_PROMPT}]
32
+
33
+ for user, bot in chat_history:
34
+ messages.append({"role": "user", "content": user})
35
+ messages.append({"role": "assistant", "content": bot})
36
+
37
+ messages.append({"role": "user", "content": message})
38
+
39
+ response = requests.post(
40
+ GROQ_API_URL,
41
+ headers=headers,
42
+ json={
43
+ "model": MODEL_NAME,
44
+ "messages": messages,
45
+ "temperature": temperature
46
+ }
47
+ )
48
+
49
+ if response.status_code == 200:
50
+ return response.json()["choices"][0]["message"]["content"]
51
+ else:
52
+ return f"Error {response.status_code}: {response.text}"
53
+
54
+ def respond(message, chat_history, temperature):
55
+ bot_reply = query_groq(message, chat_history, temperature)
56
+ chat_history.append((message, bot_reply))
57
+ return "", chat_history
58
+
59
+ with gr.Blocks() as demo:
60
+ gr.Markdown("## 💻 CodeMentor AI – Your Programming Tutor")
61
+
62
+ chatbot = gr.Chatbot(height=400)
63
+ state = gr.State([])
64
+
65
+ with gr.Row():
66
+ msg = gr.Textbox(label="Ask a programming question")
67
+
68
+ # UI Improvement (Requirement #4)
69
+ temperature = gr.Slider(
70
+ 0.1, 1.0, value=0.7, step=0.1,
71
+ label="Response Creativity Level"
72
+ )
73
+
74
+ with gr.Row():
75
+ send = gr.Button("Send")
76
+ clear = gr.Button("Clear Chat")
77
+
78
+ send.click(respond, [msg, state, temperature], [msg, chatbot])
79
+ msg.submit(respond, [msg, state, temperature], [msg, chatbot])
80
+ clear.click(lambda: ([], []), None, [chatbot, state])
81
+
82
+ demo.launch()
83
+