From cb8e35df83383d70bba4a616b724603d11a0255b Mon Sep 17 00:00:00 2001 From: Erick Friis Date: Fri, 24 Jan 2025 16:23:37 -0800 Subject: [PATCH] core: allow merging metadata in tracing --- libs/core/langchain_core/tracers/core.py | 25 +++++++++++++++---- libs/core/langchain_core/tracers/langchain.py | 5 +++- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/libs/core/langchain_core/tracers/core.py b/libs/core/langchain_core/tracers/core.py index d3544df04e3..1e4df5d9503 100644 --- a/libs/core/langchain_core/tracers/core.py +++ b/libs/core/langchain_core/tracers/core.py @@ -178,7 +178,10 @@ class _TracerCore(ABC): raise NotImplementedError(msg) start_time = datetime.now(timezone.utc) if metadata: - kwargs.update({"metadata": metadata}) + if isinstance(kwargs.get("metadata"), dict): + kwargs["metadata"].update(metadata) + else: + kwargs.update({"metadata": metadata}) return Run( id=run_id, parent_run_id=parent_run_id, @@ -209,7 +212,10 @@ class _TracerCore(ABC): """Create a llm run.""" start_time = datetime.now(timezone.utc) if metadata: - kwargs.update({"metadata": metadata}) + if isinstance(kwargs.get("metadata"), dict): + kwargs["metadata"].update(metadata) + else: + kwargs.update({"metadata": metadata}) return Run( id=run_id, parent_run_id=parent_run_id, @@ -314,7 +320,10 @@ class _TracerCore(ABC): """Create a chain Run.""" start_time = datetime.now(timezone.utc) if metadata: - kwargs.update({"metadata": metadata}) + if isinstance(kwargs.get("metadata"), dict): + kwargs["metadata"].update(metadata) + else: + kwargs.update({"metadata": metadata}) return Run( id=run_id, parent_run_id=parent_run_id, @@ -399,7 +408,10 @@ class _TracerCore(ABC): """Create a tool run.""" start_time = datetime.now(timezone.utc) if metadata: - kwargs.update({"metadata": metadata}) + if isinstance(kwargs.get("metadata"), dict): + kwargs["metadata"].update(metadata) + else: + kwargs.update({"metadata": metadata}) if self._schema_format in ("original", "original+chat"): inputs = {"input": input_str} @@ -464,7 +476,10 @@ class _TracerCore(ABC): """Create a retrieval run.""" start_time = datetime.now(timezone.utc) if metadata: - kwargs.update({"metadata": metadata}) + if isinstance(kwargs.get("metadata"), dict): + kwargs["metadata"].update(metadata) + else: + kwargs.update({"metadata": metadata}) return Run( id=run_id, name=name or "Retriever", diff --git a/libs/core/langchain_core/tracers/langchain.py b/libs/core/langchain_core/tracers/langchain.py index d125494af9a..fdf9a133074 100644 --- a/libs/core/langchain_core/tracers/langchain.py +++ b/libs/core/langchain_core/tracers/langchain.py @@ -154,7 +154,10 @@ class LangChainTracer(BaseTracer): """ start_time = datetime.now(timezone.utc) if metadata: - kwargs.update({"metadata": metadata}) + if isinstance(kwargs.get("metadata"), dict): + kwargs["metadata"].update(metadata) + else: + kwargs.update({"metadata": metadata}) chat_model_run = Run( id=run_id, parent_run_id=parent_run_id,