mgbam commited on
Commit
0808ffb
·
verified ·
1 Parent(s): e1a621b

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +10 -12
app.py CHANGED
@@ -25,7 +25,7 @@ from Bio import Entrez # Ensure BioPython is installed
25
 
26
  from dotenv import load_dotenv
27
  import requests
28
- import openai # Added for OpenAI GPT-4 integration
29
  import ast
30
  import logging
31
 
@@ -42,7 +42,6 @@ logging.basicConfig(
42
  logger = logging.getLogger()
43
 
44
  # ---------------------- Streamlit Page Configuration ---------------------------
45
- # This must be the first Streamlit command in the script
46
  st.set_page_config(page_title="AI Clinical Intelligence Hub", layout="wide")
47
 
48
  # ---------------------- Initialize External Clients ---------------------------
@@ -54,7 +53,7 @@ if not OPENAI_API_KEY:
54
  st.error("OpenAI API key must be set as an environment variable (OPENAI_API_KEY).")
55
  st.stop()
56
 
57
- openai.api_key = OPENAI_API_KEY
58
 
59
  # Load spaCy model with error handling
60
  try:
@@ -390,7 +389,7 @@ class DiagnosisSupport(ABC):
390
  class SimpleDiagnosis(DiagnosisSupport):
391
  """Provides a simple diagnosis example, based on the Logistic regression model."""
392
  def __init__(self):
393
- self.model: LogisticRegressionTrainer = LogisticRegressionTrainer()
394
 
395
  def diagnose(
396
  self,
@@ -401,7 +400,7 @@ class SimpleDiagnosis(DiagnosisSupport):
401
  **kwargs
402
  ) -> pd.DataFrame:
403
  try:
404
- result = self.model.invoke(data, target_col=target_col, columns=columns)
405
  if "accuracy" in result:
406
  return pd.DataFrame({
407
  diagnosis_key: [f"Model Accuracy: {result['accuracy']:.2%}"],
@@ -466,8 +465,9 @@ class MedicalKnowledgeBase(ABC):
466
 
467
  class SimpleMedicalKnowledge(MedicalKnowledgeBase):
468
  """Enhanced Medical Knowledge Class using OpenAI GPT-4."""
469
- def __init__(self):
470
- self.nlp = nlp # Using the loaded spaCy model
 
471
 
472
  def search_medical_info(self, query: str, pub_email: str = "") -> str:
473
  """
@@ -492,20 +492,18 @@ class SimpleMedicalKnowledge(MedicalKnowledgeBase):
492
  """
493
 
494
  # Make the API request to OpenAI GPT-4
495
- response = openai.ChatCompletion.create(
496
  model="gpt-4",
497
  messages=[
498
  {"role": "system", "content": "You are a helpful medical assistant."},
499
  {"role": "user", "content": prompt}
500
  ],
501
  max_tokens=500,
502
- n=1,
503
- stop=None,
504
  temperature=0.7,
505
  )
506
 
507
  # Extract the answer from the response
508
- answer = response.choices[0].message['content'].strip()
509
 
510
  logger.info("Successfully retrieved data from OpenAI GPT-4.")
511
 
@@ -775,7 +773,7 @@ def initialize_session_state():
775
  if 'treatment_recommendation' not in st.session_state:
776
  st.session_state.treatment_recommendation = BasicTreatmentRecommendation()
777
  if 'knowledge_base' not in st.session_state:
778
- st.session_state.knowledge_base = SimpleMedicalKnowledge()
779
  if 'pub_email' not in st.session_state:
780
  st.session_state.pub_email = PUB_EMAIL # Load PUB_EMAIL from environment variables
781
 
 
25
 
26
  from dotenv import load_dotenv
27
  import requests
28
+ import openai # Updated for OpenAI SDK v1.0
29
  import ast
30
  import logging
31
 
 
42
  logger = logging.getLogger()
43
 
44
  # ---------------------- Streamlit Page Configuration ---------------------------
 
45
  st.set_page_config(page_title="AI Clinical Intelligence Hub", layout="wide")
46
 
47
  # ---------------------- Initialize External Clients ---------------------------
 
53
  st.error("OpenAI API key must be set as an environment variable (OPENAI_API_KEY).")
54
  st.stop()
55
 
56
+ openai_client = openai.OpenAI(api_key=OPENAI_API_KEY) # Instantiate OpenAI client
57
 
58
  # Load spaCy model with error handling
59
  try:
 
389
  class SimpleDiagnosis(DiagnosisSupport):
390
  """Provides a simple diagnosis example, based on the Logistic regression model."""
391
  def __init__(self):
392
+ self.model_trainer: LogisticRegressionTrainer = LogisticRegressionTrainer()
393
 
394
  def diagnose(
395
  self,
 
400
  **kwargs
401
  ) -> pd.DataFrame:
402
  try:
403
+ result = self.model_trainer.invoke(data, target_col=target_col, columns=columns)
404
  if "accuracy" in result:
405
  return pd.DataFrame({
406
  diagnosis_key: [f"Model Accuracy: {result['accuracy']:.2%}"],
 
465
 
466
  class SimpleMedicalKnowledge(MedicalKnowledgeBase):
467
  """Enhanced Medical Knowledge Class using OpenAI GPT-4."""
468
+ def __init__(self, client: openai.OpenAI, nlp_model):
469
+ self.nlp = nlp_model # Using the loaded spaCy model
470
+ self.client = client
471
 
472
  def search_medical_info(self, query: str, pub_email: str = "") -> str:
473
  """
 
492
  """
493
 
494
  # Make the API request to OpenAI GPT-4
495
+ response = self.client.chat_completions.create(
496
  model="gpt-4",
497
  messages=[
498
  {"role": "system", "content": "You are a helpful medical assistant."},
499
  {"role": "user", "content": prompt}
500
  ],
501
  max_tokens=500,
 
 
502
  temperature=0.7,
503
  )
504
 
505
  # Extract the answer from the response
506
+ answer = response.choices[0].message.content.strip()
507
 
508
  logger.info("Successfully retrieved data from OpenAI GPT-4.")
509
 
 
773
  if 'treatment_recommendation' not in st.session_state:
774
  st.session_state.treatment_recommendation = BasicTreatmentRecommendation()
775
  if 'knowledge_base' not in st.session_state:
776
+ st.session_state.knowledge_base = SimpleMedicalKnowledge(openai_client, nlp)
777
  if 'pub_email' not in st.session_state:
778
  st.session_state.pub_email = PUB_EMAIL # Load PUB_EMAIL from environment variables
779