Module: Legate::LLM
- Defined in:
- lib/legate/llm/adapter.rb,
lib/legate/llm.rb,
lib/legate/llm/gemini.rb,
lib/legate/llm/ollama.rb
Overview
LLM provider abstraction. The planner (and code generators) talk to an Adapter rather than a specific provider client, so Legate is not hardwired to one model vendor. Gemini is the first adapter; others (OpenAI, Anthropic, Ollama, …) implement the same interface.
Defined Under Namespace
Classes: Adapter, Gemini, Ollama
Class Attribute Summary collapse
-
.default_adapter_factory ⇒ #call?
A factory for the default LLM adapter, called as ‘factory.call(model:, api_key:, logger:)` and expected to return a Legate::LLM::Adapter.
Class Method Summary collapse
-
.build_adapter(model:, api_key: nil, logger: nil) ⇒ Legate::LLM::Adapter
Builds an adapter using the configured factory, or the default Gemini adapter.
Class Attribute Details
.default_adapter_factory ⇒ #call?
A factory for the default LLM adapter, called as ‘factory.call(model:, api_key:, logger:)` and expected to return a Legate::LLM::Adapter. Set this to use a provider other than Gemini for every agent, e.g.:
Legate::LLM.default_adapter_factory = ->(model:, api_key:, logger:) {
MyProvider::Adapter.new(model: model, logger: logger)
}
Nil means use the built-in Gemini adapter.
20 21 22 |
# File 'lib/legate/llm.rb', line 20 def default_adapter_factory @default_adapter_factory end |
Class Method Details
.build_adapter(model:, api_key: nil, logger: nil) ⇒ Legate::LLM::Adapter
Builds an adapter using the configured factory, or the default Gemini adapter. Per-planner overrides take precedence over this.
26 27 28 29 30 31 32 |
# File 'lib/legate/llm.rb', line 26 def self.build_adapter(model:, api_key: nil, logger: nil) if default_adapter_factory default_adapter_factory.call(model: model, api_key: api_key, logger: logger) else Gemini.new(model: model, api_key: api_key, logger: logger) end end |