Class: LlmGateway::Adapters::OpenAI::ChatCompletions::StreamMapper

Inherits:
Object
  • Object
show all
Defined in:
lib/llm_gateway/adapters/openai/chat_completions/stream_mapper.rb

Instance Method Summary collapse

Instance Method Details

#map(chunk) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/llm_gateway/adapters/openai/chat_completions/stream_mapper.rb', line 10

def map(chunk)
  queued_event = shift_queued_event
  return queued_event if queued_event

  data = chunk[:data] || {}
  raise_stream_error!(data) if chunk[:event] == "error" || data[:error] || data[:type] == "error"

  choices = data[:choices] || []

  if choices.empty?
    return message_event(
      delta: pending_finish_delta,
      usage_increment: usage_increment(data)
    )
  end

  choice = choices.first || {}
  delta = choice[:delta] || {}
  finish_reason = choice[:finish_reason]

  event = map_choice_delta(data, choice, delta)
  return event if event

  return finish_event_for(finish_reason) if finish_reason

  nil
end