Skip to content

Commit 5fe364a

Browse files
committed
integrate message truncation in langchain & langgraph
1 parent a92e93c commit 5fe364a

File tree

2 files changed

+32
-27
lines changed

2 files changed

+32
-27
lines changed

sentry_sdk/integrations/langchain.py

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import sentry_sdk
66
from sentry_sdk.ai.monitoring import set_ai_pipeline_name
77
from sentry_sdk.ai.utils import set_data_normalized, get_start_span_function
8+
from sentry_sdk.ai.message_utils import truncate_and_serialize_messages
89
from sentry_sdk.consts import OP, SPANDATA
910
from sentry_sdk.integrations import DidNotEnable, Integration
1011
from sentry_sdk.scope import should_send_default_pii
@@ -209,9 +210,11 @@ def on_llm_start(
209210
_set_tools_on_span(span, all_params.get("tools"))
210211

211212
if should_send_default_pii() and self.include_prompts:
212-
set_data_normalized(
213-
span, SPANDATA.GEN_AI_REQUEST_MESSAGES, prompts, unpack=False
214-
)
213+
result = truncate_and_serialize_messages(prompts)
214+
if result["serialized_data"]:
215+
span.set_data(
216+
SPANDATA.GEN_AI_REQUEST_MESSAGES, result["serialized_data"]
217+
)
215218

216219
def on_chat_model_start(self, serialized, messages, *, run_id, **kwargs):
217220
# type: (SentryLangchainCallback, Dict[str, Any], List[List[BaseMessage]], UUID, Any) -> Any
@@ -262,12 +265,11 @@ def on_chat_model_start(self, serialized, messages, *, run_id, **kwargs):
262265
normalized_messages.append(
263266
self._normalize_langchain_message(message)
264267
)
265-
set_data_normalized(
266-
span,
267-
SPANDATA.GEN_AI_REQUEST_MESSAGES,
268-
normalized_messages,
269-
unpack=False,
270-
)
268+
result = truncate_and_serialize_messages(normalized_messages)
269+
if result["serialized_data"]:
270+
span.set_data(
271+
SPANDATA.GEN_AI_REQUEST_MESSAGES, result["serialized_data"]
272+
)
271273

272274
def on_chat_model_end(self, response, *, run_id, **kwargs):
273275
# type: (SentryLangchainCallback, LLMResult, UUID, Any) -> Any
@@ -740,9 +742,11 @@ def new_invoke(self, *args, **kwargs):
740742
and should_send_default_pii()
741743
and integration.include_prompts
742744
):
743-
set_data_normalized(
744-
span, SPANDATA.GEN_AI_REQUEST_MESSAGES, [input], unpack=False
745-
)
745+
result = truncate_and_serialize_messages([input])
746+
if result["serialized_data"]:
747+
span.set_data(
748+
SPANDATA.GEN_AI_REQUEST_MESSAGES, result["serialized_data"]
749+
)
746750

747751
output = result.get("output")
748752
if (
@@ -791,9 +795,11 @@ def new_stream(self, *args, **kwargs):
791795
and should_send_default_pii()
792796
and integration.include_prompts
793797
):
794-
set_data_normalized(
795-
span, SPANDATA.GEN_AI_REQUEST_MESSAGES, [input], unpack=False
796-
)
798+
result = truncate_and_serialize_messages([input])
799+
if result["serialized_data"]:
800+
span.set_data(
801+
SPANDATA.GEN_AI_REQUEST_MESSAGES, result["serialized_data"]
802+
)
797803

798804
# Run the agent
799805
result = f(self, *args, **kwargs)

sentry_sdk/integrations/langgraph.py

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
import sentry_sdk
55
from sentry_sdk.ai.utils import set_data_normalized
6+
from sentry_sdk.ai.message_utils import truncate_and_serialize_messages
67
from sentry_sdk.consts import OP, SPANDATA
78
from sentry_sdk.integrations import DidNotEnable, Integration
89
from sentry_sdk.scope import should_send_default_pii
@@ -180,12 +181,11 @@ def new_invoke(self, *args, **kwargs):
180181
):
181182
input_messages = _parse_langgraph_messages(args[0])
182183
if input_messages:
183-
set_data_normalized(
184-
span,
185-
SPANDATA.GEN_AI_REQUEST_MESSAGES,
186-
input_messages,
187-
unpack=False,
188-
)
184+
result = truncate_and_serialize_messages(input_messages)
185+
if result["serialized_data"]:
186+
span.set_data(
187+
SPANDATA.GEN_AI_REQUEST_MESSAGES, result["serialized_data"]
188+
)
189189

190190
result = f(self, *args, **kwargs)
191191

@@ -230,12 +230,11 @@ async def new_ainvoke(self, *args, **kwargs):
230230
):
231231
input_messages = _parse_langgraph_messages(args[0])
232232
if input_messages:
233-
set_data_normalized(
234-
span,
235-
SPANDATA.GEN_AI_REQUEST_MESSAGES,
236-
input_messages,
237-
unpack=False,
238-
)
233+
result = truncate_and_serialize_messages(input_messages)
234+
if result["serialized_data"]:
235+
span.set_data(
236+
SPANDATA.GEN_AI_REQUEST_MESSAGES, result["serialized_data"]
237+
)
239238

240239
result = await f(self, *args, **kwargs)
241240

0 commit comments

Comments
 (0)