Class: Google::Genai::LiveMusic

Inherits:
Object
  • Object
show all
Defined in:
lib/google/genai/live_music.rb

Instance Method Summary collapse

Constructor Details

#initialize(api_client) ⇒ LiveMusic



9
10
11
# File 'lib/google/genai/live_music.rb', line 9

def initialize(api_client)
  @api_client = api_client
end

Instance Method Details

#connect(model:) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/google/genai/live_music.rb', line 13

def connect(model:)
  raise "Live Music API is not supported for Vertex AI yet" if @api_client.vertexai

  base_url = "wss://generativelanguage.googleapis.com"
  version = @api_client.instance_variable_get(:@http_options)&.[](:api_version) || 'v1beta'
  api_key = @api_client.api_key
  
  uri = "#{base_url}/ws/google.ai.generativelanguage.#{version}.GenerativeService.BidiGenerateMusic?key=#{api_key}"
  
  ws = WebSocket::Client::Simple.connect(uri)
  
  session = MusicSession.new(ws)
  
  setup_message = {
    setup: {
      model: "models/#{model}"
    }
  }
  ws.send(setup_message.to_json)
  
  sleep 0.1 until ws.open?
  
  yield session
ensure
  ws.close if ws&.open?
end