vi108 commited on
Commit
cd893c4
Β·
verified Β·
1 Parent(s): 55e1f13

Update src/streamlit_app.py

Browse files
Files changed (1) hide show
  1. src/streamlit_app.py +40 -27
src/streamlit_app.py CHANGED
@@ -1,20 +1,25 @@
 
 
 
 
1
  import os
2
- # βœ… Set all relevant cache directories to a writable location
3
- os.environ["HF_HOME"] = "/tmp/cache"
4
- os.environ["TRANSFORMERS_CACHE"] = "/tmp/cache/transformers"
5
- os.environ["SENTENCE_TRANSFORMERS_HOME"] = "/tmp/cache/sentence_transformers"
6
- os.environ["HF_DATASETS_CACHE"] = "/tmp/cache/hf_datasets"
7
- os.environ["TORCH_HOME"] = "/tmp/cache/torch"
8
-
9
- # βœ… Create the directories if they don't exist
10
- for path in [
11
- "/tmp/cache",
12
- "/tmp/cache/transformers",
13
- "/tmp/cache/sentence_transformers",
14
- "/tmp/cache/hf_datasets",
15
- "/tmp/cache/torch"
16
- ]:
17
- os.makedirs(path, exist_ok=True)
 
18
  import streamlit as st
19
  import torch
20
  from sentence_transformers import SentenceTransformer, util
@@ -22,9 +27,6 @@ from transformers import CLIPProcessor, CLIPModel
22
  from datasets import load_dataset
23
  from PIL import Image
24
  import openai
25
- from io import BytesIO
26
- import requests
27
-
28
 
29
  # ========== πŸ”‘ API Key ==========
30
  openai.api_key = os.getenv("OPENAI_API_KEY")
@@ -32,9 +34,18 @@ openai.api_key = os.getenv("OPENAI_API_KEY")
32
  # ========== πŸ“₯ Load Models ==========
33
  @st.cache_resource(show_spinner=False)
34
  def load_models():
35
- clip_model = CLIPModel.from_pretrained("openai/clip-vit-base-patch32")
36
- clip_processor = CLIPProcessor.from_pretrained("openai/clip-vit-base-patch32")
37
- text_model = SentenceTransformer("all-MiniLM-L6-v2")
 
 
 
 
 
 
 
 
 
38
  return clip_model, clip_processor, text_model
39
 
40
  clip_model, clip_processor, text_model = load_models()
@@ -42,7 +53,11 @@ clip_model, clip_processor, text_model = load_models()
42
  # ========== πŸ“₯ Load Dataset ==========
43
  @st.cache_resource(show_spinner=False)
44
  def load_medical_data():
45
- dataset = load_dataset("univanxx/3mdbench", split="train")
 
 
 
 
46
  return dataset
47
 
48
  data = load_medical_data()
@@ -79,9 +94,7 @@ if query:
79
  prompt = f"Explain this case in plain English: {selected['description']}"
80
  response = openai.ChatCompletion.create(
81
  model="gpt-4",
82
- messages=[
83
- {"role": "user", "content": prompt}
84
- ],
85
  temperature=0.5,
86
  max_tokens=150
87
  )
@@ -90,5 +103,5 @@ if query:
90
  else:
91
  st.warning("OpenAI API key not found. Please set OPENAI_API_KEY as a secret environment variable.")
92
 
93
-
94
  st.caption("This chatbot is for educational purposes only and does not provide medical advice.")
 
 
1
+ # ================================
2
+ # βœ… Cache-Safe Multimodal App
3
+ # ================================
4
+
5
  import os
6
+
7
+ # ====== Force all cache dirs to /tmp (writable in most environments) ======
8
+ CACHE_BASE = "/tmp/cache"
9
+ os.environ["HF_HOME"] = f"{CACHE_BASE}/hf_home"
10
+ os.environ["TRANSFORMERS_CACHE"] = f"{CACHE_BASE}/transformers"
11
+ os.environ["SENTENCE_TRANSFORMERS_HOME"] = f"{CACHE_BASE}/sentence_transformers"
12
+ os.environ["HF_DATASETS_CACHE"] = f"{CACHE_BASE}/hf_datasets"
13
+ os.environ["TORCH_HOME"] = f"{CACHE_BASE}/torch"
14
+ os.environ["STREAMLIT_CACHE_DIR"] = f"{CACHE_BASE}/streamlit_cache"
15
+ os.environ["STREAMLIT_STATIC_DIR"] = f"{CACHE_BASE}/streamlit_static"
16
+
17
+ # Create the directories before imports
18
+ for path in os.environ.values():
19
+ if path.startswith(CACHE_BASE):
20
+ os.makedirs(path, exist_ok=True)
21
+
22
+ # ====== Imports ======
23
  import streamlit as st
24
  import torch
25
  from sentence_transformers import SentenceTransformer, util
 
27
  from datasets import load_dataset
28
  from PIL import Image
29
  import openai
 
 
 
30
 
31
  # ========== πŸ”‘ API Key ==========
32
  openai.api_key = os.getenv("OPENAI_API_KEY")
 
34
  # ========== πŸ“₯ Load Models ==========
35
  @st.cache_resource(show_spinner=False)
36
  def load_models():
37
+ clip_model = CLIPModel.from_pretrained(
38
+ "openai/clip-vit-base-patch32",
39
+ cache_dir=os.environ["TRANSFORMERS_CACHE"]
40
+ )
41
+ clip_processor = CLIPProcessor.from_pretrained(
42
+ "openai/clip-vit-base-patch32",
43
+ cache_dir=os.environ["TRANSFORMERS_CACHE"]
44
+ )
45
+ text_model = SentenceTransformer(
46
+ "all-MiniLM-L6-v2",
47
+ cache_folder=os.environ["SENTENCE_TRANSFORMERS_HOME"]
48
+ )
49
  return clip_model, clip_processor, text_model
50
 
51
  clip_model, clip_processor, text_model = load_models()
 
53
  # ========== πŸ“₯ Load Dataset ==========
54
  @st.cache_resource(show_spinner=False)
55
  def load_medical_data():
56
+ dataset = load_dataset(
57
+ "univanxx/3mdbench",
58
+ split="train",
59
+ cache_dir=os.environ["HF_DATASETS_CACHE"]
60
+ )
61
  return dataset
62
 
63
  data = load_medical_data()
 
94
  prompt = f"Explain this case in plain English: {selected['description']}"
95
  response = openai.ChatCompletion.create(
96
  model="gpt-4",
97
+ messages=[{"role": "user", "content": prompt}],
 
 
98
  temperature=0.5,
99
  max_tokens=150
100
  )
 
103
  else:
104
  st.warning("OpenAI API key not found. Please set OPENAI_API_KEY as a secret environment variable.")
105
 
 
106
  st.caption("This chatbot is for educational purposes only and does not provide medical advice.")
107
+