feat: rename client localai to openai-compatible (#373)

BREAKING CHANGE: rename client localai to openai-compatible
pull/374/head
sigoden 2 months ago committed by GitHub
parent bbd0c28726
commit eec041c111
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -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)

@ -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
api_key: sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

@ -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,

@ -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 {
Loading…
Cancel
Save