From 3d36dfc28e2e950fc4a7b7382da0c1109e68538e Mon Sep 17 00:00:00 2001 From: philipshurpik Date: Tue, 11 Nov 2025 13:01:12 +0000 Subject: [PATCH 1/2] option to force keep_trace_attributes in langfuse --- langfuse/langchain/CallbackHandler.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/langfuse/langchain/CallbackHandler.py b/langfuse/langchain/CallbackHandler.py index 9e8278e28..18cee68a7 100644 --- a/langfuse/langchain/CallbackHandler.py +++ b/langfuse/langchain/CallbackHandler.py @@ -792,16 +792,15 @@ def __on_llm_action( if registered_prompt: self._deregister_langfuse_prompt(parent_run_id) + # keep trace attributes if llm is run isolated and outside chain or forced in metadata + keep_trace_attributes = bool(metadata.get('keep_trace_attributes') or parent_run_id is None) content = { "name": self.get_langchain_run_name(serialized, **kwargs), "input": prompts, "metadata": self.__join_tags_and_metadata( tags, metadata, - # If llm is run isolated and outside chain, keep trace attributes - keep_langfuse_trace_attributes=True - if parent_run_id is None - else False, + keep_langfuse_trace_attributes=keep_trace_attributes, ), "model": model_name, "model_parameters": self._parse_model_parameters(kwargs), From a0f22d5aac5b8a3abdf2cc7efb79ecae82327b09 Mon Sep 17 00:00:00 2001 From: Philip Shurpik Date: Tue, 11 Nov 2025 14:04:19 +0000 Subject: [PATCH 2/2] Update langfuse/langchain/CallbackHandler.py Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> --- langfuse/langchain/CallbackHandler.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/langfuse/langchain/CallbackHandler.py b/langfuse/langchain/CallbackHandler.py index 18cee68a7..6df10aaf2 100644 --- a/langfuse/langchain/CallbackHandler.py +++ b/langfuse/langchain/CallbackHandler.py @@ -793,7 +793,7 @@ def __on_llm_action( self._deregister_langfuse_prompt(parent_run_id) # keep trace attributes if llm is run isolated and outside chain or forced in metadata - keep_trace_attributes = bool(metadata.get('keep_trace_attributes') or parent_run_id is None) + keep_trace_attributes = bool((metadata or {}).get('keep_trace_attributes') or parent_run_id is None) content = { "name": self.get_langchain_run_name(serialized, **kwargs), "input": prompts,