From bdacfafa05da613173e4d69b9328a4389f94936d Mon Sep 17 00:00:00 2001 From: William FH <13333726+hinthornw@users.noreply.github.com> Date: Thu, 1 Feb 2024 18:46:05 -0800 Subject: [PATCH] core[patch]: Remove deep copying of run prior to submitting it to LangChain Tracing (#16904) --- libs/core/langchain_core/tracers/langchain.py | 36 +++++++------------ 1 file changed, 13 insertions(+), 23 deletions(-) diff --git a/libs/core/langchain_core/tracers/langchain.py b/libs/core/langchain_core/tracers/langchain.py index 947e10f7e6..ef4defb28b 100644 --- a/libs/core/langchain_core/tracers/langchain.py +++ b/libs/core/langchain_core/tracers/langchain.py @@ -65,16 +65,6 @@ def _get_executor() -> ThreadPoolExecutor: return _EXECUTOR -def _copy(run: Run) -> Run: - """Copy a run.""" - try: - return run.copy(deep=True) - except TypeError: - # Fallback in case the object contains a lock or other - # non-pickleable object - return run.copy() - - class LangChainTracer(BaseTracer): """An implementation of the SharedTracer that POSTS to the langchain endpoint.""" @@ -202,63 +192,63 @@ class LangChainTracer(BaseTracer): """Persist an LLM run.""" if run.parent_run_id is None: run.reference_example_id = self.example_id - self._submit(self._persist_run_single, _copy(run)) + self._submit(self._persist_run_single, run) def _on_chat_model_start(self, run: Run) -> None: """Persist an LLM run.""" if run.parent_run_id is None: run.reference_example_id = self.example_id - self._submit(self._persist_run_single, _copy(run)) + self._submit(self._persist_run_single, run) def _on_llm_end(self, run: Run) -> None: """Process the LLM Run.""" - self._submit(self._update_run_single, _copy(run)) + self._submit(self._update_run_single, run) def _on_llm_error(self, run: Run) -> None: """Process the LLM Run upon error.""" - self._submit(self._update_run_single, _copy(run)) + self._submit(self._update_run_single, run) def _on_chain_start(self, run: Run) -> None: """Process the Chain Run upon start.""" if run.parent_run_id is None: run.reference_example_id = self.example_id - self._submit(self._persist_run_single, _copy(run)) + self._submit(self._persist_run_single, run) def _on_chain_end(self, run: Run) -> None: """Process the Chain Run.""" - self._submit(self._update_run_single, _copy(run)) + self._submit(self._update_run_single, run) def _on_chain_error(self, run: Run) -> None: """Process the Chain Run upon error.""" - self._submit(self._update_run_single, _copy(run)) + self._submit(self._update_run_single, run) def _on_tool_start(self, run: Run) -> None: """Process the Tool Run upon start.""" if run.parent_run_id is None: run.reference_example_id = self.example_id - self._submit(self._persist_run_single, _copy(run)) + self._submit(self._persist_run_single, run) def _on_tool_end(self, run: Run) -> None: """Process the Tool Run.""" - self._submit(self._update_run_single, _copy(run)) + self._submit(self._update_run_single, run) def _on_tool_error(self, run: Run) -> None: """Process the Tool Run upon error.""" - self._submit(self._update_run_single, _copy(run)) + self._submit(self._update_run_single, run) def _on_retriever_start(self, run: Run) -> None: """Process the Retriever Run upon start.""" if run.parent_run_id is None: run.reference_example_id = self.example_id - self._submit(self._persist_run_single, _copy(run)) + self._submit(self._persist_run_single, run) def _on_retriever_end(self, run: Run) -> None: """Process the Retriever Run.""" - self._submit(self._update_run_single, _copy(run)) + self._submit(self._update_run_single, run) def _on_retriever_error(self, run: Run) -> None: """Process the Retriever Run upon error.""" - self._submit(self._update_run_single, _copy(run)) + self._submit(self._update_run_single, run) def wait_for_futures(self) -> None: """Wait for the given futures to complete."""