Module: RubyLLM::Providers::OpenAIResponses::Background

Defined in:
lib/ruby_llm/providers/openai_responses/background.rb

Overview

Background mode support for the OpenAI Responses API. Handles async responses with polling for long-running tasks.

Constant Summary collapse

QUEUED =

Status constants

'queued'
IN_PROGRESS =
'in_progress'
COMPLETED =
'completed'
FAILED =
'failed'
CANCELLED =
'cancelled'
INCOMPLETE =
'incomplete'
TERMINAL_STATUSES =
[COMPLETED, FAILED, CANCELLED, INCOMPLETE].freeze
PENDING_STATUSES =
[QUEUED, IN_PROGRESS].freeze

Class Method Summary collapse

Class Method Details

.apply_background_mode(payload, background: false) ⇒ Hash

Add background mode to payload

Parameters:

  • payload (Hash)

    The request payload

  • background (Boolean) (defaults to: false)

    Whether to run in background mode

Returns:

  • (Hash)

    Updated payload



26
27
28
29
# File 'lib/ruby_llm/providers/openai_responses/background.rb', line 26

def apply_background_mode(payload, background: false)
  payload[:background] = background if background
  payload
end

.cancel_url(response_id) ⇒ String

URL to cancel a response

Parameters:

  • response_id (String)

    The response ID

Returns:

  • (String)

    The URL path



85
86
87
# File 'lib/ruby_llm/providers/openai_responses/background.rb', line 85

def cancel_url(response_id)
  "responses/#{response_id}/cancel"
end

.complete?(response) ⇒ Boolean

Check if response is complete (terminal state)

Parameters:

  • response (Hash)

    The API response

Returns:

  • (Boolean)


42
43
44
45
# File 'lib/ruby_llm/providers/openai_responses/background.rb', line 42

def complete?(response)
  status = response['status']
  TERMINAL_STATUSES.include?(status)
end

.error_info(response) ⇒ Hash?

Get error information if failed

Parameters:

  • response (Hash)

    The API response

Returns:

  • (Hash, nil)

    Error information



71
72
73
# File 'lib/ruby_llm/providers/openai_responses/background.rb', line 71

def error_info(response)
  response['error']
end

.failed?(response) ⇒ Boolean

Check if response failed

Parameters:

  • response (Hash)

    The API response

Returns:

  • (Boolean)


57
58
59
# File 'lib/ruby_llm/providers/openai_responses/background.rb', line 57

def failed?(response)
  response['status'] == FAILED
end

.input_items_url(response_id) ⇒ String

URL to list input items for a response

Parameters:

  • response_id (String)

    The response ID

Returns:

  • (String)

    The URL path



92
93
94
# File 'lib/ruby_llm/providers/openai_responses/background.rb', line 92

def input_items_url(response_id)
  "responses/#{response_id}/input_items"
end

.pending?(response) ⇒ Boolean

Check if response is still pending

Parameters:

  • response (Hash)

    The API response

Returns:

  • (Boolean)


34
35
36
37
# File 'lib/ruby_llm/providers/openai_responses/background.rb', line 34

def pending?(response)
  status = response['status']
  PENDING_STATUSES.include?(status)
end

.retrieve_url(response_id) ⇒ String

URL to retrieve a response by ID

Parameters:

  • response_id (String)

    The response ID

Returns:

  • (String)

    The URL path



78
79
80
# File 'lib/ruby_llm/providers/openai_responses/background.rb', line 78

def retrieve_url(response_id)
  "responses/#{response_id}"
end

.status(response) ⇒ String

Get response status

Parameters:

  • response (Hash)

    The API response

Returns:

  • (String)

    The status



64
65
66
# File 'lib/ruby_llm/providers/openai_responses/background.rb', line 64

def status(response)
  response['status']
end

.successful?(response) ⇒ Boolean

Check if response was successful

Parameters:

  • response (Hash)

    The API response

Returns:

  • (Boolean)


50
51
52
# File 'lib/ruby_llm/providers/openai_responses/background.rb', line 50

def successful?(response)
  response['status'] == COMPLETED
end