Skip to content

Commit 9aba92d

Browse files
authored
fix(openai): add support for realtime api (websockets) (#3511)
1 parent 5da12d8 commit 9aba92d

File tree

4 files changed

+1848
-0
lines changed

4 files changed

+1848
-0
lines changed

packages/opentelemetry-instrumentation-openai/opentelemetry/instrumentation/openai/v1/__init__.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@
3333
responses_cancel_wrapper,
3434
responses_get_or_create_wrapper,
3535
)
36+
from opentelemetry.instrumentation.openai.v1.realtime_wrappers import (
37+
realtime_connect_wrapper,
38+
)
3639

3740
from opentelemetry.instrumentation.openai.version import __version__
3841
from opentelemetry.instrumentation.utils import unwrap
@@ -329,6 +332,17 @@ def _instrument(self, **kwargs):
329332
"AsyncResponses.cancel",
330333
async_responses_cancel_wrapper(tracer),
331334
)
335+
# Realtime API (beta, WebSocket-based)
336+
self._try_wrap(
337+
"openai.resources.beta.realtime.realtime",
338+
"Realtime.connect",
339+
realtime_connect_wrapper(tracer),
340+
)
341+
self._try_wrap(
342+
"openai.resources.beta.realtime.realtime",
343+
"AsyncRealtime.connect",
344+
realtime_connect_wrapper(tracer),
345+
)
332346

333347
def _uninstrument(self, **kwargs):
334348
unwrap("openai.resources.chat.completions", "Completions.create")
@@ -354,5 +368,7 @@ def _uninstrument(self, **kwargs):
354368
unwrap("openai.resources.responses", "AsyncResponses.create")
355369
unwrap("openai.resources.responses", "AsyncResponses.retrieve")
356370
unwrap("openai.resources.responses", "AsyncResponses.cancel")
371+
unwrap("openai.resources.beta.realtime.realtime", "Realtime.connect")
372+
unwrap("openai.resources.beta.realtime.realtime", "AsyncRealtime.connect")
357373
except ImportError:
358374
pass

0 commit comments

Comments
 (0)