prompt_store/api/llm_bridge.rs
1//! Bridge types for interoperability with the `llm` crate.
2
3use llm::chain::LLMRegistry;
4use llm::LLMProvider;
5
6/// Represents a backend for running prompts or chains.
7///
8/// This enum allows the fluent API to accept either a single LLM provider
9/// or a registry of multiple providers, which is essential for multi-provider chains.
10pub enum LLMBackendRef<'a> {
11 /// A single LLM provider backend.
12 Provider(&'a dyn LLMProvider),
13 /// A registry of multiple LLM providers, identified by string keys.
14 Registry(&'a LLMRegistry),
15}
16
17impl<'a> From<&'a dyn LLMProvider> for LLMBackendRef<'a> {
18 fn from(llm: &'a dyn LLMProvider) -> Self {
19 LLMBackendRef::Provider(llm)
20 }
21}
22
23impl<'a> From<&'a LLMRegistry> for LLMBackendRef<'a> {
24 fn from(reg: &'a LLMRegistry) -> Self {
25 LLMBackendRef::Registry(reg)
26 }
27}