module

Autobot::Providers

Constants

DEFAULT_MAX_TOKENS = 4096

Default LLM parameters

DEFAULT_TEMPERATURE = 0.7
PROVIDERS = [ProviderSpec.new(name: "openrouter", keywords: ["openrouter"], display_name: "OpenRouter", api_url: "https://openrouter.ai/api/v1/chat/completions", model_prefix: "openrouter", gateway: true, detect_by_key_prefix: "sk-or-", detect_by_base_keyword: "openrouter"), ProviderSpec.new(name: "aihubmix", keywords: ["aihubmix"], display_name: "AiHubMix", api_url: "https://aihubmix.com/v1/chat/completions", gateway: true, detect_by_base_keyword: "aihubmix", strip_model_prefix: true), ProviderSpec.new(name: "anthropic", keywords: ["anthropic", "claude"], display_name: "Anthropic", api_url: "https://api.anthropic.com/v1/messages", auth_header: "x-api-key"), ProviderSpec.new(name: "openai", keywords: ["openai", "gpt", "o1", "o3", "o4"], display_name: "OpenAI", api_url: "https://api.openai.com/v1/chat/completions", use_max_completion_tokens: true, max_tokens_legacy_patterns: ["gpt-4", "gpt-3"]), ProviderSpec.new(name: "deepseek", keywords: ["deepseek"], display_name: "DeepSeek", api_url: "https://api.deepseek.com/v1/chat/completions"), ProviderSpec.new(name: "gemini", keywords: ["gemini"], display_name: "Gemini", api_url: "https://generativelanguage.googleapis.com/v1beta/openai/chat/completions"), ProviderSpec.new(name: "kimi", keywords: ["kimi"], display_name: "Kimi Code", api_url: "https://api.kimi.com/coding/v1/chat/completions", detect_by_key_prefix: "sk-kimi-", user_agent: "KimiCLI/0.77"), ProviderSpec.new(name: "moonshot", keywords: ["moonshot"], display_name: "Moonshot", api_url: "https://api.moonshot.ai/v1/chat/completions", model_overrides: {"kimi-k2.5" => {"temperature" => JSON::Any.new(1.0)}}), ProviderSpec.new(name: "minimax", keywords: ["minimax"], display_name: "MiniMax", api_url: "https://api.minimax.io/v1/chat/completions"), ProviderSpec.new(name: "groq", keywords: ["groq"], display_name: "Groq", api_url: "https://api.groq.com/openai/v1/chat/completions"), ProviderSpec.new(name: "bedrock", keywords: ["bedrock", "nova", "amazon"], display_name: "AWS Bedrock"), ProviderSpec.new(name: "duckai", keywords: ["duckai"], display_name: "DuckAI", local: true, detect_by_base_keyword: "duckai", supports_system_role: false), ProviderSpec.new(name: "vllm", keywords: ["vllm"], display_name: "vLLM/Local", local: true)]

Single source of truth for all supported providers. Order = priority.

Class methods

find_by_model(model : String) : ProviderSpec | Nil

Find a standard (non-gateway, non-local) provider by model name keywords.

Source
find_by_name(name : String) : ProviderSpec | Nil

Find a provider spec by config name (e.g. "deepseek", "openrouter").

Source
find_gateway(provider_name : String | Nil = nil, api_key : String | Nil = nil, api_base : String | Nil = nil) : ProviderSpec | Nil

Detect a gateway or local provider.

Priority:

  1. Explicit provider_name matching a gateway/local spec.
  2. api_key prefix (e.g. "sk-or-" -> OpenRouter).
  3. api_base keyword (e.g. "aihubmix" in URL).
Source

Nested types