Class: OpenAI::Resources::Beta::Threads

Inherits:
Object
  • Object
show all
Defined in:
lib/openai/resources/beta/threads.rb,
lib/openai/resources/beta/threads/runs.rb,
lib/openai/resources/beta/threads/messages.rb,
lib/openai/resources/beta/threads/runs/steps.rb

Defined Under Namespace

Classes: Messages, Runs

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(client:) ⇒ Threads

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a new instance of Threads.

Parameters:



240
241
242
243
244
# File 'lib/openai/resources/beta/threads.rb', line 240

def initialize(client:)
  @client = client
  @runs = OpenAI::Resources::Beta::Threads::Runs.new(client: client)
  @messages = OpenAI::Resources::Beta::Threads::Messages.new(client: client)
end

Instance Attribute Details

#messagesOpenAI::Resources::Beta::Threads::Messages (readonly)



11
12
13
# File 'lib/openai/resources/beta/threads.rb', line 11

def messages
  @messages
end

#runsOpenAI::Resources::Beta::Threads::Runs (readonly)



8
9
10
# File 'lib/openai/resources/beta/threads.rb', line 8

def runs
  @runs
end

Instance Method Details

#create(messages: nil, metadata: nil, tool_resources: nil, request_options: {}) ⇒ OpenAI::Models::Beta::Thread

Some parameter documentations has been truncated, see Models::Beta::ThreadCreateParams for more details.

Create a thread.

Parameters:

Returns:

See Also:



31
32
33
34
35
36
37
38
39
40
# File 'lib/openai/resources/beta/threads.rb', line 31

def create(params = {})
  parsed, options = OpenAI::Beta::ThreadCreateParams.dump_request(params)
  @client.request(
    method: :post,
    path: "threads",
    body: parsed,
    model: OpenAI::Beta::Thread,
    options: {extra_headers: {"OpenAI-Beta" => "assistants=v2"}, **options}
  )
end

#create_and_run(assistant_id: , instructions: nil, max_completion_tokens: nil, max_prompt_tokens: nil, metadata: nil, model: nil, parallel_tool_calls: nil, response_format: nil, temperature: nil, thread: nil, tool_choice: nil, tool_resources: nil, tools: nil, top_p: nil, truncation_strategy: nil, request_options: {}) ⇒ OpenAI::Models::Beta::Threads::Run

See #stream_raw for streaming counterpart.

Some parameter documentations has been truncated, see Models::Beta::ThreadCreateAndRunParams for more details.

Create a thread and run it in one request.

Parameters:

Returns:

See Also:



155
156
157
158
159
160
161
162
163
164
165
166
167
168
# File 'lib/openai/resources/beta/threads.rb', line 155

def create_and_run(params)
  parsed, options = OpenAI::Beta::ThreadCreateAndRunParams.dump_request(params)
  if parsed[:stream]
    message = "Please use `#stream_raw` for the streaming use case."
    raise ArgumentError.new(message)
  end
  @client.request(
    method: :post,
    path: "threads/runs",
    body: parsed,
    model: OpenAI::Beta::Threads::Run,
    options: {extra_headers: {"OpenAI-Beta" => "assistants=v2"}, **options}
  )
end

#delete(thread_id, request_options: {}) ⇒ OpenAI::Models::Beta::ThreadDeleted

Delete a thread.

Parameters:

  • thread_id (String)

    The ID of the thread to delete.

  • request_options (OpenAI::RequestOptions, Hash{Symbol=>Object}, nil)

Returns:

See Also:



102
103
104
105
106
107
108
109
# File 'lib/openai/resources/beta/threads.rb', line 102

def delete(thread_id, params = {})
  @client.request(
    method: :delete,
    path: ["threads/%1$s", thread_id],
    model: OpenAI::Beta::ThreadDeleted,
    options: {extra_headers: {"OpenAI-Beta" => "assistants=v2"}, **params[:request_options].to_h}
  )
end

#retrieve(thread_id, request_options: {}) ⇒ OpenAI::Models::Beta::Thread

Retrieves a thread.

Parameters:

  • thread_id (String)

    The ID of the thread to retrieve.

  • request_options (OpenAI::RequestOptions, Hash{Symbol=>Object}, nil)

Returns:

See Also:



53
54
55
56
57
58
59
60
# File 'lib/openai/resources/beta/threads.rb', line 53

def retrieve(thread_id, params = {})
  @client.request(
    method: :get,
    path: ["threads/%1$s", thread_id],
    model: OpenAI::Beta::Thread,
    options: {extra_headers: {"OpenAI-Beta" => "assistants=v2"}, **params[:request_options].to_h}
  )
end

#streamObject

Raises:

  • (NotImplementedError)


170
171
172
# File 'lib/openai/resources/beta/threads.rb', line 170

def stream
  raise NotImplementedError.new("higher level helpers are coming soon!")
end

#stream_raw(assistant_id: , instructions: nil, max_completion_tokens: nil, max_prompt_tokens: nil, metadata: nil, model: nil, parallel_tool_calls: nil, response_format: nil, temperature: nil, thread: nil, tool_choice: nil, tool_resources: nil, tools: nil, top_p: nil, truncation_strategy: nil, request_options: {}) ⇒ OpenAI::Internal::Stream<OpenAI::Models::Beta::AssistantStreamEvent::ThreadCreated, OpenAI::Models::Beta::AssistantStreamEvent::ThreadRunCreated, OpenAI::Models::Beta::AssistantStreamEvent::ThreadRunQueued, OpenAI::Models::Beta::AssistantStreamEvent::ThreadRunInProgress, OpenAI::Models::Beta::AssistantStreamEvent::ThreadRunRequiresAction, OpenAI::Models::Beta::AssistantStreamEvent::ThreadRunCompleted, OpenAI::Models::Beta::AssistantStreamEvent::ThreadRunIncomplete, OpenAI::Models::Beta::AssistantStreamEvent::ThreadRunFailed, OpenAI::Models::Beta::AssistantStreamEvent::ThreadRunCancelling, OpenAI::Models::Beta::AssistantStreamEvent::ThreadRunCancelled, OpenAI::Models::Beta::AssistantStreamEvent::ThreadRunExpired, OpenAI::Models::Beta::AssistantStreamEvent::ThreadRunStepCreated, OpenAI::Models::Beta::AssistantStreamEvent::ThreadRunStepInProgress, OpenAI::Models::Beta::AssistantStreamEvent::ThreadRunStepDelta, OpenAI::Models::Beta::AssistantStreamEvent::ThreadRunStepCompleted, OpenAI::Models::Beta::AssistantStreamEvent::ThreadRunStepFailed, OpenAI::Models::Beta::AssistantStreamEvent::ThreadRunStepCancelled, OpenAI::Models::Beta::AssistantStreamEvent::ThreadRunStepExpired, OpenAI::Models::Beta::AssistantStreamEvent::ThreadMessageCreated, OpenAI::Models::Beta::AssistantStreamEvent::ThreadMessageInProgress, OpenAI::Models::Beta::AssistantStreamEvent::ThreadMessageDelta, OpenAI::Models::Beta::AssistantStreamEvent::ThreadMessageCompleted, OpenAI::Models::Beta::AssistantStreamEvent::ThreadMessageIncomplete, OpenAI::Models::Beta::AssistantStreamEvent::ErrorEvent>

See #create_and_run for non-streaming counterpart.

Some parameter documentations has been truncated, see Models::Beta::ThreadCreateAndRunParams for more details.

Create a thread and run it in one request.

Parameters:

Returns:

See Also:



219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
# File 'lib/openai/resources/beta/threads.rb', line 219

def stream_raw(params)
  parsed, options = OpenAI::Beta::ThreadCreateAndRunParams.dump_request(params)
  unless parsed.fetch(:stream, true)
    message = "Please use `#create_and_run` for the non-streaming use case."
    raise ArgumentError.new(message)
  end
  parsed.store(:stream, true)
  @client.request(
    method: :post,
    path: "threads/runs",
    headers: {"accept" => "text/event-stream"},
    body: parsed,
    stream: OpenAI::Internal::Stream,
    model: OpenAI::Beta::AssistantStreamEvent,
    options: {extra_headers: {"OpenAI-Beta" => "assistants=v2"}, **options}
  )
end

#update(thread_id, metadata: nil, tool_resources: nil, request_options: {}) ⇒ OpenAI::Models::Beta::Thread

Some parameter documentations has been truncated, see Models::Beta::ThreadUpdateParams for more details.

Modifies a thread.

Parameters:

  • thread_id (String)

    The ID of the thread to modify. Only the ‘metadata` can be modified.

  • metadata (Hash{Symbol=>String}, nil)

    Set of 16 key-value pairs that can be attached to an object. This can be

  • tool_resources (OpenAI::Models::Beta::ThreadUpdateParams::ToolResources, nil)

    A set of resources that are made available to the assistant’s tools in this thre

  • request_options (OpenAI::RequestOptions, Hash{Symbol=>Object}, nil)

Returns:

See Also:



80
81
82
83
84
85
86
87
88
89
# File 'lib/openai/resources/beta/threads.rb', line 80

def update(thread_id, params = {})
  parsed, options = OpenAI::Beta::ThreadUpdateParams.dump_request(params)
  @client.request(
    method: :post,
    path: ["threads/%1$s", thread_id],
    body: parsed,
    model: OpenAI::Beta::Thread,
    options: {extra_headers: {"OpenAI-Beta" => "assistants=v2"}, **options}
  )
end