Francesco commited on
Commit
402fd8a
1 Parent(s): 1e1c16e

added patient data

Browse files
Files changed (3) hide show
  1. app.py +18 -17
  2. data/patients.json +47 -0
  3. prompts/patient.prompt +5 -7
app.py CHANGED
@@ -1,7 +1,6 @@
1
  from pathlib import Path
2
 
3
  from dotenv import load_dotenv
4
- import torch
5
  load_dotenv()
6
 
7
  from langchain.chains import LLMChain
@@ -10,14 +9,15 @@ from langchain.chat_models import ChatOpenAI
10
  import gradio as gr
11
  from elevenlabs import generate, play
12
  from pathlib import Path
 
13
 
14
- import whisper
15
 
16
- model = whisper.load_model("base", device="cuda")
17
 
18
 
19
  prompt = PromptTemplate(
20
- input_variables=["user_input"],
21
  template=Path("prompts/patient.prompt").read_text(),
22
  )
23
 
@@ -25,9 +25,15 @@ llm = ChatOpenAI(temperature=0.7)
25
 
26
  chain = LLMChain(llm=llm, prompt=prompt)
27
 
 
 
 
 
 
 
28
 
29
  def run_text_prompt(message, chat_history):
30
- bot_message = chain.run(user_input=message)
31
 
32
  # audio = generate(text=bot_message, voice="Bella")
33
 
@@ -37,22 +43,17 @@ def run_text_prompt(message, chat_history):
37
  return "", chat_history
38
 
39
 
40
- def run_audio_prompt(audio, chat_history):
41
- if audio is None:
42
- return None, chat_history
43
 
44
- message_transcription = model.transcribe(audio)["text"]
45
- _, chat_history = run_text_prompt(message_transcription, chat_history)
46
- return None, chat_history
47
 
48
 
49
  with gr.Blocks() as demo:
50
- gr.Markdown("""
51
- Name: Emma Thompson
52
- Age: 28
53
- Present complain: Abdominal pain
54
- Matched Condition: Gastritis
55
- """)
56
  chatbot = gr.Chatbot()
57
 
58
  msg = gr.Textbox()
 
1
  from pathlib import Path
2
 
3
  from dotenv import load_dotenv
 
4
  load_dotenv()
5
 
6
  from langchain.chains import LLMChain
 
9
  import gradio as gr
10
  from elevenlabs import generate, play
11
  from pathlib import Path
12
+ import json
13
 
14
+ # import whisper
15
 
16
+ # model = whisper.load_model("base", device="cuda")
17
 
18
 
19
  prompt = PromptTemplate(
20
+ input_variables=["patient", "user_input"],
21
  template=Path("prompts/patient.prompt").read_text(),
22
  )
23
 
 
25
 
26
  chain = LLMChain(llm=llm, prompt=prompt)
27
 
28
+ with open("data/patients.json") as f:
29
+ patiens = json.load(f)
30
+
31
+ patient = patiens[0]
32
+
33
+ print(patient)
34
 
35
  def run_text_prompt(message, chat_history):
36
+ bot_message = chain.run(patient=patient, user_input=message)
37
 
38
  # audio = generate(text=bot_message, voice="Bella")
39
 
 
43
  return "", chat_history
44
 
45
 
46
+ # def run_audio_prompt(audio, chat_history):
47
+ # if audio is None:
48
+ # return None, chat_history
49
 
50
+ # message_transcription = model.transcribe(audio)["text"]
51
+ # _, chat_history = run_text_prompt(message_transcription, chat_history)
52
+ # return None, chat_history
53
 
54
 
55
  with gr.Blocks() as demo:
56
+ gr.Markdown(f"```json\n{json.dumps(patient)}```")
 
 
 
 
 
57
  chatbot = gr.Chatbot()
58
 
59
  msg = gr.Textbox()
data/patients.json ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [
2
+ {
3
+ "presentingComplaint": "Abdominal pain",
4
+ "matchedCondition": "Gastritis",
5
+ "name": "Emma Thompson",
6
+ "age": 28,
7
+ "characterSummary": "Spirited graphic designer, curious, empathetic",
8
+ "levelOfUnderstanding": 2,
9
+ "rangeOfMedicalUnderstanding": "Limited knowledge of common illnesses"
10
+ },
11
+ {
12
+ "presentingComplaint": "Chest pain",
13
+ "matchedCondition": "Angina",
14
+ "name": "James Wilson",
15
+ "age": 45,
16
+ "characterSummary": "Seasoned entrepreneur, strategic, mentoring spirit",
17
+ "levelOfUnderstanding": 4,
18
+ "rangeOfMedicalUnderstanding": "Basic understanding of health and wellness"
19
+ },
20
+ {
21
+ "presentingComplaint": "Headache",
22
+ "matchedCondition": "Migraine",
23
+ "name": "Olivia Patel",
24
+ "age": 52,
25
+ "characterSummary": "Compassionate nurse, nurturing, animal lover",
26
+ "levelOfUnderstanding": 8,
27
+ "rangeOfMedicalUnderstanding": "Proficient in healthcare terminology"
28
+ },
29
+ {
30
+ "presentingComplaint": "Shortness of breath",
31
+ "matchedCondition": "Asthma",
32
+ "name": "Noah Collins",
33
+ "age": 36,
34
+ "characterSummary": "Adventurous thrill-seeker, introspective",
35
+ "levelOfUnderstanding": 2,
36
+ "rangeOfMedicalUnderstanding": "Limited understanding of medical issues"
37
+ },
38
+ {
39
+ "presentingComplaint": "Fever",
40
+ "matchedCondition": "Influenza",
41
+ "name": "Ava Mitchell",
42
+ "age": 19,
43
+ "characterSummary": "Ambitious computer science student, talented pianist",
44
+ "levelOfUnderstanding": 3,
45
+ "rangeOfMedicalUnderstanding": "Familiar with basic medical concepts"
46
+ }
47
+ ]
prompts/patient.prompt CHANGED
@@ -1,12 +1,10 @@
1
- You will act like a patient with a given persona and a present complain. I will act as a doctor trying to understand your condition by asking question. Please reply based on your complain.
2
- Your persona is:
3
 
4
- Name: Emma Thompson
5
- Age: 28
6
- Present complain: Abdominal pain
7
- Matched Condition: Gastritis
8
 
9
- Please, send only one reply
 
 
10
 
11
  Doctor: {user_input}
12
  Patient:
 
1
+ You will act like a patient with a given persona and a present complain. I will act as a doctor trying to understand your condition by asking question. Your persona is:
 
2
 
3
+ {patient}
 
 
 
4
 
5
+ Please reply using `presentingComplaint`. You should also use `characterSummary` to impersonate the patient. `levelOfUnderstanding` is between 0 and 10 and represent the level of the patient in medicine. A low number indicate somebody who is not familiar with medical terminology.
6
+
7
+ Send only one reply
8
 
9
  Doctor: {user_input}
10
  Patient: