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
|
@@ -15,12 +15,19 @@ module OpenAI
|
|
|
15
15
|
# @return [String]
|
|
16
16
|
required :message, String
|
|
17
17
|
|
|
18
|
+
# @!attribute headers
|
|
19
|
+
# The Retry-After and Retry-After-Ms headers returned with the original error, if
|
|
20
|
+
# any.
|
|
21
|
+
#
|
|
22
|
+
# @return [Hash{Symbol=>String}, nil]
|
|
23
|
+
optional :headers, OpenAI::Internal::Type::HashOf[String]
|
|
24
|
+
|
|
18
25
|
# @!attribute misalignment
|
|
19
26
|
#
|
|
20
27
|
# @return [OpenAI::Models::VideoCreateError::Misalignment, nil]
|
|
21
28
|
optional :misalignment, -> { OpenAI::VideoCreateError::Misalignment }
|
|
22
29
|
|
|
23
|
-
# @!method initialize(code:, message:, misalignment: nil)
|
|
30
|
+
# @!method initialize(code:, message:, headers: nil, misalignment: nil)
|
|
24
31
|
# An error that occurred while generating the response.
|
|
25
32
|
#
|
|
26
33
|
# @param code [String]
|
|
@@ -29,6 +36,10 @@ module OpenAI
|
|
|
29
36
|
# @param message [String]
|
|
30
37
|
# A human-readable description of the error that was returned.
|
|
31
38
|
#
|
|
39
|
+
# @param headers [Hash{Symbol=>String}]
|
|
40
|
+
# The Retry-After and Retry-After-Ms headers returned with the original error, if
|
|
41
|
+
# any.
|
|
42
|
+
#
|
|
32
43
|
# @param misalignment [OpenAI::Models::VideoCreateError::Misalignment]
|
|
33
44
|
|
|
34
45
|
# @see OpenAI::Models::VideoCreateError#misalignment
|
|
@@ -246,7 +246,6 @@ module OpenAI
|
|
|
246
246
|
finished = false
|
|
247
247
|
request_may_have_been_sent = false
|
|
248
248
|
|
|
249
|
-
# rubocop:disable Metrics/BlockLength
|
|
250
249
|
enum = Enumerator.new do |y|
|
|
251
250
|
next if finished
|
|
252
251
|
|
|
@@ -331,7 +330,6 @@ module OpenAI
|
|
|
331
330
|
)
|
|
332
331
|
)
|
|
333
332
|
end
|
|
334
|
-
# rubocop:enable Metrics/BlockLength
|
|
335
333
|
|
|
336
334
|
_, response = enum.next
|
|
337
335
|
body = OpenAI::Internal::Util.fused_enum(enum, external: true) do
|
|
@@ -10,7 +10,7 @@ module OpenAI
|
|
|
10
10
|
# @overload create(project_id:, provider:, request_options: {})
|
|
11
11
|
#
|
|
12
12
|
# @param project_id [String]
|
|
13
|
-
# @param provider [OpenAI::Models::Admin::Organization::ExternalStorageCreateParams::Provider::Aws, OpenAI::Models::Admin::Organization::ExternalStorageCreateParams::Provider::Azure]
|
|
13
|
+
# @param provider [OpenAI::Models::Admin::Organization::ExternalStorageCreateParams::Provider::Aws, OpenAI::Models::Admin::Organization::ExternalStorageCreateParams::Provider::Azure, OpenAI::Models::Admin::Organization::ExternalStorageCreateParams::Provider::Gcp]
|
|
14
14
|
# @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
15
15
|
#
|
|
16
16
|
# @return [OpenAI::Models::Admin::Organization::ExternalStorageConfiguration]
|
|
@@ -11,7 +11,8 @@ module OpenAI
|
|
|
11
11
|
# Transcribes audio into the input language.
|
|
12
12
|
#
|
|
13
13
|
# Returns a transcription object in `json`, `diarized_json`, or `verbose_json`
|
|
14
|
-
# format, or a stream of transcript
|
|
14
|
+
# format, plain text in `text`, `srt`, or `vtt` format, or a stream of transcript
|
|
15
|
+
# events. Supported formats depend on the model.
|
|
15
16
|
#
|
|
16
17
|
# `String`, `StringIO`, and pathless `IO` inputs are sent with generic upload
|
|
17
18
|
# metadata. Use `OpenAI::FilePart` when you need to override the filename or
|
|
@@ -108,7 +109,7 @@ module OpenAI
|
|
|
108
109
|
#
|
|
109
110
|
# @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
110
111
|
#
|
|
111
|
-
# @return [OpenAI::Models::Audio::Transcription, OpenAI::Models::Audio::TranscriptionDiarized, OpenAI::Models::Audio::TranscriptionVerbose]
|
|
112
|
+
# @return [OpenAI::Models::Audio::Transcription, OpenAI::Models::Audio::TranscriptionDiarized, OpenAI::Models::Audio::TranscriptionVerbose, StringIO]
|
|
112
113
|
#
|
|
113
114
|
# @see OpenAI::Models::Audio::TranscriptionCreateParams
|
|
114
115
|
def create(params)
|
|
@@ -135,7 +136,8 @@ module OpenAI
|
|
|
135
136
|
# Transcribes audio into the input language.
|
|
136
137
|
#
|
|
137
138
|
# Returns a transcription object in `json`, `diarized_json`, or `verbose_json`
|
|
138
|
-
# format, or a stream of transcript
|
|
139
|
+
# format, plain text in `text`, `srt`, or `vtt` format, or a stream of transcript
|
|
140
|
+
# events. Supported formats depend on the model.
|
|
139
141
|
#
|
|
140
142
|
# `String`, `StringIO`, and pathless `IO` inputs are sent with generic upload
|
|
141
143
|
# metadata. Use `OpenAI::FilePart` when you need to override the filename or
|
|
@@ -46,7 +46,7 @@ module OpenAI
|
|
|
46
46
|
#
|
|
47
47
|
# @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
48
48
|
#
|
|
49
|
-
# @return [OpenAI::Models::Audio::Translation, OpenAI::Models::Audio::TranslationVerbose]
|
|
49
|
+
# @return [OpenAI::Models::Audio::Translation, OpenAI::Models::Audio::TranslationVerbose, StringIO]
|
|
50
50
|
#
|
|
51
51
|
# @see OpenAI::Models::Audio::TranslationCreateParams
|
|
52
52
|
def create(params)
|
|
@@ -27,7 +27,7 @@ module OpenAI
|
|
|
27
27
|
#
|
|
28
28
|
# @param network [OpenAI::Models::Beta::Agents::Environments::TemplateCreateParams::Network, nil]
|
|
29
29
|
# Network access policy for the environment. Defaults to disabled for GA requests
|
|
30
|
-
# and enabled for
|
|
30
|
+
# and enabled for beta requests.
|
|
31
31
|
#
|
|
32
32
|
# @param packages [OpenAI::Models::Beta::Agents::Environments::TemplateCreateParams::Packages, nil]
|
|
33
33
|
# Packages to install in the environment. Defaults to empty package lists.
|
|
@@ -106,8 +106,8 @@ module OpenAI
|
|
|
106
106
|
#
|
|
107
107
|
# @param network [OpenAI::Models::Beta::Agents::Environments::TemplateUpdateParams::Network, nil]
|
|
108
108
|
# Network access available after setup completes. Omit to preserve the current
|
|
109
|
-
# policy, or pass `null` to reset to disabled for GA requests or enabled for
|
|
110
|
-
#
|
|
109
|
+
# policy, or pass `null` to reset to disabled for GA requests or enabled for beta
|
|
110
|
+
# requests.
|
|
111
111
|
#
|
|
112
112
|
# @param packages [OpenAI::Models::Beta::Agents::Environments::TemplateUpdateParams::Packages, nil]
|
|
113
113
|
# Packages installed before the runtime network policy applies.
|
|
@@ -10,7 +10,7 @@ module OpenAI
|
|
|
10
10
|
# See
|
|
11
11
|
# [vaults](https://developers.openai.com/api/docs/guides/agents-api/tools/vaults).
|
|
12
12
|
#
|
|
13
|
-
# @overload create(vault_id, auth:, name:, request_options: {})
|
|
13
|
+
# @overload create(vault_id, auth:, name:, metadata: nil, request_options: {})
|
|
14
14
|
#
|
|
15
15
|
# @param vault_id [String]
|
|
16
16
|
# The ID of the vault.
|
|
@@ -22,6 +22,10 @@ module OpenAI
|
|
|
22
22
|
# The name is trimmed before storage. It must contain 1 to 256 UTF-8 bytes after
|
|
23
23
|
# trimming.
|
|
24
24
|
#
|
|
25
|
+
# @param metadata [Hash{Symbol=>String}]
|
|
26
|
+
# Up to 16 string key-value pairs, with keys up to 64 and values up to 512
|
|
27
|
+
# characters. Defaults to an empty map.
|
|
28
|
+
#
|
|
25
29
|
# @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
26
30
|
#
|
|
27
31
|
# @return [OpenAI::Models::Beta::Agents::Vaults::Credential]
|
|
@@ -70,11 +74,10 @@ module OpenAI
|
|
|
70
74
|
)
|
|
71
75
|
end
|
|
72
76
|
|
|
73
|
-
#
|
|
74
|
-
# metadata. See
|
|
77
|
+
# Updates credential metadata or rotates its write-only secret. See
|
|
75
78
|
# [vaults](https://developers.openai.com/api/docs/guides/agents-api/tools/vaults).
|
|
76
79
|
#
|
|
77
|
-
# @overload update(credential_id, vault_id:, auth
|
|
80
|
+
# @overload update(credential_id, vault_id:, auth: nil, metadata: nil, request_options: {})
|
|
78
81
|
#
|
|
79
82
|
# @param credential_id [String]
|
|
80
83
|
# Path param: The ID of the vault credential.
|
|
@@ -86,6 +89,11 @@ module OpenAI
|
|
|
86
89
|
# Body param: Replacement values for the credential's existing authentication
|
|
87
90
|
# method.
|
|
88
91
|
#
|
|
92
|
+
# @param metadata [Hash{Symbol=>String}]
|
|
93
|
+
# Body param: Replaces all metadata. Omit to preserve it, or pass {} to clear it.
|
|
94
|
+
# Up to 16 string key-value pairs, with keys up to 64 and values up to 512
|
|
95
|
+
# characters.
|
|
96
|
+
#
|
|
89
97
|
# @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
90
98
|
#
|
|
91
99
|
# @return [OpenAI::Models::Beta::Agents::Vaults::Credential]
|
|
@@ -27,7 +27,10 @@ module OpenAI
|
|
|
27
27
|
# [file search](https://developers.openai.com/api/docs/guides/tools-file-search)
|
|
28
28
|
# to use your own data as input for the model's response.
|
|
29
29
|
#
|
|
30
|
-
# @overload create(background: nil, context_management: nil, conversation: nil, include: nil, input: nil, instructions: nil, max_output_tokens: nil, max_tool_calls: nil, metadata: nil, model: nil, moderation: nil, multi_agent: nil, parallel_tool_calls: nil, previous_response_id: nil, prompt: nil, prompt_cache_key: nil, prompt_cache_options: nil, prompt_cache_retention: nil, reasoning: nil, safety_identifier: nil, service_tier: nil, store: nil, stream_options: nil, temperature: nil, text: nil, tool_choice: nil, tools: nil, top_logprobs: nil, top_p: nil, truncation: nil, user: nil, betas: nil, request_options: {})
|
|
30
|
+
# @overload create(access_programs: nil, background: nil, context_management: nil, conversation: nil, include: nil, input: nil, instructions: nil, max_output_tokens: nil, max_tool_calls: nil, metadata: nil, model: nil, moderation: nil, multi_agent: nil, parallel_tool_calls: nil, previous_response_id: nil, prompt: nil, prompt_cache_key: nil, prompt_cache_options: nil, prompt_cache_retention: nil, reasoning: nil, safety_identifier: nil, service_tier: nil, store: nil, stream_options: nil, temperature: nil, text: nil, tool_choice: nil, tools: nil, top_logprobs: nil, top_p: nil, truncation: nil, user: nil, betas: nil, request_options: {})
|
|
31
|
+
#
|
|
32
|
+
# @param access_programs [OpenAI::Models::Beta::ResponseCreateParams::AccessPrograms]
|
|
33
|
+
# Body param: Domain-specific access programs to use for this request.
|
|
31
34
|
#
|
|
32
35
|
# @param background [Boolean, nil]
|
|
33
36
|
# Body param: Whether to run the model response in the background.
|
|
@@ -325,7 +328,10 @@ module OpenAI
|
|
|
325
328
|
# [file search](https://developers.openai.com/api/docs/guides/tools-file-search)
|
|
326
329
|
# to use your own data as input for the model's response.
|
|
327
330
|
#
|
|
328
|
-
# @overload stream_raw(background: nil, context_management: nil, conversation: nil, include: nil, input: nil, instructions: nil, max_output_tokens: nil, max_tool_calls: nil, metadata: nil, model: nil, moderation: nil, multi_agent: nil, parallel_tool_calls: nil, previous_response_id: nil, prompt: nil, prompt_cache_key: nil, prompt_cache_options: nil, prompt_cache_retention: nil, reasoning: nil, safety_identifier: nil, service_tier: nil, store: nil, stream_options: nil, temperature: nil, text: nil, tool_choice: nil, tools: nil, top_logprobs: nil, top_p: nil, truncation: nil, user: nil, betas: nil, request_options: {})
|
|
331
|
+
# @overload stream_raw(access_programs: nil, background: nil, context_management: nil, conversation: nil, include: nil, input: nil, instructions: nil, max_output_tokens: nil, max_tool_calls: nil, metadata: nil, model: nil, moderation: nil, multi_agent: nil, parallel_tool_calls: nil, previous_response_id: nil, prompt: nil, prompt_cache_key: nil, prompt_cache_options: nil, prompt_cache_retention: nil, reasoning: nil, safety_identifier: nil, service_tier: nil, store: nil, stream_options: nil, temperature: nil, text: nil, tool_choice: nil, tools: nil, top_logprobs: nil, top_p: nil, truncation: nil, user: nil, betas: nil, request_options: {})
|
|
332
|
+
#
|
|
333
|
+
# @param access_programs [OpenAI::Models::Beta::ResponseCreateParams::AccessPrograms]
|
|
334
|
+
# Body param: Domain-specific access programs to use for this request.
|
|
329
335
|
#
|
|
330
336
|
# @param background [Boolean, nil]
|
|
331
337
|
# Body param: Whether to run the model response in the background.
|
|
@@ -28,7 +28,10 @@ module OpenAI
|
|
|
28
28
|
# [file search](https://developers.openai.com/api/docs/guides/tools-file-search)
|
|
29
29
|
# to use your own data as input for the model's response.
|
|
30
30
|
#
|
|
31
|
-
# @overload create(background: nil, context_management: nil, conversation: nil, include: nil, input: nil, instructions: nil, max_output_tokens: nil, max_tool_calls: nil, metadata: nil, model: nil, moderation: nil, parallel_tool_calls: nil, previous_response_id: nil, prompt: nil, prompt_cache_key: nil, prompt_cache_options: nil, prompt_cache_retention: nil, reasoning: nil, safety_identifier: nil, service_tier: nil, store: nil, stream_options: nil, temperature: nil, text: nil, tool_choice: nil, tools: nil, top_logprobs: nil, top_p: nil, truncation: nil, user: nil, request_options: {})
|
|
31
|
+
# @overload create(access_programs: nil, background: nil, context_management: nil, conversation: nil, include: nil, input: nil, instructions: nil, max_output_tokens: nil, max_tool_calls: nil, metadata: nil, model: nil, moderation: nil, parallel_tool_calls: nil, previous_response_id: nil, prompt: nil, prompt_cache_key: nil, prompt_cache_options: nil, prompt_cache_retention: nil, reasoning: nil, safety_identifier: nil, service_tier: nil, store: nil, stream_options: nil, temperature: nil, text: nil, tool_choice: nil, tools: nil, top_logprobs: nil, top_p: nil, truncation: nil, user: nil, request_options: {})
|
|
32
|
+
#
|
|
33
|
+
# @param access_programs [OpenAI::Models::Responses::ResponseCreateParams::AccessPrograms]
|
|
34
|
+
# Domain-specific access programs to use for this request.
|
|
32
35
|
#
|
|
33
36
|
# @param background [Boolean, nil]
|
|
34
37
|
# Whether to run the model response in the background.
|
|
@@ -305,6 +308,10 @@ module OpenAI
|
|
|
305
308
|
end
|
|
306
309
|
|
|
307
310
|
# Creates or resumes a streaming response and parses structured outputs.
|
|
311
|
+
# @overload stream(access_programs: nil, **params)
|
|
312
|
+
# @param access_programs [OpenAI::Models::Responses::ResponseCreateParams::AccessPrograms]
|
|
313
|
+
# Domain-specific access programs to use for this request.
|
|
314
|
+
# @param params [Hash{Symbol=>Object}] Other response creation or retrieval parameters.
|
|
308
315
|
def stream(params)
|
|
309
316
|
parsed, options = OpenAI::Responses::ResponseCreateParams.dump_request(params)
|
|
310
317
|
starting_after, response_id = parsed.values_at(:starting_after, :response_id)
|
data/lib/openai/version.rb
CHANGED
data/lib/openai.rb
CHANGED
|
@@ -256,6 +256,7 @@ require_relative "openai/models/admin/organization/external_storage_delete_param
|
|
|
256
256
|
require_relative "openai/models/admin/organization/external_storage_list_params"
|
|
257
257
|
require_relative "openai/models/admin/organization/external_storage_retrieve_params"
|
|
258
258
|
require_relative "openai/models/admin/organization/external_storage_validate_params"
|
|
259
|
+
require_relative "openai/models/admin/organization/gcp_external_storage_provider"
|
|
259
260
|
require_relative "openai/models/admin/organization/group"
|
|
260
261
|
require_relative "openai/models/admin/organization/group_create_params"
|
|
261
262
|
require_relative "openai/models/admin/organization/group_delete_params"
|
|
@@ -1593,6 +1594,7 @@ require_relative "openai/streaming"
|
|
|
1593
1594
|
require_relative "openai/helpers/websocket"
|
|
1594
1595
|
require_relative "openai/helpers/realtime"
|
|
1595
1596
|
require_relative "openai/helpers/responses_websocket"
|
|
1597
|
+
require_relative "openai/helpers/live/websocket"
|
|
1596
1598
|
|
|
1597
1599
|
require_relative "openai/helpers/agents/session_stream"
|
|
1598
1600
|
require_relative "openai/helpers/agents/message"
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# typed: strong
|
|
2
|
+
|
|
3
|
+
module OpenAI
|
|
4
|
+
module Models
|
|
5
|
+
module Live
|
|
6
|
+
class TranscriptGrouper
|
|
7
|
+
class Segment < Data
|
|
8
|
+
sig { returns(String) }
|
|
9
|
+
attr_reader :id
|
|
10
|
+
|
|
11
|
+
sig { returns(T.nilable(String)) }
|
|
12
|
+
attr_reader :previous_id
|
|
13
|
+
|
|
14
|
+
# :user or :assistant
|
|
15
|
+
sig { returns(Symbol) }
|
|
16
|
+
attr_reader :speaker
|
|
17
|
+
|
|
18
|
+
sig { returns(String) }
|
|
19
|
+
attr_reader :text
|
|
20
|
+
|
|
21
|
+
sig { returns(Integer) }
|
|
22
|
+
attr_reader :start_ms, :end_ms
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
class ClosedSegment < Data
|
|
26
|
+
sig { returns(Segment) }
|
|
27
|
+
attr_reader :segment
|
|
28
|
+
|
|
29
|
+
# :speaker_change, :inactivity, :timestamp_reset, :session_closed or :manual
|
|
30
|
+
sig { returns(Symbol) }
|
|
31
|
+
attr_reader :reason
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
sig do
|
|
35
|
+
params(
|
|
36
|
+
on_segment_updated: T.nilable(T.proc.params(segment: Segment).void),
|
|
37
|
+
on_segment_closed: T.nilable(T.proc.params(event: ClosedSegment).void),
|
|
38
|
+
min_turn_separation_ms: T.any(Integer, Float),
|
|
39
|
+
assistant_silence_ms: T.any(Integer, Float),
|
|
40
|
+
backchannel_max_duration_ms: T.any(Integer, Float),
|
|
41
|
+
backchannel_isolation_ms: T.any(Integer, Float),
|
|
42
|
+
additional_acknowledgments: T::Array[String]
|
|
43
|
+
)
|
|
44
|
+
.returns(T.attached_class)
|
|
45
|
+
end
|
|
46
|
+
def self.new(
|
|
47
|
+
on_segment_updated: nil,
|
|
48
|
+
on_segment_closed: nil,
|
|
49
|
+
min_turn_separation_ms: 500,
|
|
50
|
+
assistant_silence_ms: 2000,
|
|
51
|
+
backchannel_max_duration_ms: 1000,
|
|
52
|
+
backchannel_isolation_ms: 2000,
|
|
53
|
+
additional_acknowledgments: []
|
|
54
|
+
)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
sig { params(event: T.anything).void }
|
|
58
|
+
def push(event)
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
sig { void }
|
|
62
|
+
def close
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
# typed: strong
|
|
2
|
+
|
|
3
|
+
module OpenAI
|
|
4
|
+
class Client < OpenAI::Internal::Transport::BaseClient
|
|
5
|
+
# @api private
|
|
6
|
+
sig do
|
|
7
|
+
params(
|
|
8
|
+
path: T.any(String, T::Array[String]),
|
|
9
|
+
query: T::Hash[String, String],
|
|
10
|
+
websocket_base_url: T.nilable(String),
|
|
11
|
+
options: T.nilable(OpenAI::RequestOptions::OrHash),
|
|
12
|
+
block: T
|
|
13
|
+
.proc
|
|
14
|
+
.params(
|
|
15
|
+
request: OpenAI::Internal::Transport::BaseClient::RequestInput,
|
|
16
|
+
mark_handshake_completed: T.proc.void
|
|
17
|
+
)
|
|
18
|
+
.returns(T.anything)
|
|
19
|
+
)
|
|
20
|
+
.returns(T.anything)
|
|
21
|
+
end
|
|
22
|
+
def with_live_websocket_connection_request(
|
|
23
|
+
path: "live/sessions",
|
|
24
|
+
query: {},
|
|
25
|
+
websocket_base_url: nil,
|
|
26
|
+
options: nil,
|
|
27
|
+
&block
|
|
28
|
+
)
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
module Errors
|
|
33
|
+
class LiveConnectionError < OpenAI::Errors::WebSocketConnectionError
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
class LiveProtocolError < OpenAI::Errors::WebSocketProtocolError
|
|
37
|
+
sig { returns(T.attached_class) }
|
|
38
|
+
def self.new
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
module Models
|
|
44
|
+
module Live
|
|
45
|
+
class UnknownServerEvent
|
|
46
|
+
sig { returns(Symbol) }
|
|
47
|
+
attr_reader :type
|
|
48
|
+
sig { returns(T::Hash[T.any(String, Symbol), T.anything]) }
|
|
49
|
+
attr_reader :data
|
|
50
|
+
sig { params(data: T::Hash[T.any(String, Symbol), T.anything]).returns(T.attached_class) }
|
|
51
|
+
def self.new(data:)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
sig { returns(T::Hash[T.any(String, Symbol), T.anything]) }
|
|
55
|
+
def to_h
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
sig { returns(String) }
|
|
59
|
+
def inspect
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
alias to_s inspect
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
class Connection
|
|
66
|
+
include Enumerable
|
|
67
|
+
ServerEvent = T.type_alias { T.any(OpenAI::Live::ServerEvent::Variants, OpenAI::Live::UnknownServerEvent) }
|
|
68
|
+
ClientEvent = T.type_alias do
|
|
69
|
+
T.any(OpenAI::Live::ClientEvent::Variants, T::Hash[T.any(String, Symbol), T.anything])
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
Elem = type_member { {fixed: ServerEvent} }
|
|
73
|
+
sig { returns(URI::Generic) }
|
|
74
|
+
attr_reader :url
|
|
75
|
+
sig { params(socket: T.anything, url: URI::Generic).returns(T.attached_class) }
|
|
76
|
+
def self.new(socket:, url:)
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
sig do
|
|
80
|
+
params(block: T.nilable(T.proc.params(event: ServerEvent).void)).returns(
|
|
81
|
+
T.any(OpenAI::Live::Connection, T::Enumerator[ServerEvent])
|
|
82
|
+
)
|
|
83
|
+
end
|
|
84
|
+
def each(&block)
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
sig { returns(T.nilable(ServerEvent)) }
|
|
88
|
+
def receive
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
sig { returns(T.nilable(String)) }
|
|
92
|
+
def receive_raw
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
sig { params(event: ClientEvent).void }
|
|
96
|
+
def send_event(event)
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
sig { params(data: String).void }
|
|
100
|
+
def send_raw(data)
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
sig { params(code: Integer, reason: String).void }
|
|
104
|
+
def close(code: 1000, reason: "")
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
sig { void }
|
|
108
|
+
def abort
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
sig { returns(T::Boolean) }
|
|
112
|
+
def closed?
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
class SidebandConnection
|
|
117
|
+
include Enumerable
|
|
118
|
+
ClientEvent = T.type_alias do
|
|
119
|
+
T.any(
|
|
120
|
+
OpenAI::Live::SessionUpdateEvent,
|
|
121
|
+
OpenAI::Live::InputAudioMuteEvent,
|
|
122
|
+
OpenAI::Live::InputAudioUnmuteEvent,
|
|
123
|
+
OpenAI::Live::InstructionsAppendEvent,
|
|
124
|
+
OpenAI::Live::ThinkingAppendEvent,
|
|
125
|
+
OpenAI::Live::CommentaryAppendEvent,
|
|
126
|
+
OpenAI::Live::ResponseItemCreateEvent,
|
|
127
|
+
OpenAI::Live::ResponseCreateEvent,
|
|
128
|
+
OpenAI::Live::SessionCloseEvent,
|
|
129
|
+
T::Hash[T.any(String, Symbol), T.anything]
|
|
130
|
+
)
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
Elem = type_member { {fixed: Connection::ServerEvent} }
|
|
134
|
+
sig { returns(URI::Generic) }
|
|
135
|
+
attr_reader :url
|
|
136
|
+
sig { params(socket: T.anything, url: URI::Generic).returns(T.attached_class) }
|
|
137
|
+
def self.new(socket:, url:)
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
sig do
|
|
141
|
+
params(block: T.nilable(T.proc.params(event: Connection::ServerEvent).void)).returns(
|
|
142
|
+
T.any(OpenAI::Live::SidebandConnection, T::Enumerator[Connection::ServerEvent])
|
|
143
|
+
)
|
|
144
|
+
end
|
|
145
|
+
def each(&block)
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
sig { returns(T.nilable(Connection::ServerEvent)) }
|
|
149
|
+
def receive
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
sig { returns(T.nilable(String)) }
|
|
153
|
+
def receive_raw
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
sig { params(event: ClientEvent).void }
|
|
157
|
+
def send_event(event)
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
sig { params(data: String).void }
|
|
161
|
+
def send_raw(data)
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
sig { params(code: Integer, reason: String).void }
|
|
165
|
+
def close(code: 1000, reason: "")
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
sig { void }
|
|
169
|
+
def abort
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
sig { returns(T::Boolean) }
|
|
173
|
+
def closed?
|
|
174
|
+
end
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
# Fork sessions use distinct input/output variants; expose that protocol
|
|
178
|
+
# directly so the primary Connection's shipped signatures stay precise.
|
|
179
|
+
class ForkConnection
|
|
180
|
+
include Enumerable
|
|
181
|
+
ServerEvent = T.type_alias { T.any(OpenAI::Live::ForkServerEvent::Variants, OpenAI::Live::UnknownServerEvent) }
|
|
182
|
+
ClientEvent = T.type_alias do
|
|
183
|
+
T.any(OpenAI::Live::ForkClientEvent::Variants, T::Hash[T.any(String, Symbol), T.anything])
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
Elem = type_member { {fixed: ServerEvent} }
|
|
187
|
+
sig { returns(URI::Generic) }
|
|
188
|
+
attr_reader :url
|
|
189
|
+
sig { params(socket: T.anything, url: URI::Generic).returns(T.attached_class) }
|
|
190
|
+
def self.new(socket:, url:)
|
|
191
|
+
end
|
|
192
|
+
|
|
193
|
+
sig do
|
|
194
|
+
params(block: T.nilable(T.proc.params(event: ServerEvent).void)).returns(
|
|
195
|
+
T.any(OpenAI::Live::ForkConnection, T::Enumerator[ServerEvent])
|
|
196
|
+
)
|
|
197
|
+
end
|
|
198
|
+
def each(&block)
|
|
199
|
+
end
|
|
200
|
+
|
|
201
|
+
sig { returns(T.nilable(ServerEvent)) }
|
|
202
|
+
def receive
|
|
203
|
+
end
|
|
204
|
+
|
|
205
|
+
sig { returns(T.nilable(String)) }
|
|
206
|
+
def receive_raw
|
|
207
|
+
end
|
|
208
|
+
|
|
209
|
+
sig { params(event: ClientEvent).void }
|
|
210
|
+
def send_event(event)
|
|
211
|
+
end
|
|
212
|
+
|
|
213
|
+
sig { params(data: String).void }
|
|
214
|
+
def send_raw(data)
|
|
215
|
+
end
|
|
216
|
+
|
|
217
|
+
sig { params(code: Integer, reason: String).void }
|
|
218
|
+
def close(code: 1000, reason: "")
|
|
219
|
+
end
|
|
220
|
+
|
|
221
|
+
sig { void }
|
|
222
|
+
def abort
|
|
223
|
+
end
|
|
224
|
+
|
|
225
|
+
sig { returns(T::Boolean) }
|
|
226
|
+
def closed?
|
|
227
|
+
end
|
|
228
|
+
end
|
|
229
|
+
end
|
|
230
|
+
end
|
|
231
|
+
|
|
232
|
+
module Resources
|
|
233
|
+
class Live
|
|
234
|
+
sig do
|
|
235
|
+
type_parameters(:T)
|
|
236
|
+
.params(
|
|
237
|
+
websocket_base_url: T.nilable(String),
|
|
238
|
+
request_options: T.nilable(OpenAI::RequestOptions::OrHash),
|
|
239
|
+
transport: T.untyped,
|
|
240
|
+
transport_options: T::Hash[Symbol, T.anything],
|
|
241
|
+
block: T.proc.params(connection: OpenAI::Live::Connection).returns(T.type_parameter(:T))
|
|
242
|
+
)
|
|
243
|
+
.returns(T.type_parameter(:T))
|
|
244
|
+
end
|
|
245
|
+
def connect(websocket_base_url: nil, request_options: nil, transport: nil, transport_options: {}, &block)
|
|
246
|
+
end
|
|
247
|
+
|
|
248
|
+
class Sideband
|
|
249
|
+
sig do
|
|
250
|
+
type_parameters(:T)
|
|
251
|
+
.params(
|
|
252
|
+
session_id: String,
|
|
253
|
+
graceful_close: T.nilable(T::Boolean),
|
|
254
|
+
websocket_base_url: T.nilable(String),
|
|
255
|
+
request_options: T.nilable(OpenAI::RequestOptions::OrHash),
|
|
256
|
+
transport: T.untyped,
|
|
257
|
+
transport_options: T::Hash[Symbol, T.anything],
|
|
258
|
+
block: T.proc.params(connection: OpenAI::Live::SidebandConnection).returns(T.type_parameter(:T))
|
|
259
|
+
)
|
|
260
|
+
.returns(T.type_parameter(:T))
|
|
261
|
+
end
|
|
262
|
+
def connect(
|
|
263
|
+
session_id,
|
|
264
|
+
graceful_close: nil,
|
|
265
|
+
websocket_base_url: nil,
|
|
266
|
+
request_options: nil,
|
|
267
|
+
transport: nil,
|
|
268
|
+
transport_options: {},
|
|
269
|
+
&block
|
|
270
|
+
)
|
|
271
|
+
end
|
|
272
|
+
end
|
|
273
|
+
|
|
274
|
+
class Forks
|
|
275
|
+
sig do
|
|
276
|
+
type_parameters(:T)
|
|
277
|
+
.params(
|
|
278
|
+
session_id: String,
|
|
279
|
+
websocket_base_url: T.nilable(String),
|
|
280
|
+
request_options: T.nilable(OpenAI::RequestOptions::OrHash),
|
|
281
|
+
transport: T.untyped,
|
|
282
|
+
transport_options: T::Hash[Symbol, T.anything],
|
|
283
|
+
block: T.proc.params(connection: OpenAI::Live::ForkConnection).returns(T.type_parameter(:T))
|
|
284
|
+
)
|
|
285
|
+
.returns(T.type_parameter(:T))
|
|
286
|
+
end
|
|
287
|
+
def connect(
|
|
288
|
+
session_id,
|
|
289
|
+
websocket_base_url: nil,
|
|
290
|
+
request_options: nil,
|
|
291
|
+
transport: nil,
|
|
292
|
+
transport_options: {},
|
|
293
|
+
&block
|
|
294
|
+
)
|
|
295
|
+
end
|
|
296
|
+
end
|
|
297
|
+
end
|
|
298
|
+
end
|
|
299
|
+
end
|