fix: Fix google provider in app (#859)

This commit is contained in:
Bradley Axen
2025-01-28 15:12:45 -08:00
committed by GitHub
parent f7a980617e
commit 954bdb4842
3 changed files with 20 additions and 6 deletions
+1
View File
@@ -59,6 +59,7 @@ paste = "1.0"
serde_yaml = "0.9.34"
once_cell = "1.20.2"
dirs = "6.0.0"
rand = "0.8.5"
[dev-dependencies]
criterion = "0.5"
+7 -4
View File
@@ -6,6 +6,7 @@ use anyhow::Result;
use mcp_core::content::Content;
use mcp_core::role::Role;
use mcp_core::tool::{Tool, ToolCall};
use rand::{distributions::Alphanumeric, Rng};
use serde_json::{json, Map, Value};
/// Convert internal Message format to Google's API message specification
@@ -198,14 +199,16 @@ pub fn response_to_message(response: Value) -> Result<Message> {
.and_then(|content| content.get("parts"))
.and_then(|parts| parts.as_array())
.unwrap_or(&binding);
for part in parts {
if let Some(text) = part.get("text").and_then(|v| v.as_str()) {
content.push(MessageContent::text(text.to_string()));
} else if let Some(function_call) = part.get("functionCall") {
let id = function_call["name"]
.as_str()
.unwrap_or_default()
.to_string();
let id: String = rand::thread_rng()
.sample_iter(&Alphanumeric)
.take(8)
.map(char::from)
.collect();
let name = function_call["name"]
.as_str()
.unwrap_or_default()