Class: GroqRuby::Streaming::ChunkStream
- Inherits:
-
Object
- Object
- GroqRuby::Streaming::ChunkStream
- Includes:
- Enumerable
- Defined in:
- lib/groq_ruby/streaming/chunk_stream.rb
Overview
Lazy stream of parsed chat completion chunks. Wraps the transport’s SSE delivery with the ‘[DONE]` sentinel handling that OpenAI-style APIs use, and the JSON decode → model wrap step.
Yields Models::ChatCompletionChunk instances. Honours the ‘[DONE]` terminator by stopping iteration cleanly.
Constant Summary collapse
- DONE_SENTINEL =
"[DONE]".freeze
Instance Method Summary collapse
-
#each {|chunk| ... } ⇒ Enumerator, void
Iterate through each chunk.
-
#initialize(transport:, request:, chunk_model:) ⇒ ChunkStream
constructor
A new instance of ChunkStream.
Constructor Details
#initialize(transport:, request:, chunk_model:) ⇒ ChunkStream
Returns a new instance of ChunkStream.
28 29 30 31 32 |
# File 'lib/groq_ruby/streaming/chunk_stream.rb', line 28 def initialize(transport:, request:, chunk_model:) @transport = transport @request = request @chunk_model = chunk_model end |
Instance Method Details
#each {|chunk| ... } ⇒ Enumerator, void
Iterate through each chunk. When called without a block, returns an Enumerator that lets callers compose with ‘Enumerable` methods.
41 42 43 44 45 46 47 48 |
# File 'lib/groq_ruby/streaming/chunk_stream.rb', line 41 def each(&block) return enum_for(:each) unless block_given? parser = EventParser.new result = @transport.stream(@request) do |raw_chunk| parser.feed(raw_chunk) { |_event, data, _id, _retry| forward_event(data, &block) } end raise result.failure if result.failure? end |