Rag.Router.Specialist (rag v0.3.4)
View SourceSpecialist routing strategy.
Routes requests to the best provider for each task type. Uses task mappings to determine which provider handles what, with optional inference from prompt content.
Configuration
Specialist.init(
providers: [:gemini, :codex, :claude],
task_mappings: %{
embeddings: :gemini,
code_generation: :codex,
analysis: :claude
},
fallback_provider: :gemini,
max_failures: 3
)Default Task Mappings
:embeddings→:gemini(only provider with embedding support):code_generation→:codex(optimized for code):code_review→:codex:structured_output→:codex:analysis→:claude(best for deep analysis):writing→:claude:agentic→:claude:reasoning→:claude:long_context→:gemini(1M token context):multimodal→:gemini
Task Inference
If no explicit task is provided, the strategy can infer the task from the prompt content using keyword detection:
- Code keywords: "write", "implement", "create function", "code"
- Analysis keywords: "analyze", "explain", "review", "compare"
Summary
Types
@type t() :: %Rag.Router.Specialist{ failures: %{required(atom()) => non_neg_integer()}, fallback_provider: atom(), max_failures: pos_integer(), providers: [atom()], task_mappings: %{required(atom()) => atom()}, unavailable: MapSet.t(atom()) }