diff options
| author | sigoden <sigoden@gmail.com> | 2025-02-17 07:45:01 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-02-17 07:45:01 +0800 |
| commit | f14f1ad01bf31bb4bb4322661691be9392c30acf (patch) | |
| tree | d704d1e5e74e083205b50523859118e951e2ecdc | |
| parent | 5efdb3c666c5f5125260bd9f116f7cc2e7ba06b1 (diff) | |
| download | aichat-f14f1ad01bf31bb4bb4322661691be9392c30acf.tar.gz | |
refactor: several improvements (#1180)
| -rwxr-xr-x | Argcfile.sh | 17 | ||||
| -rw-r--r-- | src/client/common.rs | 4 | ||||
| -rw-r--r-- | src/utils/request.rs | 5 |
3 files changed, 21 insertions, 5 deletions
diff --git a/Argcfile.sh b/Argcfile.sh index 47ec38b..ea0b9c1 100755 --- a/Argcfile.sh +++ b/Argcfile.sh @@ -247,6 +247,21 @@ chat-claude() { -d "$(_build_body claude "$@")" } +# @cmd List claude models +# @env CLAUDE_API_KEY! +# @flag --name-only Print model name only +models-claude() { + jq_args=() + if [[ -n "$argc_name_only" ]]; then + jq_args+=(-r '.data[].id') + fi + _wrapper curl -fsSL "https://api.anthropic.com/v1/models" \ +-H 'Content-Type: application/json' \ +-H 'anthropic-version: 2023-06-01' \ +-H "x-api-key: $CLAUDE_API_KEY" \ + | jq "${jq_args[@]}" +} + # @cmd Chat with cohere api # @env COHERE_API_KEY! # @option -m --model=command-r-08-2024 $COHERE_MODEL @@ -436,7 +451,7 @@ _build_body() { _wrapper() { if [[ "$DRY_RUN" == "true" ]] || [[ "$DRY_RUN" == "1" ]]; then - echo "$@" + echo "$@" >&2 else "$@" fi diff --git a/src/client/common.rs b/src/client/common.rs index efa86f6..89523c7 100644 --- a/src/client/common.rs +++ b/src/client/common.rs @@ -25,7 +25,7 @@ lazy_static::lazy_static! { pub static ref ALL_PROVIDER_MODELS: Vec<ProviderModels> = { Config::loal_models_override().ok().unwrap_or_else(|| serde_yaml::from_str(MODELS_YAML).unwrap()) }; - static ref EMBEDDING_MODEL_RE: Regex = Regex::new(r"(^(bge-|e5-|uae-|gte-|text-)|embed|multilingual|minilm)").unwrap(); + static ref EMBEDDING_MODEL_RE: Regex = Regex::new(r"((^|/)(bge-|e5-|uae-|gte-|text-)|embed|multilingual|minilm)").unwrap(); static ref ESCAPE_SLASH_RE: Regex = Regex::new(r"(?<!\\)/").unwrap(); } @@ -580,7 +580,7 @@ async fn set_client_models_config(client_config: &mut Value, client: &str) -> Re .prompt()?; } Err(err) => { - eprintln!("✗ Unable to fetch models: {err}"); + eprintln!("✗ Fetch models failed: {err}"); } } } diff --git a/src/utils/request.rs b/src/utils/request.rs index 54db9d4..4516806 100644 --- a/src/utils/request.rs +++ b/src/utils/request.rs @@ -168,7 +168,7 @@ pub async fn fetch_models(api_base: &str, api_key: Option<&str>) -> Result<Vec<S builder = builder.bearer_auth(api_key); } let res_body: Value = builder.send().await?.json().await?; - let result: Vec<String> = res_body + let mut result: Vec<String> = res_body .get("data") .and_then(|v| v.as_array()) .map(|v| { @@ -178,8 +178,9 @@ pub async fn fetch_models(api_base: &str, api_key: Option<&str>) -> Result<Vec<S }) .unwrap_or_default(); if result.is_empty() { - bail!("No models") + bail!("No valid models") } + result.sort_unstable(); Ok(result) } |
