Skip to content

Commit 6cf2a02

Browse files
authored
openai: apply instrumentation to beta.chat.Completions.parse (elastic#65)
1 parent 662f353 commit 6cf2a02

File tree

2 files changed

+1579
-2
lines changed

2 files changed

+1579
-2
lines changed

instrumentation/elastic-opentelemetry-instrumentation-openai/src/opentelemetry/instrumentation/openai/__init__.py

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)