Skip to content

Commit d4bfa31

Browse files
committed
integrate message truncation in langchain & langgraph
1 parent bf386cd commit d4bfa31

File tree

2 files changed

+33
-37
lines changed

2 files changed

+33
-37
lines changed

sentry_sdk/integrations/langchain.py

Lines changed: 22 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
set_data_normalized,
1111
get_start_span_function,
1212
)
13+
from sentry_sdk.ai.utils import set_data_normalized, get_start_span_function
14+
from sentry_sdk.ai.message_utils import truncate_and_serialize_messages
1315
from sentry_sdk.consts import OP, SPANDATA
1416
from sentry_sdk.integrations import DidNotEnable, Integration
1517
from sentry_sdk.scope import should_send_default_pii
@@ -221,12 +223,11 @@ def on_llm_start(
221223
}
222224
for prompt in prompts
223225
]
224-
set_data_normalized(
225-
span,
226-
SPANDATA.GEN_AI_REQUEST_MESSAGES,
227-
normalized_messages,
228-
unpack=False,
229-
)
226+
result = truncate_and_serialize_messages(prompts)
227+
if result["serialized_data"]:
228+
span.set_data(
229+
SPANDATA.GEN_AI_REQUEST_MESSAGES, result["serialized_data"]
230+
)
230231

231232
def on_chat_model_start(self, serialized, messages, *, run_id, **kwargs):
232233
# type: (SentryLangchainCallback, Dict[str, Any], List[List[BaseMessage]], UUID, Any) -> Any
@@ -278,13 +279,11 @@ def on_chat_model_start(self, serialized, messages, *, run_id, **kwargs):
278279
self._normalize_langchain_message(message)
279280
)
280281
normalized_messages = normalize_message_roles(normalized_messages)
281-
282-
set_data_normalized(
283-
span,
284-
SPANDATA.GEN_AI_REQUEST_MESSAGES,
285-
normalized_messages,
286-
unpack=False,
287-
)
282+
result = truncate_and_serialize_messages(normalized_messages)
283+
if result["serialized_data"]:
284+
span.set_data(
285+
SPANDATA.GEN_AI_REQUEST_MESSAGES, result["serialized_data"]
286+
)
288287

289288
def on_chat_model_end(self, response, *, run_id, **kwargs):
290289
# type: (SentryLangchainCallback, LLMResult, UUID, Any) -> Any
@@ -758,12 +757,11 @@ def new_invoke(self, *args, **kwargs):
758757
and integration.include_prompts
759758
):
760759
normalized_messages = normalize_message_roles([input])
761-
set_data_normalized(
762-
span,
763-
SPANDATA.GEN_AI_REQUEST_MESSAGES,
764-
normalized_messages,
765-
unpack=False,
766-
)
760+
result = truncate_and_serialize_messages(normalized_messages)
761+
if result["serialized_data"]:
762+
span.set_data(
763+
SPANDATA.GEN_AI_REQUEST_MESSAGES, result["serialized_data"]
764+
)
767765

768766
output = result.get("output")
769767
if (
@@ -813,12 +811,11 @@ def new_stream(self, *args, **kwargs):
813811
and integration.include_prompts
814812
):
815813
normalized_messages = normalize_message_roles([input])
816-
set_data_normalized(
817-
span,
818-
SPANDATA.GEN_AI_REQUEST_MESSAGES,
819-
normalized_messages,
820-
unpack=False,
821-
)
814+
result = truncate_and_serialize_messages(normalized_messages)
815+
if result["serialized_data"]:
816+
span.set_data(
817+
SPANDATA.GEN_AI_REQUEST_MESSAGES, result["serialized_data"]
818+
)
822819

823820
# Run the agent
824821
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, normalize_message_roles
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
@@ -181,12 +182,11 @@ def new_invoke(self, *args, **kwargs):
181182
input_messages = _parse_langgraph_messages(args[0])
182183
if input_messages:
183184
normalized_input_messages = normalize_message_roles(input_messages)
184-
set_data_normalized(
185-
span,
186-
SPANDATA.GEN_AI_REQUEST_MESSAGES,
187-
normalized_input_messages,
188-
unpack=False,
189-
)
185+
result = truncate_and_serialize_messages(normalized_input_messages)
186+
if result["serialized_data"]:
187+
span.set_data(
188+
SPANDATA.GEN_AI_REQUEST_MESSAGES, result["serialized_data"]
189+
)
190190

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

@@ -232,12 +232,11 @@ async def new_ainvoke(self, *args, **kwargs):
232232
input_messages = _parse_langgraph_messages(args[0])
233233
if input_messages:
234234
normalized_input_messages = normalize_message_roles(input_messages)
235-
set_data_normalized(
236-
span,
237-
SPANDATA.GEN_AI_REQUEST_MESSAGES,
238-
normalized_input_messages,
239-
unpack=False,
240-
)
235+
result = truncate_and_serialize_messages(normalized_input_messages)
236+
if result["serialized_data"]:
237+
span.set_data(
238+
SPANDATA.GEN_AI_REQUEST_MESSAGES, result["serialized_data"]
239+
)
241240

242241
result = await f(self, *args, **kwargs)
243242

0 commit comments

Comments
 (0)