Make sure errorneous calls are handled and forwarded to the LLM

This commit is contained in:
Clément Renault 2025-05-20 18:01:08 +02:00 committed by Kerollmops
parent 971249c59c
commit d389e49147
No known key found for this signature in database
GPG Key ID: F250A4C4E3AE5F5F

View File

@ -253,23 +253,32 @@ async fn non_streamed_chat(
); );
for call in meili_calls { for call in meili_calls {
let SearchInIndexParameters { index_uid, q } = let result = match serde_json::from_str(&call.function.arguments) {
serde_json::from_str(&call.function.arguments).unwrap(); Ok(SearchInIndexParameters { index_uid, q }) => process_search_request(
let (_, text) = process_search_request(
&index_scheduler, &index_scheduler,
auth_ctrl.clone(), auth_ctrl.clone(),
&search_queue, &search_queue,
auth_token, &auth_token,
index_uid, index_uid,
q, q,
) )
.await?; .await
.map_err(|e| e.to_string()),
Err(err) => Err(err.to_string()),
};
let text = match result {
Ok((_, text)) => text,
Err(err) => err,
};
chat_completion.messages.push(ChatCompletionRequestMessage::Tool( chat_completion.messages.push(ChatCompletionRequestMessage::Tool(
ChatCompletionRequestToolMessage { ChatCompletionRequestToolMessage {
tool_call_id: call.id, tool_call_id: call.id.clone(),
content: ChatCompletionRequestToolMessageContent::Text(text), content: ChatCompletionRequestToolMessageContent::Text(format!(
"{}\n\n{text}",
chat_settings.prompts.pre_query
)),
}, },
)); ));
} }
@ -413,7 +422,7 @@ async fn streamed_chat(
let is_error = result.is_err(); let is_error = result.is_err();
let text = match result { let text = match result {
Ok((_, text)) => text, Ok((_, text)) => text,
Err(err) => err.to_string(), Err(err) => err,
}; };
let tool = ChatCompletionRequestToolMessage { let tool = ChatCompletionRequestToolMessage {