fix(google): add MessageContent::Image support for user messages (#6986)
This commit is contained in:
@@ -182,6 +182,14 @@ pub fn format_messages(messages: &[Message]) -> Vec<Value> {
|
|||||||
}
|
}
|
||||||
parts.push(json!(part));
|
parts.push(json!(part));
|
||||||
}
|
}
|
||||||
|
MessageContent::Image(image) => {
|
||||||
|
parts.push(json!({
|
||||||
|
"inline_data": {
|
||||||
|
"mime_type": image.mime_type,
|
||||||
|
"data": image.data,
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
@@ -719,6 +727,38 @@ mod tests {
|
|||||||
assert_eq!(payload[1]["parts"][0]["text"], "World");
|
assert_eq!(payload[1]["parts"][0]["text"], "World");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_message_to_google_spec_image_message() {
|
||||||
|
use rmcp::model::{AnnotateAble, RawImageContent};
|
||||||
|
|
||||||
|
let image = RawImageContent {
|
||||||
|
mime_type: "image/png".to_string(),
|
||||||
|
data: "base64encodeddata".to_string(),
|
||||||
|
meta: None,
|
||||||
|
};
|
||||||
|
let messages = vec![Message::new(
|
||||||
|
Role::User,
|
||||||
|
0,
|
||||||
|
vec![
|
||||||
|
MessageContent::text("What is in this image?".to_string()),
|
||||||
|
MessageContent::Image(image.no_annotation()),
|
||||||
|
],
|
||||||
|
)];
|
||||||
|
let payload = format_messages(&messages);
|
||||||
|
|
||||||
|
assert_eq!(payload.len(), 1);
|
||||||
|
assert_eq!(payload[0]["role"], "user");
|
||||||
|
assert_eq!(payload[0]["parts"][0]["text"], "What is in this image?");
|
||||||
|
assert_eq!(
|
||||||
|
payload[0]["parts"][1]["inline_data"]["mime_type"],
|
||||||
|
"image/png"
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
payload[0]["parts"][1]["inline_data"]["data"],
|
||||||
|
"base64encodeddata"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_message_to_google_spec_tool_request_message() {
|
fn test_message_to_google_spec_tool_request_message() {
|
||||||
let arguments = json!({
|
let arguments = json!({
|
||||||
|
|||||||
Reference in New Issue
Block a user