File size: 2,494 Bytes
de72b93
de6cf94
5c64d1a
de6cf94
5c64d1a
41bfd24
2cdf1bc
d7f3569
 
 
2cdf1bc
 
 
d7f3569
2cdf1bc
 
d7f3569
2cdf1bc
 
d7f3569
2cdf1bc
 
de72b93
d7f3569
4c2616b
d7f3569
2cdf1bc
b0cf6ac
 
 
 
d7f3569
5c64d1a
d7f3569
5c64d1a
b0cf6ac
4c2616b
5c64d1a
4c2616b
 
5c64d1a
b0cf6ac
5c64d1a
b0cf6ac
 
d7f3569
4c2616b
b0cf6ac
 
0036872
 
4c2616b
 
 
 
 
 
 
 
 
 
 
 
0036872
4c2616b
 
 
 
 
0036872
 
4c2616b
 
 
 
c922ff3
0036872
 
 
 
b0cf6ac
 
de6cf94
0036872
5c64d1a
0881787
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
import gradio as gr
from groq import Groq
import os

client = Groq(api_key=os.environ.get("GROQ_API_KEY"))

SYSTEM_PROMPT = """You are a professional exercise advisor and fitness coach.
Your goal is to help users improve their physical fitness safely.
Provide beginner-friendly workout advice, warm-up tips, and recovery guidance.
Avoid medical diagnosis and always encourage safe exercise habits."""

EXAMPLES = """
User: I am a beginner. How should I start exercising?
Assistant: Start with light exercises such as walking, stretching, and bodyweight movements.

User: How many days per week should I work out?
Assistant: Beginners should exercise 3–4 days per week.

User: What should I do before a workout?
Assistant: Always begin with a warm-up to prevent injuries.
"""



def respond(message, history, model, temperature, max_tokens):
    messages = [{"role": "system", "content": SYSTEM_PROMPT + EXAMPLES}]

    for h in history:
        messages.append({"role": "user", "content": h[0]})
        if h[1]:
            messages.append({"role": "assistant", "content": h[1]})

    messages.append({"role": "user", "content": message})

    try:
        response = client.chat.completions.create(
            model=model,
            messages=messages,
            temperature=temperature,
            max_completion_tokens=max_tokens,
        )
        return response.choices[0].message.content
    except Exception as e:
        return f"Error: {str(e)}"


# ChatInterface with additional inputs for parameters
demo = gr.ChatInterface(
    fn=respond,
    title="🏋️ Exercise Advisor AI",
    description="Get safe and beginner-friendly workout advice",
    additional_inputs=[
        gr.Dropdown(
            choices=[
                "llama-3.3-70b-versatile",
                "llama-3.1-8b-instant",
            ],
            value="llama-3.3-70b-versatile",
            label="Model",
        ),
        gr.Slider(
            minimum=0,
            maximum=2,
            value=0.7,
            step=0.1,
            label="Temperature",
        ),
        gr.Slider(
            minimum=256,
            maximum=4096,
            value=1024,
            step=256,
            label="Max Tokens",
        ),
    ],
    examples=[
        ["I am a beginner. How should I start exercising?"],
        ["How many days per week should I work out?"],
        ["What is the best warm-up before training?"],
    ],
    theme="soft",
)


if __name__ == "__main__":
    demo.launch()