brestok commited on
Commit
28c36ca
·
1 Parent(s): 2849c14

added invalid request handling

Browse files
trauma/api/message/ai/engine.py CHANGED
@@ -27,7 +27,7 @@ async def search_entities(
27
  ) -> CreateMessageResponse:
28
  entity_data, is_valid = await asyncio.gather(
29
  update_entity_data_with_ai(chat.entityData, user_message, messages[-1]['content']),
30
- check_is_valid_request(user_message, messages[-1]['content'])
31
  )
32
  final_entities = None
33
  if not is_valid:
 
27
  ) -> CreateMessageResponse:
28
  entity_data, is_valid = await asyncio.gather(
29
  update_entity_data_with_ai(chat.entityData, user_message, messages[-1]['content']),
30
+ check_is_valid_request(user_message, "\n".join([f"- [{i['role']}]: {i['content']}." for i in messages]))
31
  )
32
  final_entities = None
33
  if not is_valid:
trauma/api/message/ai/openai_request.py CHANGED
@@ -104,13 +104,13 @@ async def choose_closest_treatment_method(treatment_methods: list[str], treatmen
104
 
105
 
106
  @openai_wrapper(is_json=True, return_='is_valid')
107
- async def check_is_valid_request(user_message: str, assistant_message: str):
108
  messages = [
109
  {
110
  "role": "system",
111
  "content": TraumaPrompts.decide_is_valid_request
112
  .replace("{user_message}", user_message)
113
- .replace("{assistant_message}", assistant_message)
114
  }
115
  ]
116
  return messages
 
104
 
105
 
106
  @openai_wrapper(is_json=True, return_='is_valid')
107
+ async def check_is_valid_request(user_message: str, message_history: str):
108
  messages = [
109
  {
110
  "role": "system",
111
  "content": TraumaPrompts.decide_is_valid_request
112
  .replace("{user_message}", user_message)
113
+ .replace("{message_history}", message_history)
114
  }
115
  ]
116
  return messages
trauma/api/message/ai/prompts.py CHANGED
@@ -111,25 +111,21 @@ Je moet een antwoord genereren aan de gebruiker waarin je aangeeft dat je geschi
111
  - Gefeliciteerd! Hier is een lijst van klinieken die perfect passen bij deze aandoening. Ik heb deze klinieken aanbevolen omdat ze voldoen aan de gevraagde leeftijdsbeperkingen en gespecialiseerd zijn in de behandeling van deze aandoening met behulp van dergelijke methoden."""
112
  decide_is_valid_request = """## Task
113
 
114
- You must determine whether the user's response is valid. Provide your answer in the [is_valid] field in JSON format.
115
-
116
- ## Context
117
-
118
- A nurse has interviewed a patient and is now searching for a suitable clinic based on the collected information. To assist with this, the nurse answers questions from an AI assistant, which gathers patient data to provide recommendations. Your task is to determine whether the user's (nurse's) message is relevant to the system's purpose. If the user's message falls outside the intended scope of the system's patient data collection, return false.
119
 
120
  ## Data
121
 
122
- **user query**:
123
  ```
124
  {user_message}
125
  ```
126
 
127
- **assistant question**:
128
  ```
129
- {assistant_message}
130
  ```
131
 
132
- ## JSON Response format
133
 
134
  ```json
135
  {
@@ -137,11 +133,16 @@ A nurse has interviewed a patient and is now searching for a suitable clinic bas
137
  }
138
  ```
139
 
140
- ## Instructions for filling JSON
 
 
141
 
142
  The field is considered valid (`is_valid = true`) if:
143
- - The user has provided a logical answer to the assistant's question.
144
- - The user's message relates to a medical topic."""
 
 
 
145
  generate_invalid_response = """## Taak
146
 
147
  Je moet een antwoord genereren voor de gebruiker waarin je aangeeft dat hun verzoek buiten jouw specificatie valt voor het verzamelen van informatie en het geven van aanbevelingen.
 
111
  - Gefeliciteerd! Hier is een lijst van klinieken die perfect passen bij deze aandoening. Ik heb deze klinieken aanbevolen omdat ze voldoen aan de gevraagde leeftijdsbeperkingen en gespecialiseerd zijn in de behandeling van deze aandoening met behulp van dergelijke methoden."""
112
  decide_is_valid_request = """## Task
113
 
114
+ You must determine whether the user's request is valid. Provide your answer in the [is_valid] field in JSON format.
 
 
 
 
115
 
116
  ## Data
117
 
118
+ **User Request**:
119
  ```
120
  {user_message}
121
  ```
122
 
123
+ **Message History**:
124
  ```
125
+ {message_history}
126
  ```
127
 
128
+ ## JSON Response Format
129
 
130
  ```json
131
  {
 
133
  }
134
  ```
135
 
136
+ [INST]
137
+
138
+ ## Instructions for Filling JSON
139
 
140
  The field is considered valid (`is_valid = true`) if:
141
+ - The user describes the patient, their data, illness, treatment method, etc.
142
+ - The user's request relates to a medical topic.
143
+ - The user's request is a valid response to the assistant's question.
144
+
145
+ [/INST]"""
146
  generate_invalid_response = """## Taak
147
 
148
  Je moet een antwoord genereren voor de gebruiker waarin je aangeeft dat hun verzoek buiten jouw specificatie valt voor het verzamelen van informatie en het geven van aanbevelingen.