Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions sentry_sdk/integrations/anthropic.py
Original file line number Diff line number Diff line change
Expand Up @@ -438,9 +438,13 @@ def _set_common_input_data(
normalized_messages.append(transformed_message)

role_normalized_messages = normalize_message_roles(normalized_messages)

client = sentry_sdk.get_client()
scope = sentry_sdk.get_current_scope()
messages_data = truncate_and_annotate_messages(
role_normalized_messages, span, scope
messages_data = (
role_normalized_messages
if client.options.get("stream_gen_ai_spans", False)
else truncate_and_annotate_messages(role_normalized_messages, span, scope)
)
if messages_data is not None:
set_data_normalized(
Expand Down
7 changes: 5 additions & 2 deletions sentry_sdk/integrations/google_genai/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -892,9 +892,12 @@ def set_span_data_for_request(

if messages:
normalized_messages = normalize_message_roles(messages)
client = sentry_sdk.get_client()
scope = sentry_sdk.get_current_scope()
messages_data = truncate_and_annotate_messages(
normalized_messages, span, scope
messages_data = (
normalized_messages
if client.options.get("stream_gen_ai_spans", False)
else truncate_and_annotate_messages(normalized_messages, span, scope)
)
if messages_data is not None:
set_data_normalized(
Expand Down
38 changes: 30 additions & 8 deletions sentry_sdk/integrations/langchain.py
Original file line number Diff line number Diff line change
Expand Up @@ -374,9 +374,15 @@ def on_llm_start(
}
for prompt in prompts
]

client = sentry_sdk.get_client()
scope = sentry_sdk.get_current_scope()
messages_data = truncate_and_annotate_messages(
normalized_messages, span, scope
messages_data = (
normalized_messages
if client.options.get("stream_gen_ai_spans", False)
else truncate_and_annotate_messages(
normalized_messages, span, scope
)
)
if messages_data is not None:
set_data_normalized(
Expand Down Expand Up @@ -463,9 +469,15 @@ def on_chat_model_start(
self._normalize_langchain_message(message)
)
normalized_messages = normalize_message_roles(normalized_messages)

client = sentry_sdk.get_client()
scope = sentry_sdk.get_current_scope()
messages_data = truncate_and_annotate_messages(
normalized_messages, span, scope
messages_data = (
normalized_messages
if client.options.get("stream_gen_ai_spans", False)
else truncate_and_annotate_messages(
normalized_messages, span, scope
)
)
if messages_data is not None:
set_data_normalized(
Expand Down Expand Up @@ -992,9 +1004,15 @@ def new_invoke(self: "Any", *args: "Any", **kwargs: "Any") -> "Any":
and integration.include_prompts
):
normalized_messages = normalize_message_roles([input])

client = sentry_sdk.get_client()
scope = sentry_sdk.get_current_scope()
messages_data = truncate_and_annotate_messages(
normalized_messages, span, scope
messages_data = (
normalized_messages
if client.options.get("stream_gen_ai_spans", False)
else truncate_and_annotate_messages(
normalized_messages, span, scope
)
)
if messages_data is not None:
set_data_normalized(
Expand Down Expand Up @@ -1049,9 +1067,13 @@ def new_stream(self: "Any", *args: "Any", **kwargs: "Any") -> "Any":
and integration.include_prompts
):
normalized_messages = normalize_message_roles([input])

client = sentry_sdk.get_client()
scope = sentry_sdk.get_current_scope()
messages_data = truncate_and_annotate_messages(
normalized_messages, span, scope
messages_data = (
normalized_messages
if client.options.get("stream_gen_ai_spans", False)
else truncate_and_annotate_messages(normalized_messages, span, scope)
)
if messages_data is not None:
set_data_normalized(
Expand Down
20 changes: 16 additions & 4 deletions sentry_sdk/integrations/langgraph.py
Original file line number Diff line number Diff line change
Expand Up @@ -181,9 +181,15 @@ def new_invoke(self: "Any", *args: "Any", **kwargs: "Any") -> "Any":
input_messages = _parse_langgraph_messages(args[0])
if input_messages:
normalized_input_messages = normalize_message_roles(input_messages)

client = sentry_sdk.get_client()
scope = sentry_sdk.get_current_scope()
messages_data = truncate_and_annotate_messages(
normalized_input_messages, span, scope
messages_data = (
normalized_input_messages
if client.options.get("stream_gen_ai_spans", False)
else truncate_and_annotate_messages(
normalized_input_messages, span, scope
)
)
if messages_data is not None:
set_data_normalized(
Expand Down Expand Up @@ -234,9 +240,15 @@ async def new_ainvoke(self: "Any", *args: "Any", **kwargs: "Any") -> "Any":
input_messages = _parse_langgraph_messages(args[0])
if input_messages:
normalized_input_messages = normalize_message_roles(input_messages)

client = sentry_sdk.get_client()
scope = sentry_sdk.get_current_scope()
messages_data = truncate_and_annotate_messages(
normalized_input_messages, span, scope
messages_data = (
normalized_input_messages
if client.options.get("stream_gen_ai_spans", False)
else truncate_and_annotate_messages(
normalized_input_messages, span, scope
)
)
if messages_data is not None:
set_data_normalized(
Expand Down
14 changes: 11 additions & 3 deletions sentry_sdk/integrations/litellm.py
Original file line number Diff line number Diff line change
Expand Up @@ -119,8 +119,11 @@ def _input_callback(kwargs: "Dict[str, Any]") -> None:
if isinstance(embedding_input, list)
else [embedding_input]
)
messages_data = truncate_and_annotate_embedding_inputs(
input_list, span, scope
client = sentry_sdk.get_client()
messages_data = (
input_list
if client.options.get("stream_gen_ai_spans", False)
else truncate_and_annotate_embedding_inputs(input_list, span, scope)
)
if messages_data is not None:
set_data_normalized(
Expand All @@ -133,9 +136,14 @@ def _input_callback(kwargs: "Dict[str, Any]") -> None:
# For chat, look for the 'messages' parameter
messages = kwargs.get("messages", [])
if messages:
client = sentry_sdk.get_client()
scope = sentry_sdk.get_current_scope()
messages = _convert_message_parts(messages)
messages_data = truncate_and_annotate_messages(messages, span, scope)
messages_data = (
messages
if client.options.get("stream_gen_ai_spans", False)
else truncate_and_annotate_messages(messages, span, scope)
)
if messages_data is not None:
set_data_normalized(
span,
Expand Down
46 changes: 38 additions & 8 deletions sentry_sdk/integrations/openai.py
Original file line number Diff line number Diff line change
Expand Up @@ -398,8 +398,13 @@ def _set_responses_api_input_data(

if isinstance(messages, str):
normalized_messages = normalize_message_roles([messages]) # type: ignore
client = sentry_sdk.get_client()
scope = sentry_sdk.get_current_scope()
messages_data = truncate_and_annotate_messages(normalized_messages, span, scope)
messages_data = (
normalized_messages
if client.options.get("stream_gen_ai_spans", False)
else truncate_and_annotate_messages(normalized_messages, span, scope)
)
if messages_data is not None:
set_data_normalized(
span, SPANDATA.GEN_AI_REQUEST_MESSAGES, messages_data, unpack=False
Expand All @@ -413,8 +418,13 @@ def _set_responses_api_input_data(
]
if len(non_system_messages) > 0:
normalized_messages = normalize_message_roles(non_system_messages)
client = sentry_sdk.get_client()
scope = sentry_sdk.get_current_scope()
messages_data = truncate_and_annotate_messages(normalized_messages, span, scope)
messages_data = (
normalized_messages
if client.options.get("stream_gen_ai_spans", False)
else truncate_and_annotate_messages(normalized_messages, span, scope)
)
if messages_data is not None:
set_data_normalized(
span, SPANDATA.GEN_AI_REQUEST_MESSAGES, messages_data, unpack=False
Expand Down Expand Up @@ -472,8 +482,13 @@ def _set_completions_api_input_data(

if isinstance(messages, str):
normalized_messages = normalize_message_roles([messages]) # type: ignore
client = sentry_sdk.get_client()
scope = sentry_sdk.get_current_scope()
messages_data = truncate_and_annotate_messages(normalized_messages, span, scope)
messages_data = (
normalized_messages
if client.options.get("stream_gen_ai_spans", False)
else truncate_and_annotate_messages(normalized_messages, span, scope)
)
if messages_data is not None:
set_data_normalized(
span, SPANDATA.GEN_AI_REQUEST_MESSAGES, messages_data, unpack=False
Expand Down Expand Up @@ -503,8 +518,13 @@ def _set_completions_api_input_data(
]
if len(non_system_messages) > 0:
normalized_messages = normalize_message_roles(non_system_messages)
client = sentry_sdk.get_client()
scope = sentry_sdk.get_current_scope()
messages_data = truncate_and_annotate_messages(normalized_messages, span, scope)
messages_data = (
normalized_messages
if client.options.get("stream_gen_ai_spans", False)
else truncate_and_annotate_messages(normalized_messages, span, scope)
)
if messages_data is not None:
set_data_normalized(
span, SPANDATA.GEN_AI_REQUEST_MESSAGES, messages_data, unpack=False
Expand Down Expand Up @@ -539,9 +559,14 @@ def _set_embeddings_input_data(
set_data_normalized(span, SPANDATA.GEN_AI_OPERATION_NAME, "embeddings")

normalized_messages = normalize_message_roles([messages]) # type: ignore
client = sentry_sdk.get_client()
scope = sentry_sdk.get_current_scope()
messages_data = truncate_and_annotate_embedding_inputs(
normalized_messages, span, scope
messages_data = (
normalized_messages
if client.options.get("stream_gen_ai_spans", False)
else truncate_and_annotate_embedding_inputs(
normalized_messages, span, scope
)
)
if messages_data is not None:
set_data_normalized(
Expand All @@ -560,9 +585,14 @@ def _set_embeddings_input_data(

if len(messages) > 0:
normalized_messages = normalize_message_roles(messages)
client = sentry_sdk.get_client()
scope = sentry_sdk.get_current_scope()
messages_data = truncate_and_annotate_embedding_inputs(
normalized_messages, span, scope
messages_data = (
normalized_messages
if client.options.get("stream_gen_ai_spans", False)
else truncate_and_annotate_embedding_inputs(
normalized_messages, span, scope
)
)
if messages_data is not None:
set_data_normalized(
Expand Down
7 changes: 5 additions & 2 deletions sentry_sdk/integrations/openai_agents/spans/invoke_agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,9 +63,12 @@ def invoke_agent_span(

if len(messages) > 0:
normalized_messages = normalize_message_roles(messages)
client = sentry_sdk.get_client()
scope = sentry_sdk.get_current_scope()
messages_data = truncate_and_annotate_messages(
normalized_messages, span, scope
messages_data = (
normalized_messages
if client.options.get("stream_gen_ai_spans", False)
else truncate_and_annotate_messages(normalized_messages, span, scope)
)
if messages_data is not None:
set_data_normalized(
Expand Down
7 changes: 6 additions & 1 deletion sentry_sdk/integrations/openai_agents/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -173,8 +173,13 @@ def _set_input_data(
)

normalized_messages = normalize_message_roles(request_messages)
client = sentry_sdk.get_client()
scope = sentry_sdk.get_current_scope()
messages_data = truncate_and_annotate_messages(normalized_messages, span, scope)
messages_data = (
normalized_messages
if client.options.get("stream_gen_ai_spans", False)
else truncate_and_annotate_messages(normalized_messages, span, scope)
)
if messages_data is not None:
set_data_normalized(
span,
Expand Down
7 changes: 5 additions & 2 deletions sentry_sdk/integrations/pydantic_ai/spans/ai_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -182,9 +182,12 @@ def _set_input_messages(span: "sentry_sdk.tracing.Span", messages: "Any") -> Non

if formatted_messages:
normalized_messages = normalize_message_roles(formatted_messages)
client = sentry_sdk.get_client()
scope = sentry_sdk.get_current_scope()
messages_data = truncate_and_annotate_messages(
normalized_messages, span, scope
messages_data = (
normalized_messages
if client.options.get("stream_gen_ai_spans", False)
else truncate_and_annotate_messages(normalized_messages, span, scope)
)
set_data_normalized(
span, SPANDATA.GEN_AI_REQUEST_MESSAGES, messages_data, unpack=False
Expand Down
7 changes: 5 additions & 2 deletions sentry_sdk/integrations/pydantic_ai/spans/invoke_agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -122,9 +122,12 @@ def invoke_agent_span(

if messages:
normalized_messages = normalize_message_roles(messages)
client = sentry_sdk.get_client()
scope = sentry_sdk.get_current_scope()
messages_data = truncate_and_annotate_messages(
normalized_messages, span, scope
messages_data = (
normalized_messages
if client.options.get("stream_gen_ai_spans", False)
else truncate_and_annotate_messages(normalized_messages, span, scope)
)
set_data_normalized(
span, SPANDATA.GEN_AI_REQUEST_MESSAGES, messages_data, unpack=False
Expand Down
Loading
Loading