集成:Amazon Bedrock AgentCore
什么是 Amazon Bedrock AgentCore? Amazon Bedrock AgentCore 是一项托管服务,可帮助你在生产环境中构建、部署和管理 AI Agent。它提供容器化的 Agent 运行时,能够执行复杂的工作流、使用工具,并在利用 Amazon Bedrock 提供的基础模型的同时与外部 API 交互。
什么是 Litefuse? Litefuse 是一个面向 LLM 工程的开源平台。它为 AI Agent 提供 tracing 与监控能力,帮助开发者调试、分析并优化产品。Litefuse 通过原生集成、OpenTelemetry 以及 SDK 与多种工具和框架对接。
快速开始
本指南演示如何将 Litefuse 与 Amazon Bedrock AgentCore 集成,使用 OpenTelemetry 对 Agent 执行进行 trace。
第 1 步:安装依赖
安装用于构建并部署带有 Litefuse tracing 的 AgentCore Agent 所需的 Python 包:
pip install bedrock-agentcore-starter-toolkit strands-agents[otel] langfuse boto3 mcp第 2 步:设置环境变量
配置你的 AWS 与 Litefuse 凭证:
2.1 配置 Litefuse 凭证以及 OTEL Exporter
import os
import base64
# Get keys for your project from the project settings page: https://litefuse.cloud
os.environ["LANGFUSE_PUBLIC_KEY"] = "pk-lf-..."
os.environ["LANGFUSE_SECRET_KEY"] = "sk-lf-..."
os.environ["LANGFUSE_BASE_URL"] = "https://litefuse.cloud"
# Build Basic Auth header for OTEL
langfuse_auth = base64.b64encode(
f"{os.environ['LANGFUSE_PUBLIC_KEY']}:{os.environ['LANGFUSE_SECRET_KEY']}".encode()
).decode()
# Configure OpenTelemetry endpoint & headers
os.environ["OTEL_EXPORTER_OTLP_ENDPOINT"] = os.environ["LANGFUSE_BASE_URL"] + "/api/public/otel"
os.environ["OTEL_EXPORTER_OTLP_HEADERS"] = f"Authorization=Basic {langfuse_auth}"2.2 配置 AWS 凭证
设置访问 Bedrock 服务所需的 AWS 凭证:
os.environ["AWS_ACCESS_KEY_ID"] = "..."
os.environ["AWS_SECRET_ACCESS_KEY"] = "..."
os.environ["AWS_DEFAULT_REGION"] = "us-west-2"第 3 步:创建带有 Litefuse Tracing 的 Agent
创建一个通过 OpenTelemetry 与 Litefuse 集成的 AgentCore Agent。本示例使用 Strands Agents SDK 与 MCP 工具。Litefuse 同样可以与其他 Agent 框架配合使用,请参考 集成页面 中关于如何对其他框架进行 instrumentation 的指南。
from bedrock_agentcore.runtime import BedrockAgentCoreApp
from strands import Agent
from strands.models import BedrockModel
from strands.telemetry import StrandsTelemetry
from mcp.client.streamable_http import streamablehttp_client
from strands.tools.mcp.mcp_client import MCPClient
from langfuse import get_client
# Initialize MCP client for tool access
streamable_http_mcp_client = MCPClient(
lambda: streamablehttp_client("https://litefuse.ai/api/mcp")
)
# Configure Bedrock model
bedrock_model = BedrockModel(
model_id="us.anthropic.claude-3-7-sonnet-20250219-v1:0",
region_name="us-west-2",
temperature=0.0,
max_tokens=4096
)
# Define system prompt
system_prompt = """You are an experienced agent supporting developers with
questions about Litefuse and AI agent observability."""
app = BedrockAgentCoreApp()
@app.entrypoint
def agent_entrypoint(payload):
"""Agent entrypoint with Litefuse tracing"""
user_input = payload.get("prompt")
trace_id = payload.get("trace_id")
parent_obs_id = payload.get("parent_obs_id")
# Initialize Strands telemetry and setup OTLP exporter
strands_telemetry = StrandsTelemetry()
strands_telemetry.setup_otlp_exporter()
# Create agent with MCP tools
with streamable_http_mcp_client:
mcp_tools = streamable_http_mcp_client.list_tools_sync()
agent = Agent(
model=bedrock_model,
system_prompt=system_prompt,
tools=mcp_tools
)
# Execute within Litefuse trace context
with get_client().start_as_current_observation(
name='agentcore-agent',
trace_context={
"trace_id": trace_id,
"parent_observation_id": parent_obs_id
}
):
response = agent(user_input)
return response.message['content'][0]['text']
if __name__ == "__main__":
app.run()第 4 步:部署并调用 Agent
将你的 Agent 部署到 Amazon Bedrock AgentCore 并携带 trace 上下文进行调用:
from bedrock_agentcore_starter_toolkit import Runtime
from langfuse import get_client
import boto3
import json
# Deploy agent
runtime = Runtime()
runtime.configure(
entrypoint="./agent.py",
auto_create_execution_role=True,
auto_create_ecr=True,
agent_name="litefuse-traced-agent",
memory_mode='NO_MEMORY'
)
launch_result = runtime.launch(
env_vars={
"DISABLE_ADOT_OBSERVABILITY": "true", # Required: disable ADOT to use Litefuse
"BEDROCK_MODEL_ID": "us.anthropic.claude-3-7-sonnet-20250219-v1:0",
"OTEL_EXPORTER_OTLP_ENDPOINT": os.environ["OTEL_EXPORTER_OTLP_ENDPOINT"],
"OTEL_EXPORTER_OTLP_HEADERS": os.environ["OTEL_EXPORTER_OTLP_HEADERS"],
"LANGFUSE_PROJECT_NAME": "your-project-name",
"SYSTEM_PROMPT": system_prompt
}
)
# Invoke agent with trace context
client = boto3.client('bedrock-agentcore', region_name='us-west-2')
# Get current trace context from Litefuse
trace_id = get_client().get_current_trace_id()
obs_id = get_client().get_current_observation_id()
payload = json.dumps({
"prompt": "What is Litefuse and how does it help monitor LLM applications?",
"trace_id": trace_id,
"parent_obs_id": obs_id
}).encode()
response = client.invoke_agent_runtime(
agentRuntimeArn=launch_result.agent_arn,
runtimeSessionId="session-123",
payload=payload
)第 5 步:在 Litefuse 中查看 Trace
运行 Agent 后,登录 Litefuse 即可查看生成的 trace。你将看到:
- 完整的 Agent 执行流程
- 带有 token 数量与成本的 LLM 调用
- 工具使用情况以及 MCP 交互
- 每个步骤的延迟指标
- 用于调试的输入/输出数据
这些 trace 让你对 Agent 在生产环境中的行为拥有全面的可见性。
在其他框架中使用 AgentCore
如果你在 AgentCore 上使用 LangChain、LlamaIndex 或其他框架:仅依靠 Langfuse SDK 回调在 AgentCore 上是不够的。AgentCore 运行时在某个层级管理 telemetry,可能会绕过 SDK 的 HTTP 调用。
启动 AgentCore 运行时时请传入以下环境变量:
# Disable AWS's built-in tracing
DISABLE_ADOT_OBSERVABILITY=true
# Configure OTEL to export to Litefuse
OTEL_EXPORTER_OTLP_ENDPOINT="https://litefuse.cloud/api/public/otel"
OTEL_EXPORTER_OTLP_HEADERS="Authorization=Basic $(echo -n 'pk-xxx:sk-xxx' | base64)"下面是带有所需环境变量启动 AgentCore 运行时的示例:
import base64
# Prepare auth header
langfuse_auth = base64.b64encode(
f"{LANGFUSE_PUBLIC_KEY}:{LANGFUSE_SECRET_KEY}".encode()
).decode()
# Launch with required env vars
launch_result = agentcore_runtime.launch(
env_vars={
"DISABLE_ADOT_OBSERVABILITY": "true",
"OTEL_EXPORTER_OTLP_ENDPOINT": f"{LANGFUSE_BASE_URL}/api/public/otel",
"OTEL_EXPORTER_OTLP_HEADERS": f"Authorization=Basic {langfuse_auth}",
}
)更多排错信息请参阅 在已有 OpenTelemetry 配置下使用 Litefuse。
示例仓库:基于 AgentCore 和 Litefuse 的持续评估
构建生产级 AI Agent 不只需要 tracing,还需要通过实验、测试和监控来系统性地实现持续改进。@aristsakpinis93 创建了一个完整的 示例仓库,演示如何在 Amazon Bedrock AgentCore 与 Litefuse 上构建这一持续评估闭环。
持续评估闭环:

该仓库覆盖 Agent 生命周期的三个关键阶段:
- 实验与超参数优化
- QA 与 CI/CD 测试
- 生产运维与监控
更多细节请查看 README.md。