1pub mod mock;
8pub mod ollama;
9
10pub use mock::MockBackend;
11pub use ollama::OllamaBackend;
12
13use deck_core::LlmBackend;
14
15pub fn from_config(cfg: &deck_core::config::LlmConfig) -> deck_core::Result<Box<dyn LlmBackend>> {
19 match cfg.backend.as_str() {
20 "ollama" => {
21 let b = OllamaBackend::new(
22 cfg.endpoint.clone(),
23 std::time::Duration::from_secs(cfg.timeout_secs),
24 )?;
25 Ok(Box::new(b))
26 }
27 "mock" => Ok(Box::new(MockBackend::default())),
28 other => Err(deck_core::DeckError::Llm(format!(
29 "unknown backend: {other}"
30 ))),
31 }
32}