28 lines
868 B
Rust
28 lines
868 B
Rust
|
|
use crate::http::context::{AppContext, OpenApiResult, bad_request};
|
||
|
|
use crate::http::payloads::ModelPayload;
|
||
|
|
use crate::io::fs;
|
||
|
|
use crate::llm::chat;
|
||
|
|
use poem_openapi::{param::Query, payload::Json};
|
||
|
|
|
||
|
|
pub async fn get_model_preference(ctx: &AppContext) -> OpenApiResult<Json<Option<String>>> {
|
||
|
|
let result = fs::get_model_preference(ctx.store.as_ref()).map_err(bad_request)?;
|
||
|
|
Ok(Json(result))
|
||
|
|
}
|
||
|
|
|
||
|
|
pub async fn set_model_preference(
|
||
|
|
payload: Json<ModelPayload>,
|
||
|
|
ctx: &AppContext,
|
||
|
|
) -> OpenApiResult<Json<bool>> {
|
||
|
|
fs::set_model_preference(payload.0.model, ctx.store.as_ref()).map_err(bad_request)?;
|
||
|
|
Ok(Json(true))
|
||
|
|
}
|
||
|
|
|
||
|
|
pub async fn get_ollama_models(
|
||
|
|
base_url: Query<Option<String>>,
|
||
|
|
) -> OpenApiResult<Json<Vec<String>>> {
|
||
|
|
let models = chat::get_ollama_models(base_url.0)
|
||
|
|
.await
|
||
|
|
.map_err(bad_request)?;
|
||
|
|
Ok(Json(models))
|
||
|
|
}
|