aminahmed78 commited on
Commit
913e7f1
·
verified ·
1 Parent(s): 14e31fa

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +88 -14
app.py CHANGED
@@ -1,16 +1,29 @@
1
  import streamlit as st
2
  import os
3
  from transformers import pipeline
4
- from langdetect import detect
5
  from groq import Groq
6
 
 
 
 
7
  # Load Hugging Face token from environment
8
  HF_TOKEN = os.environ.get("homeo_doc")
9
  if not HF_TOKEN:
10
- st.error("Missing Hugging Face API token. Set 'homeo_doc' in environment variables.")
11
 
12
  # Initialize translation pipeline
13
- translator = pipeline("translation", model="facebook/nllb-200-distilled-600M", token=HF_TOKEN)
 
 
 
 
 
 
 
 
 
 
14
 
15
  # Language code mapping for NLLB-200
16
  LANG_CODE_MAP = {
@@ -23,25 +36,86 @@ LANG_CODE_MAP = {
23
  }
24
 
25
  def translate_text(text, target_lang='eng_Latn'):
26
- """Translate text using NLLB-200"""
27
  try:
28
  source_lang = detect(text)
29
- source_code = LANG_CODE_MAP.get(source_lang, 'eng_Latn') # Detect source language
 
 
30
 
31
  translation = translator(
32
  text,
33
  src_lang=source_code, # Pass source language
34
  tgt_lang=target_lang # Pass target language
35
  )
36
-
37
  return translation[0]['translation_text']
38
 
39
  except Exception as e:
40
- st.error(f"Translation error: {str(e)}")
41
- return text
42
-
43
- # Test function
44
- if __name__ == "__main__":
45
- test_text = "یہ ایک آزمائشی جملہ ہے۔" # Urdu sample text
46
- translated = translate_text(test_text, "eng_Latn")
47
- print("Translated:", translated)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import streamlit as st
2
  import os
3
  from transformers import pipeline
4
+ from langdetect import detect, DetectorFactory
5
  from groq import Groq
6
 
7
+ # Ensure consistent language detection
8
+ DetectorFactory.seed = 0
9
+
10
  # Load Hugging Face token from environment
11
  HF_TOKEN = os.environ.get("homeo_doc")
12
  if not HF_TOKEN:
13
+ st.error("Missing Hugging Face API token. Set 'homeo_doc' in environment variables.")
14
 
15
  # Initialize translation pipeline
16
+ try:
17
+ translator = pipeline("translation", model="facebook/nllb-200-distilled-600M", token=HF_TOKEN)
18
+ except Exception as e:
19
+ st.error(f"❌ Error initializing translation model: {e}")
20
+
21
+ # Initialize Groq client for AI-based homeopathic advice
22
+ GROQ_API_KEY = os.environ.get("GROQ_API_KEY")
23
+ if not GROQ_API_KEY:
24
+ st.error("❌ Missing GROQ API Key. Set 'GROQ_API_KEY' in environment variables.")
25
+
26
+ groq_client = Groq(api_key=GROQ_API_KEY)
27
 
28
  # Language code mapping for NLLB-200
29
  LANG_CODE_MAP = {
 
36
  }
37
 
38
  def translate_text(text, target_lang='eng_Latn'):
39
+ """Translate text using NLLB-200 model."""
40
  try:
41
  source_lang = detect(text)
42
+ source_code = LANG_CODE_MAP.get(source_lang, 'eng_Latn') # Default to English if unknown
43
+
44
+ st.write(f"🔄 Detected source: {source_code}, Target: {target_lang}") # Debugging log
45
 
46
  translation = translator(
47
  text,
48
  src_lang=source_code, # Pass source language
49
  tgt_lang=target_lang # Pass target language
50
  )
51
+
52
  return translation[0]['translation_text']
53
 
54
  except Exception as e:
55
+ st.error(f"⚠️ Translation error: {str(e)}")
56
+ return text # Return original text if translation fails
57
+
58
+ def get_homeopathic_advice(symptoms):
59
+ """Get medical advice using Groq AI API."""
60
+ try:
61
+ response = groq_client.chat.completions.create(
62
+ model="llama3-70b-8192",
63
+ messages=[{
64
+ "role": "user",
65
+ "content": f"Act as a homeopathic expert. Suggest remedies for: {symptoms}"
66
+ }],
67
+ temperature=0.3
68
+ )
69
+ return response.choices[0].message.content
70
+ except Exception as e:
71
+ return f"❌ Error fetching homeopathic advice: {str(e)}"
72
+
73
+ # 🎨 Streamlit UI
74
+ st.set_page_config(page_title="Homeo Advisor", page_icon="🌿")
75
+ st.title("🌍 Multilingual Homeopathic Advisor")
76
+
77
+ # Chat interface (Persistent session)
78
+ if "messages" not in st.session_state:
79
+ st.session_state.messages = []
80
+
81
+ # Display previous chat messages
82
+ for message in st.session_state.messages:
83
+ with st.chat_message(message["role"]):
84
+ st.markdown(message["content"])
85
+
86
+ # User input box
87
+ if prompt := st.chat_input("Describe symptoms in any language..."):
88
+ st.session_state.messages.append({"role": "user", "content": prompt})
89
+
90
+ with st.spinner("🔍 Analyzing..."):
91
+ # Translate user input to English
92
+ english_input = translate_text(prompt, "eng_Latn")
93
+
94
+ # Get homeopathic advice in English
95
+ english_advice = get_homeopathic_advice(english_input)
96
+
97
+ # Detect original language
98
+ source_lang = detect(prompt)
99
+ source_code = LANG_CODE_MAP.get(source_lang, 'eng_Latn')
100
+
101
+ # Translate advice back to original language
102
+ translated_advice = translate_text(english_advice, source_code)
103
+
104
+ # Format response
105
+ final_response = f"""
106
+ **💡 English Recommendation:**
107
+ {english_advice}
108
+
109
+ **🌍 Translated Recommendation ({source_lang.upper()}):**
110
+ {translated_advice}
111
+ """
112
+
113
+ # Display response
114
+ with st.chat_message("assistant"):
115
+ st.markdown(final_response)
116
+
117
+ # Save response in session history
118
+ st.session_state.messages.append({"role": "assistant", "content": final_response})
119
+
120
+ # Disclaimer
121
+ st.caption("⚠️ This is not medical advice. Consult a professional.")