summaryrefslogtreecommitdiffstats
path: root/src/client/model.rs
diff options
context:
space:
mode:
authorsigoden <sigoden@gmail.com>2024-04-23 18:14:47 +0800
committerGitHub <noreply@github.com>2024-04-23 18:14:47 +0800
commit9c6c9f10a27d0993636b453f39d8934c95c5c2b2 (patch)
tree268598294b234c7eac87fc70d1e2d1b32ac88a78 /src/client/model.rs
parentd1aafa11153ab689c21c2c57c47da52337d8e8d1 (diff)
downloadaichat-9c6c9f10a27d0993636b453f39d8934c95c5c2b2.tar.gz
feat: builtin models can be overwrited by models config (#429)
Diffstat (limited to 'src/client/model.rs')
-rw-r--r--src/client/model.rs37
1 files changed, 24 insertions, 13 deletions
diff --git a/src/client/model.rs b/src/client/model.rs
index 53d1834..b97c244 100644
--- a/src/client/model.rs
+++ b/src/client/model.rs
@@ -36,6 +36,30 @@ impl Model {
}
}
+ pub fn from_config(client_name: &str, models: &[ModelConfig]) -> Vec<Self> {
+ models
+ .iter()
+ .map(|v| {
+ Model::new(client_name, &v.name)
+ .set_capabilities(v.capabilities)
+ .set_max_input_tokens(v.max_input_tokens)
+ .set_max_output_tokens(v.max_output_tokens)
+ .set_extra_fields(v.extra_fields.clone())
+ })
+ .collect()
+ }
+
+ pub fn from_static(client_name: &str, models: &[(&str, usize, &str)]) -> Vec<Self> {
+ models
+ .iter()
+ .map(|(name, max_input_tokens, capabilities)| {
+ Model::new(client_name, name)
+ .set_capabilities((*capabilities).into())
+ .set_max_input_tokens(Some(*max_input_tokens))
+ })
+ .collect()
+ }
+
pub fn find(models: &[Self], value: &str) -> Option<Self> {
let mut model = None;
let (client_name, model_name) = match value.split_once(':') {
@@ -156,19 +180,6 @@ impl Model {
}
}
-pub fn convert_models(client_name: &str, models: &[ModelConfig]) -> Vec<Model> {
- models
- .iter()
- .map(|v| {
- Model::new(client_name, &v.name)
- .set_capabilities(v.capabilities)
- .set_max_input_tokens(v.max_input_tokens)
- .set_max_output_tokens(v.max_output_tokens)
- .set_extra_fields(v.extra_fields.clone())
- })
- .collect()
-}
-
#[derive(Debug, Clone, Deserialize)]
pub struct ModelConfig {
pub name: String,