pub mod llamacpp;
pub mod openai_compat;
pub mod vllm;
use serde_json::Value;
use openai_compat::OpenAiCompatOptions;
pub const BACKEND_TYPES: &[&str] = &["openai_compat", "vllm", "llamacpp"];
pub async fn invoke_backend(
backend_type: &str,
opts: &OpenAiCompatOptions,
intent: &str,
payload: &Value,
) -> Result<Value, String> {
match backend_type {
"openai_compat" => Ok(openai_compat::invoke(opts, intent, payload).await),
"vllm" => Ok(vllm::invoke(opts, intent, payload).await),
"llamacpp" => Ok(llamacpp::invoke(opts, intent, payload).await),
other => Err(format!(
"unknown backend_type {other:?}; choose one of {BACKEND_TYPES:?}"
)),
}
}