fix: Fixes structured output after streaming change to agent (#3448)
This commit is contained in:
@@ -837,24 +837,6 @@ impl Agent {
|
||||
|
||||
let num_tool_requests = frontend_requests.len() + remaining_requests.len();
|
||||
if num_tool_requests == 0 {
|
||||
if let Some(final_output_tool) = self.final_output_tool.lock().await.as_ref() {
|
||||
if final_output_tool.final_output.is_none() {
|
||||
tracing::warn!("Final output tool has not been called yet. Continuing agent loop.");
|
||||
let message = Message::assistant().with_text(FINAL_OUTPUT_CONTINUATION_MESSAGE);
|
||||
messages.push(message.clone());
|
||||
yield AgentEvent::Message(message);
|
||||
continue;
|
||||
} else {
|
||||
let message = Message::assistant().with_text(final_output_tool.final_output.clone().unwrap());
|
||||
messages.push(message.clone());
|
||||
yield AgentEvent::Message(message);
|
||||
// Set added_message to true and continue to end the current iteration
|
||||
added_message = true;
|
||||
push_message(&mut messages, response);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
// If there's no final output tool and no tool requests, continue the loop
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -1039,10 +1021,14 @@ impl Agent {
|
||||
if let Some(final_output_tool) = self.final_output_tool.lock().await.as_ref() {
|
||||
if final_output_tool.final_output.is_none() {
|
||||
tracing::warn!("Final output tool has not been called yet. Continuing agent loop.");
|
||||
yield AgentEvent::Message(Message::user().with_text(FINAL_OUTPUT_CONTINUATION_MESSAGE));
|
||||
let message = Message::user().with_text(FINAL_OUTPUT_CONTINUATION_MESSAGE);
|
||||
messages.push(message.clone());
|
||||
yield AgentEvent::Message(message);
|
||||
continue;
|
||||
} else {
|
||||
yield AgentEvent::Message(Message::assistant().with_text(final_output_tool.final_output.clone().unwrap()));
|
||||
let message = Message::assistant().with_text(final_output_tool.final_output.clone().unwrap());
|
||||
messages.push(message.clone());
|
||||
yield AgentEvent::Message(message);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -9,7 +9,7 @@ use serde_json::Value;
|
||||
|
||||
pub const FINAL_OUTPUT_TOOL_NAME: &str = "recipe__final_output";
|
||||
pub const FINAL_OUTPUT_CONTINUATION_MESSAGE: &str =
|
||||
"I see I MUST call the `final_output` tool NOW with the final output for the user.";
|
||||
"You MUST call the `final_output` tool NOW with the final output for the user.";
|
||||
|
||||
pub struct FinalOutputTool {
|
||||
pub response: Response,
|
||||
|
||||
Reference in New Issue
Block a user