The project is in a healthy, maintained state
Supports OpenAI, Anthropic, Google Gemini + Vertex, Amazon Bedrock, Ollama (local), Mistral AI, and Cloudflare Workers AI + AI Gateway. One gem, all the models you need.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Development

~> 5.25
~> 3.1
~> 13.0
~> 6.0
~> 3.26

Runtime

~> 0.2
>= 2.0
>= 0
>= 0.3.2
>= 0.11.3
 Project Readme

ask-llm-providers

All LLM providers for the ask-rb ecosystem in one gem. Implements the Ask::Provider interface from ask-core with a capabilities-based interface: 7 canonical provider classes plus 26 OpenAI-compatible registry entries, a bundled model catalog, and cost calculation. Providers auto-register and the model catalog auto-loads when the gem is required.

Installation

gem "ask-llm-providers"

Quick Start

require "ask-llm-providers"

# Use a provider directly; streaming yields chunks to the block
provider = Ask::Providers::OpenAI.new
provider.chat([{ role: "user", content: "Tell me a story" }], model: "gpt-4o") do |chunk|
  print chunk.content
end

# Look up model metadata (capabilities, pricing, context window)
model = Ask::ModelCatalog.find("gpt-4o")
model.capabilities # => ["chat", "streaming", "tool_calls", ...]

Supported Providers

Provider Auth
OpenAI Ask::Auth.resolve(:openai_api_key) (env OPENAI_API_KEY)
Anthropic (Claude) Ask::Auth.resolve(:anthropic_api_key) (env ANTHROPIC_API_KEY)
Google Gemini Ask::Auth.resolve(:gemini_api_key) (env GEMINI_API_KEY); Vertex AI via GCP service account
Amazon Bedrock AWS credentials chain (env, ~/.aws, instance profile)
Ollama (local) none needed
Mistral AI Ask::Auth.resolve(:mistral_api_key) (env MISTRAL_API_KEY)
Cloudflare Workers AI Ask::Auth.resolve(:cloudflare_api_key) (env CLOUDFLARE_API_KEY)
26 OpenAI-compatible per-provider *_API_KEY env var (e.g. DEEPSEEK_API_KEY, GROQ_API_KEY, OPENROUTER_API_KEY)

Credentials resolve through Ask::Auth in order: environment variables, ~/.ask/credentials.yml, Rails credentials, then database and OAuth providers. Keys are read via Ask::Auth.resolve(:<name>_api_key).

The 26 OpenAI-compatible entries are registered from Ask::LLM::OPENAI_COMPATIBLE: DeepSeek, Groq, Together, Fireworks, Cerebras, xAI, Perplexity, DeepInfra, Anyscale, SambaNova, Nebius, Nvidia NIM, Friendli, Hyperbolic, Novita, Nscale, Featherless, AI/ML API, AI21, Meta, GitHub Models, OpenRouter, OpenCode, OpenCode Go, Mimo, and Moonshot. Each uses its own *_API_KEY env var; note that opencode_go uses OPENCODE_GO_API_KEY (its own key, not OPENCODE_API_KEY).

Model Catalog

The gem bundles model metadata (capabilities, pricing, context windows, modalities) as JSON for 12 providers: openai, anthropic, gemini, vertex_ai, bedrock, deepseek, mistral, perplexity, xai, meta, moonshot, and nvidia_nim, with 400+ models in total.

Ask::ModelCatalog.find("claude-sonnet-4-5") # => Ask::ModelInfo
Ask::ModelCatalog.chat_models               # => filtered catalog
Ask::ModelCatalog.by_provider(:gemini)
Ask::ModelCatalog.refresh!                  # fetch latest from models.dev

Entry Points

API Purpose
Ask::Providers::OpenAI/Anthropic/Google/Bedrock/Ollama/Mistral/Cloudflare Canonical provider classes
Ask::LLM::OPENAI_COMPATIBLE Registry data for the 26 compatible providers
Ask::LLM::Catalog.load! / refresh! Load bundled + user model data into Ask::ModelCatalog
Ask::LLM::Aliases.resolve("claude-sonnet-4") Short-name to canonical model ID resolution
Ask::LLM::CostCalculator.calculate(model, input_tokens:, output_tokens:) USD cost from model pricing
Ask::Provider.resolve(:openai) Class lookup by registered slug

Providers accept a base_url override, so any OpenAI-compatible endpoint can be used through Ask::Providers::OpenAI or Ask::Providers::OpenAICompatible.

Full documentation

The full ask-rb documentation lives at https://ask-rb.github.io/ask-docs. https://ask-rb.github.io/ask-docs/core/providers covers ask-llm-providers in depth, including capabilities, streaming, tool calls, and error handling. API reference: https://ask-rb.github.io/ask-docs/reference/api.

Development

bundle install bundle exec rake test

License

MIT