You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确使用BedrockAgentRuntimeClient同步调用并获取Bedrock Agent响应?

同步BedrockAgentRuntimeClient调用InvokeAgent的响应处理方案

同步调用BedrockAgentRuntimeClient.invokeAgent()后,直接接收返回的InvokeAgentResponse对象即可获取响应,由于Bedrock Agent的响应是流式返回的,需要处理响应中的流数据来获取完整内容。以下是修正后的完整代码示例:

import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.bedrockagentruntime.BedrockAgentRuntimeClient;
import software.amazon.awssdk.services.bedrockagentruntime.model.InvokeAgentRequest;
import software.amazon.awssdk.services.bedrockagentruntime.model.InvokeAgentResponse;
import software.amazon.awssdk.services.bedrockagentruntime.model.InvokeAgentResponseChunk;
import software.amazon.awssdk.core.pagination.sync.SdkPublisher;
import java.util.UUID;

public class BedrockAgentSyncExample {
    public static void main(String[] args) {
        BedrockAgentRuntimeClient client = BedrockAgentRuntimeClient.builder()
                .region(Region.EU_NORTH_1)
                .build();

        String agentId = "2";
        String agentAliasId = "2";
        String sessionId = UUID.randomUUID().toString();
        String inputText = "give me some jokes";

        InvokeAgentRequest request = InvokeAgentRequest.builder()
                .agentId(agentId)
                .agentAliasId(agentAliasId)
                .sessionId(sessionId)
                .inputText(inputText)
                .build();

        // 同步调用获取响应对象
        InvokeAgentResponse response = client.invokeAgent(request);

        // 处理流式响应片段
        StringBuilder fullResponse = new StringBuilder();
        try (SdkPublisher<InvokeAgentResponseChunk> chunkPublisher = response.completionStream()) {
            // 将流式发布者转为可迭代对象,遍历每个响应片段
            for (InvokeAgentResponseChunk chunk : chunkPublisher.toIterable()) {
                if (chunk.hasCompletion()) {
                    String chunkContent = chunk.completion();
                    fullResponse.append(chunkContent);
                    // 实时输出片段内容(可选)
                    System.out.print(chunkContent);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        // 使用完整响应进行后续操作
        System.out.println("\n\n完整响应内容:");
        System.out.println(fullResponse.toString());

        // 关闭客户端(可选,若客户端是单例可复用则无需立即关闭)
        client.close();
    }
}

核心要点说明

  • 同步调用的返回值:invokeAgent(request)直接返回InvokeAgentResponse,而非异步场景下的CompletableFuture
  • 流式响应处理:响应的completionStream()返回一个SdkPublisher<InvokeAgentResponseChunk>,这是同步流式数据的发布者,通过toIterable()转为可迭代对象后,可遍历每个响应片段
  • 片段内容提取:每个InvokeAgentResponseChunk中的completion()方法返回当前片段的文本内容,可实时输出或拼接为完整响应
  • 资源管理:使用try-with-resources包裹SdkPublisher,确保流式资源被正确释放

注意事项

  • 确保AWS SDK v2依赖版本包含Bedrock Agent Runtime模块(需引入software.amazon.awssdk:bedrockagentruntime依赖)
  • 已配置有效的AWS凭证(如环境变量、~/.aws/credentials文件等),且凭证拥有调用Bedrock Agent的权限
  • sessionId可复用,用于多轮对话维持上下文状态

内容的提问来源于stack exchange,提问作者IsaacK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 20:35:14