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}