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

AWS Bedrock调用Cohere模型返回数字而非文本的原因及解析

为什么AWS Bedrock的InvokeModelCommand返回数字而非文本?如何解析使用?

原因

AWS Bedrock Runtime的InvokeModelCommand返回的body本质是Uint8Array二进制数据,你看到的数字键值对是该二进制数组被序列化后的结果——每个数字对应字节的十进制ASCII/UTF-8编码值。SDK不会自动将二进制响应转换为字符串或JSON,所以直接返回时会呈现为字节数组的JSON形式。

解析与使用方法

需要手动将二进制数据转换为UTF-8字符串,再解析为JSON对象来获取模型的响应内容。修改你的callBedrock函数如下:

import {
    BedrockRuntimeClient,
    InvokeModelCommand,
} from "@aws-sdk/client-bedrock-runtime"

export const callBedrock = async (prompt, max_tokens, temperature) => {
    const client = new BedrockRuntimeClient()

    const input = {
        modelId: "cohere.command-text-v14",
        contentType: "application/json",
        accept: "application/json",
        body: JSON.stringify({
            prompt,
            max_tokens,
            temperature
        })
    }

    const command = new InvokeModelCommand(input)
    const response = await client.send(command)

    // 解码二进制数据为字符串并解析JSON
    const decodedBody = new TextDecoder().decode(response.body)
    const parsedResponse = JSON.parse(decodedBody)
    
    // 提取Cohere模型生成的文本
    const generatedText = parsedResponse.generations[0].text
    return generatedText // 或返回完整的parsedResponse按需使用
}

调用修改后的函数后,你会直接得到模型生成的文本:" Hello! How can I help you today?"。

补充说明

  • 不同Bedrock模型的响应结构可能略有不同,但二进制转字符串的处理逻辑通用。
  • 确保请求中的accept头设置为application/json,模型才会返回JSON格式的响应体,方便解析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 13:20:15