You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The OpenAI Ruby SDK exposes a stable videos resource for Sora video generation (client.videos.create, edit, extend_, remix). None of these generative execution methods are instrumented by the Braintrust Ruby SDK. This is the same class of gap as the already-filed Images API issue (#147), but for video generation.
What is missing
The official openai gem provides OpenAI::Resources::Videos with four generative execution methods:
client.videos.create(prompt:, model:, seconds:, size:, ...) — Initiates a video generation job from a text prompt. Uses Sora-2 or Sora-2-pro models. Returns OpenAI::Models::Video with a job ID and status.
client.videos.edit(video_id:, prompt:, ...) — Edits an existing video using a text prompt.
client.videos.extend_(video_id:, ...) — Extends a completed video with additional generated segments.
client.videos.remix(video_id:, prompt:, ...) — Remixes a completed video using a new prompt.
None of these are patched. The existing openai patcher (lib/braintrust/contrib/openai/patcher.rb) registers ChatPatcher, ResponsesPatcher, and ModerationsPatcher only.
What a span should capture
Video generation spans (client.videos.create) should capture:
Video editing spans (edit, remix) follow the same pattern with an additional video_id input.
Note: The Videos API is async/job-based — create returns immediately with a job ID; video generation completes asynchronously. Instrumentation of create captures the initiation; retrieve polls are CRUD and out of scope.
Summary
The OpenAI Ruby SDK exposes a stable
videosresource for Sora video generation (client.videos.create,edit,extend_,remix). None of these generative execution methods are instrumented by the Braintrust Ruby SDK. This is the same class of gap as the already-filed Images API issue (#147), but for video generation.What is missing
The official
openaigem providesOpenAI::Resources::Videoswith four generative execution methods:client.videos.create(prompt:, model:, seconds:, size:, ...)— Initiates a video generation job from a text prompt. Uses Sora-2 or Sora-2-pro models. ReturnsOpenAI::Models::Videowith a job ID and status.client.videos.edit(video_id:, prompt:, ...)— Edits an existing video using a text prompt.client.videos.extend_(video_id:, ...)— Extends a completed video with additional generated segments.client.videos.remix(video_id:, prompt:, ...)— Remixes a completed video using a new prompt.None of these are patched. The existing
openaipatcher (lib/braintrust/contrib/openai/patcher.rb) registersChatPatcher,ResponsesPatcher, andModerationsPatcheronly.What a span should capture
Video generation spans (
client.videos.create) should capture:sora-2,sora-2-pro), seconds (clip duration), size (resolution), provider (openai), endpoint (/v1/videos/generations)Videoobject'sidandstatusVideo editing spans (
edit,remix) follow the same pattern with an additionalvideo_idinput.Note: The Videos API is async/job-based —
createreturns immediately with a job ID; video generation completes asynchronously. Instrumentation ofcreatecaptures the initiation;retrievepolls are CRUD and out of scope.Braintrust docs status
not_found— The Braintrust OpenAI integration docs at https://www.braintrust.dev/docs/integrations/ai-providers/openai and https://www.braintrust.dev/docs/guides/tracing do not mention video generation or the Sora API. All documented examples cover chat completions and audio.Upstream sources
Videosresource: https://github.com/openai/openai-ruby/blob/main/lib/openai/resources/videos.rb — exposescreate,edit,extend_,remix,retrieve,list,delete,download_contentLocal repo files inspected
lib/braintrust/contrib/openai/patcher.rb— definesChatPatcher,ResponsesPatcher,ModerationsPatcher; noVideosPatcherlib/braintrust/contrib/openai/instrumentation/— containschat.rb,responses.rb,moderations.rb,common.rb; novideos.rbvideo,sora,Videosacrosslib/braintrust/returns zero matches