Skip to content

Commit 34b6dda

Browse files
committed
Include metadata when creating ChatResponse in Bedrock Titan ChatModel
Signed-off-by: jitokim <[email protected]>
1 parent e5410d7 commit 34b6dda

File tree

1 file changed

+11
-1
lines changed

1 file changed

+11
-1
lines changed

models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/titan/BedrockTitanChatModel.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,15 @@
2020

2121
import reactor.core.publisher.Flux;
2222

23+
import org.springframework.ai.bedrock.BedrockUsage;
2324
import org.springframework.ai.bedrock.MessageToPromptConverter;
2425
import org.springframework.ai.bedrock.titan.api.TitanChatBedrockApi;
2526
import org.springframework.ai.bedrock.titan.api.TitanChatBedrockApi.TitanChatRequest;
2627
import org.springframework.ai.bedrock.titan.api.TitanChatBedrockApi.TitanChatResponse;
2728
import org.springframework.ai.bedrock.titan.api.TitanChatBedrockApi.TitanChatResponseChunk;
2829
import org.springframework.ai.chat.messages.AssistantMessage;
2930
import org.springframework.ai.chat.metadata.ChatGenerationMetadata;
31+
import org.springframework.ai.chat.metadata.ChatResponseMetadata;
3032
import org.springframework.ai.chat.metadata.Usage;
3133
import org.springframework.ai.chat.model.ChatModel;
3234
import org.springframework.ai.chat.model.ChatResponse;
@@ -42,6 +44,7 @@
4244
* uses the Titan Chat API.
4345
*
4446
* @author Christian Tzolov
47+
* @author Jihoon Kim
4548
* @since 0.8.0
4649
*/
4750
public class BedrockTitanChatModel implements ChatModel, StreamingChatModel {
@@ -85,8 +88,15 @@ else if (chunk.inputTextTokenCount() != null && chunk.totalOutputTextTokenCount(
8588
String completionReason = chunk.completionReason().name();
8689
chatGenerationMetadata = ChatGenerationMetadata.from(completionReason, extractUsage(chunk));
8790
}
91+
92+
ChatResponseMetadata chatResponseMetadata = ChatResponseMetadata.builder()
93+
.withModel(prompt.getOptions().getModel())
94+
.withUsage(BedrockUsage.from(chunk.amazonBedrockInvocationMetrics()))
95+
.build();
96+
8897
return new ChatResponse(
89-
List.of(new Generation(new AssistantMessage(chunk.outputText()), chatGenerationMetadata)));
98+
List.of(new Generation(new AssistantMessage(chunk.outputText()), chatGenerationMetadata)),
99+
chatResponseMetadata);
90100
});
91101
}
92102

0 commit comments

Comments
 (0)