Module: RubyLLM::Providers::VertexAI::Videos

Included in:
Gemini
Defined in:
lib/ruby_llm/providers/vertexai/videos.rb

Overview

Veo prediction jobs with inline or Cloud Storage video output.

Instance Method Summary collapse

Instance Method Details

#download_video(job) ⇒ Object

Raises:



21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/ruby_llm/providers/vertexai/videos.rb', line 21

def download_video(job)
  video = generated_video(job.raw)
  raise Error, 'Vertex AI returned no video' unless video

  data = if video['bytesBase64Encoded']
           Base64.decode64(video['bytesBase64Encoded'])
         else
           @provider.download_file(video.fetch('gcsUri'))
         end

  Video.new(data:, mime_type: video['mimeType'] || 'video/mp4', model: job.model, raw: job.raw)
end

#refresh_video_job(job) ⇒ Object



16
17
18
19
# File 'lib/ruby_llm/providers/vertexai/videos.rb', line 16

def refresh_video_job(job)
  response = @connection.post video_job_url(job), { operationName: job.id }
  parse_video_job_status(response, job:)
end

#video_job_url(job) ⇒ Object



12
13
14
# File 'lib/ruby_llm/providers/vertexai/videos.rb', line 12

def video_job_url(job)
  "#{job.id.split('/operations/').first}:fetchPredictOperation"
end

#video_urlObject



8
9
10
# File 'lib/ruby_llm/providers/vertexai/videos.rb', line 8

def video_url
  "#{@provider.model_path(model_id(@model))}:predictLongRunning"
end