[bot] OpenAI Realtime API (WebSocket) not instrumented
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 45/100
- issue の種類
- 機能追加
- 明瞭さ
- おおむね明確
- 活発さ
- 静か
- 技術スタック
- java
- 領域
- api, observability
調査の方向性
openai_2_15_0 モジュールから始めて、TracingHttpClient が HttpClient をどのようにラップしているか、また client.beta().realtime() が WebSocket 接続をどのように確立しているかを調査します。安定した WebSocket または RealtimeClient のフックを特定し、セッションイベントとデルタをどのように取得できるかを確認します。安定したフックが存在しない場合はその制限が文書化され、存在する場合は Realtime セッションが入力/出力 JSON と利用可能なトークンメトリクスを含む span を出力すれば完了です。
索引モデルが issue の本文から書いたものです。
説明
Gap description
The openai-java SDK v2.15.0+ exposes a WebSocket-based Realtime API under client.beta().realtime(). The current instrumentation in openai_2_15_0 works by wrapping the SDK's HttpClient interface (execute / executeAsync), which only intercepts HTTP/HTTPS requests. WebSocket connections are established through a separate code path and are never passed through TracingHttpClient, so no span is created for any Realtime API session.
Affected surface
| SDK | API surface | Transport |
|---|---|---|
com.openai:openai-java:2.15.0+ |
client.beta().realtime() |
WebSocket (WSS) |
Why it matters
Realtime API sessions carry voice and text generation work that is billable and latency-sensitive — exactly the kind of LLM execution Braintrust is designed to observe. Without instrumentation, users see a complete blind spot for this API even when all other OpenAI calls are traced.
Analogous gap already tracked
Issue #120 tracks the same problem for the Google GenAI Live (streaming) API, which also uses a persistent bidirectional connection that bypasses the HTTP-layer hook.
Suggested approach
- Identify the WebSocket-abstraction interface in
openai-java(likelyWebSocketor aRealtimeClient). - Use ByteBuddy to intercept session open/message/close events, or wrap the WebSocket factory the same way
TracingHttpClientwrapsHttpClient. - Accumulate audio/text deltas and emit a span on session close with
braintrust.input_json/braintrust.output_jsonand token metrics where available.
Notes
- This gap exists only in the
openai_2_15_0module; no other provider currently wraps a WebSocket transport. - If the upstream SDK does not yet expose a stable hook point, a note in the docs would at minimum set user expectations.
- 主要言語
- Java
- スター
- 21
- フォーク
- 5
- 平均マージ
- 2日 34分
- マージ済み PR(30日)
- 6
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
braintrustdata/braintrust-sdk-java のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
braintrustdata/braintrust-sdk-java の issue をすべて見る
似ている issue
-
難易度 1/5 1時間未満 初心者へのやさしさ 90/100
bancolombia/scaffold-clean-architecture#1002 ·
メンテナーはふだん 1 日以内に返信
-
CalendarEventAttendance/get returns eventAttendanceStatus while the doc says attendanceStatus対応中かも @chibenwa が今日担当しました。 オープンbug claude
難易度 1/5 1時間未満 初心者へのやさしさ 90/100
linagora/tmail-backend#2697 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
apache/skywalking#14120 ·
メンテナーはふだん 1 日以内に返信
-
[BUG] Case-insensitive search suggestions miss items when the JVM default locale is Turkish対応中かも @thswlsqls が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
メンテナーはふだん 1 日以内に返信
-
enhancement
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
HMCL-dev/HMCL#6943 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信