From 0cf365fc498cfe2ba5b3525e42d7a6913d49b426 Mon Sep 17 00:00:00 2001 From: Tejas Kashinath Date: Tue, 17 Mar 2026 17:10:18 -0400 Subject: [PATCH] fix: use aws-opentelemetry-distro and add input/output logging for LangGraph agent The LangGraph template was using the generic opentelemetry-distro which doesn't integrate properly with AWS X-Ray and CloudWatch. This resulted in only 1 span and no input/output logs in the runtime log group. Switch to aws-opentelemetry-distro (matching the Strands template) to enable proper AWS-native telemetry with botocore instrumentation that captures Bedrock model calls, tool usage, and trace context. Also add input/output logging to the agent entrypoint. Fixes #551 --- .../__tests__/__snapshots__/assets.snapshot.test.ts.snap | 8 +++++--- src/assets/python/langchain_langgraph/base/main.py | 5 ++++- src/assets/python/langchain_langgraph/base/pyproject.toml | 3 +-- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/assets/__tests__/__snapshots__/assets.snapshot.test.ts.snap b/src/assets/__tests__/__snapshots__/assets.snapshot.test.ts.snap index 0e2f5950..08789087 100644 --- a/src/assets/__tests__/__snapshots__/assets.snapshot.test.ts.snap +++ b/src/assets/__tests__/__snapshots__/assets.snapshot.test.ts.snap @@ -2027,12 +2027,15 @@ async def invoke(payload, context): # Process the user prompt prompt = payload.get("prompt", "What can you help me with?") + log.info(f"Agent input: {prompt}") # Run the agent result = await graph.ainvoke({"messages": [HumanMessage(content=prompt)]}) # Return result - return {"result": result["messages"][-1].content} + output = result["messages"][-1].content + log.info(f"Agent output: {output}") + return {"result": output} if __name__ == "__main__": @@ -2261,8 +2264,7 @@ description = "AgentCore Runtime Application using LangChain/LangGraph" readme = "README.md" requires-python = ">=3.10" dependencies = [ - "opentelemetry-distro", - "opentelemetry-exporter-otlp", + "aws-opentelemetry-distro", "langgraph >= 1.0.2", "mcp >= 1.19.0", "langchain-mcp-adapters >= 0.1.11", diff --git a/src/assets/python/langchain_langgraph/base/main.py b/src/assets/python/langchain_langgraph/base/main.py index 3047d124..949a652f 100644 --- a/src/assets/python/langchain_langgraph/base/main.py +++ b/src/assets/python/langchain_langgraph/base/main.py @@ -54,12 +54,15 @@ async def invoke(payload, context): # Process the user prompt prompt = payload.get("prompt", "What can you help me with?") + log.info(f"Agent input: {prompt}") # Run the agent result = await graph.ainvoke({"messages": [HumanMessage(content=prompt)]}) # Return result - return {"result": result["messages"][-1].content} + output = result["messages"][-1].content + log.info(f"Agent output: {output}") + return {"result": output} if __name__ == "__main__": diff --git a/src/assets/python/langchain_langgraph/base/pyproject.toml b/src/assets/python/langchain_langgraph/base/pyproject.toml index fb75744a..ef07adf0 100644 --- a/src/assets/python/langchain_langgraph/base/pyproject.toml +++ b/src/assets/python/langchain_langgraph/base/pyproject.toml @@ -9,8 +9,7 @@ description = "AgentCore Runtime Application using LangChain/LangGraph" readme = "README.md" requires-python = ">=3.10" dependencies = [ - "opentelemetry-distro", - "opentelemetry-exporter-otlp", + "aws-opentelemetry-distro", "langgraph >= 1.0.2", "mcp >= 1.19.0", "langchain-mcp-adapters >= 0.1.11",