Module: LlmCostTracker::Providers::Openai::ModelFamilies
- Defined in:
- lib/llm_cost_tracker/providers/openai/model_families.rb
Constant Summary collapse
- DATA_RESIDENCY_MODEL_PATTERN =
/\Agpt-5\.(?:4|5)(?:-(?:mini|nano|pro|codex(?:-mini|-max)?))?(?:-\d{4}-\d{2}-\d{2})?\z/- IMAGE_OUTPUT_MODEL_PATTERN =
/\Agpt-image-/i- CHARACTER_BILLED_TTS_MODEL_PATTERN =
/\Atts-1(-hd)?\z/- REASONING_MODEL_PATTERNS =
[ /\Agpt-5(\b|[\d.-])/i, /\Ao\d+(\b|[\d.-])/i ].freeze
- NON_REASONING_GPT5_PATTERN =
/\Agpt-5(?:\.\d+)?-chat\b/i- CHAT_COMPLETIONS_SEARCH_MODEL_PATTERN =
/-search-(?:preview|api)\b/i
Class Method Summary collapse
- .character_billed_tts?(model) ⇒ Boolean
- .chat_completions_search?(model) ⇒ Boolean
- .data_residency?(model) ⇒ Boolean
- .image_output?(model) ⇒ Boolean
- .reasoning?(model) ⇒ Boolean
Class Method Details
.character_billed_tts?(model) ⇒ Boolean
30 31 32 |
# File 'lib/llm_cost_tracker/providers/openai/model_families.rb', line 30 def self.character_billed_tts?(model) model.to_s.match?(CHARACTER_BILLED_TTS_MODEL_PATTERN) end |
.chat_completions_search?(model) ⇒ Boolean
34 35 36 |
# File 'lib/llm_cost_tracker/providers/openai/model_families.rb', line 34 def self.chat_completions_search?(model) model.to_s.match?(CHAT_COMPLETIONS_SEARCH_MODEL_PATTERN) end |
.data_residency?(model) ⇒ Boolean
22 23 24 |
# File 'lib/llm_cost_tracker/providers/openai/model_families.rb', line 22 def self.data_residency?(model) model.to_s.match?(DATA_RESIDENCY_MODEL_PATTERN) end |
.image_output?(model) ⇒ Boolean
26 27 28 |
# File 'lib/llm_cost_tracker/providers/openai/model_families.rb', line 26 def self.image_output?(model) model.to_s.match?(IMAGE_OUTPUT_MODEL_PATTERN) end |
.reasoning?(model) ⇒ Boolean
38 39 40 41 42 43 44 |
# File 'lib/llm_cost_tracker/providers/openai/model_families.rb', line 38 def self.reasoning?(model) name = model.to_s return false if name.empty? return false if NON_REASONING_GPT5_PATTERN.match?(name) REASONING_MODEL_PATTERNS.any? { |pattern| pattern.match?(name) } end |