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
33 34 35 |
# File 'lib/llm_cost_tracker/providers/openai/model_families.rb', line 33 def character_billed_tts?(model) model.to_s.match?(CHARACTER_BILLED_TTS_MODEL_PATTERN) end |
.chat_completions_search?(model) ⇒ Boolean
37 38 39 |
# File 'lib/llm_cost_tracker/providers/openai/model_families.rb', line 37 def chat_completions_search?(model) model.to_s.match?(CHAT_COMPLETIONS_SEARCH_MODEL_PATTERN) end |
.data_residency?(model) ⇒ Boolean
25 26 27 |
# File 'lib/llm_cost_tracker/providers/openai/model_families.rb', line 25 def data_residency?(model) model.to_s.match?(DATA_RESIDENCY_MODEL_PATTERN) end |
.image_output?(model) ⇒ Boolean
29 30 31 |
# File 'lib/llm_cost_tracker/providers/openai/model_families.rb', line 29 def image_output?(model) model.to_s.match?(IMAGE_OUTPUT_MODEL_PATTERN) end |
.reasoning?(model) ⇒ Boolean
41 42 43 44 45 46 47 |
# File 'lib/llm_cost_tracker/providers/openai/model_families.rb', line 41 def 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 |