mirror of
https://github.com/aaif-goose/goose.git
synced 2026-07-03 14:10:03 +02:00
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));
|
||||
}
|
||||
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");
|
||||
}
|
||||
|
||||
#[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]
|
||||
fn test_message_to_google_spec_tool_request_message() {
|
||||
let arguments = json!({
|
||||
|
||||
Reference in New Issue
Block a user