jocko commited on
Commit
c8b7285
Β·
1 Parent(s): fbf3ec2

fix image similarity detection

Browse files
Files changed (2) hide show
  1. requirements.txt +3 -2
  2. src/streamlit_app.py +17 -18
requirements.txt CHANGED
@@ -1,6 +1,6 @@
1
  altair
2
  pandas
3
- streamlit
4
  torch
5
  transformers
6
  sentence-transformers
@@ -8,4 +8,5 @@ datasets
8
  openai
9
  opik
10
  comet-llm==2.1.0
11
- comet_ml==3.33.8
 
 
1
  altair
2
  pandas
3
+ streamlit~=1.48.0
4
  torch
5
  transformers
6
  sentence-transformers
 
8
  openai
9
  opik
10
  comet-llm==2.1.0
11
+ comet_ml==3.33.8
12
+ pillow~=11.3.0
src/streamlit_app.py CHANGED
@@ -30,12 +30,12 @@ from sentence_transformers import SentenceTransformer, util
30
  from transformers import CLIPProcessor, CLIPModel
31
  from datasets import load_dataset, get_dataset_split_names
32
  from PIL import Image
33
- import openai
34
  import comet_llm
35
  from opik import track
36
 
37
  # ========== πŸ”‘ API Key ==========
38
- openai.api_key = os.getenv("OPENAI_API_KEY")
39
  os.environ["OPIK_API_KEY"] = os.getenv("OPIK_API_KEY")
40
  os.environ["OPIK_WORKSPACE"] = os.getenv("OPIK_WORKSPACE")
41
  # ========== πŸ“₯ Load Models ==========
@@ -86,8 +86,7 @@ def embed_dataset_images(_dataset):
86
  data = load_medical_data()
87
  dataset_image_features = embed_dataset_images(data)
88
 
89
- from openai import OpenAI
90
- client = OpenAI(api_key=openai.api_key)
91
  # Temporary debug display
92
  #st.write("Dataset columns:", data.features.keys())
93
 
@@ -117,19 +116,6 @@ def embed_dataset_texts(_texts):
117
  def embed_query_text(query):
118
  return text_model.encode([query], convert_to_tensor=True)[0]
119
 
120
- # Pick which text column to use
121
- TEXT_COLUMN = "complaints" # or "general_complaint", depending on your needs
122
-
123
- # ========== πŸ§‘β€βš•οΈ App UI ==========
124
- st.title("🩺 Multimodal Medical Chatbot")
125
-
126
- query = st.text_input("Enter your medical question or symptom description:")
127
- uploaded_files = st.file_uploader("Upload an image to find similar medical cases:", type=["png", "jpg", "jpeg"], accept_multiple_files=True)
128
-
129
- st.write(f"Number of files: {len(uploaded_files)}")
130
- for uploaded_file in uploaded_files:
131
- st.write(f"File name: {uploaded_file.name}")
132
-
133
  @track
134
  def get_chat_completion_openai(client, prompt: str):
135
  return client.chat.completions.create(
@@ -150,6 +136,19 @@ def get_similar_prompt(query):
150
  return data[idx]
151
 
152
 
 
 
 
 
 
 
 
 
 
 
 
 
 
153
 
154
  if query:
155
  with st.spinner("Searching medical cases..."):
@@ -165,7 +164,7 @@ if query:
165
  st.markdown(f"**Case Description:** {selected[TEXT_COLUMN]}")
166
 
167
  # GPT Explanation
168
- if openai.api_key:
169
  prompt = f"Explain this case in plain English: {selected[TEXT_COLUMN]}"
170
 
171
  explanation = get_chat_completion_openai(client, prompt)
 
30
  from transformers import CLIPProcessor, CLIPModel
31
  from datasets import load_dataset, get_dataset_split_names
32
  from PIL import Image
33
+ from openai import OpenAI
34
  import comet_llm
35
  from opik import track
36
 
37
  # ========== πŸ”‘ API Key ==========
38
+ OpenAI.api_key = os.getenv("OPENAI_API_KEY")
39
  os.environ["OPIK_API_KEY"] = os.getenv("OPIK_API_KEY")
40
  os.environ["OPIK_WORKSPACE"] = os.getenv("OPIK_WORKSPACE")
41
  # ========== πŸ“₯ Load Models ==========
 
86
  data = load_medical_data()
87
  dataset_image_features = embed_dataset_images(data)
88
 
89
+ client = OpenAI(api_key=OpenAI.api_key)
 
90
  # Temporary debug display
91
  #st.write("Dataset columns:", data.features.keys())
92
 
 
116
  def embed_query_text(query):
117
  return text_model.encode([query], convert_to_tensor=True)[0]
118
 
 
 
 
 
 
 
 
 
 
 
 
 
 
119
  @track
120
  def get_chat_completion_openai(client, prompt: str):
121
  return client.chat.completions.create(
 
136
  return data[idx]
137
 
138
 
139
+ # Pick which text column to use
140
+ TEXT_COLUMN = "complaints" # or "general_complaint", depending on your needs
141
+
142
+ # ========== πŸ§‘β€βš•οΈ App UI ==========
143
+ st.title("🩺 Multimodal Medical Chatbot")
144
+
145
+ query = st.text_input("Enter your medical question or symptom description:")
146
+ uploaded_files = st.file_uploader("Upload an image to find similar medical cases:", type=["png", "jpg", "jpeg"], accept_multiple_files=True)
147
+
148
+ st.write(f"Number of files: {len(uploaded_files)}")
149
+ for uploaded_file in uploaded_files:
150
+ st.write(f"File name: {uploaded_file.name}")
151
+
152
 
153
  if query:
154
  with st.spinner("Searching medical cases..."):
 
164
  st.markdown(f"**Case Description:** {selected[TEXT_COLUMN]}")
165
 
166
  # GPT Explanation
167
+ if OpenAI.api_key:
168
  prompt = f"Explain this case in plain English: {selected[TEXT_COLUMN]}"
169
 
170
  explanation = get_chat_completion_openai(client, prompt)