Skip to content

Commit 92d5451

Browse files
committed
Add Mistral AI provider support
Implements Mistral AI as an OpenAI-compatible provider with minimal customizations: - Extends OpenAI provider for core functionality - Custom Chat module to handle system role mapping (uses 'system' instead of 'developer') - Custom render_payload to remove unsupported stream_options parameter - Custom Embeddings module that ignores dimensions parameter (not supported by Mistral) - Implements capabilities detection for vision (pixtral), embeddings, and chat models - Adds ministral-3b-latest for chat tests (cheapest option) - Adds pixtral-12b-latest for vision tests - Adds mistral-embed for embedding tests - Fetches and includes 63 Mistral models in models.json - Adds appropriate test skips for known model limitations
1 parent a72bcae commit 92d5451

File tree

28 files changed

+3935
-151
lines changed

28 files changed

+3935
-151
lines changed

docs/available-models.md

Lines changed: 209 additions & 134 deletions
Large diffs are not rendered by default.

lib/ruby_llm.rb

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
'bedrock' => 'Bedrock',
2121
'openrouter' => 'OpenRouter',
2222
'gpustack' => 'GPUStack',
23+
'mistral' => 'Mistral',
2324
'pdf' => 'PDF'
2425
)
2526
loader.ignore("#{__dir__}/tasks")
@@ -79,15 +80,16 @@ def logger
7980
end
8081
end
8182

82-
RubyLLM::Provider.register :openai, RubyLLM::Providers::OpenAI
8383
RubyLLM::Provider.register :anthropic, RubyLLM::Providers::Anthropic
84-
RubyLLM::Provider.register :gemini, RubyLLM::Providers::Gemini
85-
RubyLLM::Provider.register :deepseek, RubyLLM::Providers::DeepSeek
86-
RubyLLM::Provider.register :perplexity, RubyLLM::Providers::Perplexity
8784
RubyLLM::Provider.register :bedrock, RubyLLM::Providers::Bedrock
88-
RubyLLM::Provider.register :openrouter, RubyLLM::Providers::OpenRouter
89-
RubyLLM::Provider.register :ollama, RubyLLM::Providers::Ollama
85+
RubyLLM::Provider.register :deepseek, RubyLLM::Providers::DeepSeek
86+
RubyLLM::Provider.register :gemini, RubyLLM::Providers::Gemini
9087
RubyLLM::Provider.register :gpustack, RubyLLM::Providers::GPUStack
88+
RubyLLM::Provider.register :mistral, RubyLLM::Providers::Mistral
89+
RubyLLM::Provider.register :ollama, RubyLLM::Providers::Ollama
90+
RubyLLM::Provider.register :openai, RubyLLM::Providers::OpenAI
91+
RubyLLM::Provider.register :openrouter, RubyLLM::Providers::OpenRouter
92+
RubyLLM::Provider.register :perplexity, RubyLLM::Providers::Perplexity
9193

9294
if defined?(Rails::Railtie)
9395
require 'ruby_llm/railtie'

lib/ruby_llm/configuration.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ class Configuration
2727
:ollama_api_base,
2828
:gpustack_api_base,
2929
:gpustack_api_key,
30+
:mistral_api_key,
3031
# Default models
3132
:default_model,
3233
:default_embedding_model,

0 commit comments

Comments
 (0)