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

Class Method Summary collapse

Class Method Details

.supports_vision?(provider, model) ⇒ Boolean

Returns:

  • (Boolean)


29
30
31
32
33
34
35
36
37
38
# File 'lib/dspy/lm/vision_models.rb', line 29

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) }
  else
    false
  end
end

.validate_vision_support!(provider, model) ⇒ Object



40
41
42
43
44
# File 'lib/dspy/lm/vision_models.rb', line 40

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



46
47
48
49
50
51
52
53
54
55
# File 'lib/dspy/lm/vision_models.rb', line 46

def self.vision_models_for(provider)
  case provider.to_s.downcase
  when 'openai'
    OPENAI_VISION_MODELS
  when 'anthropic'
    ANTHROPIC_VISION_MODELS
  else
    []
  end
end