summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsigoden <sigoden@gmail.com>2024-04-29 05:22:23 +0000
committersigoden <sigoden@gmail.com>2024-04-29 05:24:10 +0000
commit3a00fb283e4f503901ce198ead65aebc46ae1875 (patch)
tree0440cdf2376d86bc91a9ff88269658f3b7bec92e
parent602494b650a59b73b4548b9282375c99b471e11b (diff)
downloadaichat-3a00fb283e4f503901ce198ead65aebc46ae1875.tar.gz
refactor: user config models replace client builtin models
-rw-r--r--config.example.yaml3
-rw-r--r--src/client/common.rs16
-rw-r--r--src/client/model.rs13
3 files changed, 14 insertions, 18 deletions
diff --git a/config.example.yaml b/config.example.yaml
index f2a8de5..3512755 100644
--- a/config.example.yaml
+++ b/config.example.yaml
@@ -129,8 +129,9 @@ clients:
# - anyscale: https://docs.anyscale.com/endpoints/model-serving/openai-migration-guide
# - deepinfra: https://deepinfra.com/docs/advanced/openai_api
# - fireworks: https://readme.fireworks.ai/docs/openai-compatibility
- # - together: https://docs.together.ai/docs/openai-api-compatibility
+ # - together.ai: https://docs.together.ai/docs/openai-api-compatibility
# - huggingface: https://huggingface.co/docs/text-generation-inference/messages_api
+ # - OctoAI: https://octo.ai/docs/text-gen-solution/migration-from-openai
- type: openai-compatible
name: localai
api_base: http://localhost:8080/v1
diff --git a/src/client/common.rs b/src/client/common.rs
index aa243a7..842741c 100644
--- a/src/client/common.rs
+++ b/src/client/common.rs
@@ -89,15 +89,19 @@ macro_rules! register_client {
pub fn list_models(local_config: &$config) -> Vec<Model> {
let client_name = Self::name(local_config);
- for model in $crate::client::CLIENT_MODELS.iter() {
- match model {
- $crate::client::ClientModel::$config { models } => {
- return Model::from_config(client_name, &local_config.models, models);
+ if local_config.models.is_empty() {
+ for model in $crate::client::CLIENT_MODELS.iter() {
+ match model {
+ $crate::client::ClientModel::$config { models } => {
+ return Model::from_config(client_name, models);
+ }
+ _ => {}
}
- _ => {}
}
+ vec![]
+ } else {
+ Model::from_config(client_name, &local_config.models)
}
- vec![]
}
pub fn name(config: &$config) -> &str {
diff --git a/src/client/model.rs b/src/client/model.rs
index f3fe97c..459d94e 100644
--- a/src/client/model.rs
+++ b/src/client/model.rs
@@ -3,7 +3,6 @@ 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;
@@ -37,17 +36,9 @@ impl Model {
}
}
- 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);
- }
+ pub fn from_config(client_name: &str, models: &[ModelConfig]) -> Vec<Self> {
models
- .values()
+ .iter()
.map(|v| {
Model::new(client_name, &v.name)
.set_max_input_tokens(v.max_input_tokens)