openai 0.94.0 → 0.96.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 +57 -0
- data/README.md +5 -2
- data/docs/architecture/security-model.md +2 -2
- data/examples/audio/record_and_play.rb +1 -1
- data/lib/openai/helpers/live/transcript_grouper.rb +264 -0
- data/lib/openai/helpers/live/transcript_grouping.rb +309 -0
- data/lib/openai/helpers/live/websocket.rb +454 -0
- data/lib/openai/helpers/realtime/translation.rb +440 -0
- data/lib/openai/helpers/realtime.rb +1 -0
- data/lib/openai/helpers/responses_websocket/incremental.rb +246 -0
- data/lib/openai/helpers/responses_websocket/transports/async_websocket.rb +183 -0
- data/lib/openai/helpers/responses_websocket.rb +1 -0
- data/lib/openai/helpers/streaming/response_stream.rb +19 -11
- data/lib/openai/helpers/structured_output/chat_completion_parser.rb +0 -2
- data/lib/openai/helpers/structured_output/response_parser.rb +1 -2
- data/lib/openai/helpers/structured_output/union_of.rb +0 -2
- data/lib/openai/helpers/websocket/async_websocket_transport.rb +11 -6
- data/lib/openai/helpers/websocket/connection_manager.rb +9 -0
- data/lib/openai/internal/read_io_adapter.rb +0 -2
- data/lib/openai/internal/stream.rb +0 -2
- data/lib/openai/internal/type/base_model.rb +4 -6
- data/lib/openai/internal/type/converter.rb +5 -3
- data/lib/openai/internal/type/enum.rb +0 -2
- data/lib/openai/internal/type/union.rb +0 -6
- data/lib/openai/internal/type/unknown.rb +34 -6
- data/lib/openai/internal/util.rb +0 -4
- data/lib/openai/models/admin/organization/audit_log_list_response.rb +5 -3
- data/lib/openai/models/admin/organization/external_storage_configuration.rb +5 -3
- data/lib/openai/models/admin/organization/external_storage_create_params.rb +39 -3
- data/lib/openai/models/admin/organization/gcp_external_storage_provider.rb +55 -0
- data/lib/openai/models/all_models.rb +1 -0
- data/lib/openai/models/audio/speech_create_params.rb +9 -0
- data/lib/openai/models/audio/transcription_create_response.rb +4 -1
- data/lib/openai/models/audio/translation_create_response.rb +4 -1
- data/lib/openai/models/beta/agent.rb +1 -0
- data/lib/openai/models/beta/agent_create_params.rb +3 -0
- data/lib/openai/models/beta/agent_session.rb +1 -0
- data/lib/openai/models/beta/agent_update_params.rb +3 -0
- data/lib/openai/models/beta/agents/environments/template_create_params.rb +3 -3
- data/lib/openai/models/beta/agents/environments/template_update_params.rb +6 -6
- data/lib/openai/models/beta/agents/session_create_params.rb +3 -0
- data/lib/openai/models/beta/agents/session_update_params.rb +3 -0
- data/lib/openai/models/beta/agents/vaults/credential.rb +10 -1
- data/lib/openai/models/beta/agents/vaults/credential_create_params.rb +12 -1
- data/lib/openai/models/beta/agents/vaults/credential_update_params.rb +14 -3
- data/lib/openai/models/beta/beta_response.rb +41 -1
- data/lib/openai/models/beta/beta_responses_client_event.rb +80 -1
- data/lib/openai/models/beta/beta_web_search_preview_tool.rb +9 -3
- data/lib/openai/models/beta/beta_web_search_tool.rb +9 -3
- data/lib/openai/models/beta/environment_param.rb +6 -5
- data/lib/openai/models/beta/response_compact_params.rb +6 -0
- data/lib/openai/models/beta/response_create_params.rb +71 -1
- data/lib/openai/models/beta/session_turn_error.rb +3 -0
- data/lib/openai/models/chat_model.rb +1 -0
- data/lib/openai/models/responses/response.rb +35 -1
- data/lib/openai/models/responses/response_compact_params.rb +6 -0
- data/lib/openai/models/responses/response_create_params.rb +65 -1
- data/lib/openai/models/responses/responses_client_event.rb +70 -1
- data/lib/openai/models/responses/web_search_preview_tool.rb +9 -3
- data/lib/openai/models/responses/web_search_tool.rb +9 -3
- data/lib/openai/models/responses_model.rb +1 -0
- data/lib/openai/models/video_create_error.rb +12 -1
- data/lib/openai/net_http_client.rb +0 -2
- data/lib/openai/resources/admin/organization/external_storage.rb +1 -1
- data/lib/openai/resources/audio/transcriptions.rb +5 -3
- data/lib/openai/resources/audio/translations.rb +1 -1
- data/lib/openai/resources/beta/agents/environments/templates.rb +3 -3
- data/lib/openai/resources/beta/agents/vaults/credentials.rb +12 -4
- data/lib/openai/resources/beta/responses.rb +8 -2
- data/lib/openai/resources/responses.rb +8 -1
- data/lib/openai/version.rb +1 -1
- data/lib/openai.rb +2 -0
- data/rbi/openai/helpers/live/transcript_grouper.rbi +67 -0
- data/rbi/openai/helpers/live/websocket.rbi +299 -0
- data/rbi/openai/helpers/realtime/translation.rbi +137 -0
- data/rbi/openai/helpers/responses_websocket/incremental.rbi +32 -0
- data/rbi/openai/helpers/responses_websocket/transports/async_websocket.rbi +24 -0
- data/rbi/openai/helpers/streaming/response_stream.rbi +5 -0
- data/rbi/openai/internal/type/converter.rbi +3 -2
- data/rbi/openai/models/admin/organization/audit_log_list_response.rbi +6 -3
- data/rbi/openai/models/admin/organization/external_storage_configuration.rbi +4 -2
- data/rbi/openai/models/admin/organization/external_storage_create_params.rbi +76 -4
- data/rbi/openai/models/admin/organization/gcp_external_storage_provider.rbi +100 -0
- data/rbi/openai/models/all_models.rbi +1 -0
- data/rbi/openai/models/audio/speech_create_params.rbi +3 -0
- data/rbi/openai/models/audio/transcription_create_response.rbi +2 -1
- data/rbi/openai/models/audio/translation_create_response.rbi +2 -1
- data/rbi/openai/models/beta/agent.rbi +1 -0
- data/rbi/openai/models/beta/agent_create_params.rbi +3 -0
- data/rbi/openai/models/beta/agent_session.rbi +1 -0
- data/rbi/openai/models/beta/agent_update_params.rbi +3 -0
- data/rbi/openai/models/beta/agents/environments/template_create_params.rbi +3 -3
- data/rbi/openai/models/beta/agents/environments/template_update_params.rbi +6 -6
- data/rbi/openai/models/beta/agents/session_create_params.rbi +3 -0
- data/rbi/openai/models/beta/agents/session_update_params.rbi +3 -0
- data/rbi/openai/models/beta/agents/vaults/credential.rbi +10 -0
- data/rbi/openai/models/beta/agents/vaults/credential_create_params.rbi +15 -0
- data/rbi/openai/models/beta/agents/vaults/credential_update_params.rbi +35 -6
- data/rbi/openai/models/beta/beta_response.rbi +65 -0
- data/rbi/openai/models/beta/beta_responses_client_event.rbi +132 -0
- data/rbi/openai/models/beta/beta_web_search_preview_tool.rbi +9 -3
- data/rbi/openai/models/beta/beta_web_search_tool.rbi +9 -3
- data/rbi/openai/models/beta/environment_param.rbi +5 -4
- data/rbi/openai/models/beta/response_compact_params.rbi +5 -0
- data/rbi/openai/models/beta/response_create_params.rbi +104 -0
- data/rbi/openai/models/beta/session_turn_error.rbi +6 -0
- data/rbi/openai/models/chat_model.rbi +1 -0
- data/rbi/openai/models/responses/response.rbi +63 -0
- data/rbi/openai/models/responses/response_compact_params.rbi +5 -0
- data/rbi/openai/models/responses/response_create_params.rbi +106 -0
- data/rbi/openai/models/responses/responses_client_event.rbi +125 -0
- data/rbi/openai/models/responses/web_search_preview_tool.rbi +9 -3
- data/rbi/openai/models/responses/web_search_tool.rbi +9 -3
- data/rbi/openai/models/responses_model.rbi +4 -0
- data/rbi/openai/models/video_create_error.rbi +20 -1
- data/rbi/openai/resources/admin/organization/external_storage.rbi +2 -1
- data/rbi/openai/resources/audio/transcriptions.rbi +4 -2
- data/rbi/openai/resources/beta/agents/environments/templates.rbi +3 -3
- data/rbi/openai/resources/beta/agents/vaults/credentials.rbi +11 -3
- data/rbi/openai/resources/beta/responses.rbi +6 -0
- data/rbi/openai/resources/responses.rbi +11 -0
- data/responses-websocket.md +55 -0
- data/sig/openai/helpers/live/transcript_grouper.rbs +42 -0
- data/sig/openai/helpers/live/websocket.rbs +152 -0
- data/sig/openai/helpers/realtime/translation.rbs +81 -0
- data/sig/openai/helpers/responses_websocket/incremental.rbs +14 -0
- data/sig/openai/helpers/responses_websocket/transports/async_websocket.rbs +21 -0
- data/sig/openai/helpers/streaming/response_stream.rbs +9 -0
- data/sig/openai/internal/type/converter.rbs +3 -1
- data/sig/openai/models/admin/organization/audit_log_list_response.rbs +1 -0
- data/sig/openai/models/admin/organization/external_storage_configuration.rbs +1 -0
- data/sig/openai/models/admin/organization/external_storage_create_params.rbs +38 -0
- data/sig/openai/models/admin/organization/gcp_external_storage_provider.rbs +54 -0
- data/sig/openai/models/all_models.rbs +2 -0
- data/sig/openai/models/audio/speech_create_params.rbs +6 -0
- data/sig/openai/models/audio/transcription_create_response.rbs +1 -0
- data/sig/openai/models/audio/translation_create_response.rbs +3 -1
- data/sig/openai/models/beta/agent.rbs +3 -1
- data/sig/openai/models/beta/agent_create_params.rbs +5 -1
- data/sig/openai/models/beta/agent_session.rbs +3 -1
- data/sig/openai/models/beta/agent_update_params.rbs +5 -1
- data/sig/openai/models/beta/agents/environments/template_create_params.rbs +2 -2
- data/sig/openai/models/beta/agents/environments/template_update_params.rbs +4 -4
- data/sig/openai/models/beta/agents/session_create_params.rbs +5 -1
- data/sig/openai/models/beta/agents/session_update_params.rbs +5 -1
- data/sig/openai/models/beta/agents/vaults/credential.rbs +8 -0
- data/sig/openai/models/beta/agents/vaults/credential_create_params.rbs +14 -0
- data/sig/openai/models/beta/agents/vaults/credential_update_params.rbs +23 -4
- data/sig/openai/models/beta/beta_response.rbs +39 -0
- data/sig/openai/models/beta/beta_responses_client_event.rbs +81 -0
- data/sig/openai/models/beta/beta_web_search_preview_tool.rbs +6 -2
- data/sig/openai/models/beta/beta_web_search_tool.rbs +6 -2
- data/sig/openai/models/beta/environment_param.rbs +2 -2
- data/sig/openai/models/beta/response_compact_params.rbs +4 -0
- data/sig/openai/models/beta/response_create_params.rbs +81 -0
- data/sig/openai/models/beta/session_turn_error.rbs +4 -0
- data/sig/openai/models/chat_model.rbs +2 -0
- data/sig/openai/models/responses/response.rbs +35 -0
- data/sig/openai/models/responses/response_compact_params.rbs +4 -0
- data/sig/openai/models/responses/response_create_params.rbs +77 -0
- data/sig/openai/models/responses/responses_client_event.rbs +77 -0
- data/sig/openai/models/responses/web_search_preview_tool.rbs +6 -2
- data/sig/openai/models/responses/web_search_tool.rbs +6 -2
- data/sig/openai/models/responses_model.rbs +2 -0
- data/sig/openai/models/video_create_error.rbs +14 -0
- data/sig/openai/resources/beta/agents/vaults/credentials.rbs +3 -1
- data/sig/openai/resources/beta/responses.rbs +2 -0
- data/sig/openai/resources/responses.rbs +4 -0
- metadata +17 -1
|
@@ -20,6 +20,14 @@ module OpenAI
|
|
|
20
20
|
sig { returns(String) }
|
|
21
21
|
attr_accessor :message
|
|
22
22
|
|
|
23
|
+
# The Retry-After and Retry-After-Ms headers returned with the original error, if
|
|
24
|
+
# any.
|
|
25
|
+
sig { returns(T.nilable(T::Hash[Symbol, String])) }
|
|
26
|
+
attr_reader :headers
|
|
27
|
+
|
|
28
|
+
sig { params(headers: T::Hash[Symbol, String]).void }
|
|
29
|
+
attr_writer :headers
|
|
30
|
+
|
|
23
31
|
sig { returns(T.nilable(OpenAI::VideoCreateError::Misalignment)) }
|
|
24
32
|
attr_reader :misalignment
|
|
25
33
|
|
|
@@ -34,6 +42,8 @@ module OpenAI
|
|
|
34
42
|
|
|
35
43
|
message: String,
|
|
36
44
|
|
|
45
|
+
headers: T::Hash[Symbol, String],
|
|
46
|
+
|
|
37
47
|
misalignment: OpenAI::VideoCreateError::Misalignment::OrHash
|
|
38
48
|
)
|
|
39
49
|
.returns(T.attached_class)
|
|
@@ -46,13 +56,22 @@ module OpenAI
|
|
|
46
56
|
# A human-readable description of the error that was returned.
|
|
47
57
|
message:,
|
|
48
58
|
|
|
59
|
+
# The Retry-After and Retry-After-Ms headers returned with the original error, if
|
|
60
|
+
# any.
|
|
61
|
+
headers: nil,
|
|
62
|
+
|
|
49
63
|
misalignment: nil
|
|
50
64
|
)
|
|
51
65
|
end
|
|
52
66
|
|
|
53
67
|
sig do
|
|
54
68
|
override.returns(
|
|
55
|
-
{
|
|
69
|
+
{
|
|
70
|
+
code: String,
|
|
71
|
+
message: String,
|
|
72
|
+
headers: T::Hash[Symbol, String],
|
|
73
|
+
misalignment: OpenAI::VideoCreateError::Misalignment
|
|
74
|
+
}
|
|
56
75
|
)
|
|
57
76
|
end
|
|
58
77
|
def to_hash
|
|
@@ -15,7 +15,8 @@ module OpenAI
|
|
|
15
15
|
project_id: String,
|
|
16
16
|
provider: T.any(
|
|
17
17
|
OpenAI::Admin::Organization::ExternalStorageCreateParams::Provider::Aws::OrHash,
|
|
18
|
-
OpenAI::Admin::Organization::ExternalStorageCreateParams::Provider::Azure::OrHash
|
|
18
|
+
OpenAI::Admin::Organization::ExternalStorageCreateParams::Provider::Azure::OrHash,
|
|
19
|
+
OpenAI::Admin::Organization::ExternalStorageCreateParams::Provider::Gcp::OrHash
|
|
19
20
|
),
|
|
20
21
|
request_options: OpenAI::RequestOptions::OrHash
|
|
21
22
|
)
|
|
@@ -14,7 +14,8 @@ module OpenAI
|
|
|
14
14
|
# Transcribes audio into the input language.
|
|
15
15
|
#
|
|
16
16
|
# Returns a transcription object in `json`, `diarized_json`, or `verbose_json`
|
|
17
|
-
# format, or a stream of transcript
|
|
17
|
+
# format, plain text in `text`, `srt`, or `vtt` format, or a stream of transcript
|
|
18
|
+
# events. Supported formats depend on the model.
|
|
18
19
|
sig {
|
|
19
20
|
params(
|
|
20
21
|
file: OpenAI::Internal::FileInput,
|
|
@@ -125,7 +126,8 @@ module OpenAI
|
|
|
125
126
|
# Transcribes audio into the input language.
|
|
126
127
|
#
|
|
127
128
|
# Returns a transcription object in `json`, `diarized_json`, or `verbose_json`
|
|
128
|
-
# format, or a stream of transcript
|
|
129
|
+
# format, plain text in `text`, `srt`, or `vtt` format, or a stream of transcript
|
|
130
|
+
# events. Supported formats depend on the model.
|
|
129
131
|
sig {
|
|
130
132
|
params(
|
|
131
133
|
file: OpenAI::Internal::FileInput,
|
|
@@ -54,7 +54,7 @@ module OpenAI
|
|
|
54
54
|
# An optional human-readable display name for the template.
|
|
55
55
|
name: nil,
|
|
56
56
|
# Network access policy for the environment. Defaults to disabled for GA requests
|
|
57
|
-
# and enabled for
|
|
57
|
+
# and enabled for beta requests.
|
|
58
58
|
network: nil,
|
|
59
59
|
# Packages to install in the environment. Defaults to empty package lists.
|
|
60
60
|
packages: nil,
|
|
@@ -129,8 +129,8 @@ module OpenAI
|
|
|
129
129
|
# A replacement human-readable display name, or `null` to clear the name.
|
|
130
130
|
name: nil,
|
|
131
131
|
# Network access available after setup completes. Omit to preserve the current
|
|
132
|
-
# policy, or pass `null` to reset to disabled for GA requests or enabled for
|
|
133
|
-
#
|
|
132
|
+
# policy, or pass `null` to reset to disabled for GA requests or enabled for beta
|
|
133
|
+
# requests.
|
|
134
134
|
network: nil,
|
|
135
135
|
# Packages installed before the runtime network policy applies.
|
|
136
136
|
packages: nil,
|
|
@@ -23,6 +23,7 @@ module OpenAI
|
|
|
23
23
|
OpenAI::Beta::Agents::Vaults::CredentialAuthCreateParam::EnvironmentVariable::OrHash
|
|
24
24
|
),
|
|
25
25
|
name: String,
|
|
26
|
+
metadata: T::Hash[Symbol, String],
|
|
26
27
|
request_options: OpenAI::RequestOptions::OrHash
|
|
27
28
|
)
|
|
28
29
|
.returns(OpenAI::Beta::Agents::Vaults::Credential)
|
|
@@ -35,6 +36,9 @@ module OpenAI
|
|
|
35
36
|
# The name is trimmed before storage. It must contain 1 to 256 UTF-8 bytes after
|
|
36
37
|
# trimming.
|
|
37
38
|
name:,
|
|
39
|
+
# Up to 16 string key-value pairs, with keys up to 64 and values up to 512
|
|
40
|
+
# characters. Defaults to an empty map.
|
|
41
|
+
metadata: nil,
|
|
38
42
|
request_options: {}
|
|
39
43
|
)
|
|
40
44
|
end
|
|
@@ -55,8 +59,7 @@ module OpenAI
|
|
|
55
59
|
)
|
|
56
60
|
end
|
|
57
61
|
|
|
58
|
-
#
|
|
59
|
-
# metadata. See
|
|
62
|
+
# Updates credential metadata or rotates its write-only secret. See
|
|
60
63
|
# [vaults](https://developers.openai.com/api/docs/guides/agents-api/tools/vaults).
|
|
61
64
|
sig {
|
|
62
65
|
params(
|
|
@@ -67,6 +70,7 @@ module OpenAI
|
|
|
67
70
|
OpenAI::Beta::Agents::Vaults::CredentialAuthRotateParam::StaticBearer::OrHash,
|
|
68
71
|
OpenAI::Beta::Agents::Vaults::CredentialAuthRotateParam::EnvironmentVariable::OrHash
|
|
69
72
|
),
|
|
73
|
+
metadata: T::Hash[Symbol, String],
|
|
70
74
|
request_options: OpenAI::RequestOptions::OrHash
|
|
71
75
|
)
|
|
72
76
|
.returns(OpenAI::Beta::Agents::Vaults::Credential)
|
|
@@ -78,7 +82,11 @@ module OpenAI
|
|
|
78
82
|
vault_id:,
|
|
79
83
|
# Body param: Replacement values for the credential's existing authentication
|
|
80
84
|
# method.
|
|
81
|
-
auth
|
|
85
|
+
auth: nil,
|
|
86
|
+
# Body param: Replaces all metadata. Omit to preserve it, or pass {} to clear it.
|
|
87
|
+
# Up to 16 string key-value pairs, with keys up to 64 and values up to 512
|
|
88
|
+
# characters.
|
|
89
|
+
metadata: nil,
|
|
82
90
|
request_options: {}
|
|
83
91
|
)
|
|
84
92
|
end
|
|
@@ -31,6 +31,7 @@ module OpenAI
|
|
|
31
31
|
# to use your own data as input for the model's response.
|
|
32
32
|
sig {
|
|
33
33
|
params(
|
|
34
|
+
access_programs: OpenAI::Beta::ResponseCreateParams::AccessPrograms::OrHash,
|
|
34
35
|
background: T.nilable(T::Boolean),
|
|
35
36
|
context_management: T.nilable(T::Array[OpenAI::Beta::ResponseCreateParams::ContextManagement::OrHash]),
|
|
36
37
|
conversation: T.nilable(T.any(String, OpenAI::Beta::BetaResponseConversationParam::OrHash)),
|
|
@@ -98,6 +99,8 @@ module OpenAI
|
|
|
98
99
|
.returns(OpenAI::Beta::BetaResponse)
|
|
99
100
|
}
|
|
100
101
|
def create(
|
|
102
|
+
# Body param: Domain-specific access programs to use for this request.
|
|
103
|
+
access_programs: nil,
|
|
101
104
|
# Body param: Whether to run the model response in the background.
|
|
102
105
|
# [Learn more](https://developers.openai.com/api/docs/guides/background).
|
|
103
106
|
background: nil,
|
|
@@ -346,6 +349,7 @@ module OpenAI
|
|
|
346
349
|
# to use your own data as input for the model's response.
|
|
347
350
|
sig {
|
|
348
351
|
params(
|
|
352
|
+
access_programs: OpenAI::Beta::ResponseCreateParams::AccessPrograms::OrHash,
|
|
349
353
|
background: T.nilable(T::Boolean),
|
|
350
354
|
context_management: T.nilable(T::Array[OpenAI::Beta::ResponseCreateParams::ContextManagement::OrHash]),
|
|
351
355
|
conversation: T.nilable(T.any(String, OpenAI::Beta::BetaResponseConversationParam::OrHash)),
|
|
@@ -417,6 +421,8 @@ module OpenAI
|
|
|
417
421
|
)
|
|
418
422
|
}
|
|
419
423
|
def stream_raw(
|
|
424
|
+
# Body param: Domain-specific access programs to use for this request.
|
|
425
|
+
access_programs: nil,
|
|
420
426
|
# Body param: Whether to run the model response in the background.
|
|
421
427
|
# [Learn more](https://developers.openai.com/api/docs/guides/background).
|
|
422
428
|
background: nil,
|
|
@@ -29,6 +29,7 @@ module OpenAI
|
|
|
29
29
|
# to use your own data as input for the model's response.
|
|
30
30
|
sig do
|
|
31
31
|
params(
|
|
32
|
+
access_programs: OpenAI::Responses::ResponseCreateParams::AccessPrograms::OrHash,
|
|
32
33
|
background: T.nilable(T::Boolean),
|
|
33
34
|
context_management: T.nilable(T::Array[OpenAI::Responses::ResponseCreateParams::ContextManagement::OrHash]),
|
|
34
35
|
conversation: T.nilable(T.any(String, OpenAI::Responses::ResponseConversationParam::OrHash)),
|
|
@@ -97,6 +98,8 @@ module OpenAI
|
|
|
97
98
|
.returns(OpenAI::Responses::Response)
|
|
98
99
|
end
|
|
99
100
|
def create(
|
|
101
|
+
# Domain-specific access programs to use for this request.
|
|
102
|
+
access_programs: nil,
|
|
100
103
|
# Whether to run the model response in the background.
|
|
101
104
|
# [Learn more](https://developers.openai.com/api/docs/guides/background).
|
|
102
105
|
background: nil,
|
|
@@ -334,6 +337,7 @@ module OpenAI
|
|
|
334
337
|
# to use your own data as input for the model's response.
|
|
335
338
|
sig do
|
|
336
339
|
params(
|
|
340
|
+
access_programs: OpenAI::Responses::ResponseCreateParams::AccessPrograms::OrHash,
|
|
337
341
|
background: T.nilable(T::Boolean),
|
|
338
342
|
context_management: T.nilable(T::Array[OpenAI::Responses::ResponseCreateParams::ContextManagement::OrHash]),
|
|
339
343
|
conversation: T.nilable(T.any(String, OpenAI::Responses::ResponseConversationParam::OrHash)),
|
|
@@ -408,6 +412,8 @@ module OpenAI
|
|
|
408
412
|
)
|
|
409
413
|
end
|
|
410
414
|
def stream_raw(
|
|
415
|
+
# Domain-specific access programs to use for this request.
|
|
416
|
+
access_programs: nil,
|
|
411
417
|
# Whether to run the model response in the background.
|
|
412
418
|
# [Learn more](https://developers.openai.com/api/docs/guides/background).
|
|
413
419
|
background: nil,
|
|
@@ -645,6 +651,7 @@ module OpenAI
|
|
|
645
651
|
# your own data as input for the model's response.
|
|
646
652
|
sig do
|
|
647
653
|
params(
|
|
654
|
+
access_programs: OpenAI::Responses::ResponseCreateParams::AccessPrograms::OrHash,
|
|
648
655
|
background: T.nilable(T::Boolean),
|
|
649
656
|
include: T.nilable(
|
|
650
657
|
T::Array[OpenAI::Responses::ResponseIncludable::OrSymbol]
|
|
@@ -715,6 +722,8 @@ module OpenAI
|
|
|
715
722
|
.returns(OpenAI::Streaming::ResponseStream)
|
|
716
723
|
end
|
|
717
724
|
def stream(
|
|
725
|
+
# Domain-specific access programs to use for this request.
|
|
726
|
+
access_programs: nil,
|
|
718
727
|
# Whether to run the model response in the background.
|
|
719
728
|
# [Learn more](https://developers.openai.com/api/docs/guides/background).
|
|
720
729
|
background: nil,
|
|
@@ -1134,6 +1143,7 @@ module OpenAI
|
|
|
1134
1143
|
class Response
|
|
1135
1144
|
sig do
|
|
1136
1145
|
params(
|
|
1146
|
+
access_programs: OpenAI::Responses::ResponsesClientEvent::ResponseCreate::AccessPrograms::OrHash,
|
|
1137
1147
|
background: T.nilable(T::Boolean),
|
|
1138
1148
|
context_management: T.nilable(
|
|
1139
1149
|
T::Array[OpenAI::Responses::ResponsesClientEvent::ResponseCreate::ContextManagement::OrHash]
|
|
@@ -1204,6 +1214,7 @@ module OpenAI
|
|
|
1204
1214
|
.void
|
|
1205
1215
|
end
|
|
1206
1216
|
def create(
|
|
1217
|
+
access_programs: nil,
|
|
1207
1218
|
background: nil,
|
|
1208
1219
|
context_management: nil,
|
|
1209
1220
|
conversation: nil,
|
data/responses-websocket.md
CHANGED
|
@@ -60,6 +60,61 @@ event types arrive as `OpenAI::Responses::UnknownServerEvent`. Preserve or handl
|
|
|
60
60
|
them explicitly where your application needs them. Do not assume every event
|
|
61
61
|
has a response, text delta, or lane ID.
|
|
62
62
|
|
|
63
|
+
## Receive limits
|
|
64
|
+
|
|
65
|
+
The default Responses transport accepts `max_message_bytes`,
|
|
66
|
+
`max_wire_message_bytes`, and `max_message_frames` in `transport_options`.
|
|
67
|
+
Each is an optional positive integer; omitted or `nil` keeps its unlimited default. Choose values
|
|
68
|
+
for your application's legitimate largest message, including images and tool
|
|
69
|
+
results. These are caller budgets, not API limits.
|
|
70
|
+
|
|
71
|
+
```ruby
|
|
72
|
+
client.responses.connect(
|
|
73
|
+
transport_options: {max_message_bytes: 64 * 1024 * 1024, max_message_frames: 4_096}
|
|
74
|
+
) do |connection|
|
|
75
|
+
connection.response.create(model: "gpt-5.2", input: "Hello")
|
|
76
|
+
while (event = connection.receive)
|
|
77
|
+
puts event.type
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
The decoded byte budget (`max_message_bytes`) covers the payload of each complete
|
|
83
|
+
message after decompression, including all its fragments. The optional wire budget
|
|
84
|
+
(`max_wire_message_bytes`) covers data payload bytes before decompression across those
|
|
85
|
+
fragments, excluding frame headers and control frames. A wire budget alone does
|
|
86
|
+
not impose a decoded byte limit. Oversized frame headers are rejected
|
|
87
|
+
before the advertised payload is read (with up to 125 bytes allowed for a legal
|
|
88
|
+
interleaved control frame). The frame budget counts text, binary and continuation
|
|
89
|
+
frames, including empty continuations; ping/pong and close frames don't count.
|
|
90
|
+
Set both when you need to bound both payload and frame-buffer memory.
|
|
91
|
+
Counters reset at the end of each message.
|
|
92
|
+
|
|
93
|
+
To use WebSocket compression with independently bounded wire and decoded sizes:
|
|
94
|
+
|
|
95
|
+
```ruby
|
|
96
|
+
limits = {
|
|
97
|
+
max_wire_message_bytes: 8 * 1024 * 1024,
|
|
98
|
+
max_message_bytes: 64 * 1024 * 1024,
|
|
99
|
+
max_message_frames: 4_096
|
|
100
|
+
}
|
|
101
|
+
client.responses.connect(transport_options: limits) do |connection|
|
|
102
|
+
connection.response.create(model: "gpt-5.2", input: "Hello")
|
|
103
|
+
while (event = connection.receive)
|
|
104
|
+
puts event.type
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
The server can still decline compression, in which case both byte budgets apply
|
|
110
|
+
to the uncompressed message. Existing byte-only configurations continue to
|
|
111
|
+
decline compression, as before; no-limit and frame-only configurations retain
|
|
112
|
+
their normal compression negotiation.
|
|
113
|
+
Exceeding any chosen limit aborts the socket, releases its pool slot, and
|
|
114
|
+
raises `OpenAI::Errors::ResponsesConnectionError`; no requests are replayed.
|
|
115
|
+
Managed sessions accept the same `transport_options`. An injected transport
|
|
116
|
+
still receives its options unchanged and owns their meaning.
|
|
117
|
+
|
|
63
118
|
## Managed sessions
|
|
64
119
|
|
|
65
120
|
`OpenAI::Responses::Session.open` adds routed lanes and final-response collection
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
module OpenAI
|
|
2
|
+
module Models
|
|
3
|
+
module Live
|
|
4
|
+
class TranscriptGrouper
|
|
5
|
+
type speaker = :user | :assistant
|
|
6
|
+
type close_reason =
|
|
7
|
+
:speaker_change
|
|
8
|
+
| :inactivity
|
|
9
|
+
| :timestamp_reset
|
|
10
|
+
| :session_closed
|
|
11
|
+
| :manual
|
|
12
|
+
|
|
13
|
+
class Segment < Data
|
|
14
|
+
attr_reader id: String
|
|
15
|
+
attr_reader previous_id: String?
|
|
16
|
+
attr_reader speaker: TranscriptGrouper::speaker
|
|
17
|
+
attr_reader text: String
|
|
18
|
+
attr_reader start_ms: Integer
|
|
19
|
+
attr_reader end_ms: Integer
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
class ClosedSegment < Data
|
|
23
|
+
attr_reader segment: Segment
|
|
24
|
+
attr_reader reason: TranscriptGrouper::close_reason
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def initialize: (
|
|
28
|
+
?on_segment_updated: (^(Segment) -> void)?,
|
|
29
|
+
?on_segment_closed: (^(ClosedSegment) -> void)?,
|
|
30
|
+
?min_turn_separation_ms: Integer | Float,
|
|
31
|
+
?assistant_silence_ms: Integer | Float,
|
|
32
|
+
?backchannel_max_duration_ms: Integer | Float,
|
|
33
|
+
?backchannel_isolation_ms: Integer | Float,
|
|
34
|
+
?additional_acknowledgments: Array[String]
|
|
35
|
+
) -> void
|
|
36
|
+
|
|
37
|
+
def push: (top event) -> void
|
|
38
|
+
def close: -> void
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
module OpenAI
|
|
2
|
+
class Client
|
|
3
|
+
# @api private
|
|
4
|
+
def with_live_websocket_connection_request: (
|
|
5
|
+
?path: String | ::Array[String],
|
|
6
|
+
?query: ::Hash[String, String],
|
|
7
|
+
?websocket_base_url: String?,
|
|
8
|
+
?options: OpenAI::request_opts?
|
|
9
|
+
) {
|
|
10
|
+
(
|
|
11
|
+
OpenAI::Internal::Transport::BaseClient::request_input request,
|
|
12
|
+
^-> void mark_handshake_completed
|
|
13
|
+
) -> top
|
|
14
|
+
} -> top
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
module Errors
|
|
18
|
+
class LiveConnectionError < OpenAI::Errors::WebSocketConnectionError
|
|
19
|
+
end
|
|
20
|
+
class LiveProtocolError < OpenAI::Errors::WebSocketProtocolError
|
|
21
|
+
def initialize: -> void
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
module Models
|
|
26
|
+
module Live
|
|
27
|
+
type connection_server_event =
|
|
28
|
+
OpenAI::Models::Live::server_event | OpenAI::Live::UnknownServerEvent
|
|
29
|
+
type connection_client_event =
|
|
30
|
+
OpenAI::Models::Live::client_event | ::Hash[Symbol | String, untyped]
|
|
31
|
+
type fork_connection_server_event =
|
|
32
|
+
OpenAI::Models::Live::fork_server_event
|
|
33
|
+
| OpenAI::Live::UnknownServerEvent
|
|
34
|
+
type fork_connection_client_event =
|
|
35
|
+
OpenAI::Models::Live::fork_client_event
|
|
36
|
+
| ::Hash[Symbol | String, untyped]
|
|
37
|
+
type sideband_connection_client_event =
|
|
38
|
+
OpenAI::Models::Live::SessionUpdateEvent
|
|
39
|
+
| OpenAI::Models::Live::InputAudioMuteEvent
|
|
40
|
+
| OpenAI::Models::Live::InputAudioUnmuteEvent
|
|
41
|
+
| OpenAI::Models::Live::InstructionsAppendEvent
|
|
42
|
+
| OpenAI::Models::Live::ThinkingAppendEvent
|
|
43
|
+
| OpenAI::Models::Live::CommentaryAppendEvent
|
|
44
|
+
| OpenAI::Models::Live::ResponseItemCreateEvent
|
|
45
|
+
| OpenAI::Models::Live::ResponseCreateEvent
|
|
46
|
+
| OpenAI::Models::Live::SessionCloseEvent
|
|
47
|
+
| ::Hash[Symbol | String, untyped]
|
|
48
|
+
|
|
49
|
+
class UnknownServerEvent
|
|
50
|
+
attr_reader type: Symbol
|
|
51
|
+
attr_reader data: ::Hash[Symbol | String, untyped]
|
|
52
|
+
def initialize: (data: ::Hash[Symbol | String, untyped]) -> void
|
|
53
|
+
def to_h: -> ::Hash[(Symbol | String), untyped]
|
|
54
|
+
def inspect: -> String
|
|
55
|
+
alias to_s inspect
|
|
56
|
+
end
|
|
57
|
+
class Connection
|
|
58
|
+
include Enumerable[OpenAI::Models::Live::connection_server_event]
|
|
59
|
+
attr_reader url: URI::Generic
|
|
60
|
+
def initialize: (socket: top, url: URI::Generic) -> void
|
|
61
|
+
def each:
|
|
62
|
+
-> Enumerator[OpenAI::Models::Live::connection_server_event, self]
|
|
63
|
+
| {
|
|
64
|
+
(OpenAI::Models::Live::connection_server_event event) -> void
|
|
65
|
+
} -> self
|
|
66
|
+
def receive: -> OpenAI::Models::Live::connection_server_event?
|
|
67
|
+
def receive_raw: -> String?
|
|
68
|
+
def send_event: (
|
|
69
|
+
OpenAI::Models::Live::connection_client_event event
|
|
70
|
+
) -> nil
|
|
71
|
+
def send_raw: (String data) -> nil
|
|
72
|
+
def close: (?code: Integer, ?reason: String) -> nil
|
|
73
|
+
def abort: -> nil
|
|
74
|
+
def closed?: -> bool
|
|
75
|
+
end
|
|
76
|
+
class SidebandConnection
|
|
77
|
+
include Enumerable[OpenAI::Models::Live::connection_server_event]
|
|
78
|
+
attr_reader url: URI::Generic
|
|
79
|
+
def initialize: (socket: top, url: URI::Generic) -> void
|
|
80
|
+
def each:
|
|
81
|
+
-> Enumerator[OpenAI::Models::Live::connection_server_event, self]
|
|
82
|
+
| {
|
|
83
|
+
(OpenAI::Models::Live::connection_server_event event) -> void
|
|
84
|
+
} -> self
|
|
85
|
+
def receive: -> OpenAI::Models::Live::connection_server_event?
|
|
86
|
+
def receive_raw: -> String?
|
|
87
|
+
def send_event: (
|
|
88
|
+
OpenAI::Models::Live::sideband_connection_client_event event
|
|
89
|
+
) -> nil
|
|
90
|
+
def send_raw: (String data) -> nil
|
|
91
|
+
def close: (?code: Integer, ?reason: String) -> nil
|
|
92
|
+
def abort: -> nil
|
|
93
|
+
def closed?: -> bool
|
|
94
|
+
end
|
|
95
|
+
class ForkConnection
|
|
96
|
+
include Enumerable[OpenAI::Models::Live::fork_connection_server_event]
|
|
97
|
+
attr_reader url: URI::Generic
|
|
98
|
+
def initialize: (socket: top, url: URI::Generic) -> void
|
|
99
|
+
def each:
|
|
100
|
+
-> Enumerator[OpenAI::Models::Live::fork_connection_server_event, self]
|
|
101
|
+
| {
|
|
102
|
+
(OpenAI::Models::Live::fork_connection_server_event event) -> void
|
|
103
|
+
} -> self
|
|
104
|
+
def receive: -> OpenAI::Models::Live::fork_connection_server_event?
|
|
105
|
+
def receive_raw: -> String?
|
|
106
|
+
def send_event: (
|
|
107
|
+
OpenAI::Models::Live::fork_connection_client_event event
|
|
108
|
+
) -> nil
|
|
109
|
+
def send_raw: (String data) -> nil
|
|
110
|
+
def close: (?code: Integer, ?reason: String) -> nil
|
|
111
|
+
def abort: -> nil
|
|
112
|
+
def closed?: -> bool
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
module Resources
|
|
118
|
+
class Live
|
|
119
|
+
def connect: [T] (
|
|
120
|
+
?websocket_base_url: String?,
|
|
121
|
+
?request_options: OpenAI::request_opts?,
|
|
122
|
+
?transport: top,
|
|
123
|
+
?transport_options: ::Hash[Symbol, top]
|
|
124
|
+
) {
|
|
125
|
+
(OpenAI::Live::Connection connection) -> T
|
|
126
|
+
} -> T
|
|
127
|
+
class Sideband
|
|
128
|
+
def connect: [T] (
|
|
129
|
+
String session_id,
|
|
130
|
+
?graceful_close: bool?,
|
|
131
|
+
?websocket_base_url: String?,
|
|
132
|
+
?request_options: OpenAI::request_opts?,
|
|
133
|
+
?transport: top,
|
|
134
|
+
?transport_options: ::Hash[Symbol, top]
|
|
135
|
+
) {
|
|
136
|
+
(OpenAI::Live::SidebandConnection connection) -> T
|
|
137
|
+
} -> T
|
|
138
|
+
end
|
|
139
|
+
class Forks
|
|
140
|
+
def connect: [T] (
|
|
141
|
+
String session_id,
|
|
142
|
+
?websocket_base_url: String?,
|
|
143
|
+
?request_options: OpenAI::request_opts?,
|
|
144
|
+
?transport: top,
|
|
145
|
+
?transport_options: ::Hash[Symbol, top]
|
|
146
|
+
) {
|
|
147
|
+
(OpenAI::Live::ForkConnection connection) -> T
|
|
148
|
+
} -> T
|
|
149
|
+
end
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
end
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
module OpenAI
|
|
2
|
+
class Client
|
|
3
|
+
# @api private
|
|
4
|
+
def with_translation_connection_request: (
|
|
5
|
+
model: String,
|
|
6
|
+
?websocket_base_url: String?,
|
|
7
|
+
?options: OpenAI::request_opts?
|
|
8
|
+
) {
|
|
9
|
+
(
|
|
10
|
+
OpenAI::Internal::Transport::BaseClient::request_input request,
|
|
11
|
+
^-> void mark_handshake_completed
|
|
12
|
+
) -> top
|
|
13
|
+
} -> top
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
module Errors
|
|
17
|
+
class TranslationConnectionError < OpenAI::Errors::WebSocketConnectionError
|
|
18
|
+
end
|
|
19
|
+
class TranslationProtocolError < OpenAI::Errors::WebSocketProtocolError
|
|
20
|
+
def initialize: -> void
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
module Models
|
|
25
|
+
module Realtime
|
|
26
|
+
type translation_connection_server_event =
|
|
27
|
+
OpenAI::Models::Realtime::realtime_translation_server_event
|
|
28
|
+
| OpenAI::Realtime::UnknownTranslationServerEvent
|
|
29
|
+
type translation_connection_client_event =
|
|
30
|
+
OpenAI::Models::Realtime::realtime_translation_client_event
|
|
31
|
+
| ::Hash[Symbol | String, untyped]
|
|
32
|
+
|
|
33
|
+
class UnknownTranslationServerEvent < OpenAI::Realtime::UnknownServerEvent
|
|
34
|
+
def inspect: -> String
|
|
35
|
+
alias to_s inspect
|
|
36
|
+
end
|
|
37
|
+
class TranslationConnection
|
|
38
|
+
include Enumerable[OpenAI::Models::Realtime::translation_connection_server_event]
|
|
39
|
+
attr_reader url: URI::Generic
|
|
40
|
+
def initialize: (socket: top, url: URI::Generic) -> void
|
|
41
|
+
def each:
|
|
42
|
+
-> Enumerator[OpenAI::Models::Realtime::translation_connection_server_event, self]
|
|
43
|
+
| {
|
|
44
|
+
(
|
|
45
|
+
OpenAI::Models::Realtime::translation_connection_server_event event
|
|
46
|
+
) -> void
|
|
47
|
+
} -> self
|
|
48
|
+
def receive: -> OpenAI::Models::Realtime::translation_connection_server_event?
|
|
49
|
+
def receive_raw: -> String?
|
|
50
|
+
def send_event: (
|
|
51
|
+
OpenAI::Models::Realtime::translation_connection_client_event event
|
|
52
|
+
) -> nil
|
|
53
|
+
def finish: (
|
|
54
|
+
timeout: Numeric
|
|
55
|
+
) {
|
|
56
|
+
(
|
|
57
|
+
OpenAI::Models::Realtime::translation_connection_server_event event
|
|
58
|
+
) -> void
|
|
59
|
+
} -> OpenAI::Realtime::RealtimeTranslationSessionClosedEvent
|
|
60
|
+
def send_raw: (String data) -> nil
|
|
61
|
+
def close: (?code: Integer, ?reason: String) -> nil
|
|
62
|
+
def abort: -> nil
|
|
63
|
+
def closed?: -> bool
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
module Resources
|
|
69
|
+
class Realtime
|
|
70
|
+
def connect_translation: [T] (
|
|
71
|
+
model: String,
|
|
72
|
+
?websocket_base_url: String?,
|
|
73
|
+
?request_options: OpenAI::request_opts?,
|
|
74
|
+
?transport: top,
|
|
75
|
+
?transport_options: ::Hash[Symbol, top]
|
|
76
|
+
) {
|
|
77
|
+
(OpenAI::Realtime::TranslationConnection connection) -> T
|
|
78
|
+
} -> T
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
module OpenAI
|
|
2
|
+
module Models
|
|
3
|
+
module Responses
|
|
4
|
+
class IncrementalResponse
|
|
5
|
+
attr_reader phase: (:provisional | :unavailable | :terminal)?
|
|
6
|
+
def initialize: -> void
|
|
7
|
+
def output: -> Array[(response_output_item | Hash[Symbol, untyped])]?
|
|
8
|
+
def terminal_event: -> connection_server_event?
|
|
9
|
+
def add: (connection_server_event event) -> void
|
|
10
|
+
def reset: -> void
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -3,6 +3,27 @@ module OpenAI
|
|
|
3
3
|
module Responses
|
|
4
4
|
module Transports
|
|
5
5
|
class AsyncWebSocket
|
|
6
|
+
# @api private
|
|
7
|
+
module PeekableFramer
|
|
8
|
+
# @api private
|
|
9
|
+
def next_frame_compressed?: -> bool
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
# @api private
|
|
13
|
+
class BoundedFramer
|
|
14
|
+
# @api private
|
|
15
|
+
def compression_negotiated=: (bool value) -> bool
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
# @api private
|
|
19
|
+
module BoundedInflate
|
|
20
|
+
# @api private
|
|
21
|
+
def bound_decoded_messages: (
|
|
22
|
+
Integer max_bytes,
|
|
23
|
+
BoundedFramer framer
|
|
24
|
+
) -> void
|
|
25
|
+
end
|
|
26
|
+
|
|
6
27
|
def initialize: -> void
|
|
7
28
|
def open: (
|
|
8
29
|
url: URI::Generic,
|
|
@@ -98,6 +98,15 @@ module OpenAI
|
|
|
98
98
|
def get_final_response: -> OpenAI::Responses::Response
|
|
99
99
|
def get_output_text: -> String
|
|
100
100
|
end
|
|
101
|
+
|
|
102
|
+
# @api private
|
|
103
|
+
class ResponseStreamState
|
|
104
|
+
def initialize: (
|
|
105
|
+
text_format: untyped,
|
|
106
|
+
?starting_after: Integer?
|
|
107
|
+
) -> void
|
|
108
|
+
def accumulate_output: (untyped event, Array[untyped] items) -> void
|
|
109
|
+
end
|
|
101
110
|
end
|
|
102
111
|
end
|
|
103
112
|
end
|
|
@@ -9,6 +9,7 @@ module OpenAI
|
|
|
9
9
|
type coerce_state =
|
|
10
10
|
{
|
|
11
11
|
translate_names: bool,
|
|
12
|
+
request_only: bool,
|
|
12
13
|
strictness: bool,
|
|
13
14
|
exactness: { yes: Integer, no: Integer, maybe: Integer },
|
|
14
15
|
error: StandardError?,
|
|
@@ -57,7 +58,8 @@ module OpenAI
|
|
|
57
58
|
) -> ::Hash[Symbol, top]
|
|
58
59
|
|
|
59
60
|
def self.new_coerce_state: (
|
|
60
|
-
?translate_names: bool
|
|
61
|
+
?translate_names: bool,
|
|
62
|
+
?request_only: bool
|
|
61
63
|
) -> OpenAI::Internal::Type::Converter::coerce_state
|
|
62
64
|
|
|
63
65
|
def self.coerce: (
|
|
@@ -1837,6 +1837,7 @@ module OpenAI
|
|
|
1837
1837
|
type provider =
|
|
1838
1838
|
OpenAI::Admin::Organization::AwsExternalStorageProvider
|
|
1839
1839
|
| OpenAI::Admin::Organization::AzureExternalStorageProvider
|
|
1840
|
+
| OpenAI::Admin::Organization::GcpExternalStorageProvider
|
|
1840
1841
|
|
|
1841
1842
|
module Provider
|
|
1842
1843
|
extend OpenAI::Internal::Type::Union
|
|
@@ -51,6 +51,7 @@ module OpenAI
|
|
|
51
51
|
type provider =
|
|
52
52
|
OpenAI::Admin::Organization::AwsExternalStorageProvider
|
|
53
53
|
| OpenAI::Admin::Organization::AzureExternalStorageProvider
|
|
54
|
+
| OpenAI::Admin::Organization::GcpExternalStorageProvider
|
|
54
55
|
|
|
55
56
|
module Provider
|
|
56
57
|
extend OpenAI::Internal::Type::Union
|