fix: skip whitespace-only text blocks in Anthropic message (#7343)
Signed-off-by: rabi <ramishra@redhat.com>
This commit is contained in:
@@ -44,10 +44,12 @@ pub fn format_messages(messages: &[Message]) -> Vec<Value> {
|
|||||||
for msg_content in &message.content {
|
for msg_content in &message.content {
|
||||||
match msg_content {
|
match msg_content {
|
||||||
MessageContent::Text(text) => {
|
MessageContent::Text(text) => {
|
||||||
content.push(json!({
|
if !text.text.trim().is_empty() {
|
||||||
TYPE_FIELD: TEXT_TYPE,
|
content.push(json!({
|
||||||
TEXT_TYPE: text.text
|
TYPE_FIELD: TEXT_TYPE,
|
||||||
}));
|
TEXT_TYPE: text.text
|
||||||
|
}));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
MessageContent::ToolRequest(tool_request) => {
|
MessageContent::ToolRequest(tool_request) => {
|
||||||
match &tool_request.tool_call {
|
match &tool_request.tool_call {
|
||||||
@@ -1005,4 +1007,37 @@ mod tests {
|
|||||||
);
|
);
|
||||||
assert_eq!(spec[1]["content"][0]["is_error"], true);
|
assert_eq!(spec[1]["content"][0]["is_error"], true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_whitespace_only_text_blocks_are_skipped() {
|
||||||
|
let messages = vec![
|
||||||
|
Message::user().with_text("Hello"),
|
||||||
|
Message::assistant().with_text("").with_tool_request(
|
||||||
|
"tool_1",
|
||||||
|
Ok(CallToolRequestParams {
|
||||||
|
meta: None,
|
||||||
|
task: None,
|
||||||
|
name: "search".into(),
|
||||||
|
arguments: Some(object!({"query": "test"})),
|
||||||
|
}),
|
||||||
|
),
|
||||||
|
Message::user().with_tool_response(
|
||||||
|
"tool_1",
|
||||||
|
Ok(rmcp::model::CallToolResult {
|
||||||
|
content: vec![],
|
||||||
|
structured_content: None,
|
||||||
|
is_error: Some(false),
|
||||||
|
meta: None,
|
||||||
|
}),
|
||||||
|
),
|
||||||
|
];
|
||||||
|
|
||||||
|
let spec = format_messages(&messages);
|
||||||
|
|
||||||
|
assert_eq!(spec.len(), 3);
|
||||||
|
|
||||||
|
let assistant_content = spec[1]["content"].as_array().unwrap();
|
||||||
|
assert_eq!(assistant_content.len(), 1);
|
||||||
|
assert_eq!(assistant_content[0]["type"], "tool_use");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user