Module: RubyLLM::Providers::OpenAI::Capabilities

Defined in:
lib/ruby_llm/providers/openai/capabilities.rb

Overview

Feature capability gaps not represented in upstream model catalogs.

Constant Summary collapse

TOOL_CAPABILITIES =
%w[tool_choice parallel_tool_calls].freeze
CHAT_MODELS =
%w[
  gpt-5-chat-latest
  gpt-5.1-chat-latest
].freeze
CODEX_MODELS =
%w[
  gpt-5-codex
  gpt-5.1-codex
  gpt-5.1-codex-max
  gpt-5.1-codex-mini
  gpt-5.2-codex
].freeze
SEARCH_MODELS =
%w[
  gpt-4o-mini-search-preview
  gpt-4o-mini-search-preview-2025-03-11
  gpt-4o-search-preview
  gpt-4o-search-preview-2025-03-11
  gpt-5-search-api
  gpt-5-search-api-2025-10-14
].freeze
DEEP_RESEARCH_MODELS =
%w[
  o3-deep-research
  o3-deep-research-2025-06-26
  o4-mini-deep-research
  o4-mini-deep-research-2025-06-26
].freeze
MODERATION_MODELS =
%w[
  omni-moderation-2024-09-26
  omni-moderation-latest
].freeze
TRANSCRIPTION_MODELS =
%w[
  gpt-live-transcribe
  gpt-realtime-whisper
  gpt-transcribe
  gpt-4o-mini-transcribe
  gpt-4o-mini-transcribe-2025-03-20
  gpt-4o-mini-transcribe-2025-12-15
  gpt-4o-transcribe
  gpt-4o-transcribe-diarize
  whisper-1
].freeze
EXPLICIT_CAPABILITIES =
{
  'function_calling' => (CHAT_MODELS + CODEX_MODELS).freeze,
  'structured_output' => (CHAT_MODELS + CODEX_MODELS + SEARCH_MODELS).freeze,
  'vision' => (CHAT_MODELS + CODEX_MODELS + DEEP_RESEARCH_MODELS + MODERATION_MODELS).freeze,
  'reasoning' => (CODEX_MODELS + DEEP_RESEARCH_MODELS).freeze,
  'transcription' => TRANSCRIPTION_MODELS,
  'citations' => SEARCH_MODELS
}.freeze

Class Method Summary collapse

Class Method Details

.augment(capabilities, model_id:) ⇒ Object



58
59
60
61
62
63
64
# File 'lib/ruby_llm/providers/openai/capabilities.rb', line 58

def self.augment(capabilities, model_id:, **)
  additions = EXPLICIT_CAPABILITIES.filter_map do |capability, models|
    capability if models.include?(model_id)
  end
  supported = capabilities | additions
  supported | (supported.include?('function_calling') ? TOOL_CAPABILITIES : [])
end