Skip to content

Commit 4bf8d55

Browse files
Fix tool result processing to accept any Map structure
Previously, Claude model only processed tool results if they contained a 'result' key, ignoring other valid responses. Now serializes the entire response Map to JSON. Fixes #566
1 parent cf5be25 commit 4bf8d55

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

core/src/main/java/com/google/adk/models/Claude.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -170,9 +170,15 @@ private ContentBlockParam partToAnthropicMessageBlock(Part part) {
170170
.build());
171171
} else if (part.functionResponse().isPresent()) {
172172
String content = "";
173-
if (part.functionResponse().get().response().isPresent()
174-
&& part.functionResponse().get().response().get().getOrDefault("result", null) != null) {
175-
content = part.functionResponse().get().response().get().get("result").toString();
173+
if (part.functionResponse().get().response().isPresent()) {
174+
try {
175+
ObjectMapper objectMapper = new ObjectMapper();
176+
objectMapper.registerModule(new Jdk8Module());
177+
content = objectMapper.writeValueAsString(part.functionResponse().get().response().get());
178+
} catch (Exception e) {
179+
logger.error("Failed to serialize tool response", e);
180+
content = part.functionResponse().get().response().get().toString();
181+
}
176182
}
177183
return ContentBlockParam.ofToolResult(
178184
ToolResultBlockParam.builder()

0 commit comments

Comments
 (0)