Class: LLM::EventHandler

Inherits:
Object
  • Object
show all
Defined in:
lib/llm/eventhandler.rb

Instance Method Summary collapse

Constructor Details

#initialize(parser) ⇒ LLM::EventHandler

Parameters:

  • parser (#parse!)


10
11
12
# File 'lib/llm/eventhandler.rb', line 10

def initialize(parser)
  @parser = parser
end

Instance Method Details

#bodyLLM::Object

Returns a fully constructed response body

Returns:



48
# File 'lib/llm/eventhandler.rb', line 48

def body = @parser.body

#freevoid

This method returns an undefined value.

Frees parser state after streaming completes.



53
54
55
# File 'lib/llm/eventhandler.rb', line 53

def free
  @parser.free
end

#on_chunk(event, chunk = nil) ⇒ void

This method returns an undefined value.

Callback for when any of chunk of data is received, regardless of whether it has a field name or not. Primarily for ollama, which does emit Server-Sent Events (SSE).

Parameters:



36
37
38
39
40
41
42
43
# File 'lib/llm/eventhandler.rb', line 36

def on_chunk(event, chunk = nil)
  raw_chunk = chunk || event&.chunk || event
  return if raw_chunk == "[DONE]"
  payload = LLM.json.load(raw_chunk)
  return unless payload
  @parser.parse!(payload)
rescue *LLM.json.parser_error
end

#on_data(event, chunk = nil) ⇒ void

This method returns an undefined value.

“data:” event callback

Parameters:



19
20
21
22
23
24
25
26
# File 'lib/llm/eventhandler.rb', line 19

def on_data(event, chunk = nil)
  value = chunk ? event : event.value
  return if value == "[DONE]"
  payload = LLM.json.load(value)
  return unless payload
  @parser.parse!(payload)
rescue *LLM.json.parser_error
end