openai 0.79.0 → 0.80.0
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 +4 -4
- data/CHANGELOG.md +19 -0
- data/README.md +1 -1
- data/bedrock.md +67 -2
- data/lib/openai/models/all_models.rb +2 -0
- data/lib/openai/models/beta/beta_mcp_tool_call_error.rb +84 -0
- data/lib/openai/models/beta/beta_response.rb +18 -0
- data/lib/openai/models/beta/beta_response_input_item.rb +3 -3
- data/lib/openai/models/beta/beta_response_item.rb +3 -3
- data/lib/openai/models/beta/beta_response_output_item.rb +3 -3
- data/lib/openai/models/beta/beta_response_output_item_added_event.rb +5 -2
- data/lib/openai/models/beta/beta_response_output_text_annotation_added_event.rb +201 -4
- data/lib/openai/models/beta/beta_response_reasoning_item.rb +5 -0
- data/lib/openai/models/beta/beta_responses_client_event.rb +18 -0
- data/lib/openai/models/beta/beta_responses_server_event.rb +126 -22
- data/lib/openai/models/beta/beta_web_search_tool.rb +11 -1
- data/lib/openai/models/beta/response_compact_params.rb +9 -0
- data/lib/openai/models/beta/response_create_params.rb +18 -0
- data/lib/openai/models/chat_model.rb +1 -0
- data/lib/openai/models/completion_usage.rb +26 -2
- data/lib/openai/models/conversations/conversation_item.rb +3 -3
- data/lib/openai/models/model.rb +9 -1
- data/lib/openai/models/responses/mcp_tool_call_error.rb +82 -0
- data/lib/openai/models/responses/response.rb +9 -0
- data/lib/openai/models/responses/response_compact_params.rb +9 -0
- data/lib/openai/models/responses/response_create_params.rb +9 -0
- data/lib/openai/models/responses/response_input_item.rb +3 -3
- data/lib/openai/models/responses/response_item.rb +3 -3
- data/lib/openai/models/responses/response_output_item.rb +3 -3
- data/lib/openai/models/responses/response_output_item_added_event.rb +5 -2
- data/lib/openai/models/responses/response_output_text_annotation_added_event.rb +201 -4
- data/lib/openai/models/responses/response_reasoning_item.rb +5 -0
- data/lib/openai/models/responses/responses_client_event.rb +9 -0
- data/lib/openai/models/responses/responses_server_event.rb +100 -22
- data/lib/openai/models/responses/web_search_tool.rb +11 -1
- data/lib/openai/models/responses_model.rb +2 -0
- data/lib/openai/providers/bedrock.rb +127 -16
- data/lib/openai/resources/files.rb +1 -1
- data/lib/openai/version.rb +1 -1
- data/lib/openai.rb +4 -2
- data/rbi/openai/models/all_models.rbi +10 -0
- data/rbi/openai/models/beta/beta_mcp_tool_call_error.rbi +122 -0
- data/rbi/openai/models/beta/beta_response.rbi +32 -0
- data/rbi/openai/models/beta/beta_response_input_item.rbi +27 -3
- data/rbi/openai/models/beta/beta_response_item.rbi +27 -3
- data/rbi/openai/models/beta/beta_response_output_item.rbi +27 -3
- data/rbi/openai/models/beta/beta_response_output_item_added_event.rbi +8 -2
- data/rbi/openai/models/beta/beta_response_output_text_annotation_added_event.rbi +297 -5
- data/rbi/openai/models/beta/beta_response_reasoning_item.rbi +10 -0
- data/rbi/openai/models/beta/beta_responses_client_event.rbi +32 -0
- data/rbi/openai/models/beta/beta_responses_server_event.rbi +221 -67
- data/rbi/openai/models/beta/beta_web_search_tool.rbi +15 -0
- data/rbi/openai/models/beta/response_compact_params.rbi +15 -0
- data/rbi/openai/models/beta/response_create_params.rbi +32 -0
- data/rbi/openai/models/chat_model.rbi +2 -0
- data/rbi/openai/models/completion_usage.rbi +39 -6
- data/rbi/openai/models/conversations/conversation_item.rbi +12 -3
- data/rbi/openai/models/model.rbi +14 -1
- data/rbi/openai/models/responses/mcp_tool_call_error.rbi +120 -0
- data/rbi/openai/models/responses/response.rbi +17 -0
- data/rbi/openai/models/responses/response_compact_params.rbi +15 -0
- data/rbi/openai/models/responses/response_create_params.rbi +17 -0
- data/rbi/openai/models/responses/response_input_item.rbi +27 -3
- data/rbi/openai/models/responses/response_item.rbi +27 -3
- data/rbi/openai/models/responses/response_output_item.rbi +27 -3
- data/rbi/openai/models/responses/response_output_item_added_event.rbi +8 -2
- data/rbi/openai/models/responses/response_output_text_annotation_added_event.rbi +297 -5
- data/rbi/openai/models/responses/response_reasoning_item.rbi +10 -0
- data/rbi/openai/models/responses/responses_client_event.rbi +17 -0
- data/rbi/openai/models/responses/responses_server_event.rbi +165 -62
- data/rbi/openai/models/responses/web_search_tool.rbi +15 -0
- data/rbi/openai/models/responses_model.rbi +10 -0
- data/rbi/openai/providers.rbi +2 -0
- data/rbi/openai/resources/beta/responses.rbi +8 -0
- data/rbi/openai/resources/files.rbi +1 -1
- data/rbi/openai/resources/responses.rbi +8 -0
- data/sig/openai/models/all_models.rbs +4 -0
- data/sig/openai/models/beta/beta_mcp_tool_call_error.rbs +75 -0
- data/sig/openai/models/beta/beta_response.rbs +8 -1
- data/sig/openai/models/beta/beta_response_input_item.rbs +4 -4
- data/sig/openai/models/beta/beta_response_item.rbs +4 -4
- data/sig/openai/models/beta/beta_response_output_item.rbs +4 -4
- data/sig/openai/models/beta/beta_response_output_text_annotation_added_event.rbs +149 -4
- data/sig/openai/models/beta/beta_responses_client_event.rbs +8 -1
- data/sig/openai/models/beta/beta_responses_server_event.rbs +99 -39
- data/sig/openai/models/beta/beta_web_search_tool.rbs +7 -0
- data/sig/openai/models/beta/response_compact_params.rbs +6 -0
- data/sig/openai/models/beta/response_create_params.rbs +8 -1
- data/sig/openai/models/chat_model.rbs +2 -0
- data/sig/openai/models/completion_usage.rbs +27 -6
- data/sig/openai/models/conversations/conversation_item.rbs +4 -4
- data/sig/openai/models/model.rbs +12 -2
- data/sig/openai/models/responses/mcp_tool_call_error.rbs +73 -0
- data/sig/openai/models/responses/response.rbs +2 -1
- data/sig/openai/models/responses/response_compact_params.rbs +6 -0
- data/sig/openai/models/responses/response_create_params.rbs +2 -1
- data/sig/openai/models/responses/response_input_item.rbs +4 -4
- data/sig/openai/models/responses/response_item.rbs +4 -4
- data/sig/openai/models/responses/response_output_item.rbs +4 -4
- data/sig/openai/models/responses/response_output_text_annotation_added_event.rbs +149 -4
- data/sig/openai/models/responses/responses_client_event.rbs +2 -1
- data/sig/openai/models/responses/responses_server_event.rbs +84 -36
- data/sig/openai/models/responses/web_search_tool.rbs +7 -0
- data/sig/openai/models/responses_model.rbs +4 -0
- data/sig/openai/providers.rbs +1 -0
- metadata +7 -1
|
@@ -4,8 +4,8 @@ module OpenAI
|
|
|
4
4
|
module Providers
|
|
5
5
|
# @api private
|
|
6
6
|
module Bedrock
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
SERVICES = {mantle: "bedrock-mantle", runtime: "bedrock"}.freeze
|
|
8
|
+
AWS_REGION_PATTERN = /\A[a-z]{2,8}(?:-[a-z0-9]+)+-\d+\z/
|
|
9
9
|
AUTH_HEADERS = %w[authorization].freeze
|
|
10
10
|
SIGNING_HEADERS = %w[authorization x-amz-content-sha256 x-amz-date x-amz-security-token].freeze
|
|
11
11
|
BEARER_AUTH_MARKER = :openai_bedrock_bearer
|
|
@@ -39,6 +39,7 @@ module OpenAI
|
|
|
39
39
|
attr_reader :name
|
|
40
40
|
|
|
41
41
|
def initialize(
|
|
42
|
+
endpoint:,
|
|
42
43
|
region:,
|
|
43
44
|
base_url:,
|
|
44
45
|
bearer_provider:,
|
|
@@ -50,6 +51,7 @@ module OpenAI
|
|
|
50
51
|
default_chain:
|
|
51
52
|
)
|
|
52
53
|
@name = "bedrock"
|
|
54
|
+
@endpoint = endpoint
|
|
53
55
|
@region = region&.freeze
|
|
54
56
|
@base_url = base_url&.freeze
|
|
55
57
|
@bearer_provider = bearer_provider
|
|
@@ -63,14 +65,17 @@ module OpenAI
|
|
|
63
65
|
|
|
64
66
|
def configure
|
|
65
67
|
if @bearer_provider
|
|
66
|
-
base_url = Bedrock.resolve_base_url(@base_url, @region)
|
|
68
|
+
base_url = Bedrock.resolve_base_url(@base_url, @region, endpoint: @endpoint)
|
|
69
|
+
Bedrock.validate_canonical_endpoint!(base_url, @endpoint, @region)
|
|
67
70
|
auth = BearerAuth.new(token_provider: @bearer_provider, base_url: base_url)
|
|
68
71
|
else
|
|
69
72
|
Bedrock.load_aws!
|
|
70
73
|
region = @region || Bedrock.profile_region(@profile)
|
|
71
74
|
raise ArgumentError, MISSING_REGION_MESSAGE if region.nil?
|
|
75
|
+
Bedrock.validate_region!(region)
|
|
72
76
|
|
|
73
|
-
base_url = Bedrock.resolve_base_url(@base_url, region)
|
|
77
|
+
base_url = Bedrock.resolve_base_url(@base_url, region, endpoint: @endpoint)
|
|
78
|
+
Bedrock.validate_canonical_endpoint!(base_url, @endpoint, region)
|
|
74
79
|
credentials =
|
|
75
80
|
if @access_key_id
|
|
76
81
|
Aws::Credentials.new(@access_key_id, @secret_access_key, @session_token)
|
|
@@ -82,6 +87,7 @@ module OpenAI
|
|
|
82
87
|
DefaultCredentialsProvider.new
|
|
83
88
|
end
|
|
84
89
|
auth = SigV4Auth.new(
|
|
90
|
+
endpoint: @endpoint,
|
|
85
91
|
region: region,
|
|
86
92
|
base_url: base_url,
|
|
87
93
|
credentials_provider: credentials,
|
|
@@ -130,12 +136,13 @@ module OpenAI
|
|
|
130
136
|
end
|
|
131
137
|
|
|
132
138
|
class SigV4Auth
|
|
133
|
-
def initialize(region:, base_url:, credentials_provider:, default_chain:)
|
|
139
|
+
def initialize(endpoint:, region:, base_url:, credentials_provider:, default_chain:)
|
|
140
|
+
@endpoint = endpoint
|
|
134
141
|
@region = region
|
|
135
142
|
@base_url = URI(base_url)
|
|
136
143
|
@default_chain = default_chain
|
|
137
144
|
@signer = Aws::Sigv4::Signer.new(
|
|
138
|
-
service:
|
|
145
|
+
service: SERVICES.fetch(endpoint),
|
|
139
146
|
region: region,
|
|
140
147
|
credentials_provider: credentials_provider
|
|
141
148
|
)
|
|
@@ -144,7 +151,7 @@ module OpenAI
|
|
|
144
151
|
def prepare_request(request)
|
|
145
152
|
url = request.fetch(:url)
|
|
146
153
|
Bedrock.validate_origin!(url, @base_url, action: "sign")
|
|
147
|
-
Bedrock.validate_endpoint_region!(url, @region)
|
|
154
|
+
Bedrock.validate_endpoint_region!(url, @region, endpoint: @endpoint)
|
|
148
155
|
body = request[:body]
|
|
149
156
|
unless body.nil? || body.is_a?(String)
|
|
150
157
|
raise OpenAI::Errors::Error, NON_REPLAYABLE_BODY_MESSAGE
|
|
@@ -263,10 +270,86 @@ module OpenAI
|
|
|
263
270
|
raise OpenAI::Errors::Error.new(MISSING_DEPENDENCY_MESSAGE), cause: e
|
|
264
271
|
end
|
|
265
272
|
|
|
266
|
-
def resolve_base_url(base_url, region)
|
|
273
|
+
def resolve_base_url(base_url, region, endpoint:)
|
|
267
274
|
return base_url if base_url
|
|
268
275
|
raise ArgumentError, MISSING_REGION_MESSAGE if region.nil?
|
|
269
|
-
|
|
276
|
+
|
|
277
|
+
if endpoint == :runtime
|
|
278
|
+
suffix, = runtime_dns_suffixes(region)
|
|
279
|
+
"https://bedrock-runtime.#{region}.#{suffix}/openai/v1"
|
|
280
|
+
else
|
|
281
|
+
"https://bedrock-mantle.#{region}.api.aws/v1"
|
|
282
|
+
end
|
|
283
|
+
end
|
|
284
|
+
|
|
285
|
+
def runtime_dns_suffixes(region)
|
|
286
|
+
case region
|
|
287
|
+
when /\Acn-/
|
|
288
|
+
["amazonaws.com.cn", "api.amazonwebservices.com.cn"]
|
|
289
|
+
when /\Aeusc-/
|
|
290
|
+
["amazonaws.eu", "api.amazonwebservices.eu"]
|
|
291
|
+
when /\Aus-iso-/
|
|
292
|
+
["c2s.ic.gov", "api.aws.ic.gov"]
|
|
293
|
+
when /\Aus-isob-/
|
|
294
|
+
["sc2s.sgov.gov", "api.aws.scloud"]
|
|
295
|
+
when /\Aeu-isoe-/
|
|
296
|
+
["cloud.adc-e.uk", "api.cloud-aws.adc-e.uk"]
|
|
297
|
+
when /\Aus-isof-/
|
|
298
|
+
["csp.hci.ic.gov", "api.aws.hci.ic.gov"]
|
|
299
|
+
else
|
|
300
|
+
["amazonaws.com", "api.aws"]
|
|
301
|
+
end
|
|
302
|
+
end
|
|
303
|
+
|
|
304
|
+
def parse_endpoint_hostname(hostname)
|
|
305
|
+
service, region, *suffix_parts = hostname.delete_suffix(".").downcase.split(".")
|
|
306
|
+
suffix = suffix_parts.join(".")
|
|
307
|
+
|
|
308
|
+
if service == "bedrock-mantle" && region&.match?(/\A[a-z0-9-]+\z/) && suffix == "api.aws"
|
|
309
|
+
return {endpoint: :mantle, region: region}
|
|
310
|
+
end
|
|
311
|
+
|
|
312
|
+
if %w[bedrock-runtime bedrock-runtime-fips].include?(service) && region &&
|
|
313
|
+
runtime_dns_suffixes(region).include?(suffix)
|
|
314
|
+
return {endpoint: :runtime, region: region}
|
|
315
|
+
end
|
|
316
|
+
|
|
317
|
+
nil
|
|
318
|
+
end
|
|
319
|
+
|
|
320
|
+
def validate_canonical_endpoint!(base_url, endpoint, region)
|
|
321
|
+
uri = URI(base_url)
|
|
322
|
+
canonical = parse_endpoint_hostname(uri.host)
|
|
323
|
+
return unless canonical
|
|
324
|
+
|
|
325
|
+
unless uri.is_a?(URI::HTTPS)
|
|
326
|
+
raise ArgumentError, "Canonical Amazon Bedrock endpoints require HTTPS."
|
|
327
|
+
end
|
|
328
|
+
if canonical.fetch(:endpoint) != endpoint
|
|
329
|
+
raise ArgumentError,
|
|
330
|
+
"The Bedrock #{canonical.fetch(:endpoint)} hostname does not match the " \
|
|
331
|
+
"selected `#{endpoint}` endpoint."
|
|
332
|
+
end
|
|
333
|
+
return if region.nil? || canonical.fetch(:region) == region
|
|
334
|
+
|
|
335
|
+
raise ArgumentError,
|
|
336
|
+
"The Bedrock endpoint region `#{canonical.fetch(:region)}` does not match the " \
|
|
337
|
+
"configured AWS region `#{region}`."
|
|
338
|
+
end
|
|
339
|
+
|
|
340
|
+
def validate_region!(region)
|
|
341
|
+
return if AWS_REGION_PATTERN.match?(region)
|
|
342
|
+
|
|
343
|
+
raise ArgumentError,
|
|
344
|
+
"The Bedrock AWS `region` is invalid. Use a standard AWS region such as `us-east-1`."
|
|
345
|
+
end
|
|
346
|
+
|
|
347
|
+
def normalize_endpoint(endpoint)
|
|
348
|
+
return nil if endpoint.nil?
|
|
349
|
+
return endpoint.to_sym if endpoint == "mantle" || endpoint == "runtime"
|
|
350
|
+
return endpoint if endpoint == :mantle || endpoint == :runtime
|
|
351
|
+
|
|
352
|
+
raise ArgumentError, "The Bedrock `endpoint` must be either `mantle` or `runtime`."
|
|
270
353
|
end
|
|
271
354
|
|
|
272
355
|
def normalize_base_url(base_url)
|
|
@@ -310,9 +393,18 @@ module OpenAI
|
|
|
310
393
|
message
|
|
311
394
|
end
|
|
312
395
|
|
|
313
|
-
def validate_endpoint_region!(url, region)
|
|
314
|
-
|
|
315
|
-
return
|
|
396
|
+
def validate_endpoint_region!(url, region, endpoint:)
|
|
397
|
+
canonical = parse_endpoint_hostname(url.host)
|
|
398
|
+
return unless canonical
|
|
399
|
+
|
|
400
|
+
if canonical.fetch(:endpoint) != endpoint
|
|
401
|
+
raise OpenAI::Errors::Error,
|
|
402
|
+
"The Bedrock #{canonical.fetch(:endpoint)} hostname does not match the " \
|
|
403
|
+
"selected `#{endpoint}` endpoint."
|
|
404
|
+
end
|
|
405
|
+
|
|
406
|
+
endpoint_region = canonical.fetch(:region)
|
|
407
|
+
return if endpoint_region == region
|
|
316
408
|
message =
|
|
317
409
|
"The Bedrock endpoint region `#{endpoint_region}` does not match the SigV4 " \
|
|
318
410
|
"region `#{region}`."
|
|
@@ -342,16 +434,19 @@ module OpenAI
|
|
|
342
434
|
end
|
|
343
435
|
|
|
344
436
|
class << self
|
|
345
|
-
# Configure the standard OpenAI client for Amazon Bedrock Mantle.
|
|
437
|
+
# Configure the standard OpenAI client for Amazon Bedrock Mantle or Runtime.
|
|
346
438
|
#
|
|
347
439
|
# Authentication precedence is an explicit bearer or AWS mode, then
|
|
348
440
|
# AWS_BEARER_TOKEN_BEDROCK, then the standard AWS credential chain.
|
|
349
441
|
#
|
|
442
|
+
# @param endpoint [String, Symbol, nil] Bedrock endpoint family. Defaults to
|
|
443
|
+
# Mantle unless a canonical Runtime `base_url` is supplied.
|
|
444
|
+
#
|
|
350
445
|
# @param region [String, nil] AWS signing region. Defaults to `AWS_REGION`,
|
|
351
446
|
# `AWS_DEFAULT_REGION`, or the selected profile's configured region.
|
|
352
447
|
#
|
|
353
448
|
# @param base_url [String, nil] Bedrock API root. Defaults to
|
|
354
|
-
# `AWS_BEDROCK_BASE_URL` or the regional Bedrock
|
|
449
|
+
# `AWS_BEDROCK_BASE_URL` or the selected regional Bedrock endpoint.
|
|
355
450
|
#
|
|
356
451
|
# @param api_key [String, nil] Explicit Bedrock bearer credential. Passing
|
|
357
452
|
# `nil` explicitly skips the `AWS_BEARER_TOKEN_BEDROCK` fallback.
|
|
@@ -374,6 +469,7 @@ module OpenAI
|
|
|
374
469
|
#
|
|
375
470
|
# @return [OpenAI::Provider]
|
|
376
471
|
def bedrock(
|
|
472
|
+
endpoint: nil,
|
|
377
473
|
region: nil,
|
|
378
474
|
base_url: OpenAI::Internal::OMIT,
|
|
379
475
|
api_key: OpenAI::Internal::OMIT,
|
|
@@ -384,12 +480,12 @@ module OpenAI
|
|
|
384
480
|
profile: nil,
|
|
385
481
|
credentials_provider: nil
|
|
386
482
|
)
|
|
483
|
+
normalized_endpoint = Bedrock.normalize_endpoint(endpoint)
|
|
387
484
|
normalized_region = Bedrock.normalize_optional_string(region)
|
|
388
485
|
if !region.nil? && normalized_region.nil?
|
|
389
486
|
raise ArgumentError, "The Bedrock AWS `region` must not be empty."
|
|
390
487
|
end
|
|
391
|
-
|
|
392
|
-
Bedrock.normalize_optional_string(ENV["AWS_DEFAULT_REGION"])
|
|
488
|
+
Bedrock.validate_region!(normalized_region) if normalized_region
|
|
393
489
|
|
|
394
490
|
normalized_profile = Bedrock.normalize_optional_string(profile)
|
|
395
491
|
if !profile.nil? && normalized_profile.nil?
|
|
@@ -407,6 +503,10 @@ module OpenAI
|
|
|
407
503
|
normalized
|
|
408
504
|
end
|
|
409
505
|
configured_base_url = Bedrock.normalize_base_url(configured_base_url) if configured_base_url
|
|
506
|
+
canonical_endpoint = if configured_base_url
|
|
507
|
+
Bedrock.parse_endpoint_hostname(URI(configured_base_url).host)
|
|
508
|
+
end
|
|
509
|
+
resolved_endpoint = normalized_endpoint || canonical_endpoint&.fetch(:endpoint) || :mantle
|
|
410
510
|
|
|
411
511
|
has_access_key = !access_key_id.nil?
|
|
412
512
|
has_secret_key = !secret_access_key.nil?
|
|
@@ -469,11 +569,22 @@ module OpenAI
|
|
|
469
569
|
end
|
|
470
570
|
end
|
|
471
571
|
|
|
572
|
+
if normalized_region.nil? && (bearer_provider.nil? || configured_base_url.nil?)
|
|
573
|
+
normalized_region = Bedrock.normalize_optional_string(ENV["AWS_REGION"]) ||
|
|
574
|
+
Bedrock.normalize_optional_string(ENV["AWS_DEFAULT_REGION"])
|
|
575
|
+
Bedrock.validate_region!(normalized_region) if normalized_region
|
|
576
|
+
end
|
|
577
|
+
|
|
578
|
+
if configured_base_url
|
|
579
|
+
Bedrock.validate_canonical_endpoint!(configured_base_url, resolved_endpoint, normalized_region)
|
|
580
|
+
end
|
|
581
|
+
|
|
472
582
|
if bearer_provider && configured_base_url.nil? && normalized_region.nil?
|
|
473
583
|
raise ArgumentError, Bedrock::MISSING_REGION_MESSAGE
|
|
474
584
|
end
|
|
475
585
|
|
|
476
586
|
definition = Bedrock::Definition.new(
|
|
587
|
+
endpoint: resolved_endpoint,
|
|
477
588
|
region: normalized_region,
|
|
478
589
|
base_url: configured_base_url,
|
|
479
590
|
bearer_provider: bearer_provider,
|
data/lib/openai/version.rb
CHANGED
data/lib/openai.rb
CHANGED
|
@@ -121,7 +121,6 @@ require_relative "openai/models/beta/beta_response_function_call_arguments_delta
|
|
|
121
121
|
require_relative "openai/models/beta/beta_response_file_search_call_searching_event"
|
|
122
122
|
require_relative "openai/models/beta/beta_response_file_search_call_in_progress_event"
|
|
123
123
|
require_relative "openai/models/beta/beta_response_file_search_call_completed_event"
|
|
124
|
-
require_relative "openai/models/beta/beta_response_error_event"
|
|
125
124
|
require_relative "openai/models/beta/beta_response_created_event"
|
|
126
125
|
require_relative "openai/models/beta/beta_response_content_part_done_event"
|
|
127
126
|
require_relative "openai/models/beta/beta_response_content_part_added_event"
|
|
@@ -189,7 +188,6 @@ require_relative "openai/models/responses/response_function_call_arguments_delta
|
|
|
189
188
|
require_relative "openai/models/responses/response_file_search_call_searching_event"
|
|
190
189
|
require_relative "openai/models/responses/response_file_search_call_in_progress_event"
|
|
191
190
|
require_relative "openai/models/responses/response_file_search_call_completed_event"
|
|
192
|
-
require_relative "openai/models/responses/response_error_event"
|
|
193
191
|
require_relative "openai/models/responses/response_created_event"
|
|
194
192
|
require_relative "openai/models/responses/response_content_part_done_event"
|
|
195
193
|
require_relative "openai/models/responses/response_content_part_added_event"
|
|
@@ -464,6 +462,7 @@ require_relative "openai/models/beta/beta_inline_skill"
|
|
|
464
462
|
require_relative "openai/models/beta/beta_inline_skill_source"
|
|
465
463
|
require_relative "openai/models/beta/beta_local_environment"
|
|
466
464
|
require_relative "openai/models/beta/beta_local_skill"
|
|
465
|
+
require_relative "openai/models/beta/beta_mcp_tool_call_error"
|
|
467
466
|
require_relative "openai/models/beta/beta_namespace_tool"
|
|
468
467
|
require_relative "openai/models/beta/beta_response"
|
|
469
468
|
require_relative "openai/models/beta/beta_response_apply_patch_tool_call"
|
|
@@ -480,6 +479,7 @@ require_relative "openai/models/beta/beta_response_conversation_param"
|
|
|
480
479
|
require_relative "openai/models/beta/beta_response_custom_tool_call_item"
|
|
481
480
|
require_relative "openai/models/beta/beta_response_custom_tool_call_output_item"
|
|
482
481
|
require_relative "openai/models/beta/beta_response_error"
|
|
482
|
+
require_relative "openai/models/beta/beta_response_error_event"
|
|
483
483
|
require_relative "openai/models/beta/beta_response_file_search_tool_call"
|
|
484
484
|
require_relative "openai/models/beta/beta_response_format_text_config"
|
|
485
485
|
require_relative "openai/models/beta/beta_response_format_text_json_schema_config"
|
|
@@ -1007,6 +1007,7 @@ require_relative "openai/models/responses/input_token_count_params"
|
|
|
1007
1007
|
require_relative "openai/models/responses/input_token_count_response"
|
|
1008
1008
|
require_relative "openai/models/responses/local_environment"
|
|
1009
1009
|
require_relative "openai/models/responses/local_skill"
|
|
1010
|
+
require_relative "openai/models/responses/mcp_tool_call_error"
|
|
1010
1011
|
require_relative "openai/models/responses/namespace_tool"
|
|
1011
1012
|
require_relative "openai/models/responses/response"
|
|
1012
1013
|
require_relative "openai/models/responses/response_apply_patch_tool_call"
|
|
@@ -1027,6 +1028,7 @@ require_relative "openai/models/responses/response_custom_tool_call_item"
|
|
|
1027
1028
|
require_relative "openai/models/responses/response_custom_tool_call_output_item"
|
|
1028
1029
|
require_relative "openai/models/responses/response_delete_params"
|
|
1029
1030
|
require_relative "openai/models/responses/response_error"
|
|
1031
|
+
require_relative "openai/models/responses/response_error_event"
|
|
1030
1032
|
require_relative "openai/models/responses/response_file_search_tool_call"
|
|
1031
1033
|
require_relative "openai/models/responses/response_format_text_config"
|
|
1032
1034
|
require_relative "openai/models/responses/response_format_text_json_schema_config"
|
|
@@ -65,6 +65,16 @@ module OpenAI
|
|
|
65
65
|
:"computer-use-preview-2025-03-11",
|
|
66
66
|
OpenAI::AllModels::ResponsesOnlyModel::TaggedSymbol
|
|
67
67
|
)
|
|
68
|
+
GPT_5_5_PRO =
|
|
69
|
+
T.let(
|
|
70
|
+
:"gpt-5.5-pro",
|
|
71
|
+
OpenAI::AllModels::ResponsesOnlyModel::TaggedSymbol
|
|
72
|
+
)
|
|
73
|
+
GPT_5_5_PRO_2026_04_23 =
|
|
74
|
+
T.let(
|
|
75
|
+
:"gpt-5.5-pro-2026-04-23",
|
|
76
|
+
OpenAI::AllModels::ResponsesOnlyModel::TaggedSymbol
|
|
77
|
+
)
|
|
68
78
|
GPT_5_CODEX =
|
|
69
79
|
T.let(
|
|
70
80
|
:"gpt-5-codex",
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# typed: strong
|
|
2
|
+
|
|
3
|
+
module OpenAI
|
|
4
|
+
module Models
|
|
5
|
+
BetaMcpToolCallError = Beta::BetaMcpToolCallError
|
|
6
|
+
|
|
7
|
+
module Beta
|
|
8
|
+
module BetaMcpToolCallError
|
|
9
|
+
extend OpenAI::Internal::Type::Union
|
|
10
|
+
|
|
11
|
+
Variants =
|
|
12
|
+
T.type_alias do
|
|
13
|
+
T.any(
|
|
14
|
+
OpenAI::Beta::BetaMcpToolCallError::McpProtocolError,
|
|
15
|
+
OpenAI::Beta::BetaMcpToolCallError::McpToolExecutionError,
|
|
16
|
+
OpenAI::Beta::BetaMcpToolCallError::HTTPError
|
|
17
|
+
)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
class McpProtocolError < OpenAI::Internal::Type::BaseModel
|
|
21
|
+
OrHash =
|
|
22
|
+
T.type_alias do
|
|
23
|
+
T.any(
|
|
24
|
+
OpenAI::Beta::BetaMcpToolCallError::McpProtocolError,
|
|
25
|
+
OpenAI::Internal::AnyHash
|
|
26
|
+
)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
sig { returns(Integer) }
|
|
30
|
+
attr_accessor :code
|
|
31
|
+
|
|
32
|
+
sig { returns(String) }
|
|
33
|
+
attr_accessor :message
|
|
34
|
+
|
|
35
|
+
sig { returns(Symbol) }
|
|
36
|
+
attr_accessor :type
|
|
37
|
+
|
|
38
|
+
sig do
|
|
39
|
+
params(code: Integer, message: String, type: Symbol).returns(
|
|
40
|
+
T.attached_class
|
|
41
|
+
)
|
|
42
|
+
end
|
|
43
|
+
def self.new(code:, message:, type: :mcp_protocol_error)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
sig do
|
|
47
|
+
override.returns({ code: Integer, message: String, type: Symbol })
|
|
48
|
+
end
|
|
49
|
+
def to_hash
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
class McpToolExecutionError < OpenAI::Internal::Type::BaseModel
|
|
54
|
+
OrHash =
|
|
55
|
+
T.type_alias do
|
|
56
|
+
T.any(
|
|
57
|
+
OpenAI::Beta::BetaMcpToolCallError::McpToolExecutionError,
|
|
58
|
+
OpenAI::Internal::AnyHash
|
|
59
|
+
)
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
sig { returns(T.anything) }
|
|
63
|
+
attr_accessor :content
|
|
64
|
+
|
|
65
|
+
sig { returns(Symbol) }
|
|
66
|
+
attr_accessor :type
|
|
67
|
+
|
|
68
|
+
sig do
|
|
69
|
+
params(content: T.anything, type: Symbol).returns(T.attached_class)
|
|
70
|
+
end
|
|
71
|
+
def self.new(content:, type: :mcp_tool_execution_error)
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
sig { override.returns({ content: T.anything, type: Symbol }) }
|
|
75
|
+
def to_hash
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
class HTTPError < OpenAI::Internal::Type::BaseModel
|
|
80
|
+
OrHash =
|
|
81
|
+
T.type_alias do
|
|
82
|
+
T.any(
|
|
83
|
+
OpenAI::Beta::BetaMcpToolCallError::HTTPError,
|
|
84
|
+
OpenAI::Internal::AnyHash
|
|
85
|
+
)
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
sig { returns(Integer) }
|
|
89
|
+
attr_accessor :code
|
|
90
|
+
|
|
91
|
+
sig { returns(String) }
|
|
92
|
+
attr_accessor :message
|
|
93
|
+
|
|
94
|
+
sig { returns(Symbol) }
|
|
95
|
+
attr_accessor :type
|
|
96
|
+
|
|
97
|
+
sig do
|
|
98
|
+
params(code: Integer, message: String, type: Symbol).returns(
|
|
99
|
+
T.attached_class
|
|
100
|
+
)
|
|
101
|
+
end
|
|
102
|
+
def self.new(code:, message:, type: :http_error)
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
sig do
|
|
106
|
+
override.returns({ code: Integer, message: String, type: Symbol })
|
|
107
|
+
end
|
|
108
|
+
def to_hash
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
sig do
|
|
113
|
+
override.returns(
|
|
114
|
+
T::Array[OpenAI::Beta::BetaMcpToolCallError::Variants]
|
|
115
|
+
)
|
|
116
|
+
end
|
|
117
|
+
def self.variants
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
end
|
|
@@ -284,6 +284,10 @@ module OpenAI
|
|
|
284
284
|
# Responses or Chat Completions. The response will show `service_tier=priority`
|
|
285
285
|
# regardless of if you specify `service_tier=fast` or `priority` in your
|
|
286
286
|
# request.
|
|
287
|
+
# - If set to 'ultrafast', then the request will be processed with the
|
|
288
|
+
# access-controlled Ultrafast Processing service tier. This tier is currently
|
|
289
|
+
# available for `gpt-5.6-sol`; a response served through it will show
|
|
290
|
+
# `service_tier=ultrafast`.
|
|
287
291
|
# - When not set, the default behavior is 'auto'.
|
|
288
292
|
#
|
|
289
293
|
# When the `service_tier` parameter is set, the response body will include the
|
|
@@ -624,6 +628,10 @@ module OpenAI
|
|
|
624
628
|
# Responses or Chat Completions. The response will show `service_tier=priority`
|
|
625
629
|
# regardless of if you specify `service_tier=fast` or `priority` in your
|
|
626
630
|
# request.
|
|
631
|
+
# - If set to 'ultrafast', then the request will be processed with the
|
|
632
|
+
# access-controlled Ultrafast Processing service tier. This tier is currently
|
|
633
|
+
# available for `gpt-5.6-sol`; a response served through it will show
|
|
634
|
+
# `service_tier=ultrafast`.
|
|
627
635
|
# - When not set, the default behavior is 'auto'.
|
|
628
636
|
#
|
|
629
637
|
# When the `service_tier` parameter is set, the response body will include the
|
|
@@ -881,6 +889,11 @@ module OpenAI
|
|
|
881
889
|
)
|
|
882
890
|
GPT_5_5 =
|
|
883
891
|
T.let(:"gpt-5.5", OpenAI::Beta::BetaResponse::Model::TaggedSymbol)
|
|
892
|
+
GPT_5_5_2026_04_23 =
|
|
893
|
+
T.let(
|
|
894
|
+
:"gpt-5.5-2026-04-23",
|
|
895
|
+
OpenAI::Beta::BetaResponse::Model::TaggedSymbol
|
|
896
|
+
)
|
|
884
897
|
GPT_5_4 =
|
|
885
898
|
T.let(:"gpt-5.4", OpenAI::Beta::BetaResponse::Model::TaggedSymbol)
|
|
886
899
|
GPT_5_4_MINI =
|
|
@@ -1274,6 +1287,16 @@ module OpenAI
|
|
|
1274
1287
|
:"computer-use-preview-2025-03-11",
|
|
1275
1288
|
OpenAI::Beta::BetaResponse::Model::TaggedSymbol
|
|
1276
1289
|
)
|
|
1290
|
+
GPT_5_5_PRO =
|
|
1291
|
+
T.let(
|
|
1292
|
+
:"gpt-5.5-pro",
|
|
1293
|
+
OpenAI::Beta::BetaResponse::Model::TaggedSymbol
|
|
1294
|
+
)
|
|
1295
|
+
GPT_5_5_PRO_2026_04_23 =
|
|
1296
|
+
T.let(
|
|
1297
|
+
:"gpt-5.5-pro-2026-04-23",
|
|
1298
|
+
OpenAI::Beta::BetaResponse::Model::TaggedSymbol
|
|
1299
|
+
)
|
|
1277
1300
|
GPT_5_CODEX =
|
|
1278
1301
|
T.let(
|
|
1279
1302
|
:"gpt-5-codex",
|
|
@@ -2448,6 +2471,10 @@ module OpenAI
|
|
|
2448
2471
|
# Responses or Chat Completions. The response will show `service_tier=priority`
|
|
2449
2472
|
# regardless of if you specify `service_tier=fast` or `priority` in your
|
|
2450
2473
|
# request.
|
|
2474
|
+
# - If set to 'ultrafast', then the request will be processed with the
|
|
2475
|
+
# access-controlled Ultrafast Processing service tier. This tier is currently
|
|
2476
|
+
# available for `gpt-5.6-sol`; a response served through it will show
|
|
2477
|
+
# `service_tier=ultrafast`.
|
|
2451
2478
|
# - When not set, the default behavior is 'auto'.
|
|
2452
2479
|
#
|
|
2453
2480
|
# When the `service_tier` parameter is set, the response body will include the
|
|
@@ -2481,6 +2508,11 @@ module OpenAI
|
|
|
2481
2508
|
)
|
|
2482
2509
|
FAST =
|
|
2483
2510
|
T.let(:fast, OpenAI::Beta::BetaResponse::ServiceTier::TaggedSymbol)
|
|
2511
|
+
ULTRAFAST =
|
|
2512
|
+
T.let(
|
|
2513
|
+
:ultrafast,
|
|
2514
|
+
OpenAI::Beta::BetaResponse::ServiceTier::TaggedSymbol
|
|
2515
|
+
)
|
|
2484
2516
|
|
|
2485
2517
|
sig do
|
|
2486
2518
|
override.returns(
|
|
@@ -4811,7 +4811,17 @@ module OpenAI
|
|
|
4811
4811
|
attr_accessor :approval_request_id
|
|
4812
4812
|
|
|
4813
4813
|
# The error from the tool call, if any.
|
|
4814
|
-
sig
|
|
4814
|
+
sig do
|
|
4815
|
+
returns(
|
|
4816
|
+
T.nilable(
|
|
4817
|
+
T.any(
|
|
4818
|
+
OpenAI::Beta::BetaMcpToolCallError::McpProtocolError,
|
|
4819
|
+
OpenAI::Beta::BetaMcpToolCallError::McpToolExecutionError,
|
|
4820
|
+
OpenAI::Beta::BetaMcpToolCallError::HTTPError
|
|
4821
|
+
)
|
|
4822
|
+
)
|
|
4823
|
+
)
|
|
4824
|
+
end
|
|
4815
4825
|
attr_accessor :error
|
|
4816
4826
|
|
|
4817
4827
|
# The output from the tool call.
|
|
@@ -4849,7 +4859,14 @@ module OpenAI
|
|
|
4849
4859
|
OpenAI::Beta::BetaResponseInputItem::McpCall::Agent::OrHash
|
|
4850
4860
|
),
|
|
4851
4861
|
approval_request_id: T.nilable(String),
|
|
4852
|
-
error:
|
|
4862
|
+
error:
|
|
4863
|
+
T.nilable(
|
|
4864
|
+
T.any(
|
|
4865
|
+
OpenAI::Beta::BetaMcpToolCallError::McpProtocolError::OrHash,
|
|
4866
|
+
OpenAI::Beta::BetaMcpToolCallError::McpToolExecutionError::OrHash,
|
|
4867
|
+
OpenAI::Beta::BetaMcpToolCallError::HTTPError::OrHash
|
|
4868
|
+
)
|
|
4869
|
+
),
|
|
4853
4870
|
output: T.nilable(String),
|
|
4854
4871
|
status:
|
|
4855
4872
|
OpenAI::Beta::BetaResponseInputItem::McpCall::Status::OrSymbol,
|
|
@@ -4896,7 +4913,14 @@ module OpenAI
|
|
|
4896
4913
|
OpenAI::Beta::BetaResponseInputItem::McpCall::Agent
|
|
4897
4914
|
),
|
|
4898
4915
|
approval_request_id: T.nilable(String),
|
|
4899
|
-
error:
|
|
4916
|
+
error:
|
|
4917
|
+
T.nilable(
|
|
4918
|
+
T.any(
|
|
4919
|
+
OpenAI::Beta::BetaMcpToolCallError::McpProtocolError,
|
|
4920
|
+
OpenAI::Beta::BetaMcpToolCallError::McpToolExecutionError,
|
|
4921
|
+
OpenAI::Beta::BetaMcpToolCallError::HTTPError
|
|
4922
|
+
)
|
|
4923
|
+
),
|
|
4900
4924
|
output: T.nilable(String),
|
|
4901
4925
|
status:
|
|
4902
4926
|
OpenAI::Beta::BetaResponseInputItem::McpCall::Status::OrSymbol
|
|
@@ -2415,7 +2415,17 @@ module OpenAI
|
|
|
2415
2415
|
attr_accessor :approval_request_id
|
|
2416
2416
|
|
|
2417
2417
|
# The error from the tool call, if any.
|
|
2418
|
-
sig
|
|
2418
|
+
sig do
|
|
2419
|
+
returns(
|
|
2420
|
+
T.nilable(
|
|
2421
|
+
T.any(
|
|
2422
|
+
OpenAI::Beta::BetaMcpToolCallError::McpProtocolError,
|
|
2423
|
+
OpenAI::Beta::BetaMcpToolCallError::McpToolExecutionError,
|
|
2424
|
+
OpenAI::Beta::BetaMcpToolCallError::HTTPError
|
|
2425
|
+
)
|
|
2426
|
+
)
|
|
2427
|
+
)
|
|
2428
|
+
end
|
|
2419
2429
|
attr_accessor :error
|
|
2420
2430
|
|
|
2421
2431
|
# The output from the tool call.
|
|
@@ -2452,7 +2462,14 @@ module OpenAI
|
|
|
2452
2462
|
OpenAI::Beta::BetaResponseItem::McpCall::Agent::OrHash
|
|
2453
2463
|
),
|
|
2454
2464
|
approval_request_id: T.nilable(String),
|
|
2455
|
-
error:
|
|
2465
|
+
error:
|
|
2466
|
+
T.nilable(
|
|
2467
|
+
T.any(
|
|
2468
|
+
OpenAI::Beta::BetaMcpToolCallError::McpProtocolError::OrHash,
|
|
2469
|
+
OpenAI::Beta::BetaMcpToolCallError::McpToolExecutionError::OrHash,
|
|
2470
|
+
OpenAI::Beta::BetaMcpToolCallError::HTTPError::OrHash
|
|
2471
|
+
)
|
|
2472
|
+
),
|
|
2456
2473
|
output: T.nilable(String),
|
|
2457
2474
|
status: OpenAI::Beta::BetaResponseItem::McpCall::Status::OrSymbol,
|
|
2458
2475
|
type: Symbol
|
|
@@ -2496,7 +2513,14 @@ module OpenAI
|
|
|
2496
2513
|
agent:
|
|
2497
2514
|
T.nilable(OpenAI::Beta::BetaResponseItem::McpCall::Agent),
|
|
2498
2515
|
approval_request_id: T.nilable(String),
|
|
2499
|
-
error:
|
|
2516
|
+
error:
|
|
2517
|
+
T.nilable(
|
|
2518
|
+
T.any(
|
|
2519
|
+
OpenAI::Beta::BetaMcpToolCallError::McpProtocolError,
|
|
2520
|
+
OpenAI::Beta::BetaMcpToolCallError::McpToolExecutionError,
|
|
2521
|
+
OpenAI::Beta::BetaMcpToolCallError::HTTPError
|
|
2522
|
+
)
|
|
2523
|
+
),
|
|
2500
2524
|
output: T.nilable(String),
|
|
2501
2525
|
status:
|
|
2502
2526
|
OpenAI::Beta::BetaResponseItem::McpCall::Status::TaggedSymbol
|