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
|