feat: strong typing for complete endpoints
This commit is contained in:
@@ -1,5 +1,8 @@
|
||||
use crate::dto::{api, ollama};
|
||||
|
||||
use chrono::Utc;
|
||||
use uuid::Uuid;
|
||||
|
||||
impl From<ollama::OllamaModel> for api::ModelInfo {
|
||||
fn from(m: ollama::OllamaModel) -> Self {
|
||||
Self {
|
||||
@@ -14,3 +17,40 @@ impl From<ollama::OllamaModel> for api::ModelInfo {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<&api::CompletionRequest> for ollama::OllamaOptions {
|
||||
fn from(req: &api::CompletionRequest) -> Self {
|
||||
Self {
|
||||
temperature: req.base.temperature,
|
||||
top_p: req.base.top_p,
|
||||
top_k: req.base.top_k,
|
||||
repeat_penalty: req.base.repeat_penalty,
|
||||
seed: req.base.seed,
|
||||
num_ctx: req.base.num_ctx,
|
||||
num_predict: req.base.num_predict,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<ollama::OllamaGenerateResponse> for api::CompletionResponse {
|
||||
fn from(res: ollama::OllamaGenerateResponse) -> Self {
|
||||
Self {
|
||||
id: Uuid::new_v4().to_string(),
|
||||
object: api::CompletionObject::TextCompletion,
|
||||
model: res.model,
|
||||
created: Utc::now().timestamp() as u64,
|
||||
|
||||
choices: vec![api::Choice {
|
||||
text: res.response,
|
||||
index: 0,
|
||||
finish_reason: api::FinishReason::Stop,
|
||||
}],
|
||||
|
||||
usage: api::Usage {
|
||||
prompt_tokens: res.prompt_eval_count.unwrap_or(0),
|
||||
completion_tokens: res.eval_count.unwrap_or(0),
|
||||
total_tokens: res.prompt_eval_count.unwrap_or(0) + res.eval_count.unwrap_or(0),
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user