diff options
| author | sigoden <sigoden@gmail.com> | 2024-04-29 11:57:02 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-04-29 11:57:02 +0800 |
| commit | 602494b650a59b73b4548b9282375c99b471e11b (patch) | |
| tree | fc7e72ce28b70d6394c7cd1d6ebaba7db140fb60 /src/client/model.rs | |
| parent | 8433b1fcd73dda937582d5a99127f851562c2dae (diff) | |
| download | aichat-602494b650a59b73b4548b9282375c99b471e11b.tar.gz | |
refactor: merge config models, update client models (#460)
Diffstat (limited to 'src/client/model.rs')
| -rw-r--r-- | src/client/model.rs | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/client/model.rs b/src/client/model.rs index 459d94e..f3fe97c 100644 --- a/src/client/model.rs +++ b/src/client/model.rs @@ -3,6 +3,7 @@ use super::message::{Message, MessageContent}; use crate::utils::count_tokens; use anyhow::{bail, Result}; +use indexmap::IndexMap; use serde::Deserialize; const PER_MESSAGES_TOKENS: usize = 5; @@ -36,9 +37,17 @@ impl Model { } } - pub fn from_config(client_name: &str, models: &[ModelConfig]) -> Vec<Self> { + pub fn from_config( + client_name: &str, + config_models: &[ModelConfig], + client_models: &[ModelConfig], + ) -> Vec<Self> { + let mut models = IndexMap::new(); + for model in client_models.iter().chain(config_models.iter()) { + models.insert(&model.name, model); + } models - .iter() + .values() .map(|v| { Model::new(client_name, &v.name) .set_max_input_tokens(v.max_input_tokens) |
