1- import sys
2-
31import sentry_sdk
42from sentry_sdk .integrations import DidNotEnable , Integration
53from sentry_sdk .utils import event_from_exception
64
75from typing import Any
86
97try :
10- import agents
118 from agents import (
129 Agent ,
1310 RunContextWrapper ,
1411 RunHooks ,
1512 Tool ,
1613 Usage ,
1714 )
18- from agents .tracing .setup import TraceProvider
19- from agents .tracing .spans import Span , TSpanData
20- from agents .tracing .traces import Trace
2115
2216except ImportError :
2317 raise DidNotEnable ("OpenAI Agents not installed" )
@@ -33,48 +27,6 @@ def _capture_exception(exc):
3327 sentry_sdk .capture_event (event , hint = hint )
3428
3529
36- class SentryTraceProvider :
37- def __init__ (self , original : TraceProvider ):
38- self .original = original
39-
40- def create_trace (
41- self ,
42- name : str ,
43- trace_id : str | None = None ,
44- disabled : bool = False ,
45- ** kwargs : Any ,
46- ) -> Trace :
47- print (f"[SentryTraceProvider] create_trace: { name } " )
48- trace = self .original .create_trace (
49- name , trace_id = trace_id , disabled = disabled , ** kwargs
50- )
51- return trace
52-
53- def create_span (
54- self ,
55- span_data : TSpanData ,
56- span_id : str | None = None ,
57- parent : Trace | Span [Any ] | None = None ,
58- disabled : bool = False ,
59- ) -> Span [TSpanData ]:
60- print (f"[SentryTraceProvider] create_span: { span_data } " )
61- span = self .original .create_span (span_data , span_id , parent , disabled )
62-
63- # current_span = Scope.get_current_span()
64- # current_trace = Scope.get_current_trace()
65-
66- # sentry_span = sentry_sdk.start_span(
67- # op=AGENTS_TO_OP[span_data.__class__.__name__],
68- # name=AGENTS_TO_NAME[span_data.__class__.__name__],
69- # attributes=span_data.export()
70- # )
71- # sentry_span.finish()
72- return span
73-
74- def __getattr__ (self , item : Any ) -> Any :
75- return getattr (self .original , item )
76-
77-
7830class SentryRunHooks (RunHooks ):
7931 def __init__ (self ):
8032 self .event_counter = 0
@@ -148,22 +100,6 @@ async def on_handoff(
148100 self .agent_span = None
149101
150102
151- def _patch_tracer_provider ():
152- # Monkey path trace provider of openai-agents
153- name = "GLOBAL_TRACE_PROVIDER"
154- original = getattr (agents .tracing , name )
155- already_wrapped = isinstance (original , SentryTraceProvider )
156- if not already_wrapped :
157- wrapper = SentryTraceProvider (original )
158- for module_name , mod in sys .modules .items ():
159- if module_name .startswith ("agents" ):
160- try :
161- if getattr (mod , name , None ) is original :
162- setattr (mod , name , wrapper )
163- except Exception : # pragma: no cover
164- pass
165-
166-
167103class OpenAIAgentsIntegration (Integration ):
168104 identifier = "openai_agents"
169105 origin = f"auto.ai.{ identifier } "
@@ -174,6 +110,4 @@ class OpenAIAgentsIntegration(Integration):
174110 @staticmethod
175111 def setup_once ():
176112 # type: () -> None
177- # _patch_tracer_provider()
178-
179113 pass
0 commit comments