Skip to content
Merged
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
13 changes: 6 additions & 7 deletions sentry_sdk/integrations/anthropic.py
Original file line number Diff line number Diff line change
Expand Up @@ -547,13 +547,12 @@ def _set_common_input_data(

role_normalized_messages = normalize_message_roles(normalized_messages)

if role_normalized_messages is not None:
set_data_normalized(
span,
SPANDATA.GEN_AI_REQUEST_MESSAGES,
role_normalized_messages,
unpack=False,
)
set_data_normalized(
span,
SPANDATA.GEN_AI_REQUEST_MESSAGES,
role_normalized_messages,
unpack=False,
)


def _set_create_input_data(
Expand Down
14 changes: 6 additions & 8 deletions sentry_sdk/integrations/google_genai/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -967,14 +967,12 @@ def set_span_data_for_request(

if messages:
normalized_messages = normalize_message_roles(messages)
client = sentry_sdk.get_client()
if normalized_messages is not None:
set_data_normalized(
span,
SPANDATA.GEN_AI_REQUEST_MESSAGES,
normalized_messages,
unpack=False,
)
set_data_normalized(
span,
SPANDATA.GEN_AI_REQUEST_MESSAGES,
normalized_messages,
unpack=False,
)

# Extract parameters directly from config (not nested under generation_config)
for param, span_key in [
Expand Down
56 changes: 24 additions & 32 deletions sentry_sdk/integrations/langchain.py
Original file line number Diff line number Diff line change
Expand Up @@ -422,14 +422,12 @@ def on_llm_start(
}
for prompt in prompts
]

if normalized_messages is not None:
set_data_normalized(
span,
SPANDATA.GEN_AI_REQUEST_MESSAGES,
normalized_messages,
unpack=False,
)
set_data_normalized(
span,
SPANDATA.GEN_AI_REQUEST_MESSAGES,
normalized_messages,
unpack=False,
)

def on_chat_model_start(
self: "SentryLangchainCallback",
Expand Down Expand Up @@ -528,14 +526,12 @@ def on_chat_model_start(
self._normalize_langchain_message(message)
)
normalized_messages = normalize_message_roles(normalized_messages)

if normalized_messages is not None:
set_data_normalized(
span,
SPANDATA.GEN_AI_REQUEST_MESSAGES,
normalized_messages,
unpack=False,
)
set_data_normalized(
span,
SPANDATA.GEN_AI_REQUEST_MESSAGES,
normalized_messages,
unpack=False,
)

def on_chat_model_end(
self: "SentryLangchainCallback",
Expand Down Expand Up @@ -1143,14 +1139,12 @@ def new_invoke(self: "Any", *args: "Any", **kwargs: "Any") -> "Any":
input = result.get("input")
if input is not None and record_inputs:
normalized_messages = normalize_message_roles([input])

if normalized_messages is not None:
set_data_normalized(
span,
SPANDATA.GEN_AI_REQUEST_MESSAGES,
normalized_messages,
unpack=False,
)
set_data_normalized(
span,
SPANDATA.GEN_AI_REQUEST_MESSAGES,
normalized_messages,
unpack=False,
)

output = result.get("output")
if output is not None and record_outputs:
Expand Down Expand Up @@ -1199,14 +1193,12 @@ def new_stream(self: "Any", *args: "Any", **kwargs: "Any") -> "Any":
input = args[0].get("input") if len(args) >= 1 else None
if input is not None and record_inputs:
normalized_messages = normalize_message_roles([input])

if normalized_messages is not None:
set_data_normalized(
span,
SPANDATA.GEN_AI_REQUEST_MESSAGES,
normalized_messages,
unpack=False,
)
set_data_normalized(
span,
SPANDATA.GEN_AI_REQUEST_MESSAGES,
normalized_messages,
unpack=False,
)

# Run the agent
result = f(self, *args, **kwargs)
Expand Down
28 changes: 12 additions & 16 deletions sentry_sdk/integrations/langgraph.py
Original file line number Diff line number Diff line change
Expand Up @@ -159,14 +159,12 @@ def new_invoke(self: "Any", *args: "Any", **kwargs: "Any") -> "Any":
input_messages = _parse_langgraph_messages(args[0])
if input_messages and _should_record_inputs(integration):
normalized_input_messages = normalize_message_roles(input_messages)

if normalized_input_messages is not None:
set_data_normalized(
span,
SPANDATA.GEN_AI_REQUEST_MESSAGES,
normalized_input_messages,
unpack=False,
)
set_data_normalized(
span,
SPANDATA.GEN_AI_REQUEST_MESSAGES,
normalized_input_messages,
unpack=False,
)

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

Expand Down Expand Up @@ -204,14 +202,12 @@ async def new_ainvoke(self: "Any", *args: "Any", **kwargs: "Any") -> "Any":
input_messages = _parse_langgraph_messages(args[0])
if input_messages and _should_record_inputs(integration):
normalized_input_messages = normalize_message_roles(input_messages)

if normalized_input_messages is not None:
set_data_normalized(
span,
SPANDATA.GEN_AI_REQUEST_MESSAGES,
normalized_input_messages,
unpack=False,
)
set_data_normalized(
span,
SPANDATA.GEN_AI_REQUEST_MESSAGES,
normalized_input_messages,
unpack=False,
)

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

Expand Down
13 changes: 6 additions & 7 deletions sentry_sdk/integrations/litellm.py
Original file line number Diff line number Diff line change
Expand Up @@ -143,13 +143,12 @@ def _input_callback(kwargs: "Dict[str, Any]") -> None:
messages = kwargs.get("messages", [])
if messages:
messages = _convert_message_parts(messages)
if messages is not None:
set_data_normalized(
span,
SPANDATA.GEN_AI_REQUEST_MESSAGES,
messages,
unpack=False,
)
set_data_normalized(
span,
SPANDATA.GEN_AI_REQUEST_MESSAGES,
messages,
unpack=False,
)

# Record other parameters
params = {
Expand Down
52 changes: 24 additions & 28 deletions sentry_sdk/integrations/openai.py
Original file line number Diff line number Diff line change
Expand Up @@ -442,13 +442,12 @@ def _set_responses_api_input_data(
# Input was provided as a single string
if isinstance(messages, str):
normalized_messages = normalize_message_roles([messages]) # type: ignore
if normalized_messages is not None:
set_data_normalized(
span,
SPANDATA.GEN_AI_REQUEST_MESSAGES,
normalized_messages,
unpack=False,
)
set_data_normalized(
span,
SPANDATA.GEN_AI_REQUEST_MESSAGES,
normalized_messages,
unpack=False,
)
return

# Input was provided as a list (potentially a multi-turn conversation)
Expand All @@ -457,13 +456,12 @@ def _set_responses_api_input_data(
]
if len(non_system_messages) > 0:
normalized_messages = normalize_message_roles(non_system_messages) # type: ignore
if normalized_messages is not None:
set_data_normalized(
span,
SPANDATA.GEN_AI_REQUEST_MESSAGES,
normalized_messages,
unpack=False,
)
set_data_normalized(
span,
SPANDATA.GEN_AI_REQUEST_MESSAGES,
normalized_messages,
unpack=False,
)


def _set_completions_api_input_data(
Expand Down Expand Up @@ -537,13 +535,12 @@ def _set_completions_api_input_data(

if isinstance(messages, str):
normalized_messages = normalize_message_roles([messages]) # type: ignore
if normalized_messages is not None:
set_data_normalized(
span,
SPANDATA.GEN_AI_REQUEST_MESSAGES,
normalized_messages,
unpack=False,
)
set_data_normalized(
span,
SPANDATA.GEN_AI_REQUEST_MESSAGES,
normalized_messages,
unpack=False,
)
return

# dict special case following https://github.com/openai/openai-python/blob/3e0c05b84a2056870abf3bd6a5e7849020209cc3/src/openai/_utils/_transform.py#L194-L197
Expand All @@ -568,13 +565,12 @@ def _set_completions_api_input_data(
if len(non_system_messages) > 0:
normalized_messages = normalize_message_roles(non_system_messages) # type: ignore
client = sentry_sdk.get_client()
if normalized_messages is not None:
set_data_normalized(
span,
SPANDATA.GEN_AI_REQUEST_MESSAGES,
normalized_messages,
unpack=False,
)
set_data_normalized(
span,
SPANDATA.GEN_AI_REQUEST_MESSAGES,
normalized_messages,
unpack=False,
)


def _set_embeddings_input_data(
Expand Down
13 changes: 6 additions & 7 deletions sentry_sdk/integrations/openai_agents/spans/invoke_agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,13 +71,12 @@ def invoke_agent_span(

if len(messages) > 0:
normalized_messages = normalize_message_roles(messages)
if normalized_messages is not None:
set_data_normalized(
span,
SPANDATA.GEN_AI_REQUEST_MESSAGES,
normalized_messages,
unpack=False,
)
set_data_normalized(
span,
SPANDATA.GEN_AI_REQUEST_MESSAGES,
normalized_messages,
unpack=False,
)

_set_agent_data(span, agent)

Expand Down
13 changes: 6 additions & 7 deletions sentry_sdk/integrations/openai_agents/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -174,13 +174,12 @@ def _set_input_data(
)

normalized_messages = normalize_message_roles(request_messages)
if normalized_messages is not None:
set_data_normalized(
span,
SPANDATA.GEN_AI_REQUEST_MESSAGES,
normalized_messages,
unpack=False,
)
set_data_normalized(
span,
SPANDATA.GEN_AI_REQUEST_MESSAGES,
normalized_messages,
unpack=False,
)


def _set_output_data(span: "StreamedSpan", result: "Any") -> None:
Expand Down
Loading