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
相关产品推荐
相关产品推荐

