Rag.Router.Specialist (rag v0.3.4)

View Source

Specialist 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

t()

@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())
}