Skip to main content
本指南展示如何使用原生 AWS SDK 通过 LangSmith 追踪 Amazon Bedrock 模型调用。LangSmith 也能与 LangChain 的 Bedrock 集成 无缝协作。两种方法都能提供以下方面的洞察:
  • 请求和响应载荷
  • 令牌使用量和成本
  • 延迟和性能指标
  • 用于筛选和分析的自定义标签与元数据
  • 多步骤链和代理工作流

安装

pip install boto3 langsmith
此集成使用原生 AWS SDK 与 LangSmith 的追踪功能。对于 Python,你将使用 boto3(AWS 的 Python SDK)配合 langsmith 来捕获追踪信息。对于 JavaScript/TypeScript,你将使用 @aws-sdk/client-bedrock-runtime 配合 langsmith 包。两种实现都使用 Bedrock 对话 API,该 API 提供了与基础模型交互的统一接口。

设置

要启用 LangSmith 追踪,请配置你的 LangSmith API 密钥 和项目设置。你还需要设置 AWS 凭证以通过 Bedrock 进行身份验证。

LangSmith 配置

export LANGSMITH_API_KEY=<your_langsmith_api_key>
export LANGSMITH_PROJECT=<your_project_name> # 可选,默认为 "default"
export LANGSMITH_TRACING=true
你可以从 smith.langchain.com 获取你的 LangSmith API 密钥,导航至 Settings > API KeysLANGSMITH_PROJECT 变量允许你将追踪信息组织到不同的项目中。

AWS 凭证

配置你的 AWS 凭证以通过 Bedrock 进行身份验证。你需要一个启用了 Bedrock 访问权限的 AWS 账户。请按照 AWS 设置说明 创建你的凭证并 启用模型访问
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 推荐的基础模型统一接口,为不同模型提供商提供一致的请求和响应处理。你可以使用自定义标签和元数据增强追踪信息——标签帮助你分类追踪(例如,按环境、功能或测试类型),而元数据允许你附加任意键值对以提供详细上下文:
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)
  • boto3.client("bedrock-runtime") 创建一个 Bedrock 运行时客户端。
  • converse 方法将聊天提示(作为消息列表)发送到指定模型并返回结构化响应。
  • generate_text 函数使用 @traceable 装饰器装饰,将每次调用作为追踪记录到 LangSmith(使用函数名作为默认追踪名称)。
  • 自定义标签(aws-bedrocklangsmithintegration-test)和元数据(环境、模型信息)被传递给装饰器并附加到追踪记录,以便在 LangSmith UI 中进行筛选。
  • 当你运行此代码(设置 LANGSMITH_TRACING=true 并配置好 API 密钥)时,LangSmith 会自动捕获输入提示、模型输出、令牌使用量和延迟。

在 LangSmith 中查看追踪信息

运行代码后,导航至你的 LangSmith 项目 smith.langchain.com 查看追踪信息。每条追踪记录包括:
  • 请求详情:输入消息、模型参数和配置
  • 响应详情:模型输出、令牌使用量和响应元数据
  • 性能指标:延迟、每秒令牌数和成本估算
  • 自定义元数据:你提供给 @traceable 装饰器的标签和元数据
你可以按标签(例如 aws-bedrockintegration-test)筛选追踪信息,按元数据字段搜索,或深入特定追踪记录以调试问题。

后续步骤