brestok commited on
Commit
1003460
·
1 Parent(s): 42ec0ea

Refactor empty_field usage in prompt replacements

Browse files

Removed unnecessary `empty_field` parameters across multiple functions and replaced them with clearer instructions. Enhanced prompt templates and utils to improve consistency and readability for missing field messages.

trauma/api/message/ai/engine.py CHANGED
@@ -53,7 +53,7 @@ async def search_entities(
53
  empty_field_instructions = pick_empty_field_instructions(empty_field)
54
 
55
  if empty_field == 'age':
56
- response = await generate_next_question(empty_field, empty_field_instructions, message_history_str)
57
  else:
58
  user_messages_str = prepare_user_messages_str(decoded_message, messages)
59
  possible_entity_indexes, search_request = await asyncio.gather(
@@ -63,7 +63,7 @@ async def search_entities(
63
  final_entities = await search_semantic_entities(search_request, entity_data, possible_entity_indexes)
64
  final_entities_str = prepare_final_entities_str(final_entities)
65
  response = await generate_final_response(
66
- final_entities_str, decoded_message, message_history_str, empty_field_instructions, empty_field
67
  )
68
 
69
  user_message = MessageModel(chatId=chat.id, author=Author.User, text=decoded_message)
 
53
  empty_field_instructions = pick_empty_field_instructions(empty_field)
54
 
55
  if empty_field == 'age':
56
+ response = await generate_next_question(empty_field_instructions, message_history_str)
57
  else:
58
  user_messages_str = prepare_user_messages_str(decoded_message, messages)
59
  possible_entity_indexes, search_request = await asyncio.gather(
 
63
  final_entities = await search_semantic_entities(search_request, entity_data, possible_entity_indexes)
64
  final_entities_str = prepare_final_entities_str(final_entities)
65
  response = await generate_final_response(
66
+ final_entities_str, decoded_message, message_history_str, empty_field_instructions
67
  )
68
 
69
  user_message = MessageModel(chatId=chat.id, author=Author.User, text=decoded_message)
trauma/api/message/ai/openai_request.py CHANGED
@@ -23,12 +23,11 @@ async def update_entity_data_with_ai(entity_data: EntityData, user_message: str,
23
 
24
 
25
  @openai_wrapper(temperature=0.8)
26
- async def generate_next_question(empty_field: str, instructions: str, message_history_str: str):
27
  messages = [
28
  {
29
  "role": "system",
30
  "content": TraumaPrompts.generate_next_question
31
- .replace("{empty_field}", empty_field)
32
  .replace("{instructions}", instructions)
33
  .replace("{message_history}", message_history_str)
34
  }
@@ -51,12 +50,11 @@ async def generate_search_request(user_messages_str: str, entity_data: dict):
51
 
52
  @openai_wrapper(temperature=0.8)
53
  async def generate_final_response(
54
- final_entities: str, user_message: str, message_history_str: str, empty_field_instructions: str, empty_field: str
55
  ):
56
  if empty_field_instructions:
57
  prompt = (TraumaPrompts.generate_not_fully_recommendations
58
- .replace("{instructions}", empty_field_instructions)
59
- .replace("{empty_field}", empty_field))
60
  elif json.loads(final_entities)['klinieken']:
61
  prompt = (TraumaPrompts.generate_recommendation_decision
62
  .replace("{final_entities}", final_entities))
@@ -131,7 +129,7 @@ async def generate_invalid_response(user_message: str, message_history_str: str,
131
 
132
  if empty_field:
133
  empty_field_instructions = pick_empty_field_instructions(empty_field)
134
- prompt = TraumaPrompts.generate_invalid_response.replace("{empty_field}", empty_field_instructions)
135
  else:
136
  prompt = TraumaPrompts.generate_invalid_response_with_recs
137
  messages = [
 
23
 
24
 
25
  @openai_wrapper(temperature=0.8)
26
+ async def generate_next_question(instructions: str, message_history_str: str):
27
  messages = [
28
  {
29
  "role": "system",
30
  "content": TraumaPrompts.generate_next_question
 
31
  .replace("{instructions}", instructions)
32
  .replace("{message_history}", message_history_str)
33
  }
 
50
 
51
  @openai_wrapper(temperature=0.8)
52
  async def generate_final_response(
53
+ final_entities: str, user_message: str, message_history_str: str, empty_field_instructions: str
54
  ):
55
  if empty_field_instructions:
56
  prompt = (TraumaPrompts.generate_not_fully_recommendations
57
+ .replace("{instructions}", empty_field_instructions))
 
58
  elif json.loads(final_entities)['klinieken']:
59
  prompt = (TraumaPrompts.generate_recommendation_decision
60
  .replace("{final_entities}", final_entities))
 
129
 
130
  if empty_field:
131
  empty_field_instructions = pick_empty_field_instructions(empty_field)
132
+ prompt = TraumaPrompts.generate_invalid_response.replace("{instructions}", empty_field_instructions)
133
  else:
134
  prompt = TraumaPrompts.generate_invalid_response_with_recs
135
  messages = [
trauma/api/message/ai/prompts.py CHANGED
@@ -36,10 +36,10 @@ Je verzamelt informatie over een patiënt, hun ziekte en de behandelmethode zoda
36
  }
37
  ```
38
 
39
- - **age**: leeftijd van de patiënt.
40
- - **treatmentArea**: Het type mentale of fysieke ziekte/stoornis.
41
- - **treatmentMethod**: Een methode voor het behandelen van de ziekte of stoornis.
42
- - **location**: Stad of adres waar de facility zich bevindt
43
  - **postalCode**: Postcode van de facility.
44
 
45
  ## Regels voor het bijwerken van Entity Data
@@ -59,11 +59,9 @@ Je bent een informaticus die gegevens verzamelt over de patiënt en de gewenste
59
 
60
  **Gemist veld**:
61
  ```
62
- {empty_field}
63
  ```
64
 
65
- - {instructions}
66
-
67
  **Gespreksgeschiedenis**:
68
  ```
69
  {message_history}
@@ -84,11 +82,9 @@ Je bent een informatieve assistent die gegevens verzamelt over de patiënt en de
84
 
85
  **Ontbrekend veld**:
86
  ```
87
- {empty_field}
88
  ```
89
 
90
- - {instructions}
91
-
92
  **Berichten geschiedenis**:
93
  ```
94
  {message_history}
@@ -193,7 +189,7 @@ Je moet de gebruiker vriendelijk laten weten dat hun verzoek (`Gebruikersquery`)
193
 
194
  **Verplichte veld**:
195
  ```
196
- {empty_field}
197
  ```
198
 
199
  ## Belangrijke opmerkingen
 
36
  }
37
  ```
38
 
39
+ - **age**: De leeftijd van het kind of de jongere waarvoor hulp wordt gezocht, uitgedrukt in jaren (bijvoorbeeld 4, 10 of 15 jaar).
40
+ - **treatmentArea**: Het type trauma of onderliggende problematiek waarmee het kind of de jongere te maken heeft, zoals hechtingsproblemen, verlieservaringen, mishandeling, seksueel misbruik of verwaarlozing.
41
+ - **treatmentMethod**: De behandelmethode die wordt ingezet of gezocht bij het kind of de jongere, zoals EMDR, speltherapie, cognitieve gedragstherapie of de Slapende Honden-methode.
42
+ - **location**: De gewenste locatie voor de behandeling, bijvoorbeeld een stad, wijk, of regio waar de zorgverlener zich bij voorkeur bevindt.
43
  - **postalCode**: Postcode van de facility.
44
 
45
  ## Regels voor het bijwerken van Entity Data
 
59
 
60
  **Gemist veld**:
61
  ```
62
+ {instructions}
63
  ```
64
 
 
 
65
  **Gespreksgeschiedenis**:
66
  ```
67
  {message_history}
 
82
 
83
  **Ontbrekend veld**:
84
  ```
85
+ {instructions}
86
  ```
87
 
 
 
88
  **Berichten geschiedenis**:
89
  ```
90
  {message_history}
 
189
 
190
  **Verplichte veld**:
191
  ```
192
+ {instructions}
193
  ```
194
 
195
  ## Belangrijke opmerkingen
trauma/api/message/utils.py CHANGED
@@ -54,15 +54,16 @@ def prepare_final_entities_str(entities: list[EntityModel]) -> str:
54
 
55
  def pick_empty_field_instructions(empty_field: str) -> str:
56
  if empty_field == "age":
57
- return "Leeftijd van de patiënt."
58
  elif empty_field == "treatmentMethod":
59
- return "Een methode om de ziekte of stoornis te behandelen."
60
  elif empty_field == "location":
61
- return "Stad of adres waar de facility zich bevindt."
62
  elif empty_field == "treatmentArea":
63
- return "Een gebied waar de facility zich bevindt."
64
  return None
65
 
 
66
  def find_matching_age_group(entity: EntityModel, entity_data: dict) -> AgeGroup:
67
  age_groups = entity.ageGroups
68
  best_match = None
 
54
 
55
  def pick_empty_field_instructions(empty_field: str) -> str:
56
  if empty_field == "age":
57
+ return "De leeftijd van het kind of de jongere waarvoor hulp wordt gezocht, uitgedrukt in jaren (bijvoorbeeld 4, 10 of 15 jaar)."
58
  elif empty_field == "treatmentMethod":
59
+ return "De behandelmethode die wordt ingezet of gezocht bij het kind of de jongere, zoals EMDR, speltherapie, cognitieve gedragstherapie of de Slapende Honden-methode."
60
  elif empty_field == "location":
61
+ return "De gewenste locatie voor de behandeling, bijvoorbeeld een stad, wijk, of regio waar de zorgverlener zich bij voorkeur bevindt."
62
  elif empty_field == "treatmentArea":
63
+ return "Het type trauma of onderliggende problematiek waarmee het kind of de jongere te maken heeft, zoals hechtingsproblemen, verlieservaringen, mishandeling, seksueel misbruik of verwaarlozing."
64
  return None
65
 
66
+
67
  def find_matching_age_group(entity: EntityModel, entity_data: dict) -> AgeGroup:
68
  age_groups = entity.ageGroups
69
  best_match = None