-
Notifications
You must be signed in to change notification settings - Fork 30
/
Copy pathmod.rs
38 lines (30 loc) · 934 Bytes
/
mod.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
pub mod claude;
pub mod gemini;
pub mod langchain;
pub mod ollama;
pub mod openai;
use anyhow::bail;
use anyhow::Result;
use crate::domain::models::BackendBox;
use crate::domain::models::BackendName;
pub struct BackendManager {}
impl BackendManager {
pub fn get(name: BackendName) -> Result<BackendBox> {
if name == BackendName::LangChain {
return Ok(Box::<langchain::LangChain>::default());
}
if name == BackendName::Ollama {
return Ok(Box::<ollama::Ollama>::default());
}
if name == BackendName::OpenAI {
return Ok(Box::<openai::OpenAI>::default());
}
if name == BackendName::Claude {
return Ok(Box::<claude::Claude>::default());
}
if name == BackendName::Gemini {
return Ok(Box::<gemini::Gemini>::default());
}
bail!(format!("No backend implemented for {name}"))
}
}