mirror of
https://github.com/maybe-finance/maybe.git
synced 2025-07-23 23:29:39 +02:00
29 lines
662 B
Ruby
29 lines
662 B
Ruby
|
class Provider::Openai::ChatStreamParser
|
||
|
Error = Class.new(StandardError)
|
||
|
|
||
|
def initialize(object)
|
||
|
@object = object
|
||
|
end
|
||
|
|
||
|
def parsed
|
||
|
type = object.dig("type")
|
||
|
|
||
|
case type
|
||
|
when "response.output_text.delta", "response.refusal.delta"
|
||
|
Chunk.new(type: "output_text", data: object.dig("delta"))
|
||
|
when "response.completed"
|
||
|
raw_response = object.dig("response")
|
||
|
Chunk.new(type: "response", data: parse_response(raw_response))
|
||
|
end
|
||
|
end
|
||
|
|
||
|
private
|
||
|
attr_reader :object
|
||
|
|
||
|
Chunk = Provider::LlmConcept::ChatStreamChunk
|
||
|
|
||
|
def parse_response(response)
|
||
|
Provider::Openai::ChatParser.new(response).parsed
|
||
|
end
|
||
|
end
|