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
7 changes: 1 addition & 6 deletions sentry_sdk/integrations/openai_agents/patches/runner.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,8 @@
import sentry_sdk
from sentry_sdk.consts import SPANDATA
from sentry_sdk.integrations import DidNotEnable
from sentry_sdk.scope import should_send_default_pii
from sentry_sdk.utils import (
capture_internal_exceptions,
has_data_collection_enabled,
reraise,
)

Expand Down Expand Up @@ -56,10 +54,7 @@ async def on_tool_start(
context._sentry_execute_tool_span = span

client = sentry_sdk.get_client()
if has_data_collection_enabled(client.options):
if not client.options["data_collection"]["gen_ai"]["inputs"]:
return
elif not should_send_default_pii():
if not client.options["data_collection"]["gen_ai"]["inputs"]:
return

span.set_attribute(SPANDATA.GEN_AI_TOOL_INPUT, context.tool_arguments)
Expand Down
11 changes: 1 addition & 10 deletions sentry_sdk/integrations/openai_agents/spans/ai_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
from sentry_sdk.consts import OP, SPANDATA
from sentry_sdk.integrations import DidNotEnable
from sentry_sdk.traces import Span, _AgentFrameworkChatGenerationContext
from sentry_sdk.utils import has_data_collection_enabled

try:
from agents import (
Expand Down Expand Up @@ -219,15 +218,7 @@ def ai_client_context(

_set_agent_data(context.span, agent)

if has_data_collection_enabled(client_options):
if client_options["data_collection"]["gen_ai"]["inputs"]:
context.span.set_attribute(
SPANDATA.GEN_AI_TOOL_DEFINITIONS,
json.dumps(_transform_tool_definitions(agent.tools)),
)
else:
# This is set unconditionally prior to data collection being introduced.
# Remove this block once data collection is fully rolled out
if client_options["data_collection"]["gen_ai"]["inputs"]:
context.span.set_attribute(
SPANDATA.GEN_AI_TOOL_DEFINITIONS,
json.dumps(_transform_tool_definitions(agent.tools)),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,7 @@

import sentry_sdk
from sentry_sdk.consts import OP, SPANDATA
from sentry_sdk.scope import should_send_default_pii
from sentry_sdk.traces import Span, SpanStatus
from sentry_sdk.utils import has_data_collection_enabled

from ..consts import SPAN_ORIGIN
from ..utils import _set_agent_data
Expand Down Expand Up @@ -45,10 +43,7 @@ def update_execute_tool_span(
):
span.status = SpanStatus.ERROR

if has_data_collection_enabled(client.options):
if client.options["data_collection"]["gen_ai"]["outputs"]:
span.set_attribute(SPANDATA.GEN_AI_TOOL_OUTPUT, result)
elif should_send_default_pii():
if client.options["data_collection"]["gen_ai"]["outputs"]:
span.set_attribute(SPANDATA.GEN_AI_TOOL_OUTPUT, result)

# Add conversation ID from agent
Expand Down
19 changes: 3 additions & 16 deletions sentry_sdk/integrations/openai_agents/spans/invoke_agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,8 @@
set_data_normalized,
)
from sentry_sdk.consts import OP, SPANDATA
from sentry_sdk.scope import should_send_default_pii
from sentry_sdk.traces import Span
from sentry_sdk.utils import has_data_collection_enabled, safe_serialize
from sentry_sdk.utils import safe_serialize

from ..consts import SPAN_ORIGIN
from ..utils import _set_agent_data
Expand All @@ -33,14 +32,7 @@ def invoke_agent_span(
},
)

record_inputs = False
if has_data_collection_enabled(client_options):
if client_options["data_collection"]["gen_ai"]["inputs"]:
record_inputs = True
elif should_send_default_pii():
record_inputs = True

if record_inputs:
if client_options["data_collection"]["gen_ai"]["inputs"]:
messages = []
if agent.instructions:
message = (
Expand Down Expand Up @@ -89,12 +81,7 @@ def update_invoke_agent_span(
output: "Any" = None,
) -> None:
client = sentry_sdk.get_client()
if has_data_collection_enabled(client.options):
if client.options["data_collection"]["gen_ai"]["outputs"]:
set_data_normalized(
span, SPANDATA.GEN_AI_RESPONSE_TEXT, output, unpack=False
)
elif should_send_default_pii():
if client.options["data_collection"]["gen_ai"]["outputs"]:
set_data_normalized(span, SPANDATA.GEN_AI_RESPONSE_TEXT, output, unpack=False)

# Add conversation ID from agent
Expand Down
19 changes: 5 additions & 14 deletions sentry_sdk/integrations/openai_agents/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,9 @@
)
from sentry_sdk.consts import SPANDATA
from sentry_sdk.integrations import DidNotEnable
from sentry_sdk.scope import should_send_default_pii
from sentry_sdk.traces import Span
from sentry_sdk.utils import (
event_from_exception,
has_data_collection_enabled,
safe_serialize,
)

Expand Down Expand Up @@ -109,11 +107,9 @@ def _set_input_data(
get_response_kwargs: "dict[str, Any]",
) -> None:
client = sentry_sdk.get_client()
if has_data_collection_enabled(client.options):
if not client.options["data_collection"]["gen_ai"]["inputs"]:
return
elif not should_send_default_pii():
if not client.options["data_collection"]["gen_ai"]["inputs"]:
return

request_messages = []

messages: "str | list[TResponseInputItem]" = get_response_kwargs.get("input", [])
Expand Down Expand Up @@ -184,13 +180,8 @@ def _set_input_data(

def _set_output_data(span: "Span", result: "Any") -> None:
client = sentry_sdk.get_client()
record_outputs = False
if has_data_collection_enabled(client.options):
record_outputs = client.options["data_collection"]["gen_ai"]["outputs"]
elif should_send_default_pii():
record_outputs = True

if not record_outputs:
if not client.options["data_collection"]["gen_ai"]["outputs"]:
return

output_messages: "dict[str, list[Any]]" = {
Expand All @@ -209,13 +200,13 @@ def _set_output_data(span: "Span", result: "Any") -> None:
# Unknown output message type, just return the json
output_messages["response"].append(output_message.dict())

if record_outputs and len(output_messages["tool"]) > 0:
if len(output_messages["tool"]) > 0:
span.set_attribute(
SPANDATA.GEN_AI_RESPONSE_TOOL_CALLS,
safe_serialize(output_messages["tool"]),
)

if record_outputs and len(output_messages["response"]) > 0:
if len(output_messages["response"]) > 0:
set_data_normalized(
span, SPANDATA.GEN_AI_RESPONSE_TEXT, output_messages["response"]
)
Loading
Loading