Spaces:
Running
Running
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,
|
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,
|
108 |
messages = [
|
109 |
{
|
110 |
"role": "system",
|
111 |
"content": TraumaPrompts.decide_is_valid_request
|
112 |
.replace("{user_message}", user_message)
|
113 |
-
.replace("{
|
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
|
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 |
-
**
|
123 |
```
|
124 |
{user_message}
|
125 |
```
|
126 |
|
127 |
-
**
|
128 |
```
|
129 |
-
{
|
130 |
```
|
131 |
|
132 |
-
## JSON Response
|
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 |
-
|
|
|
|
|
141 |
|
142 |
The field is considered valid (`is_valid = true`) if:
|
143 |
-
- The user
|
144 |
-
- The user's
|
|
|
|
|
|
|
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.
|