Fix conversations before they hit the LLM (#3660)
Co-authored-by: Douwe Osinga <douwe@squareup.com>
This commit is contained in:
@@ -56,6 +56,7 @@ use super::platform_tools;
|
||||
use super::router_tools;
|
||||
use super::tool_execution::{ToolCallResult, CHAT_MODE_TOOL_SKIPPED_RESPONSE, DECLINED_RESPONSE};
|
||||
use crate::agents::subagent_task_config::TaskConfig;
|
||||
use crate::conversation_fixer::{debug_conversation_fix, ConversationFixer};
|
||||
|
||||
const DEFAULT_MAX_TURNS: u32 = 1000;
|
||||
|
||||
@@ -706,14 +707,21 @@ impl Agent {
|
||||
}
|
||||
}
|
||||
|
||||
#[instrument(skip(self, messages, session), fields(user_message))]
|
||||
#[instrument(skip(self, unfixed_messages, session), fields(user_message))]
|
||||
pub async fn reply(
|
||||
&self,
|
||||
messages: &[Message],
|
||||
unfixed_messages: &[Message],
|
||||
session: Option<SessionConfig>,
|
||||
cancel_token: Option<CancellationToken>,
|
||||
) -> Result<BoxStream<'_, Result<AgentEvent>>> {
|
||||
let mut messages = messages.to_vec();
|
||||
let (mut messages, issues) =
|
||||
ConversationFixer::fix_conversation(Vec::from(unfixed_messages));
|
||||
if !issues.is_empty() {
|
||||
tracing::warn!(
|
||||
"Conversation issue fixed: {}",
|
||||
debug_conversation_fix(&messages, unfixed_messages, &issues)
|
||||
);
|
||||
}
|
||||
let initial_messages = messages.clone();
|
||||
let reply_span = tracing::Span::current();
|
||||
self.reset_retry_attempts().await;
|
||||
|
||||
Reference in New Issue
Block a user