Spaces:
Runtime error
Runtime error
import os | |
from groq import Groq | |
import streamlit as st | |
from dotenv import load_dotenv | |
# Load API key from .env file | |
load_dotenv() | |
# Retrieve the API key from environment variables | |
api_key = os.getenv("GROQ_API_KEY") | |
# Ensure the API key is loaded correctly | |
if not api_key: | |
st.error("API key is missing. Please set the GROQ_API_KEY in the .env file.") | |
else: | |
# Initialize the Groq client | |
client = Groq(api_key=api_key) | |
# Define the health diet topics for the chatbot | |
diet_topics = [ | |
"weight loss plan", "balanced diet", "high-protein diet", "low-carb diet", | |
"vegetarian diet", "keto diet", "intermittent fasting", "healthy meal plans", | |
"heart-healthy diet", "diabetes-friendly diet", "meal prepping", "nutrition for muscle gain", | |
"detox diet", "vitamin-rich foods", "hydration tips", "healthy snacks", | |
"immune-boosting foods", "foods for better digestion", "foods for glowing skin", | |
"healthy breakfasts", "meal plans for athletes", "diet for weight maintenance", | |
"mindful eating", "portion control", "anti-inflammatory foods", "meal planning for busy people" | |
] | |
# Function to fetch chatbot completion from Groq API | |
def get_response(query): | |
completion = client.chat.completions.create( | |
model="llama-3.3-70b-versatile", | |
messages=[{"role": "user", "content": query}], | |
temperature=0.7, | |
max_completion_tokens=1024, | |
top_p=1, | |
) | |
response = completion.choices[0].message.content | |
return response | |
def main(): | |
st.title("Health Diet Plan Chatbot") | |
# Let the user choose a diet plan or type a custom query | |
topic = st.selectbox("Choose a diet plan topic", diet_topics) | |
user_input = st.text_area("Or ask a diet-related question:", "") | |
# If the user provides a query, we use that | |
query = user_input if user_input else f"Tell me about {topic} for a healthy body" | |
# Create a submit button | |
submit_button = st.button("Submit") | |
# Call the Groq API to get the response if the button is clicked | |
if submit_button and query: | |
response = get_response(query) | |
# Display the response | |
st.write("### Response:") | |
st.write(response) | |
# Handle unrelated queries | |
if user_input and not any(topic in user_input.lower() for topic in diet_topics): | |
st.write("Sorry, I can only answer diet-related questions.") | |
# Ensure the main function is called when the script is run | |
if __name__ == "__main__": | |
main() | |