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 Converse API,该 API 为与基础模型交互提供了统一接口。

设置

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

LangSmith 配置

export LANGSMITH_API_KEY=<您的_langsmith_api_密钥>
export LANGSMITH_PROJECT=<您的项目名称> # 可选,默认为 "default"
export LANGSMITH_TRACING=true
您可以从 smith.langchain.com 获取 LangSmith API 密钥,导航至 设置 > API 密钥LANGSMITH_PROJECT 变量允许您将追踪组织到不同的项目中。

AWS 凭证

配置您的 AWS 凭证以通过 Bedrock 进行身份验证。您需要一个已启用 Bedrock 访问权限的 AWS 账户。请按照 AWS 设置说明 创建您的凭证并 启用模型访问权限
export AWS_ACCESS_KEY_ID=<您的_aws_访问密钥_id>
export AWS_SECRET_ACCESS_KEY=<您的_aws_密钥>
export AWS_SESSION_TOKEN=<您的会话令牌> # 仅在使用临时凭证时需要
export AWS_DEFAULT_REGION=<您的_bedrock_区域> # 例如,us-east-1 或 us-west-2

配置追踪

设置好环境变量后,您可以通过使用 LangSmith 的 @traceable 装饰器(Python)或 traceable 函数(TypeScript)包装您的调用函数来追踪 Bedrock 模型调用。 以下示例演示了如何将 Bedrock Converse API 与 LangSmith 追踪结合使用。Converse API 是 AWS 推荐的基础模型统一接口,为不同模型提供商提供一致的请求和响应处理。您可以使用自定义标签和元数据增强追踪——标签帮助您对追踪进行分类(例如,按环境、功能或测试类型),而元数据允许您附加任意键值对以提供详细上下文:
import boto3
from langsmith import traceable

# 初始化 Bedrock 运行时客户端(确保已设置 AWS 凭证和区域)
bedrock = boto3.client("bedrock-runtime", region_name="us-east-1")
model_id = "anthropic.claude-3-haiku-20240307-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:
    # 为 Converse API 准备单轮对话输入
    messages = [
        {"role": "user", "content": [{"text": prompt}]}
    ]
    # 使用统一的 Converse 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)筛选追踪,按元数据字段搜索,或深入查看特定追踪以调试问题。

后续步骤