module OpenAI::HTTP

def to_json_stream(user_proc:)

Returns:
  • (Proc) - An outer proc that iterates over a raw stream, converting it to JSON.

Parameters:
  • user_proc (Proc) -- The inner proc to call for each JSON object in the chunk.
def to_json_stream(user_proc:)
  parser = EventStreamParser::Parser.new
  proc do |chunk, _bytes, env|
    if env && env.status != 200
      raise_error = Faraday::Response::RaiseError.new
      raise_error.on_complete(env.merge(body: try_parse_json(chunk)))
    end
    parser.feed(chunk) do |_type, data|
      user_proc.call(JSON.parse(data)) unless data == "[DONE]"
    end
  end
end