Sha256: ffc2e217e17a5de58c6aa7d207878fa707d219db6ce5a11a28b62f5936b197a5

Contents?: true

Size: 558 Bytes

Versions: 13

Compression:

Stored size: 558 Bytes

Contents

# frozen_string_literal: true

module OmniAI
  class Chat
    # A stream given when streaming.
    class Stream
      # @param response [HTTP::Response]
      def initialize(response:)
        @response = response
        @parser = EventStreamParser::Parser.new
      end

      # @yield [OmniAI::Chat::Chunk]
      def stream!
        @response.body.each do |chunk|
          @parser.feed(chunk) do |_, data|
            next if data.eql?('[DONE]')

            yield(Chunk.new(data: JSON.parse(data)))
          end
        end
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
omniai-1.5.0 lib/omniai/chat/stream.rb
omniai-1.4.2 lib/omniai/chat/stream.rb
omniai-1.4.1 lib/omniai/chat/stream.rb
omniai-1.4.0 lib/omniai/chat/stream.rb
omniai-1.3.1 lib/omniai/chat/stream.rb
omniai-1.3.0 lib/omniai/chat/stream.rb
omniai-1.2.3 lib/omniai/chat/stream.rb
omniai-1.2.2 lib/omniai/chat/stream.rb
omniai-1.2.1 lib/omniai/chat/stream.rb
omniai-1.2.0 lib/omniai/chat/stream.rb
omniai-1.1.6 lib/omniai/chat/stream.rb
omniai-1.1.5 lib/omniai/chat/stream.rb
omniai-1.1.4 lib/omniai/chat/stream.rb