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

如何在AWS Bedrock中通过代码向Claude发送txt附件?

问题描述

我已在AWS Bedrock聊天界面测试并确认Prompt效果符合预期,现尝试将其转为代码实现,但不清楚如何在请求中附加txt文档。我在聊天界面可通过回形针图标将文件添加到文本框,但使用@aws-sdk/client-bedrock-runtime包时,尝试将文件内容作为消息发送,输出结果与界面完全不同。我已查阅文档、咨询多个LLM均未解决,恳请帮助。

现有代码
const client = new BedrockRuntimeClient({
  region: "us-east-1",
});

const data = await client.send(
  new InvokeModelCommand({
    modelId: "anthropic.claude-3-5-sonnet-20240620-v1:0",
    contentType: "application/json",
    accept: "application/json",
    body: JSON.stringify({
      anthropic_version: "bedrock-2023-05-31",
      max_tokens: 10000,
      temperature: 1.0,
      messages: [
        {
          role: "user",
          content: "My prompt",
        },
      ],
    }),
  })
);
解决方案
  • 针对Claude 3.5 Sonnet模型,需使用多模态消息结构传递文件内容,不能直接将文件内容拼接为纯文本。修正后的实现步骤:
    1. 读取本地txt文件的文本内容
    2. 在messages[0].content中用数组结构拆分提示文本与文件内容块
const fs = require('fs').promises;
const { BedrockRuntimeClient, InvokeModelCommand } = require("@aws-sdk/client-bedrock-runtime");

const client = new BedrockRuntimeClient({ region: "us-east-1" });

async function invokeModelWithFile() {
  // 读取目标txt文件内容
  const fileContent = await fs.readFile('./your-target-file.txt', 'utf8');

  const data = await client.send(
    new InvokeModelCommand({
      modelId: "anthropic.claude-3-5-sonnet-20240620-v1:0",
      contentType: "application/json",
      accept: "application/json",
      body: JSON.stringify({
        anthropic_version: "bedrock-2023-05-31",
        max_tokens: 10000,
        temperature: 1.0,
        messages: [
          {
            role: "user",
            content: [
              {
                type: "text",
                text: "请处理以下txt文件内容:" // 替换为你的实际提示词
              },
              {
                type: "text",
                text: fileContent
              }
            ]
          }
        ]
      }),
    })
  );

  // 解析并打印模型输出
  const response = JSON.parse(new TextDecoder().decode(data.body));
  console.log(response.content[0].text);
}

invokeModelWithFile();
  • 核心注意点:
    • Claude 3系列模型支持多内容块的消息格式,需将提示语和文件内容拆分为独立的text类型块放入content数组
    • 读取文件时需指定正确编码(如utf8),避免乱码导致模型输出异常
    • 若处理非文本格式文件(如图片、PDF),需切换对应type并传入base64编码内容,txt文件直接用text类型即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 13:44:59