openai_ruby 0.5.5 → 0.5.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c428b915e1985b7478318b5eee0938934ca406fec796bddab9f7499bbdc5feb6
4
- data.tar.gz: d3e648abff19cd4bd266f05353500a4f8bcc1d221b376bb23ddbbd82eecdada7
3
+ metadata.gz: 84416f248ba1af3cd564bdf72b9b125fe5995a10fea0c3b273115ed42123d1dd
4
+ data.tar.gz: 77228baf14fd26b1f85f843ea25da388d2d0d20e4f65ff53541f543fb9f6e30f
5
5
  SHA512:
6
- metadata.gz: 2b4eaf9d508d7e904a21bec16456dd0dec8a36b2bb18d88111a61af91fcef67eecc94979c857bac14bf6f8cde9154b55ffd62e877bd766023fe1585ca2af82cb
7
- data.tar.gz: 9bd6e7d5a8933e78abb8282fbbea3fb850952392247bb3fed6fb30423d4072a42e20f8673d7ffec760a6061e5e46eef64e8c584b6414cc0610eab813a90306af
6
+ metadata.gz: 1c9a04302598fcb7926064079cca7b95517c07c46de1c0c29b23c132ac44f5cb36689add98691e2921f7adcc21039e9310772f7f1f273c1dc2c61fa78ef0f6f6
7
+ data.tar.gz: 34964a45e000c84fe68b3ad03a4ab49419cf49bfc39c8bff344c1a83a76bceac8c0cee3168691d94b52c38a1ff7630f539c09bb2fdbee8c4470041e37bf913a8
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.5.6] - 2026-08-15
4
+
5
+ - Preserve complete error response bodies when streamed HTTP errors arrive in multiple chunks.
6
+
3
7
  ## [0.5.5] - 2026-08-03
4
8
 
5
9
  - Avoid mutating request parameters in chat completion and speech requests, including frozen nested schemas.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- openai_ruby (0.5.5)
4
+ openai_ruby (0.5.6)
5
5
  event_stream_parser (~> 1.0)
6
6
  faraday (~> 2.7)
7
7
  faraday-multipart (~> 1.1)
@@ -20,26 +20,10 @@ module OpenAI
20
20
  )
21
21
  end
22
22
 
23
- def create_chat_completion(params = {})
24
- parser = EventStreamParser::Parser.new
23
+ def create_chat_completion(params = {}, &block)
24
+ return connection.post("/v1/chat/completions", params.to_json) unless streaming?(params)
25
25
 
26
- if streaming?(params)
27
- connection.post("/v1/chat/completions") do |req|
28
- req.body = params.to_json
29
- req.options.on_data = proc do |chunk, _overall_received_bytes, env|
30
- if env && env.status != 200
31
- raise_error = Faraday::Response::RaiseError.new
32
- raise_error.on_complete(env.merge(body: try_parse_json(chunk)))
33
- end
34
-
35
- parser.feed(chunk) do |_type, data|
36
- yield(JSON.parse(data)) if block_given? && data != "[DONE]"
37
- end
38
- end
39
- end
40
- else
41
- connection.post("/v1/chat/completions", params.to_json)
42
- end
26
+ create_streaming_chat_completion(params, &block)
43
27
  end
44
28
 
45
29
  def create_edit(params = {})
@@ -100,6 +84,33 @@ module OpenAI
100
84
  params[:stream] || params["stream"]
101
85
  end
102
86
 
87
+ def create_streaming_chat_completion(params, &block)
88
+ parser = EventStreamParser::Parser.new
89
+ error_body = +""
90
+ response = connection.post("/v1/chat/completions") do |req|
91
+ req.body = params.to_json
92
+ req.options.on_data = proc do |chunk, _overall_received_bytes, env|
93
+ handle_streaming_chunk(parser, error_body, chunk, env, &block)
94
+ end
95
+ end
96
+
97
+ raise_streaming_response_error(response, error_body) unless response.status == 200
98
+ response
99
+ end
100
+
101
+ def handle_streaming_chunk(parser, error_body, chunk, env)
102
+ return error_body << chunk unless env&.status == 200
103
+
104
+ parser.feed(chunk) do |_type, data|
105
+ yield(JSON.parse(data)) if block_given? && data != "[DONE]"
106
+ end
107
+ end
108
+
109
+ def raise_streaming_response_error(response, body)
110
+ error_env = response.env.merge(body: try_parse_json(body))
111
+ Faraday::Response::RaiseError.new.on_complete(error_env)
112
+ end
113
+
103
114
  def build_multipart_body(sdp_offer, session)
104
115
  boundary = "----RubyFormBoundary#{SecureRandom.hex(16)}"
105
116
  parts = [
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module OpenAI
4
- VERSION = "0.5.5"
4
+ VERSION = "0.5.6"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openai_ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.5
4
+ version: 0.5.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Renny Ren