diff --git a/core/src/main/java/com/google/adk/models/Claude.java b/core/src/main/java/com/google/adk/models/Claude.java index ebb786e3..d69ecc05 100644 --- a/core/src/main/java/com/google/adk/models/Claude.java +++ b/core/src/main/java/com/google/adk/models/Claude.java @@ -60,6 +60,8 @@ public class Claude extends BaseLlm { private static final Logger logger = LoggerFactory.getLogger(Claude.class); + private static final ObjectMapper OBJECT_MAPPER = + new ObjectMapper().registerModule(new Jdk8Module()); private int maxTokens = 8192; private final AnthropicClient anthropicClient; @@ -170,9 +172,14 @@ private ContentBlockParam partToAnthropicMessageBlock(Part part) { .build()); } else if (part.functionResponse().isPresent()) { String content = ""; - if (part.functionResponse().get().response().isPresent() - && part.functionResponse().get().response().get().getOrDefault("result", null) != null) { - content = part.functionResponse().get().response().get().get("result").toString(); + if (part.functionResponse().get().response().isPresent()) { + Map response = part.functionResponse().get().response().get(); + try { + content = OBJECT_MAPPER.writeValueAsString(response); + } catch (com.fasterxml.jackson.core.JsonProcessingException e) { + logger.error("Failed to serialize tool response", e); + content = response.toString(); + } } return ContentBlockParam.ofToolResult( ToolResultBlockParam.builder()