open-swe/agent/utils/tracing.py

25 lines
806 B
Python
Raw Normal View History

"""Per-graph LangSmith tracing-project routing for langgraph.json entrypoints."""
import contextlib
from collections.abc import AsyncIterator, Awaitable, Callable
import langsmith as ls
from langgraph.graph.state import RunnableConfig
from langgraph.pregel import Pregel
AGENT_TRACING_PROJECT = "open-swe-agent"
REVIEW_TRACING_PROJECT = "open-swe-review"
def traced_graph_factory(
factory: Callable[[RunnableConfig], Awaitable[Pregel]],
project_name: str,
) -> Callable[[RunnableConfig], contextlib.AbstractAsyncContextManager[Pregel]]:
@contextlib.asynccontextmanager
async def entrypoint(config: RunnableConfig) -> AsyncIterator[Pregel]:
graph = await factory(config)
with ls.tracing_context(project_name=project_name):
yield graph
return entrypoint