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

如何用PHP版AWS SDK调用Bedrock Agent Runtime并正确解析结果

正确解析AWS Bedrock Agent invokeAgent返回结果的方法

问题说明

调用AWS Bedrock Agent的invokeAgent接口时,出现解析错误:

Failed to parse unknown message type. in /vendor/aws/aws-sdk-php/src/Api/Parser/EventParsingIterator.php:74

同时需要获取与AWS控制台测试Agent时一致的输出结果。

解决方案

invokeAgent返回的是事件流响应,不能直接遍历原始响应数组,需通过SDK提供的事件类型判断来正确解析。修正后的代码如下:

$client = new BedrockAgentRuntimeClient([
    'version' => 'latest',
    'region' => 'us-east-1',
    'credentials' => [
        'key' => '...',
        'secret' => '...',
    ],
]);

$payloadAgent = [
    'agentId' => '...',
    'agentAliasId' => '...',
    'sessionId' => '123456',
    'enableTrace' => false,
    'inputText' => 'prompt to send to the agent',
];

$completion = '';
try {
    $response = $client->invokeAgent($payloadAgent);
    $eventIterator = $response['completion'];
    
    foreach ($eventIterator as $event) {
        // 仅处理Completion事件,对应控制台的纯回答内容
        if ($event instanceof \Aws\BedrockAgentRuntime\Event\CompletionEvent) {
            $chunkBytes = $event->getChunk()->get('bytes');
            $completion .= utf8_decode($chunkBytes);
        }
    }

    echo "最终输出:" . $completion;
} catch (\Aws\Exception\AwsException|\Exception $e) {
    echo $e->getMessage();
}

关键说明

  1. 事件类型判断:通过instanceof识别CompletionEvent类型,避免因未知事件类型触发解析错误
  2. 对齐控制台输出:保持enableTrace为false,仅提取纯回答内容,与控制台默认测试结果一致
  3. 编码处理:使用utf8_decode将字节流转换为可读的UTF-8文本,确保内容显示正常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 05:42:39