Trace every agent step with LangSmith or Langfuse — observe tool calls, reasoning, and costs.
Agent Observability and Tracing
# LangSmith tracing (LangChain)
import os
os.environ["LANGCHAIN_TRACING_V2"] = "true"
os.environ["LANGCHAIN_API_KEY"] = "ls-your-key"
os.environ["LANGCHAIN_PROJECT"] = "my-agent"
# All agent steps auto-traced
# Langfuse for framework-agnostic tracing
from langfuse.decorators import observe, langfuse_context
import time
@observe(name="agent_run")
def run_agent_traced(goal: str) -> str:
langfuse_context.update_current_observation(
input=goal
)
result = run_agent(goal)
langfuse_context.update_current_observation(
output=result,
metadata={"turns": agent_turns}
)
return result
@observe(name="tool_call")
def traced_tool(name: str, args: dict) -> str:
start = time.time()
result = execute_tool(name, args)
langfuse_context.update_current_observation(
input=args, output=result,
metadata={"tool":name,"latency":time.time()-start}
)
return result
# Key metrics: tool success rate, avg turns per task
# Token usage per task, failure patterns, latency