Module: DSPy::LM::VisionModels
- Defined in:
- lib/dspy/lm/vision_models.rb
Constant Summary collapse
- OPENAI_VISION_MODELS =
OpenAI vision-capable models
[ 'gpt-4-vision-preview', 'gpt-4-turbo', 'gpt-4-turbo-2024-04-09', 'gpt-4-turbo-preview', 'gpt-4o', 'gpt-4o-2024-05-13', 'gpt-4o-2024-08-06', 'gpt-4o-mini', 'gpt-4o-mini-2024-07-18' ].freeze
- ANTHROPIC_VISION_MODELS =
Anthropic vision-capable models
[ 'claude-3-opus-20240229', 'claude-3-sonnet-20240229', 'claude-3-haiku-20240307', 'claude-3-5-sonnet-20241022', 'claude-3-5-sonnet-20240620', 'claude-3-5-haiku-20241022' ].freeze
- GEMINI_VISION_MODELS =
Gemini vision-capable models (all Gemini models support vision) Based on official Google AI API documentation (March 2025)
[ # Gemini 2.5 series (2025) 'gemini-2.5-pro', 'gemini-2.5-flash', 'gemini-2.5-flash-lite', # Gemini 2.0 series (2024-2025) 'gemini-2.0-flash', 'gemini-2.0-flash-lite', # Gemini 1.5 series 'gemini-1.5-pro', 'gemini-1.5-flash', 'gemini-1.5-flash-8b' ].freeze
Class Method Summary collapse
- .supports_vision?(provider, model) ⇒ Boolean
- .validate_vision_support!(provider, model) ⇒ Object
- .vision_models_for(provider) ⇒ Object
Class Method Details
.supports_vision?(provider, model) ⇒ Boolean
45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/dspy/lm/vision_models.rb', line 45 def self.supports_vision?(provider, model) case provider.to_s.downcase when 'openai' OPENAI_VISION_MODELS.any? { |m| model.include?(m) } when 'anthropic' ANTHROPIC_VISION_MODELS.any? { |m| model.include?(m) } when 'gemini' GEMINI_VISION_MODELS.any? { |m| model.include?(m) } else false end end |
.validate_vision_support!(provider, model) ⇒ Object
58 59 60 61 62 |
# File 'lib/dspy/lm/vision_models.rb', line 58 def self.validate_vision_support!(provider, model) unless supports_vision?(provider, model) raise ArgumentError, "Model #{model} does not support vision. Vision-capable models for #{provider}: #{vision_models_for(provider).join(', ')}" end end |
.vision_models_for(provider) ⇒ Object
64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/dspy/lm/vision_models.rb', line 64 def self.vision_models_for(provider) case provider.to_s.downcase when 'openai' OPENAI_VISION_MODELS when 'anthropic' ANTHROPIC_VISION_MODELS when 'gemini' GEMINI_VISION_MODELS else [] end end |