Provider registry and model resolver for LLM chat models.
Mirrors LangChain's pattern of separate provider packages with a unified
init_chat_model/2 interface. Providers can be registered at compile time
(built-in) or at runtime via register_provider/2.
Usage
# Resolve by model string (auto-detects provider):
{LangEx.LLM.OpenAI, opts} = LangEx.LLM.Registry.init_chat_model("gpt-4o")
# Resolve by provider atom:
{LangEx.LLM.Anthropic, opts} = LangEx.LLM.Registry.init_chat_model(:anthropic, model: "claude-sonnet-4-20250514")
# Use in a graph node:
Graph.add_node(:llm, LangEx.LLM.ChatModel.node(model: "gpt-4o"))
Summary
Functions
Resolves a provider module and options from a model string or provider atom.
Lists all registered providers (built-in + runtime).
Registers a model prefix pattern for provider inference.
Registers a custom provider at runtime.
Functions
Resolves a provider module and options from a model string or provider atom.
Returns {module, opts} where module implements LangEx.LLM.
Examples
{LangEx.LLM.OpenAI, [model: "gpt-4o"]} = init_chat_model("gpt-4o")
{LangEx.LLM.Anthropic, []} = init_chat_model(:anthropic)
{LangEx.LLM.OpenAI, [model: "gpt-4o", temperature: 0.5]} = init_chat_model("gpt-4o", temperature: 0.5)
Lists all registered providers (built-in + runtime).
Registers a model prefix pattern for provider inference.
Example
LangEx.LLM.Registry.register_prefix("llama-", :groq)
Registers a custom provider at runtime.
Registered providers are stored in :persistent_term and survive
across function calls but not across node restarts.
Example
LangEx.LLM.Registry.register_provider(:groq, MyApp.LLM.Groq)