Spaces:
Sleeping
Sleeping
| # app.py | |
| import streamlit as st | |
| from groq import Groq | |
| import os | |
| from langdetect import detect | |
| # Initialize Groq client | |
| try: | |
| client = Groq(api_key=os.environ.get("GROQ_API_KEY")) | |
| except Exception as e: | |
| st.error(f"Groq initialization failed: {str(e)}") | |
| # Main function to generate bilingual advice | |
| def get_bilingual_advice(user_input): | |
| try: | |
| # Detect input language | |
| input_lang = detect(user_input) | |
| # Step 1: Generate English medical report | |
| medical_prompt = f"""As a homeopathic expert, analyze these symptoms: {user_input} | |
| Provide detailed recommendations in this format: | |
| **English Recommendation:** | |
| 1. Medicine (Potency): Explanation | |
| - Dosage: ... | |
| - Key Symptoms: ... | |
| - Source: ... | |
| **Translated Recommendation ({input_lang}):** | |
| 1. Same medicine name in English with translated explanation | |
| - Translated dosage instructions | |
| - Translated symptoms | |
| - Same source links | |
| Keep medicine names in English for both sections.""" | |
| # Use larger 400B model for better multilingual support | |
| response = client.chat.completions.create( | |
| messages=[{"role": "user", "content": medical_prompt}], | |
| model="deepseek-r1-distill-llama-70b", # Bigger model for better translations | |
| temperature=0.3, | |
| max_tokens=1000 | |
| ) | |
| return response.choices[0].message.content | |
| except Exception as e: | |
| return f"Error: {str(e)}" | |
| # Streamlit UI Setup | |
| st.set_page_config(page_title="Homeo Advisor", page_icon="🌿") | |
| st.title("🌿 Multilingual Homeopathic Advisor") | |
| # Initialize chat history | |
| if "messages" not in st.session_state: | |
| st.session_state.messages = [{"role": "assistant", "content": "Describe your symptoms in any language"}] | |
| # Display chat messages | |
| for message in st.session_state.messages: | |
| with st.chat_message(message["role"]): | |
| st.markdown(message["content"]) | |
| # User input handling | |
| if prompt := st.chat_input("Type your symptoms..."): | |
| st.session_state.messages.append({"role": "user", "content": prompt}) | |
| with st.chat_message("assistant"): | |
| with st.spinner("Analyzing symptoms..."): | |
| response = get_bilingual_advice(prompt) | |
| st.markdown(response) | |
| st.session_state.messages.append({"role": "assistant", "content": response}) | |
| # Disclaimer | |
| st.caption("⚠️ This is not medical advice. Consult a professional.") |