module RubyLLM::ModelCapabilities::Anthropic
def default_input_price
def default_input_price 3.0 end
def default_output_price
def default_output_price 15.0 end
def determine_context_window(model_id)
def determine_context_window(model_id) case model_id when /claude-3/ then 200_000 else 100_000 end end
def determine_max_tokens(model_id)
def determine_max_tokens(model_id) case model_id when /claude-3-5/ then 8_192 else 4_096 end end
def get_input_price(model_id)
def get_input_price(model_id) PRICES.dig(model_family(model_id), :input) || default_input_price end
def get_output_price(model_id)
def get_output_price(model_id) PRICES.dig(model_family(model_id), :output) || default_output_price end
def model_family(model_id)
def model_family(model_id) case model_id when /claude-3-5-sonnet/ then :claude35_sonnet when /claude-3-5-haiku/ then :claude35_haiku when /claude-3-opus/ then :claude3_opus when /claude-3-sonnet/ then :claude3_sonnet when /claude-3-haiku/ then :claude3_haiku else :claude2 end end
def supports_functions?(model_id)
def supports_functions?(model_id) model_id.include?('claude-3') end
def supports_json_mode?(model_id)
def supports_json_mode?(model_id) model_id.include?('claude-3') end
def supports_vision?(model_id)
def supports_vision?(model_id) return false if model_id.match?(/claude-3-5-haiku/) return false if model_id.match?(/claude-[12]/) true end