summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsigoden <sigoden@gmail.com>2024-03-25 10:52:05 +0800
committerGitHub <noreply@github.com>2024-03-25 10:52:05 +0800
commiteec041c111c0ee170dab65942184e66c41479fcd (patch)
tree0e048d834fd2ae66ecd9f9c47aa7e9d21250e63e
parentbbd0c287261f8876d8c66a4e8015f5a0d8ce6548 (diff)
downloadaichat-eec041c111c0ee170dab65942184e66c41479fcd.tar.gz
feat: rename client localai to openai-compatible (#373)
BREAKING CHANGE: rename client localai to openai-compatible
-rw-r--r--README.md4
-rw-r--r--config.example.yaml10
-rw-r--r--src/client/mod.rs7
-rw-r--r--src/client/openai_compatible.rs (renamed from src/client/localai.rs)12
4 files changed, 19 insertions, 14 deletions
diff --git a/README.md b/README.md
index 3a44cc7..c4a521c 100644
--- a/README.md
+++ b/README.md
@@ -3,7 +3,7 @@
[![CI](https://github.com/sigoden/aichat/actions/workflows/ci.yaml/badge.svg)](https://github.com/sigoden/aichat/actions/workflows/ci.yaml)
[![Crates](https://img.shields.io/crates/v/aichat.svg)](https://crates.io/crates/aichat)
-All-in-one CLI tool for 10+ AI platforms, including OpenAI, Gemini, Claude, Mistral, LocalAI, Ollama, VertexAI, Ernie, Qianwen...
+All-in-one CLI tool for 10+ AI platforms, including OpenAI, Gemini, Claude, Mistral, Ollama, VertexAI, Ernie, Qianwen, Moonshot...
Command Mode:
@@ -47,7 +47,7 @@ Download it from [GitHub Releases](https://github.com/sigoden/aichat/releases),
- Gemini (free, vision)
- Claude: Claude2/Claude3 (paid)
- Mistral (paid)
- - LocalAI (free, local, vision)
+ - OpenAI-Compatible (local)
- Ollama (free, local)
- Azure-OpenAI (paid)
- VertexAI: Gemini-1/Gemini-1.5 (paid, vision)
diff --git a/config.example.yaml b/config.example.yaml
index 8f8e22a..b7ce1d9 100644
--- a/config.example.yaml
+++ b/config.example.yaml
@@ -40,15 +40,15 @@ clients:
# See https://docs.anthropic.com/claude/reference/getting-started-with-the-api
- type: claude
- api_key: sk-xxx
+ api_key: sk-ant-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
- type: mistral
api_key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
- # Any openai-compatible API providers or https://github.com/go-skynet/LocalAI
- - type: localai
+ # Any openai-compatible API providers
+ - type: openai-compatible # Renamed from localai
api_base: http://localhost:8080/v1
- api_key: xxx
+ api_key: sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
chat_endpoint: /chat/completions # Optional field
models:
- name: llama2
@@ -95,4 +95,4 @@ clients:
# See https://platform.moonshot.cn/docs/intro
- type: moonshot
- api_key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx \ No newline at end of file
+ api_key: sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx \ No newline at end of file
diff --git a/src/client/mod.rs b/src/client/mod.rs
index 7c7cfba..37775f3 100644
--- a/src/client/mod.rs
+++ b/src/client/mod.rs
@@ -12,7 +12,12 @@ register_client!(
(gemini, "gemini", GeminiConfig, GeminiClient),
(claude, "claude", ClaudeConfig, ClaudeClient),
(mistral, "mistral", MistralConfig, MistralClient),
- (localai, "localai", LocalAIConfig, LocalAIClient),
+ (
+ openai_compatible,
+ "openai-compatible",
+ OpenAICompatibleConfig,
+ OpenAICompatibleClient
+ ),
(ollama, "ollama", OllamaConfig, OllamaClient),
(
azure_openai,
diff --git a/src/client/localai.rs b/src/client/openai_compatible.rs
index 0e9db0e..ec3333c 100644
--- a/src/client/localai.rs
+++ b/src/client/openai_compatible.rs
@@ -1,5 +1,5 @@
use super::openai::{openai_build_body, OPENAI_TOKENS_COUNT_FACTORS};
-use super::{ExtraConfig, LocalAIClient, Model, ModelConfig, PromptType, SendData};
+use super::{ExtraConfig, Model, ModelConfig, OpenAICompatibleClient, PromptType, SendData};
use crate::utils::PromptKind;
@@ -9,7 +9,7 @@ use reqwest::{Client as ReqwestClient, RequestBuilder};
use serde::Deserialize;
#[derive(Debug, Clone, Deserialize)]
-pub struct LocalAIConfig {
+pub struct OpenAICompatibleConfig {
pub name: Option<String>,
pub api_base: String,
pub api_key: Option<String>,
@@ -18,9 +18,9 @@ pub struct LocalAIConfig {
pub extra: Option<ExtraConfig>,
}
-openai_compatible_client!(LocalAIClient);
+openai_compatible_client!(OpenAICompatibleClient);
-impl LocalAIClient {
+impl OpenAICompatibleClient {
config_get_fn!(api_key, get_api_key);
pub const PROMPTS: [PromptType<'static>; 4] = [
@@ -35,7 +35,7 @@ impl LocalAIClient {
),
];
- pub fn list_models(local_config: &LocalAIConfig) -> Vec<Model> {
+ pub fn list_models(local_config: &OpenAICompatibleConfig) -> Vec<Model> {
let client_name = Self::name(local_config);
local_config
@@ -65,7 +65,7 @@ impl LocalAIClient {
let url = format!("{}{chat_endpoint}", self.config.api_base);
- debug!("LocalAI Request: {url} {body}");
+ debug!("OpenAICompatible Request: {url} {body}");
let mut builder = client.post(url).json(&body);
if let Some(api_key) = api_key {