diff --git a/agentscope-core/src/main/java/io/agentscope/core/message/Msg.java b/agentscope-core/src/main/java/io/agentscope/core/message/Msg.java index 0531eb84c..f5c7e291c 100644 --- a/agentscope-core/src/main/java/io/agentscope/core/message/Msg.java +++ b/agentscope-core/src/main/java/io/agentscope/core/message/Msg.java @@ -415,7 +415,36 @@ public ChatUsage getChatUsage() { return null; } Object usage = metadata.get(MessageMetadataKeys.CHAT_USAGE); - return usage instanceof ChatUsage ? (ChatUsage) usage : null; + if (usage instanceof ChatUsage) { + return (ChatUsage) usage; + } + if (usage instanceof Map) { + @SuppressWarnings("unchecked") + Map map = (Map) usage; + ChatUsage chatUsage = + ChatUsage.builder() + .inputTokens(toInt(map.get("inputTokens"))) + .outputTokens(toInt(map.get("outputTokens"))) + .time(toDouble(map.get("time"))) + .build(); + metadata.put(MessageMetadataKeys.CHAT_USAGE, chatUsage); + return chatUsage; + } + return null; + } + + private static int toInt(Object value) { + if (value instanceof Number) { + return ((Number) value).intValue(); + } + return 0; + } + + private static double toDouble(Object value) { + if (value instanceof Number) { + return ((Number) value).doubleValue(); + } + return 0.0; } /**