diff --git a/python/langsmith/__init__.py b/python/langsmith/__init__.py index f99632466..851939713 100644 --- a/python/langsmith/__init__.py +++ b/python/langsmith/__init__.py @@ -21,7 +21,7 @@ # Avoid calling into importlib on every call to __version__ -__version__ = "0.4.31" +__version__ = "0.4.32" version = __version__ # for backwards compatibility diff --git a/python/langsmith/wrappers/_openai_agents.py b/python/langsmith/wrappers/_openai_agents.py index dc0870f27..a799ae74b 100644 --- a/python/langsmith/wrappers/_openai_agents.py +++ b/python/langsmith/wrappers/_openai_agents.py @@ -97,6 +97,7 @@ class RunData(TypedDict): dotted_order: str parent_run_id: Optional[str] project_name: Optional[str] + name: Optional[str] class OpenAIAgentsTracingProcessor(tracing.TracingProcessor): # type: ignore[no-redef] """Tracing processor for the `OpenAI Agents SDK `_. @@ -211,6 +212,7 @@ def on_trace_start(self, trace: tracing.Trace) -> None: dotted_order=dotted_order, parent_run_id=parent_run_id, project_name=project_name, + name=run_name, ) run_extra = {"metadata": self._metadata or {}} @@ -285,6 +287,20 @@ def on_span_start(self, span: tracing.Span) -> None: run_id=span_run_id, parent_dotted_order=parent_run["dotted_order"] if parent_run else None, ) + run_name = agent_utils.get_run_name(span) + if isinstance(span.span_data, tracing.ResponseSpanData): + parent_name = parent_run.get("name") + raw_span_name = getattr(span, "name", None) or getattr( + span.span_data, "name", None + ) + span_name = str(raw_span_name) if raw_span_name else run_name + if parent_name: + run_name = f"{parent_name} {span_name}".strip() + else: + run_name = span_name + run_type = agent_utils.get_run_type(span) + extracted = agent_utils.extract_span_data(span) + self._runs[span.span_id] = RunData( id=span_run_id, trace_id=trace_id, @@ -292,12 +308,9 @@ def on_span_start(self, span: tracing.Span) -> None: dotted_order=dotted_order, parent_run_id=parent_run["id"], project_name=parent_run["project_name"], + name=run_name, ) - run_name = agent_utils.get_run_name(span) - run_type = agent_utils.get_run_type(span) - extracted = agent_utils.extract_span_data(span) - try: run_data: dict = dict( name=run_name, diff --git a/python/pyproject.toml b/python/pyproject.toml index 0762b0f63..f3d868a4c 100644 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "langsmith" -version = "0.4.31" +version = "0.4.32" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." authors = [ {name = "LangChain", email = "support@langchain.dev"}, diff --git a/python/uv.lock b/python/uv.lock index 2b9b96b1e..67ddefba5 100644 --- a/python/uv.lock +++ b/python/uv.lock @@ -724,7 +724,7 @@ wheels = [ [[package]] name = "langsmith" -version = "0.4.31" +version = "0.4.32" source = { editable = "." } dependencies = [ { name = "httpx" },