Spaces:
Running
Running
update language
Browse files
trauma/api/message/ai/engine.py
CHANGED
@@ -12,7 +12,8 @@ from trauma.api.message.db_requests import (save_assistant_user_message,
|
|
12 |
from trauma.api.message.schemas import CreateMessageResponse
|
13 |
from trauma.api.message.utils import (retrieve_empty_field_from_entity_data,
|
14 |
prepare_user_messages_str,
|
15 |
-
prepare_final_entities_str,
|
|
|
16 |
|
17 |
|
18 |
async def search_entities(
|
|
|
12 |
from trauma.api.message.schemas import CreateMessageResponse
|
13 |
from trauma.api.message.utils import (retrieve_empty_field_from_entity_data,
|
14 |
prepare_user_messages_str,
|
15 |
+
prepare_final_entities_str,
|
16 |
+
pick_empty_field_instructions)
|
17 |
|
18 |
|
19 |
async def search_entities(
|
trauma/api/message/ai/prompts.py
CHANGED
@@ -1,30 +1,30 @@
|
|
1 |
class TraumaPrompts:
|
2 |
-
update_entity_data_with_ai = """##
|
3 |
|
4 |
-
|
5 |
|
6 |
## Context
|
7 |
|
8 |
-
|
9 |
|
10 |
-
##
|
11 |
|
12 |
**Entity data**:
|
13 |
```
|
14 |
{entity_data}
|
15 |
```
|
16 |
|
17 |
-
**
|
18 |
```
|
19 |
{assistant_message}
|
20 |
```
|
21 |
|
22 |
-
**
|
23 |
```
|
24 |
{user_message}
|
25 |
```
|
26 |
|
27 |
-
## JSON
|
28 |
|
29 |
```json
|
30 |
{
|
@@ -35,73 +35,77 @@ You are collecting information about a patient, their illness, and the treatment
|
|
35 |
}
|
36 |
```
|
37 |
|
38 |
-
- **[ageMin]**:
|
39 |
-
- **[ageMax]**:
|
40 |
-
- **[treatmentArea]**:
|
41 |
-
- **[treatmentMethod]**:
|
42 |
|
43 |
-
##
|
44 |
|
45 |
-
-
|
46 |
-
-
|
47 |
-
-
|
48 |
-
generate_next_question = """##
|
49 |
|
50 |
-
|
51 |
|
52 |
## Context
|
53 |
|
54 |
-
|
55 |
|
56 |
-
##
|
57 |
|
58 |
-
**
|
59 |
```
|
60 |
{empty_field}
|
61 |
```
|
62 |
|
63 |
- {instructions}
|
64 |
|
65 |
-
##
|
66 |
|
67 |
-
-
|
68 |
-
generate_search_request = """##
|
69 |
|
70 |
-
|
71 |
|
72 |
-
##
|
73 |
|
74 |
-
**
|
75 |
```json
|
76 |
{entity_data}
|
77 |
```
|
78 |
|
79 |
-
**
|
80 |
```
|
81 |
{user_messages_str}
|
82 |
```
|
83 |
|
84 |
[INST]
|
85 |
|
86 |
-
##
|
87 |
|
88 |
-
-
|
89 |
-
-
|
90 |
|
91 |
[/INST]"""
|
92 |
-
generate_recommendation_decision = """##
|
93 |
|
94 |
-
|
95 |
|
96 |
-
##
|
97 |
|
98 |
-
**
|
99 |
```
|
100 |
{final_entities}
|
101 |
```
|
102 |
|
103 |
-
##
|
104 |
|
105 |
-
-
|
106 |
-
-
|
107 |
-
-
|
|
|
|
|
|
|
|
|
|
1 |
class TraumaPrompts:
|
2 |
+
update_entity_data_with_ai = """## Taak
|
3 |
|
4 |
+
Je moet de huidige `Entity data` woordenboek bijwerken met nieuwe informatie op basis van het antwoord van de gebruiker op de vraag van de assistent.
|
5 |
|
6 |
## Context
|
7 |
|
8 |
+
Je verzamelt informatie over een patiënt, hun ziekte en de behandelmethode zodat het systeem later de meest geschikte kliniek kan aanbevelen.
|
9 |
|
10 |
+
## Gegevens
|
11 |
|
12 |
**Entity data**:
|
13 |
```
|
14 |
{entity_data}
|
15 |
```
|
16 |
|
17 |
+
**Vraag van de assistent**:
|
18 |
```
|
19 |
{assistant_message}
|
20 |
```
|
21 |
|
22 |
+
**Antwoord van de gebruiker**:
|
23 |
```
|
24 |
{user_message}
|
25 |
```
|
26 |
|
27 |
+
## JSON-reactieformaat
|
28 |
|
29 |
```json
|
30 |
{
|
|
|
35 |
}
|
36 |
```
|
37 |
|
38 |
+
- **[ageMin]**: Minimale leeftijd van de patiënt. Als de gebruiker een enkele leeftijd opgeeft in plaats van een bereik, moet [ageMin] gelijk zijn aan [ageMax] en de opgegeven leeftijd zijn.
|
39 |
+
- **[ageMax]**: Maximale 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 |
|
43 |
+
## Regels voor het bijwerken van Entity Data
|
44 |
|
45 |
+
- Je moet gegevens toevoegen, bijwerken of verwijderen in het woordenboek op basis van het antwoord van de gebruiker op de vraag van de assistent.
|
46 |
+
- Als de gebruiker geen specifiek veld uit het woordenboek vermeldt, behoud dan de huidige waarde.
|
47 |
+
- Werk alleen de velden bij die expliciet door de gebruiker zijn genoemd."""
|
48 |
+
generate_next_question = """## Taak
|
49 |
|
50 |
+
Je moet een korte en duidelijke vraag genereren voor de chatgebruiker over een specifiek veld [Gemist veld].
|
51 |
|
52 |
## Context
|
53 |
|
54 |
+
Je bent een gespreksassistent die informatie verzamelt van een verpleegkundige over een patiënt. Deze informatie zal later door het systeem worden gebruikt om een geschikte kliniek aan te bevelen. Om dit te bereiken, moet je vragen stellen over specifieke kenmerken, met name over het [Gemist veld].
|
55 |
|
56 |
+
## Gegevens
|
57 |
|
58 |
+
**Gemist veld**:
|
59 |
```
|
60 |
{empty_field}
|
61 |
```
|
62 |
|
63 |
- {instructions}
|
64 |
|
65 |
+
## Belangrijke Opmerking
|
66 |
|
67 |
+
- De gegenereerde vraag moet kort en to the point zijn."""
|
68 |
+
generate_search_request = """## Taak
|
69 |
|
70 |
+
Je moet een beknopte zoekopdracht genereren op basis van de berichten van de gebruiker [berichtgeschiedenis] en de verzamelde patiëntgegevens [patiëntgegevens].
|
71 |
|
72 |
+
## Gegevens
|
73 |
|
74 |
+
**patiëntgegevens**:
|
75 |
```json
|
76 |
{entity_data}
|
77 |
```
|
78 |
|
79 |
+
**berichtgeschiedenis**:
|
80 |
```
|
81 |
{user_messages_str}
|
82 |
```
|
83 |
|
84 |
[INST]
|
85 |
|
86 |
+
## Belangrijke opmerkingen
|
87 |
|
88 |
+
- De zoekopdracht moet alle gegevens uit [patiëntgegevens] vermelden, evenals belangrijke, essentiële informatie uit [berichtgeschiedenis].
|
89 |
+
- Je antwoord moet kort, bondig en duidelijk zijn.
|
90 |
|
91 |
[/INST]"""
|
92 |
+
generate_recommendation_decision = """## Taak
|
93 |
|
94 |
+
Je moet een antwoord genereren aan de gebruiker waarin je aangeeft dat je geschikte klinieken voor de patiënt hebt gevonden en uitleggen waarom deze klinieken perfect aansluiten bij hun behoeften.
|
95 |
|
96 |
+
## Gegevens
|
97 |
|
98 |
+
**geschikte klinieken**:
|
99 |
```
|
100 |
{final_entities}
|
101 |
```
|
102 |
|
103 |
+
## Belangrijke Notities
|
104 |
|
105 |
+
- Je antwoord moet beginnen met een felicitatieve verklaring over het vinden van geschikte klinieken en vervolgens uitleggen waarom deze klinieken ideaal zijn voor de patiënt in 1-2 zinnen.
|
106 |
+
- Houd bij het genereren van het antwoord rekening met de berichtgeschiedenis van de gebruiker en de informatie over de geïdentificeerde klinieken.
|
107 |
+
- Je antwoord moet beknopt, duidelijk en creatief zijn.
|
108 |
+
|
109 |
+
## Voorbeeld van antwoorden
|
110 |
+
|
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."""
|
trauma/api/message/utils.py
CHANGED
@@ -36,14 +36,15 @@ def prepare_final_entities_str(entities: list[EntityModel]) -> str:
|
|
36 |
entities_list = []
|
37 |
for entity in entities:
|
38 |
entities_list.append(entity.model_dump(mode='json', exclude={'id', 'contactDetails'}))
|
39 |
-
return json.dumps({"
|
|
|
40 |
|
41 |
def pick_empty_field_instructions(empty_field: str) -> str:
|
42 |
if empty_field == "ageMin":
|
43 |
-
return "
|
44 |
elif empty_field == "ageMax":
|
45 |
-
return "
|
46 |
elif empty_field == "treatmentArea":
|
47 |
-
return "
|
48 |
elif empty_field == "treatmentMethod":
|
49 |
-
return "
|
|
|
36 |
entities_list = []
|
37 |
for entity in entities:
|
38 |
entities_list.append(entity.model_dump(mode='json', exclude={'id', 'contactDetails'}))
|
39 |
+
return json.dumps({"klinieken": entities_list})
|
40 |
+
|
41 |
|
42 |
def pick_empty_field_instructions(empty_field: str) -> str:
|
43 |
if empty_field == "ageMin":
|
44 |
+
return "Minimumleeftijd van de patiënt."
|
45 |
elif empty_field == "ageMax":
|
46 |
+
return "Maximale leeftijd van de patiënt."
|
47 |
elif empty_field == "treatmentArea":
|
48 |
+
return "Het type psychische of lichamelijke ziekte / stoornis."
|
49 |
elif empty_field == "treatmentMethod":
|
50 |
+
return "Een methode om de ziekte of stoornis te behandelen."
|