本指南展示了如何追踪 Amazon Bedrock 模型调用。LangSmith 也能与 LangChain 的 Bedrock 集成无缝协作。两种方法都能提供以下洞察:
- - 请求和响应负载
- - Token 使用量和成本
- - 延迟和性能指标
- - 用于过滤和分析的自定义标签和元数据
- - 多步骤链和代理工作流
安装
pip install boto3 langsmith
npm install @aws-sdk/client-bedrock-runtime langsmith
此集成使用原生 AWS SDK 与 LangSmith 的追踪功能。对于 Python,您将使用 boto3 (适用于 Python 的 AWS SDK)以及 langsmith to capture traces. For JavaScript/TypeScript, you'll use @aws-sdk/client-bedrock-runtime 配合 langsmith 包。两种实现都使用 Bedrock Converse API,它提供了与基础模型交互的统一接口。
设置
要启用 LangSmith 追踪,请配置您的 LangSmith API 密钥 和项目设置。您还需要设置 AWS 凭证以向 Bedrock 进行身份验证。
LangSmith 配置
您可以从获取您的 LangSmith API 密钥 smith.langchain.com 通过导航到 **设置** > **API 密钥**。 LANGSMITH_PROJECT 变量允许您将追踪组织到不同的项目中。
AWS 凭证
配置您的 AWS 凭证以向 Bedrock 进行身份验证。您需要一个已启用 Bedrock 访问权限的 AWS 账户。按照 AWS 设置说明 创建您的凭证并 启用模型访问:
配置追踪
环境变量设置好后,您可以通过使用 LangSmith 的 @traceable 装饰器(Python)或 traceable 函数(TypeScript)包装调用函数来追踪 Bedrock 模型调用。
以下示例展示了如何使用 Bedrock Converse API 配合 LangSmith 追踪。Converse API 是 AWS 推荐的统一接口,用于基础模型,可跨不同模型提供商提供一致的请求和响应处理。您可以使用自定义标签和元数据增强追踪——标签帮助您对追踪进行分类(例如按环境、功能或测试类型),而元数据允许您附加任意键值对以获取详细上下文:
from langsmith import traceable
# Initialize Bedrock runtime client (ensure AWS creds and region are set)
bedrock = boto3.client("bedrock-runtime", region_name="us-east-1")
model_id = "anthropic.claude-haiku-4-5-20251001-v1:0" # Example Bedrock model ID
# Decorate the model invocation function to auto-capture a trace with tags/metadata
@traceable(tags=["aws-bedrock", "langsmith", "integration-test"],
metadata={"env": "dev", "model_provider": "bedrock", "model_id": "claude-3-haiku"})
def generate_text(prompt: str) -> str:
# Prepare a single-turn conversation input for the Converse API
messages = [
{"role": "user", "content": [{"text": prompt}]}
]
# Invoke the Bedrock model using the unified Converse API
response = bedrock.converse(
modelId=model_id,
messages=messages,
inferenceConfig={"maxTokens": 512, "temperature": 0.5, "topP": 0.9}
)
# Extract the model's reply text from the response
output_text = response["output"]["message"]["content"][0]["text"]
return output_text
# Call the traced function with a prompt
result = generate_text("How can I trace AWS Bedrock model outputs to LangSmith for debugging?")
print(result)
const client = new BedrockRuntimeClient({ region: "us-east-1" });
const modelId = "anthropic.claude-haiku-4-5-20251001-v1:0";
// Wrap the Bedrock invocation in a traceable function with tags and metadata
const invokeBedrock = traceable(
async (userInput: string) => {
// Prepare the conversation message for the Bedrock Converse API
const conversation = [
{ role: "user", content: [{ text: userInput }] }
];
// Create and send a Bedrock Converse command (single-turn chat)
const command = new ConverseCommand({
modelId,
messages: conversation,
inferenceConfig: { maxTokens: 512, temperature: 0.5, topP: 0.9 }
});
const response = await client.send(command);
// Extract the assistant's reply text from the response
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" }
}
);
// Invoke the traced function with a prompt
const answer = await invokeBedrock("How can I trace AWS Bedrock model outputs to LangSmith for debugging?");
console.log(answer);
Python
- boto3.client("bedrock-runtime") 创建 Bedrock Runtime 客户端。 - converse 方法将聊天提示(作为消息列表)发送到指定模型,并返回结构化响应。 - generate_text 函数使用 @traceable装饰,将每次调用记录为 LangSmith 中的追踪(使用函数名作为默认追踪名称)。 - 自定义标签(aws-bedrock, langsmith, integration-test元数据(环境、模型信息)会被传入装饰器并附加到追踪记录中,以便在 LangSmith UI 中进行筛选。 - 运行此代码时(使用 LANGSMITH_TRACING=true 并设置好 API 密钥后),LangSmith 会自动捕获输入提示词、模型输出、token 使用量和延迟。
TypeScript
- BedrockRuntimeClient 来自 AWS SDK v3,提供了 Bedrock 运行时接口。 - ConverseCommand 提供统一的聊天接口,发送用户消息并以结构化格式返回助手响应(无需手动解析 JSON)。 - Bedrock 调用被包装在 LangSmith 的 traceable 函数中,将 invokeBedrock 转换为可追踪函数,将其执行记录到 LangSmith。 - 自定义标签和元数据在 traceable 选项对象中提供,并附加到每条追踪记录中。 - 运行此脚本时(使用 LANGSMITH_TRACING=true and your API key configured), check your LangSmith dashboard for trace entries that include the input prompt, model output, timing info, and specified tags/metadata.
在 LangSmith 中查看追踪记录
运行代码后,导航到您的 LangSmith 项目 smith.langchain.com 查看追踪记录。每条追踪记录包含:
- 请求详情:输入消息、模型参数和配置
- 响应详情:模型输出、token 使用量和响应元数据
- 性能指标:延迟、每秒 token 数和成本估算
- 自定义元数据:您提供给
@traceable装饰器的标签和元数据
您可以按标签筛选追踪记录(例如, aws-bedrock or integration-test)、按元数据字段搜索,或深入查看特定追踪以调试问题。
后续步骤
- - 了解更多关于 LangSmith 功能 包括评估、数据集和反馈
- - 探索 Bedrock 模型能力 如工具调用、流式输出和提示词缓存
- - 查看 LangChain Bedrock 集成文档 了解高级功能,如扩展思考和引用