@@ -99,7 +99,9 @@ def _instrument(self, **kwargs):
9999
100100 register_post_import_hook (self ._patch , "openai" )
101101
102- def _patch (self , _module ):
102+ def _patch (self , module ):
103+ version = tuple ([int (x ) for x in getattr (getattr (module , "version" ), "VERSION" ).split ("." )])
104+ self .beta_chat_available = version >= (1 , 40 , 0 )
103105 wrap_function_wrapper (
104106 "openai.resources.chat.completions" ,
105107 "Completions.create" ,
@@ -110,6 +112,17 @@ def _patch(self, _module):
110112 "AsyncCompletions.create" ,
111113 self ._async_chat_completion_wrapper ,
112114 )
115+ if self .beta_chat_available :
116+ wrap_function_wrapper (
117+ "openai.resources.beta.chat.completions" ,
118+ "Completions.parse" ,
119+ self ._chat_completion_wrapper ,
120+ )
121+ wrap_function_wrapper (
122+ "openai.resources.beta.chat.completions" ,
123+ "AsyncCompletions.parse" ,
124+ self ._async_chat_completion_wrapper ,
125+ )
113126 wrap_function_wrapper (
114127 "openai.resources.embeddings" ,
115128 "Embeddings.create" ,
@@ -128,11 +141,14 @@ def _uninstrument(self, **kwargs):
128141
129142 unwrap (openai .resources .chat .completions .Completions , "create" )
130143 unwrap (openai .resources .chat .completions .AsyncCompletions , "create" )
144+ if self .beta_chat_available :
145+ unwrap (openai .resources .beta .chat .completions .Completions , "parse" )
146+ unwrap (openai .resources .beta .chat .completions .AsyncCompletions , "parse" )
131147 unwrap (openai .resources .embeddings .Embeddings , "create" )
132148 unwrap (openai .resources .embeddings .AsyncEmbeddings , "create" )
133149
134150 def _chat_completion_wrapper (self , wrapped , instance , args , kwargs ):
135- logger .debug (f"openai.resources.chat.completions.Completions.create kwargs: { kwargs } " )
151+ logger .debug (f"{ wrapped } kwargs: { kwargs } " )
136152
137153 span_attributes = _get_attributes_from_wrapper (instance , kwargs )
138154 event_attributes = _get_event_attributes ()
0 commit comments