openai 0.97.0 → 0.98.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 +24 -0
- data/README.md +76 -1
- data/lib/openai/helpers/agents/session_stream.rb +60 -3
- data/lib/openai/helpers/beta/agents/artifacts.rb +72 -0
- data/lib/openai/helpers/beta/agents/creation_stream.rb +69 -0
- data/lib/openai/helpers/beta/agents/files.rb +236 -0
- data/lib/openai/helpers/beta/agents/function_tool.rb +65 -0
- data/lib/openai/helpers/beta/agents/model_adapter.rb +27 -0
- data/lib/openai/helpers/beta/agents/result.rb +170 -0
- data/lib/openai/helpers/beta/agents/typed_output.rb +191 -0
- data/lib/openai/helpers/live/websocket.rb +7 -1
- data/lib/openai/helpers/realtime/conversation_item_variant_resolver.rb +1 -1
- data/lib/openai/helpers/responses_websocket/connection.rb +7 -1
- data/lib/openai/helpers/responses_websocket/session.rb +5 -1
- data/lib/openai/helpers/responses_websocket/transports/async_websocket.rb +12 -2
- data/lib/openai/internal/transport/base_client.rb +18 -0
- data/lib/openai/internal/type/array_of.rb +1 -1
- data/lib/openai/internal/type/base_model.rb +6 -3
- data/lib/openai/internal/type/converter.rb +50 -3
- data/lib/openai/internal/type/hash_of.rb +1 -1
- data/lib/openai/internal/type/union.rb +6 -6
- data/lib/openai/models/beta/agents/sessions/session_trace.rb +64 -0
- data/lib/openai/models/beta/agents/sessions/trace_list_params.rb +68 -0
- data/lib/openai/models/beta/agents/vaults/credential.rb +8 -4
- data/lib/openai/models/beta/beta_response_output_text.rb +2 -2
- data/lib/openai/models/beta/beta_response_output_text_annotation_added_event.rb +2 -2
- data/lib/openai/models/beta/environment.rb +33 -1
- data/lib/openai/models/beta/environment_param.rb +24 -1
- data/lib/openai/models/beta/session_turn_error.rb +3 -0
- data/lib/openai/models/chat/chat_completion_content_part_image.rb +1 -0
- data/lib/openai/models/live/fork_server_event.rb +14 -3
- data/lib/openai/models/live/server_event.rb +14 -3
- data/lib/openai/models/realtime/translations/client_secret_create_params.rb +28 -0
- data/lib/openai/models/responses/response_output_text.rb +2 -2
- data/lib/openai/models/responses/response_output_text_annotation_added_event.rb +2 -2
- data/lib/openai/resources/beta/agents/environments/files.rb +31 -0
- data/lib/openai/resources/beta/agents/sessions/artifacts.rb +8 -0
- data/lib/openai/resources/beta/agents/sessions/events.rb +6 -5
- data/lib/openai/resources/beta/agents/sessions/traces.rb +58 -0
- data/lib/openai/resources/beta/agents/sessions.rb +18 -5
- data/lib/openai/resources/evals/runs.rb +1 -1
- data/lib/openai/resources/realtime/translations/client_secrets.rb +58 -0
- data/lib/openai/resources/realtime/translations.rb +20 -0
- data/lib/openai/resources/realtime.rb +4 -0
- data/lib/openai/version.rb +1 -1
- data/lib/openai.rb +9 -1
- data/rbi/openai/helpers/agents.rbi +20 -1
- data/rbi/openai/helpers/beta/agents/artifacts.rbi +29 -0
- data/rbi/openai/helpers/beta/agents/files.rbi +65 -0
- data/rbi/openai/helpers/beta/agents/function_tool.rbi +40 -0
- data/rbi/openai/helpers/beta/agents/model_adapter.rbi +22 -0
- data/rbi/openai/helpers/beta/agents.rbi +146 -0
- data/rbi/openai/internal/transport/base_client.rbi +12 -0
- data/rbi/openai/internal/type/base_model.rbi +2 -2
- data/rbi/openai/internal/type/converter.rbi +21 -3
- data/rbi/openai/internal/type/union.rbi +6 -2
- data/rbi/openai/models/beta/agents/sessions/session_trace.rbi +97 -0
- data/rbi/openai/models/beta/agents/sessions/trace_list_params.rbi +121 -0
- data/rbi/openai/models/beta/agents/vaults/credential.rbi +5 -5
- data/rbi/openai/models/beta/beta_response_output_text.rbi +2 -2
- data/rbi/openai/models/beta/beta_response_output_text_annotation_added_event.rbi +2 -2
- data/rbi/openai/models/beta/environment.rbi +29 -0
- data/rbi/openai/models/beta/environment_param.rbi +31 -0
- data/rbi/openai/models/beta/session_turn_error.rbi +3 -0
- data/rbi/openai/models/chat/chat_completion_content_part_image.rbi +1 -0
- data/rbi/openai/models/live/fork_server_event.rbi +14 -2
- data/rbi/openai/models/live/server_event.rbi +14 -2
- data/rbi/openai/models/realtime/translations/client_secret_create_params.rbi +68 -0
- data/rbi/openai/models/responses/response_output_text.rbi +2 -2
- data/rbi/openai/models/responses/response_output_text_annotation_added_event.rbi +2 -2
- data/rbi/openai/resources/beta/agents/environments/files.rbi +31 -0
- data/rbi/openai/resources/beta/agents/sessions/artifacts.rbi +8 -0
- data/rbi/openai/resources/beta/agents/sessions/events.rbi +6 -5
- data/rbi/openai/resources/beta/agents/sessions/traces.rbi +54 -0
- data/rbi/openai/resources/beta/agents/sessions.rbi +6 -1
- data/rbi/openai/resources/realtime/translations/client_secrets.rbi +54 -0
- data/rbi/openai/resources/realtime/translations.rbi +22 -0
- data/rbi/openai/resources/realtime.rbi +3 -0
- data/sig/openai/helpers/agents.rbs +7 -0
- data/sig/openai/helpers/beta/agents/artifacts.rbs +20 -0
- data/sig/openai/helpers/beta/agents/files.rbs +41 -0
- data/sig/openai/helpers/beta/agents/function_tool.rbs +24 -0
- data/sig/openai/helpers/beta/agents/model_adapter.rbs +16 -0
- data/sig/openai/helpers/beta/agents.rbs +71 -0
- data/sig/openai/helpers/structured_output.rbs +12 -0
- data/sig/openai/internal/transport/base_client.rbs +8 -0
- data/sig/openai/internal/type/base_model.rbs +3 -1
- data/sig/openai/internal/type/converter.rbs +16 -2
- data/sig/openai/internal/type/union.rbs +2 -1
- data/sig/openai/models/beta/agents/sessions/session_trace.rbs +65 -0
- data/sig/openai/models/beta/agents/sessions/trace_list_params.rbs +81 -0
- data/sig/openai/models/beta/agents/vaults/credential.rbs +5 -5
- data/sig/openai/models/beta/beta_response_output_text.rbs +2 -2
- data/sig/openai/models/beta/beta_response_output_text_annotation_added_event.rbs +2 -2
- data/sig/openai/models/beta/environment.rbs +22 -0
- data/sig/openai/models/beta/environment_param.rbs +25 -0
- data/sig/openai/models/beta/session_turn_error.rbs +4 -0
- data/sig/openai/models/chat/chat_completion_content_part_image.rbs +2 -1
- data/sig/openai/models/live/fork_server_event.rbs +17 -2
- data/sig/openai/models/live/server_event.rbs +17 -2
- data/sig/openai/models/realtime/translations/client_secret_create_params.rbs +39 -0
- data/sig/openai/models/responses/response_output_text.rbs +2 -2
- data/sig/openai/models/responses/response_output_text_annotation_added_event.rbs +2 -2
- data/sig/openai/resources/beta/agents/environments/files.rbs +17 -0
- data/sig/openai/resources/beta/agents/sessions/artifacts.rbs +4 -0
- data/sig/openai/resources/beta/agents/sessions/traces.rbs +21 -0
- data/sig/openai/resources/beta/agents/sessions.rbs +4 -1
- data/sig/openai/resources/realtime/translations/client_secrets.rbs +17 -0
- data/sig/openai/resources/realtime/translations.rbs +11 -0
- data/sig/openai/resources/realtime.rbs +2 -0
- metadata +37 -1
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module OpenAI
|
|
4
|
+
module Resources
|
|
5
|
+
class Beta
|
|
6
|
+
class Agents
|
|
7
|
+
class Sessions
|
|
8
|
+
class Traces
|
|
9
|
+
# Lists published root-turn traces as OTLP JSON, ordered by turn creation time and
|
|
10
|
+
# ID. Unpublished traces are skipped. Each page returns data available when read;
|
|
11
|
+
# it does not wait for late traces. Trace reads and the JSON response are limited
|
|
12
|
+
# to 16 MiB per request. If the limit is exceeded, request fewer traces.
|
|
13
|
+
#
|
|
14
|
+
# @overload list(session_id, after: nil, limit: nil, order: nil, request_options: {})
|
|
15
|
+
#
|
|
16
|
+
# @param session_id [String]
|
|
17
|
+
# The ID of the session.
|
|
18
|
+
#
|
|
19
|
+
# @param after [String]
|
|
20
|
+
# Return resources after this resource ID in the selected order.
|
|
21
|
+
#
|
|
22
|
+
# @param limit [Integer]
|
|
23
|
+
# The maximum number of resources to return, between 1 and 100. Defaults to 20.
|
|
24
|
+
#
|
|
25
|
+
# @param order [Symbol, OpenAI::Models::Beta::Agents::Sessions::TraceListParams::Order]
|
|
26
|
+
# The order in which resources are returned. Defaults to `desc`.
|
|
27
|
+
#
|
|
28
|
+
# @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
29
|
+
#
|
|
30
|
+
# @return [OpenAI::Internal::CursorPage<OpenAI::Models::Beta::Agents::Sessions::SessionTrace>]
|
|
31
|
+
#
|
|
32
|
+
# @see OpenAI::Models::Beta::Agents::Sessions::TraceListParams
|
|
33
|
+
def list(session_id, params = {})
|
|
34
|
+
parsed, options = OpenAI::Beta::Agents::Sessions::TraceListParams.dump_request(params)
|
|
35
|
+
query = OpenAI::Internal::Util.encode_query_params(parsed)
|
|
36
|
+
@client.request(
|
|
37
|
+
method: :get,
|
|
38
|
+
path: ["agents/sessions/%1$s/traces", session_id],
|
|
39
|
+
query: query,
|
|
40
|
+
page: OpenAI::Internal::CursorPage,
|
|
41
|
+
model: OpenAI::Beta::Agents::Sessions::SessionTrace,
|
|
42
|
+
security: {bearer_auth: true},
|
|
43
|
+
options: {extra_headers: {"OpenAI-Beta" => "agents=v1"}, **options}
|
|
44
|
+
)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# @api private
|
|
48
|
+
#
|
|
49
|
+
# @param client [OpenAI::Client]
|
|
50
|
+
def initialize(client:)
|
|
51
|
+
@client = client
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
@@ -17,6 +17,9 @@ module OpenAI
|
|
|
17
17
|
# @return [OpenAI::Resources::Beta::Agents::Sessions::Events]
|
|
18
18
|
attr_reader :events
|
|
19
19
|
|
|
20
|
+
# @return [OpenAI::Resources::Beta::Agents::Sessions::Traces]
|
|
21
|
+
attr_reader :traces
|
|
22
|
+
|
|
20
23
|
# @return [OpenAI::Resources::Beta::Agents::Sessions::Turns]
|
|
21
24
|
attr_reader :turns
|
|
22
25
|
|
|
@@ -82,7 +85,7 @@ module OpenAI
|
|
|
82
85
|
# the session or streams its events when stream is true. See
|
|
83
86
|
# [running sessions](https://developers.openai.com/api/docs/guides/agents-api/sessions).
|
|
84
87
|
#
|
|
85
|
-
# @overload create_streaming(environment:, agent: nil, agent_id: nil, input: nil, metadata: nil, vault_ids: nil, request_options: {})
|
|
88
|
+
# @overload create_streaming(environment:, agent: nil, agent_id: nil, input: nil, output_type: nil, metadata: nil, vault_ids: nil, request_options: {})
|
|
86
89
|
#
|
|
87
90
|
# @param environment [OpenAI::Models::Beta::EnvironmentParam::None, OpenAI::Models::Beta::EnvironmentParam::OpenAIHosted, OpenAI::Models::Beta::EnvironmentParam::SelfHosted]
|
|
88
91
|
# An inline execution environment or a reference to an environment template.
|
|
@@ -108,29 +111,36 @@ module OpenAI
|
|
|
108
111
|
# @param vault_ids [Array<String>, nil]
|
|
109
112
|
# The IDs of vaults made available to the session.
|
|
110
113
|
#
|
|
114
|
+
# @param output_type [Class<OpenAI::BaseModel>, nil] Beta: configure and parse a structured answer.
|
|
115
|
+
#
|
|
111
116
|
# @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
112
117
|
#
|
|
113
|
-
# @return [OpenAI::
|
|
118
|
+
# @return [OpenAI::Helpers::Beta::Agents::CreationStream]
|
|
114
119
|
#
|
|
115
120
|
# @see OpenAI::Models::Beta::Agents::SessionCreateParams
|
|
116
121
|
def create_streaming(params)
|
|
122
|
+
params = params.to_h.transform_keys { _1.is_a?(String) ? _1.to_sym : _1 }
|
|
123
|
+
output_type = params.delete(:output_type)
|
|
124
|
+
parser = OpenAI::Helpers::Beta::Agents::OutputParser.new(output_type) unless output_type.nil?
|
|
117
125
|
parsed, options = OpenAI::Beta::Agents::SessionCreateParams.dump_request(params)
|
|
118
126
|
unless parsed.fetch(:stream, true)
|
|
119
127
|
message = "Please use `#create` for the non-streaming use case."
|
|
120
128
|
raise ArgumentError.new(message)
|
|
121
129
|
end
|
|
122
130
|
|
|
131
|
+
parser&.prepare_request(parsed)
|
|
123
132
|
parsed.store(:stream, true)
|
|
124
|
-
@client.request(
|
|
133
|
+
stream = @client.request(
|
|
125
134
|
method: :post,
|
|
126
135
|
path: "agents/sessions",
|
|
127
136
|
headers: {"accept" => "text/event-stream", "accept-encoding" => "identity"},
|
|
128
137
|
body: parsed,
|
|
129
|
-
stream: OpenAI::
|
|
138
|
+
stream: OpenAI::Helpers::Beta::Agents::CreationStream,
|
|
130
139
|
model: OpenAI::Beta::AgentSessionEvent,
|
|
131
140
|
security: {bearer_auth: true},
|
|
132
141
|
options: {extra_headers: {"OpenAI-Beta" => "agents=v1"}, **options}
|
|
133
142
|
)
|
|
143
|
+
stream.configure_output_parser(parser)
|
|
134
144
|
end
|
|
135
145
|
|
|
136
146
|
# Retrieves the current state of a managed agent session. See
|
|
@@ -265,16 +275,18 @@ module OpenAI
|
|
|
265
275
|
# @param input [String, Array<OpenAI::Models::Beta::AgentSessionInputMessageParam>]
|
|
266
276
|
# @param tool_handlers [Hash{String=>Proc}]
|
|
267
277
|
# @param idempotency_key [String, nil] Applies only to the input submission.
|
|
278
|
+
# @param output_type [Class<OpenAI::BaseModel>, nil] Beta: parse output without changing session configuration.
|
|
268
279
|
# @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
269
280
|
# @yieldparam stream [OpenAI::Helpers::Agents::SessionStream]
|
|
270
281
|
# @return [OpenAI::Helpers::Agents::SessionStream]
|
|
271
|
-
def stream(session_id, input:, tool_handlers: {}, idempotency_key: nil, request_options: {})
|
|
282
|
+
def stream(session_id, input:, tool_handlers: {}, idempotency_key: nil, output_type: nil, request_options: {})
|
|
272
283
|
stream = OpenAI::Helpers::Agents::SessionStream.new(
|
|
273
284
|
sessions: self,
|
|
274
285
|
session_id: session_id,
|
|
275
286
|
input: input,
|
|
276
287
|
tool_handlers: tool_handlers,
|
|
277
288
|
idempotency_key: idempotency_key,
|
|
289
|
+
output_type: output_type,
|
|
278
290
|
request_options: request_options
|
|
279
291
|
)
|
|
280
292
|
return stream unless block_given?
|
|
@@ -297,6 +309,7 @@ module OpenAI
|
|
|
297
309
|
@artifacts = OpenAI::Resources::Beta::Agents::Sessions::Artifacts.new(client: client)
|
|
298
310
|
@items = OpenAI::Resources::Beta::Agents::Sessions::Items.new(client: client)
|
|
299
311
|
@events = OpenAI::Resources::Beta::Agents::Sessions::Events.new(client: client)
|
|
312
|
+
@traces = OpenAI::Resources::Beta::Agents::Sessions::Traces.new(client: client)
|
|
300
313
|
@turns = OpenAI::Resources::Beta::Agents::Sessions::Turns.new(client: client)
|
|
301
314
|
end
|
|
302
315
|
end
|
|
@@ -172,7 +172,7 @@ module OpenAI
|
|
|
172
172
|
|
|
173
173
|
@client.request(
|
|
174
174
|
method: :post,
|
|
175
|
-
path: ["evals/%1$s/runs/%2$s", eval_id, run_id],
|
|
175
|
+
path: ["evals/%1$s/runs/%2$s/cancel", eval_id, run_id],
|
|
176
176
|
model: OpenAI::Models::Evals::RunCancelResponse,
|
|
177
177
|
security: {bearer_auth: true},
|
|
178
178
|
options: options
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module OpenAI
|
|
4
|
+
module Resources
|
|
5
|
+
class Realtime
|
|
6
|
+
class Translations
|
|
7
|
+
class ClientSecrets
|
|
8
|
+
# Create a Realtime translation client secret with an associated translation
|
|
9
|
+
# session configuration.
|
|
10
|
+
#
|
|
11
|
+
# Client secrets are short-lived tokens that can be passed to a client app, such
|
|
12
|
+
# as a web frontend or mobile client, which grants access to the Realtime
|
|
13
|
+
# Translation API without leaking your main API key. You can configure a custom
|
|
14
|
+
# TTL for each client secret.
|
|
15
|
+
#
|
|
16
|
+
# Returns the created client secret and the effective translation session object.
|
|
17
|
+
# The client secret is a string that looks like `ek_1234`.
|
|
18
|
+
#
|
|
19
|
+
# @overload create(session:, expires_after: nil, request_options: {})
|
|
20
|
+
#
|
|
21
|
+
# @param session [OpenAI::Models::Realtime::RealtimeTranslationSessionCreateRequest]
|
|
22
|
+
# Realtime translation session configuration. Translation sessions stream source
|
|
23
|
+
# audio in and translated audio plus transcript deltas out continuously.
|
|
24
|
+
#
|
|
25
|
+
# @param expires_after [OpenAI::Models::Realtime::RealtimeTranslationClientSecretCreateRequest::ExpiresAfter]
|
|
26
|
+
# Configuration for the client secret expiration. Expiration refers to the time
|
|
27
|
+
# after which a client secret will no longer be valid for creating sessions. The
|
|
28
|
+
# session itself may continue after that time once started. A secret can be used
|
|
29
|
+
# to create multiple sessions until it expires.
|
|
30
|
+
#
|
|
31
|
+
# @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
32
|
+
#
|
|
33
|
+
# @return [OpenAI::Models::Realtime::RealtimeTranslationClientSecretCreateResponse]
|
|
34
|
+
#
|
|
35
|
+
# @see OpenAI::Models::Realtime::Translations::ClientSecretCreateParams
|
|
36
|
+
def create(params)
|
|
37
|
+
parsed, options = OpenAI::Realtime::Translations::ClientSecretCreateParams.dump_request(params)
|
|
38
|
+
@client.request(
|
|
39
|
+
method: :post,
|
|
40
|
+
path: "realtime/translations/client_secrets",
|
|
41
|
+
body: parsed,
|
|
42
|
+
model: OpenAI::Realtime::RealtimeTranslationClientSecretCreateResponse,
|
|
43
|
+
security: {bearer_auth: true},
|
|
44
|
+
options: options
|
|
45
|
+
)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# @api private
|
|
49
|
+
#
|
|
50
|
+
# @param client [OpenAI::Client]
|
|
51
|
+
def initialize(client:)
|
|
52
|
+
@client = client
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module OpenAI
|
|
4
|
+
module Resources
|
|
5
|
+
class Realtime
|
|
6
|
+
class Translations
|
|
7
|
+
# @return [OpenAI::Resources::Realtime::Translations::ClientSecrets]
|
|
8
|
+
attr_reader :client_secrets
|
|
9
|
+
|
|
10
|
+
# @api private
|
|
11
|
+
#
|
|
12
|
+
# @param client [OpenAI::Client]
|
|
13
|
+
def initialize(client:)
|
|
14
|
+
@client = client
|
|
15
|
+
@client_secrets = OpenAI::Resources::Realtime::Translations::ClientSecrets.new(client: client)
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -9,6 +9,9 @@ module OpenAI
|
|
|
9
9
|
# @return [OpenAI::Resources::Realtime::Calls]
|
|
10
10
|
attr_reader :calls
|
|
11
11
|
|
|
12
|
+
# @return [OpenAI::Resources::Realtime::Translations]
|
|
13
|
+
attr_reader :translations
|
|
14
|
+
|
|
12
15
|
# @api private
|
|
13
16
|
#
|
|
14
17
|
# @param client [OpenAI::Client]
|
|
@@ -16,6 +19,7 @@ module OpenAI
|
|
|
16
19
|
@client = client
|
|
17
20
|
@client_secrets = OpenAI::Resources::Realtime::ClientSecrets.new(client: client)
|
|
18
21
|
@calls = OpenAI::Resources::Realtime::Calls.new(client: client)
|
|
22
|
+
@translations = OpenAI::Resources::Realtime::Translations.new(client: client)
|
|
19
23
|
end
|
|
20
24
|
end
|
|
21
25
|
end
|
data/lib/openai/version.rb
CHANGED
data/lib/openai.rb
CHANGED
|
@@ -163,6 +163,7 @@ require_relative "openai/models/graders/python_grader"
|
|
|
163
163
|
require_relative "openai/models/graders/text_similarity_grader"
|
|
164
164
|
require_relative "openai/models/fine_tuning/fine_tuning_job_wandb_integration_object"
|
|
165
165
|
require_relative "openai/models/realtime/realtime_session_create_request"
|
|
166
|
+
require_relative "openai/models/realtime/realtime_translation_client_secret_create_request"
|
|
166
167
|
require_relative "openai/models/responses/response_custom_tool_call"
|
|
167
168
|
require_relative "openai/models/responses/response_custom_tool_call_output"
|
|
168
169
|
require_relative "openai/models/responses/response_function_tool_call"
|
|
@@ -515,12 +516,14 @@ require_relative "openai/models/beta/agents/sessions/event_stream_params"
|
|
|
515
516
|
require_relative "openai/models/beta/agents/sessions/item_list_params"
|
|
516
517
|
require_relative "openai/models/beta/agents/sessions/session_artifact"
|
|
517
518
|
require_relative "openai/models/beta/agents/sessions/session_artifact_deleted"
|
|
519
|
+
require_relative "openai/models/beta/agents/sessions/session_trace"
|
|
518
520
|
require_relative "openai/models/beta/agents/sessions/subagent_list_params"
|
|
519
521
|
require_relative "openai/models/beta/agents/sessions/subagent_retrieve_params"
|
|
520
522
|
require_relative "openai/models/beta/agents/sessions/subagents/item_list_params"
|
|
521
523
|
require_relative "openai/models/beta/agents/sessions/subagents/turn_list_params"
|
|
522
524
|
require_relative "openai/models/beta/agents/sessions/subagents/turn_retrieve_params"
|
|
523
525
|
require_relative "openai/models/beta/agents/sessions/subagents/turns/item_list_params"
|
|
526
|
+
require_relative "openai/models/beta/agents/sessions/trace_list_params"
|
|
524
527
|
require_relative "openai/models/beta/agents/sessions/turn"
|
|
525
528
|
require_relative "openai/models/beta/agents/sessions/turn_list_params"
|
|
526
529
|
require_relative "openai/models/beta/agents/sessions/turn_retrieve_params"
|
|
@@ -1204,7 +1207,6 @@ require_relative "openai/models/realtime/realtime_transcription_session_create_r
|
|
|
1204
1207
|
require_relative "openai/models/realtime/realtime_transcription_session_create_response"
|
|
1205
1208
|
require_relative "openai/models/realtime/realtime_transcription_session_turn_detection"
|
|
1206
1209
|
require_relative "openai/models/realtime/realtime_translation_client_event"
|
|
1207
|
-
require_relative "openai/models/realtime/realtime_translation_client_secret_create_request"
|
|
1208
1210
|
require_relative "openai/models/realtime/realtime_translation_client_secret_create_response"
|
|
1209
1211
|
require_relative "openai/models/realtime/realtime_translation_input_audio_buffer_append_event"
|
|
1210
1212
|
require_relative "openai/models/realtime/realtime_translation_input_transcript_delta_event"
|
|
@@ -1247,6 +1249,7 @@ require_relative "openai/models/realtime/session_updated_event"
|
|
|
1247
1249
|
require_relative "openai/models/realtime/session_update_event"
|
|
1248
1250
|
require_relative "openai/models/realtime/transcription_session_update"
|
|
1249
1251
|
require_relative "openai/models/realtime/transcription_session_updated_event"
|
|
1252
|
+
require_relative "openai/models/realtime/translations/client_secret_create_params"
|
|
1250
1253
|
require_relative "openai/models/reasoning"
|
|
1251
1254
|
require_relative "openai/models/response_format_json_object"
|
|
1252
1255
|
require_relative "openai/models/response_format_json_schema"
|
|
@@ -1521,6 +1524,7 @@ require_relative "openai/resources/beta/agents/sessions/subagents"
|
|
|
1521
1524
|
require_relative "openai/resources/beta/agents/sessions/subagents/items"
|
|
1522
1525
|
require_relative "openai/resources/beta/agents/sessions/subagents/turns"
|
|
1523
1526
|
require_relative "openai/resources/beta/agents/sessions/subagents/turns/items"
|
|
1527
|
+
require_relative "openai/resources/beta/agents/sessions/traces"
|
|
1524
1528
|
require_relative "openai/resources/beta/agents/sessions/turns"
|
|
1525
1529
|
require_relative "openai/resources/beta/agents/vaults"
|
|
1526
1530
|
require_relative "openai/resources/beta/agents/vaults/credentials"
|
|
@@ -1570,6 +1574,8 @@ require_relative "openai/resources/moderations"
|
|
|
1570
1574
|
require_relative "openai/resources/realtime"
|
|
1571
1575
|
require_relative "openai/resources/realtime/calls"
|
|
1572
1576
|
require_relative "openai/resources/realtime/client_secrets"
|
|
1577
|
+
require_relative "openai/resources/realtime/translations"
|
|
1578
|
+
require_relative "openai/resources/realtime/translations/client_secrets"
|
|
1573
1579
|
require_relative "openai/resources/responses"
|
|
1574
1580
|
require_relative "openai/resources/responses/input_items"
|
|
1575
1581
|
require_relative "openai/resources/responses/input_tokens"
|
|
@@ -1599,5 +1605,7 @@ require_relative "openai/helpers/realtime"
|
|
|
1599
1605
|
require_relative "openai/helpers/responses_websocket"
|
|
1600
1606
|
require_relative "openai/helpers/live/websocket"
|
|
1601
1607
|
|
|
1608
|
+
require_relative "openai/helpers/beta/agents/creation_stream"
|
|
1602
1609
|
require_relative "openai/helpers/agents/session_stream"
|
|
1610
|
+
require_relative "openai/helpers/beta/agents/function_tool"
|
|
1603
1611
|
require_relative "openai/helpers/agents/message"
|
|
@@ -26,6 +26,16 @@ module OpenAI
|
|
|
26
26
|
def each(&block)
|
|
27
27
|
end
|
|
28
28
|
|
|
29
|
+
# @beta
|
|
30
|
+
sig { returns(OpenAI::Helpers::Beta::Agents::TurnResult) }
|
|
31
|
+
def get_final_result
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# @beta
|
|
35
|
+
sig { returns(T.self_type) }
|
|
36
|
+
def with_result_collection
|
|
37
|
+
end
|
|
38
|
+
|
|
29
39
|
sig { void }
|
|
30
40
|
def close
|
|
31
41
|
end
|
|
@@ -47,12 +57,21 @@ module OpenAI
|
|
|
47
57
|
input: T.any(String, T::Array[OpenAI::Models::Beta::AgentSessionInputMessageParam::OrHash]),
|
|
48
58
|
tool_handlers: T::Hash[String, OpenAI::Helpers::Agents::ToolHandler],
|
|
49
59
|
idempotency_key: T.nilable(String),
|
|
60
|
+
output_type: T.nilable(T.class_of(OpenAI::Helpers::StructuredOutput::BaseModel)),
|
|
50
61
|
request_options: T.nilable(OpenAI::RequestOptions::OrHash),
|
|
51
62
|
block: T.nilable(T.proc.params(stream: OpenAI::Helpers::Agents::SessionStream).void)
|
|
52
63
|
)
|
|
53
64
|
.returns(OpenAI::Helpers::Agents::SessionStream)
|
|
54
65
|
end
|
|
55
|
-
def stream(
|
|
66
|
+
def stream(
|
|
67
|
+
session_id,
|
|
68
|
+
input:,
|
|
69
|
+
tool_handlers: {},
|
|
70
|
+
idempotency_key: nil,
|
|
71
|
+
output_type: nil,
|
|
72
|
+
request_options: {},
|
|
73
|
+
&block
|
|
74
|
+
)
|
|
56
75
|
end
|
|
57
76
|
end
|
|
58
77
|
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# typed: strong
|
|
2
|
+
module OpenAI
|
|
3
|
+
module Helpers
|
|
4
|
+
module Beta
|
|
5
|
+
module Agents
|
|
6
|
+
class ResultArtifacts
|
|
7
|
+
sig {
|
|
8
|
+
params(
|
|
9
|
+
artifacts: OpenAI::Resources::Beta::Agents::Sessions::Artifacts,
|
|
10
|
+
client: OpenAI::Client,
|
|
11
|
+
result: TurnResult
|
|
12
|
+
)
|
|
13
|
+
.void
|
|
14
|
+
}
|
|
15
|
+
def initialize(artifacts:, client:, result:)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
sig {
|
|
19
|
+
params(path: String, to: T.untyped, request_options: OpenAI::RequestOptions::OrHash).returns(
|
|
20
|
+
OpenAI::Models::Beta::Agents::Sessions::SessionArtifact
|
|
21
|
+
)
|
|
22
|
+
}
|
|
23
|
+
def download(path:, to:, request_options: {})
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# typed: strong
|
|
2
|
+
module OpenAI
|
|
3
|
+
module Helpers
|
|
4
|
+
module Beta
|
|
5
|
+
module Agents
|
|
6
|
+
class PreparedFiles
|
|
7
|
+
sig { returns(T::Array[OpenAI::Models::Beta::HostedEnvironmentFileParam::FileID]) }
|
|
8
|
+
attr_reader :files
|
|
9
|
+
sig { returns(T::Array[String]) }
|
|
10
|
+
attr_reader :upload_ids
|
|
11
|
+
sig { params(files: T::Array[T::Hash[Symbol, T.untyped]]).void }
|
|
12
|
+
def initialize(files)
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
class FilePreparationError < OpenAI::Errors::Error
|
|
17
|
+
sig { returns(PreparedFiles) }
|
|
18
|
+
attr_reader :prepared
|
|
19
|
+
sig { params(prepared: PreparedFiles).returns(T.attached_class) }
|
|
20
|
+
def self.new(prepared:)
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
# @api private
|
|
24
|
+
class FilePreparation
|
|
25
|
+
sig {
|
|
26
|
+
params(client: OpenAI::Client, environment_files: OpenAI::Resources::Beta::Agents::Environments::Files).void
|
|
27
|
+
}
|
|
28
|
+
def initialize(client:, environment_files:)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
sig {
|
|
32
|
+
params(files: T::Hash[String, T.any(String, Pathname)], request_options: OpenAI::RequestOptions::OrHash)
|
|
33
|
+
.returns(PreparedFiles)
|
|
34
|
+
}
|
|
35
|
+
def prepare(files, request_options: {})
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
sig {
|
|
39
|
+
params(
|
|
40
|
+
directory: T.any(String, Pathname),
|
|
41
|
+
destination: String,
|
|
42
|
+
include: T::Array[String],
|
|
43
|
+
request_options: OpenAI::RequestOptions::OrHash
|
|
44
|
+
)
|
|
45
|
+
.returns(PreparedFiles)
|
|
46
|
+
}
|
|
47
|
+
def prepare_directory(directory, destination:, include:, request_options: {})
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
sig {
|
|
51
|
+
params(
|
|
52
|
+
environment_id: String,
|
|
53
|
+
file: T.any(String, Pathname),
|
|
54
|
+
path: String,
|
|
55
|
+
request_options: OpenAI::RequestOptions::OrHash
|
|
56
|
+
)
|
|
57
|
+
.returns(PreparedFiles)
|
|
58
|
+
}
|
|
59
|
+
def upload(environment_id, file:, path:, request_options: {})
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# typed: strong
|
|
2
|
+
|
|
3
|
+
module OpenAI
|
|
4
|
+
module Helpers
|
|
5
|
+
module Beta
|
|
6
|
+
module Agents
|
|
7
|
+
class FunctionTool
|
|
8
|
+
sig { returns(String) }
|
|
9
|
+
attr_reader :name
|
|
10
|
+
|
|
11
|
+
sig do
|
|
12
|
+
params(
|
|
13
|
+
name: String,
|
|
14
|
+
arguments: T.class_of(OpenAI::BaseModel),
|
|
15
|
+
description: String,
|
|
16
|
+
handler: T.proc.params(arguments: T.untyped).returns(OpenAI::Helpers::Agents::ToolOutput)
|
|
17
|
+
)
|
|
18
|
+
.void
|
|
19
|
+
end
|
|
20
|
+
def initialize(name:, arguments:, description: "", &handler)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
sig { returns(OpenAI::Internal::AnyHash) }
|
|
24
|
+
def definition
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
sig { returns(T::Hash[String, OpenAI::Helpers::Agents::ToolHandler]) }
|
|
28
|
+
def handlers
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
sig {
|
|
32
|
+
params(arguments: T.any(String, OpenAI::Internal::AnyHash)).returns(OpenAI::Helpers::Agents::ToolOutput)
|
|
33
|
+
}
|
|
34
|
+
def call(arguments)
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# typed: strong
|
|
2
|
+
|
|
3
|
+
module OpenAI
|
|
4
|
+
module Helpers
|
|
5
|
+
module Beta
|
|
6
|
+
module Agents
|
|
7
|
+
module ModelAdapter
|
|
8
|
+
sig { params(model: T.untyped, parameter: String).void }
|
|
9
|
+
def self.validate!(model, parameter:)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
sig do
|
|
13
|
+
params(model: T.class_of(OpenAI::BaseModel), value: T.untyped, memoize: T::Boolean)
|
|
14
|
+
.returns(T.nilable(OpenAI::BaseModel))
|
|
15
|
+
end
|
|
16
|
+
def self.coerce(model, value, memoize: false)
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
# typed: strong
|
|
2
|
+
|
|
3
|
+
module OpenAI
|
|
4
|
+
module Helpers
|
|
5
|
+
module Beta
|
|
6
|
+
module Agents
|
|
7
|
+
class TurnResult
|
|
8
|
+
sig { returns(OpenAI::Models::Beta::Agents::Sessions::Turn) }
|
|
9
|
+
def turn
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
sig { returns(T::Array[OpenAI::Models::Beta::AgentSessionMessage]) }
|
|
13
|
+
def messages
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
sig { returns(String) }
|
|
17
|
+
def session_id
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
sig { returns(String) }
|
|
21
|
+
def turn_id
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
sig { returns(String) }
|
|
25
|
+
def output_text
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
sig { returns(T.untyped) }
|
|
29
|
+
def output_parsed
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
sig {
|
|
33
|
+
params(output_type: T.class_of(OpenAI::Helpers::StructuredOutput::BaseModel)).returns(ParsedTurnResult)
|
|
34
|
+
}
|
|
35
|
+
def parse(output_type:)
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
class ResultError < OpenAI::Errors::Error
|
|
40
|
+
sig { returns(Symbol) }
|
|
41
|
+
def reason
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
sig { returns(T.nilable(String)) }
|
|
45
|
+
def session_id
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
sig { returns(T.nilable(OpenAI::Models::Beta::Agents::Sessions::Turn)) }
|
|
49
|
+
def turn
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
sig { returns(T::Array[OpenAI::Models::Beta::AgentSessionMessage]) }
|
|
53
|
+
def messages
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
sig {
|
|
57
|
+
returns(
|
|
58
|
+
T::Array[T.any(OpenAI::Models::Beta::AgentSession::RequiredAction::Variants, OpenAI::Internal::AnyHash)]
|
|
59
|
+
)
|
|
60
|
+
}
|
|
61
|
+
def required_actions
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
sig { returns(T.nilable(String)) }
|
|
65
|
+
def turn_id
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# @api private
|
|
70
|
+
class ResultCollector
|
|
71
|
+
sig { params(session_id: T.nilable(String), handler_names: T::Array[String]).void }
|
|
72
|
+
def initialize(session_id: nil, handler_names: [])
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
sig { void }
|
|
76
|
+
def enable
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
sig {
|
|
80
|
+
params(event: T.any(OpenAI::Models::Beta::AgentSessionEvent::Variants, OpenAI::Internal::AnyHash)).void
|
|
81
|
+
}
|
|
82
|
+
def observe(event)
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
sig { returns(T.nilable(T::Boolean)) }
|
|
86
|
+
def stopped?
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
sig { params(error: StandardError).void }
|
|
90
|
+
def observe_error(error)
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
sig { returns(TurnResult) }
|
|
94
|
+
def result
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
class ParsedTurnResult < TurnResult
|
|
99
|
+
sig { returns(TurnResult) }
|
|
100
|
+
attr_reader :raw_result
|
|
101
|
+
|
|
102
|
+
sig { returns(T.untyped) }
|
|
103
|
+
attr_reader :output_parsed
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
class OutputParseError < OpenAI::Errors::Error
|
|
107
|
+
sig { returns(TurnResult) }
|
|
108
|
+
attr_reader :raw_result
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
# @api private
|
|
112
|
+
class OutputParser
|
|
113
|
+
sig { params(model: T.class_of(OpenAI::Helpers::StructuredOutput::BaseModel)).void }
|
|
114
|
+
def initialize(model)
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
sig { params(params: OpenAI::Internal::AnyHash).void }
|
|
118
|
+
def prepare_request(params)
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
sig { params(result: TurnResult).returns(ParsedTurnResult) }
|
|
122
|
+
def parse(result)
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
class CreationStream < OpenAI::Internal::Stream
|
|
127
|
+
Message = type_member(:in) { {fixed: OpenAI::Internal::Util::ServerSentEvent} }
|
|
128
|
+
Elem = type_member(:out) { {fixed: OpenAI::Models::Beta::AgentSessionEvent::Variants} }
|
|
129
|
+
|
|
130
|
+
sig { returns(TurnResult) }
|
|
131
|
+
def get_final_result
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
sig { returns(T.self_type) }
|
|
135
|
+
def with_result_collection
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
# @api private
|
|
139
|
+
sig { params(parser: T.nilable(OutputParser)).returns(T.self_type) }
|
|
140
|
+
def configure_output_parser(parser)
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
end
|
|
144
|
+
end
|
|
145
|
+
end
|
|
146
|
+
end
|