|
20 | 20 |
|
21 | 21 | import reactor.core.publisher.Flux; |
22 | 22 |
|
| 23 | +import org.springframework.ai.bedrock.BedrockUsage; |
23 | 24 | import org.springframework.ai.bedrock.MessageToPromptConverter; |
24 | 25 | import org.springframework.ai.bedrock.titan.api.TitanChatBedrockApi; |
25 | 26 | import org.springframework.ai.bedrock.titan.api.TitanChatBedrockApi.TitanChatRequest; |
26 | 27 | import org.springframework.ai.bedrock.titan.api.TitanChatBedrockApi.TitanChatResponse; |
27 | 28 | import org.springframework.ai.bedrock.titan.api.TitanChatBedrockApi.TitanChatResponseChunk; |
28 | 29 | import org.springframework.ai.chat.messages.AssistantMessage; |
29 | 30 | import org.springframework.ai.chat.metadata.ChatGenerationMetadata; |
| 31 | +import org.springframework.ai.chat.metadata.ChatResponseMetadata; |
30 | 32 | import org.springframework.ai.chat.metadata.Usage; |
31 | 33 | import org.springframework.ai.chat.model.ChatModel; |
32 | 34 | import org.springframework.ai.chat.model.ChatResponse; |
|
42 | 44 | * uses the Titan Chat API. |
43 | 45 | * |
44 | 46 | * @author Christian Tzolov |
| 47 | + * @author Jihoon Kim |
45 | 48 | * @since 0.8.0 |
46 | 49 | */ |
47 | 50 | public class BedrockTitanChatModel implements ChatModel, StreamingChatModel { |
@@ -85,8 +88,15 @@ else if (chunk.inputTextTokenCount() != null && chunk.totalOutputTextTokenCount( |
85 | 88 | String completionReason = chunk.completionReason().name(); |
86 | 89 | chatGenerationMetadata = ChatGenerationMetadata.from(completionReason, extractUsage(chunk)); |
87 | 90 | } |
| 91 | + |
| 92 | + ChatResponseMetadata chatResponseMetadata = ChatResponseMetadata.builder() |
| 93 | + .withModel(prompt.getOptions().getModel()) |
| 94 | + .withUsage(BedrockUsage.from(chunk.amazonBedrockInvocationMetrics())) |
| 95 | + .build(); |
| 96 | + |
88 | 97 | 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); |
90 | 100 | }); |
91 | 101 | } |
92 | 102 |
|
|
0 commit comments