> ## Documentation Index
> Fetch the complete documentation index at: https://cndoc-langchain.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 追踪 Amazon Bedrock 应用

本指南展示如何使用原生 AWS SDK 通过 LangSmith 追踪 [Amazon Bedrock](https://aws.amazon.com/bedrock) 模型调用。LangSmith 也能与 [LangChain 的 Bedrock 集成](/oss/python/integrations/providers/aws) 无缝协作。两种方法都能提供以下方面的洞察：

* 请求和响应载荷
* 令牌使用量和成本
* 延迟和性能指标
* 用于筛选和分析的自定义标签与元数据
* 多步骤链和代理工作流

## 安装

<CodeGroup>
  ```bash pip theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
  pip install boto3 langsmith
  ```

  ```bash npm theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
  npm install @aws-sdk/client-bedrock-runtime langsmith
  ```
</CodeGroup>

此集成使用原生 AWS SDK 与 LangSmith 的追踪功能。对于 Python，你将使用 [`boto3`](https://pypi.org/project/boto3/)（AWS 的 Python SDK）配合 [`langsmith`](https://pypi.org/project/langsmith/) 来捕获追踪信息。对于 JavaScript/TypeScript，你将使用 [`@aws-sdk/client-bedrock-runtime`](https://www.npmjs.org/package/@aws-sdk/client-bedrock-runtime) 配合 [`langsmith`](https://www.npmjs.org/package/langsmith) 包。两种实现都使用 [Bedrock 对话 API](https://docs.aws.amazon.com/bedrock/latest/userguide/conversation-inference.html)，该 API 提供了与基础模型交互的统一接口。

## 设置

要启用 LangSmith 追踪，请配置你的 [LangSmith API 密钥](/langsmith/create-account-api-key) 和项目设置。你还需要设置 AWS 凭证以通过 Bedrock 进行身份验证。

### LangSmith 配置

```bash theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
export LANGSMITH_API_KEY=<your_langsmith_api_key>
export LANGSMITH_PROJECT=<your_project_name> # 可选，默认为 "default"
export LANGSMITH_TRACING=true
```

你可以从 [smith.langchain.com](https://smith.langchain.com) 获取你的 LangSmith API 密钥，导航至 **Settings** > **API Keys**。`LANGSMITH_PROJECT` 变量允许你将追踪信息组织到不同的项目中。

### AWS 凭证

配置你的 AWS 凭证以通过 Bedrock 进行身份验证。你需要一个启用了 Bedrock 访问权限的 AWS 账户。请按照 [AWS 设置说明](https://docs.aws.amazon.com/bedrock/latest/userguide/setting-up.html) 创建你的凭证并 [启用模型访问](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html)：

```bash theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
export AWS_ACCESS_KEY_ID=<your_aws_access_key_id>
export AWS_SECRET_ACCESS_KEY=<your_aws_secret_key>
export AWS_SESSION_TOKEN=<your_session_token> # 仅在使用临时凭证时需要
export AWS_DEFAULT_REGION=<your_bedrock_region> # 例如 us-east-1 或 us-west-2
```

## 配置追踪

设置好环境变量后，你可以通过使用 LangSmith 的 `@traceable` 装饰器（Python）或 `traceable` 函数（TypeScript）包装你的调用函数来追踪 Bedrock 模型调用。

以下示例演示了如何将 Bedrock 对话 API 与 LangSmith 追踪结合使用。对话 API 是 AWS 推荐的基础模型统一接口，为不同模型提供商提供一致的请求和响应处理。你可以使用自定义标签和元数据增强追踪信息——标签帮助你分类追踪（例如，按环境、功能或测试类型），而元数据允许你附加任意键值对以提供详细上下文：

<CodeGroup>
  ```python Python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
  import boto3
  from langsmith import traceable

  # 初始化 Bedrock 运行时客户端（确保已设置 AWS 凭证和区域）
  bedrock = boto3.client("bedrock-runtime", region_name="us-east-1")
  model_id = "anthropic.claude-haiku-4-5-20251001-v1:0"  # 示例 Bedrock 模型 ID

  # 装饰模型调用函数以自动捕获带有标签/元数据的追踪信息
  @traceable(tags=["aws-bedrock", "langsmith", "integration-test"],
             metadata={"env": "dev", "model_provider": "bedrock", "model_id": "claude-3-haiku"})
  def generate_text(prompt: str) -> str:
      # 为对话 API 准备单轮对话输入
      messages = [
          {"role": "user", "content": [{"text": prompt}]}
      ]
      # 使用统一的对话 API 调用 Bedrock 模型
      response = bedrock.converse(
          modelId=model_id,
          messages=messages,
          inferenceConfig={"maxTokens": 512, "temperature": 0.5, "topP": 0.9}
      )
      # 从响应中提取模型的回复文本
      output_text = response["output"]["message"]["content"][0]["text"]
      return output_text

  # 使用提示词调用被追踪的函数
  result = generate_text("如何将 AWS Bedrock 模型输出追踪到 LangSmith 以进行调试？")
  print(result)
  ```

  ```typescript TypeScript theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
  import { BedrockRuntimeClient, ConverseCommand } from "@aws-sdk/client-bedrock-runtime";
  import { traceable } from "langsmith";

  const client = new BedrockRuntimeClient({ region: "us-east-1" });
  const modelId = "anthropic.claude-haiku-4-5-20251001-v1:0";

  // 将 Bedrock 调用包装在带有标签和元数据的可追踪函数中
  const invokeBedrock = traceable(
    async (userInput: string) => {
      // 为 Bedrock 对话 API 准备对话消息
      const conversation = [
        { role: "user", content: [{ text: userInput }] }
      ];
      // 创建并发送 Bedrock 对话命令（单轮聊天）
      const command = new ConverseCommand({
        modelId,
        messages: conversation,
        inferenceConfig: { maxTokens: 512, temperature: 0.5, topP: 0.9 }
      });
      const response = await client.send(command);
      // 从响应中提取助手的回复文本
      const outputText = response.output?.message?.content[0]?.text;
      return outputText;
    },
    {
      tags: ["aws-bedrock", "langsmith", "integration-test"],
      metadata: { env: "dev", model_provider: "bedrock", model_id: "claude-3-haiku" }
    }
  );

  // 使用提示词调用被追踪的函数
  const answer = await invokeBedrock("如何将 AWS Bedrock 模型输出追踪到 LangSmith 以进行调试？");
  console.log(answer);
  ```
</CodeGroup>

<Tabs>
  <Tab title="Python">
    * `boto3.client("bedrock-runtime")` 创建一个 Bedrock 运行时客户端。
    * `converse` 方法将聊天提示（作为消息列表）发送到指定模型并返回结构化响应。
    * `generate_text` 函数使用 `@traceable` 装饰器装饰，将每次调用作为追踪记录到 LangSmith（使用函数名作为默认追踪名称）。
    * 自定义标签（`aws-bedrock`、`langsmith`、`integration-test`）和元数据（环境、模型信息）被传递给装饰器并附加到追踪记录，以便在 LangSmith UI 中进行筛选。
    * 当你运行此代码（设置 `LANGSMITH_TRACING=true` 并配置好 API 密钥）时，LangSmith 会自动捕获输入提示、模型输出、令牌使用量和延迟。
  </Tab>

  <Tab title="TypeScript">
    * AWS SDK v3 中的 `BedrockRuntimeClient` 提供 Bedrock 运行时接口。
    * `ConverseCommand` 提供统一的聊天接口，发送用户消息并以结构化格式返回助手响应（无需手动解析 JSON）。
    * Bedrock 调用被 LangSmith 的 `traceable` 函数包装，将 `invokeBedrock` 转换为追踪函数，将其执行记录到 LangSmith。
    * 自定义标签和元数据在 traceable 选项对象中提供，并附加到每个追踪记录。
    * 当你运行此脚本（设置 `LANGSMITH_TRACING=true` 并配置好 API 密钥）时，请检查你的 LangSmith 仪表板以查看包含输入提示、模型输出、计时信息和指定标签/元数据的追踪条目。
  </Tab>
</Tabs>

## 在 LangSmith 中查看追踪信息

运行代码后，导航至你的 LangSmith 项目 [smith.langchain.com](https://smith.langchain.com) 查看追踪信息。每条追踪记录包括：

* **请求详情**：输入消息、模型参数和配置
* **响应详情**：模型输出、令牌使用量和响应元数据
* **性能指标**：延迟、每秒令牌数和成本估算
* **自定义元数据**：你提供给 `@traceable` 装饰器的标签和元数据

你可以按标签（例如 `aws-bedrock` 或 `integration-test`）筛选追踪信息，按元数据字段搜索，或深入特定追踪记录以调试问题。

## 后续步骤

* 了解更多关于 [LangSmith 功能](/langsmith) 的信息，包括评估、数据集和反馈
* 探索 [Bedrock 模型功能](https://docs.aws.amazon.com/bedrock/latest/userguide/models-features.html)，如工具调用、流式传输和提示缓存
* 查阅 [LangChain Bedrock 集成文档](/oss/python/integrations/chat/bedrock) 了解高级功能，如扩展思考和引用

***

<div className="source-links">
  <Callout icon="terminal-2">
    [将这些文档](/use-these-docs) 通过 MCP 连接到 Claude、VSCode 等，以获取实时答案。
  </Callout>

  <Callout icon="edit">
    [在 GitHub 上编辑此页面](https://github.com/langchain-ai/docs/edit/main/src/langsmith/trace-bedrock.mdx) 或 [提交问题](https://github.com/langchain-ai/docs/issues/new/choose)。
  </Callout>
</div>
