diff --git a/README.fr.md b/README.fr.md index ab8faf468..61d18792b 100644 --- a/README.fr.md +++ b/README.fr.md @@ -794,6 +794,163 @@ picoclaw agent -m "Bonjour, comment ça va ?" +### Configuration de Modèle (model_list) + +> **Nouveau !** PicoClaw utilise désormais une approche de configuration **centrée sur le modèle**. Spécifiez simplement le format `fournisseur/modèle` (par exemple, `zhipu/glm-4.7`) pour ajouter de nouveaux fournisseurs—**aucune modification de code requise !** + +Cette conception permet également le **support multi-agent** avec une sélection flexible de fournisseurs : + +- **Différents agents, différents fournisseurs** : Chaque agent peut utiliser son propre fournisseur LLM +- **Modèles de secours (Fallbacks)** : Configurez des modèles primaires et de secours pour la résilience +- **Équilibrage de charge** : Répartissez les requêtes sur plusieurs points de terminaison +- **Configuration centralisée** : Gérez tous les fournisseurs en un seul endroit + +#### 📋 Tous les Fournisseurs Supportés + +| Fournisseur | Préfixe `model` | API Base par Défaut | Protocole | Clé API | +|-------------|-----------------|---------------------|----------|---------| +| **OpenAI** | `openai/` | `https://api.openai.com/v1` | OpenAI | [Obtenir Clé](https://platform.openai.com) | +| **Anthropic** | `anthropic/` | `https://api.anthropic.com/v1` | Anthropic | [Obtenir Clé](https://console.anthropic.com) | +| **Zhipu AI (GLM)** | `zhipu/` | `https://open.bigmodel.cn/api/paas/v4` | OpenAI | [Obtenir Clé](https://open.bigmodel.cn/usercenter/proj-mgmt/apikeys) | +| **DeepSeek** | `deepseek/` | `https://api.deepseek.com/v1` | OpenAI | [Obtenir Clé](https://platform.deepseek.com) | +| **Google Gemini** | `gemini/` | `https://generativelanguage.googleapis.com/v1beta` | OpenAI | [Obtenir Clé](https://aistudio.google.com/api-keys) | +| **Groq** | `groq/` | `https://api.groq.com/openai/v1` | OpenAI | [Obtenir Clé](https://console.groq.com) | +| **Moonshot** | `moonshot/` | `https://api.moonshot.cn/v1` | OpenAI | [Obtenir Clé](https://platform.moonshot.cn) | +| **Qwen (Alibaba)** | `qwen/` | `https://dashscope.aliyuncs.com/compatible-mode/v1` | OpenAI | [Obtenir Clé](https://dashscope.console.aliyun.com) | +| **NVIDIA** | `nvidia/` | `https://integrate.api.nvidia.com/v1` | OpenAI | [Obtenir Clé](https://build.nvidia.com) | +| **Ollama** | `ollama/` | `http://localhost:11434/v1` | OpenAI | Local (pas de clé nécessaire) | +| **OpenRouter** | `openrouter/` | `https://openrouter.ai/api/v1` | OpenAI | [Obtenir Clé](https://openrouter.ai/keys) | +| **VLLM** | `vllm/` | `http://localhost:8000/v1` | OpenAI | Local | +| **Cerebras** | `cerebras/` | `https://api.cerebras.ai/v1` | OpenAI | [Obtenir Clé](https://cerebras.ai) | +| **Volcengine** | `volcengine/` | `https://ark.cn-beijing.volces.com/api/v3` | OpenAI | [Obtenir Clé](https://console.volcengine.com) | +| **ShengsuanYun** | `shengsuanyun/` | `https://router.shengsuanyun.com/api/v1` | OpenAI | - | +| **Antigravity** | `antigravity/` | Google Cloud | Custom | OAuth uniquement | +| **GitHub Copilot** | `github-copilot/` | `localhost:4321` | gRPC | - | + +#### Configuration de Base + +```json +{ + "model_list": [ + { + "model_name": "gpt-4o", + "model": "openai/gpt-4o", + "api_key": "sk-your-openai-key" + }, + { + "model_name": "claude-3-sonnet", + "model": "anthropic/claude-3-5-sonnet-20241022", + "api_key": "sk-ant-your-key" + }, + { + "model_name": "glm-4.7", + "model": "zhipu/glm-4.7", + "api_key": "your-zhipu-key" + } + ], + "agents": { + "defaults": { + "model": "gpt-4o" + } + } +} +``` + +#### Exemples par Fournisseur + +**OpenAI** +```json +{ + "model_name": "gpt-4o", + "model": "openai/gpt-4o", + "api_key": "sk-..." +} +``` + +**Zhipu AI (GLM)** +```json +{ + "model_name": "glm-4.7", + "model": "zhipu/glm-4.7", + "api_key": "your-key" +} +``` + +**Anthropic (avec OAuth)** +```json +{ + "model_name": "claude-sonnet-4", + "model": "anthropic/claude-sonnet-4-20250514", + "auth_method": "oauth" +} +``` +> Exécutez `picoclaw auth login --provider anthropic` pour configurer les identifiants OAuth. + +#### Équilibrage de Charge + +Configurez plusieurs points de terminaison pour le même nom de modèle—PicoClaw utilisera automatiquement le round-robin entre eux : + +```json +{ + "model_list": [ + { + "model_name": "gpt-4o", + "model": "openai/gpt-4o", + "api_base": "https://api1.example.com/v1", + "api_key": "sk-key1" + }, + { + "model_name": "gpt-4o", + "model": "openai/gpt-4o", + "api_base": "https://api2.example.com/v1", + "api_key": "sk-key2" + } + ] +} +``` + +#### Migration depuis l'Ancienne Configuration `providers` + +L'ancienne configuration `providers` est **dépréciée** mais toujours supportée pour la rétrocompatibilité. + +**Ancienne Configuration (dépréciée) :** +```json +{ + "providers": { + "zhipu": { + "api_key": "your-key", + "api_base": "https://open.bigmodel.cn/api/paas/v4" + } + }, + "agents": { + "defaults": { + "provider": "zhipu", + "model": "glm-4.7" + } + } +} +``` + +**Nouvelle Configuration (recommandée) :** +```json +{ + "model_list": [ + { + "model_name": "glm-4.7", + "model": "zhipu/glm-4.7", + "api_key": "your-key" + } + ], + "agents": { + "defaults": { + "model": "glm-4.7" + } + } +} +``` + +Pour le guide de migration détaillé, voir [docs/migration/model-list-migration.md](docs/migration/model-list-migration.md). + ## Référence CLI | Commande | Description | diff --git a/README.ja.md b/README.ja.md index 0b687b646..c2a88b90c 100644 --- a/README.ja.md +++ b/README.ja.md @@ -730,6 +730,163 @@ HEARTBEAT_OK 応答 ユーザーが直接結果を受け取る +### モデル設定 (model_list) + +> **新機能!** PicoClaw は現在 **モデル中心** の設定アプローチを採用しています。`ベンダー/モデル` 形式(例: `zhipu/glm-4.7`)を指定するだけで、新しいプロバイダーを追加できます—**コードの変更は一切不要!** + +この設計は、柔軟なプロバイダー選択による **マルチエージェントサポート** も可能にします: + +- **異なるエージェント、異なるプロバイダー** : 各エージェントは独自の LLM プロバイダーを使用可能 +- **フォールバックモデル** : 耐障性のため、プライマリモデルとフォールバックモデルを設定可能 +- **ロードバランシング** : 複数のエンドポイントにリクエストを分散 +- **集中設定管理** : すべてのプロバイダーを一箇所で管理 + +#### 📋 サポートされているすべてのベンダー + +| ベンダー | `model` プレフィックス | デフォルト API Base | プロトコル | API キー | +|-------------|-----------------|---------------------|----------|---------| +| **OpenAI** | `openai/` | `https://api.openai.com/v1` | OpenAI | [キーを取得](https://platform.openai.com) | +| **Anthropic** | `anthropic/` | `https://api.anthropic.com/v1` | Anthropic | [キーを取得](https://console.anthropic.com) | +| **Zhipu AI (GLM)** | `zhipu/` | `https://open.bigmodel.cn/api/paas/v4` | OpenAI | [キーを取得](https://open.bigmodel.cn/usercenter/proj-mgmt/apikeys) | +| **DeepSeek** | `deepseek/` | `https://api.deepseek.com/v1` | OpenAI | [キーを取得](https://platform.deepseek.com) | +| **Google Gemini** | `gemini/` | `https://generativelanguage.googleapis.com/v1beta` | OpenAI | [キーを取得](https://aistudio.google.com/api-keys) | +| **Groq** | `groq/` | `https://api.groq.com/openai/v1` | OpenAI | [キーを取得](https://console.groq.com) | +| **Moonshot** | `moonshot/` | `https://api.moonshot.cn/v1` | OpenAI | [キーを取得](https://platform.moonshot.cn) | +| **Qwen (Alibaba)** | `qwen/` | `https://dashscope.aliyuncs.com/compatible-mode/v1` | OpenAI | [キーを取得](https://dashscope.console.aliyun.com) | +| **NVIDIA** | `nvidia/` | `https://integrate.api.nvidia.com/v1` | OpenAI | [キーを取得](https://build.nvidia.com) | +| **Ollama** | `ollama/` | `http://localhost:11434/v1` | OpenAI | ローカル(キー不要) | +| **OpenRouter** | `openrouter/` | `https://openrouter.ai/api/v1` | OpenAI | [キーを取得](https://openrouter.ai/keys) | +| **VLLM** | `vllm/` | `http://localhost:8000/v1` | OpenAI | ローカル | +| **Cerebras** | `cerebras/` | `https://api.cerebras.ai/v1` | OpenAI | [キーを取得](https://cerebras.ai) | +| **Volcengine** | `volcengine/` | `https://ark.cn-beijing.volces.com/api/v3` | OpenAI | [キーを取得](https://console.volcengine.com) | +| **ShengsuanYun** | `shengsuanyun/` | `https://router.shengsuanyun.com/api/v1` | OpenAI | - | +| **Antigravity** | `antigravity/` | Google Cloud | カスタム | OAuthのみ | +| **GitHub Copilot** | `github-copilot/` | `localhost:4321` | gRPC | - | + +#### 基本設定 + +```json +{ + "model_list": [ + { + "model_name": "gpt-4o", + "model": "openai/gpt-4o", + "api_key": "sk-your-openai-key" + }, + { + "model_name": "claude-3-sonnet", + "model": "anthropic/claude-3-5-sonnet-20241022", + "api_key": "sk-ant-your-key" + }, + { + "model_name": "glm-4.7", + "model": "zhipu/glm-4.7", + "api_key": "your-zhipu-key" + } + ], + "agents": { + "defaults": { + "model": "gpt-4o" + } + } +} +``` + +#### ベンダー別の例 + +**OpenAI** +```json +{ + "model_name": "gpt-4o", + "model": "openai/gpt-4o", + "api_key": "sk-..." +} +``` + +**Zhipu AI (GLM)** +```json +{ + "model_name": "glm-4.7", + "model": "zhipu/glm-4.7", + "api_key": "your-key" +} +``` + +**Anthropic (OAuth使用)** +```json +{ + "model_name": "claude-sonnet-4", + "model": "anthropic/claude-sonnet-4-20250514", + "auth_method": "oauth" +} +``` +> OAuth認証を設定するには、`picoclaw auth login --provider anthropic` を実行してください。 + +#### ロードバランシング + +同じモデル名で複数のエンドポイントを設定すると、PicoClaw が自動的にラウンドロビンで分散します: + +```json +{ + "model_list": [ + { + "model_name": "gpt-4o", + "model": "openai/gpt-4o", + "api_base": "https://api1.example.com/v1", + "api_key": "sk-key1" + }, + { + "model_name": "gpt-4o", + "model": "openai/gpt-4o", + "api_base": "https://api2.example.com/v1", + "api_key": "sk-key2" + } + ] +} +``` + +#### 従来の `providers` 設定からの移行 + +古い `providers` 設定は**非推奨**ですが、後方互換性のためにサポートされています。 + +**旧設定(非推奨):** +```json +{ + "providers": { + "zhipu": { + "api_key": "your-key", + "api_base": "https://open.bigmodel.cn/api/paas/v4" + } + }, + "agents": { + "defaults": { + "provider": "zhipu", + "model": "glm-4.7" + } + } +} +``` + +**新設定(推奨):** +```json +{ + "model_list": [ + { + "model_name": "glm-4.7", + "model": "zhipu/glm-4.7", + "api_key": "your-key" + } + ], + "agents": { + "defaults": { + "model": "glm-4.7" + } + } +} +``` + +詳細な移行ガイドは、[docs/migration/model-list-migration.md](docs/migration/model-list-migration.md) を参照してください。 + ## CLI リファレンス | コマンド | 説明 | diff --git a/README.md b/README.md index 49113c31a..4b4756dd9 100644 --- a/README.md +++ b/README.md @@ -691,60 +691,187 @@ The subagent has access to tools (message, web_search, etc.) and can communicate ### Model Configuration (model_list) -The new `model_list` configuration allows you to add providers with zero code changes. Use protocol prefixes to specify the provider type: +> **What's New?** PicoClaw now uses a **model-centric** configuration approach. Simply specify `vendor/model` format (e.g., `zhipu/glm-4.7`) to add new providers—**zero code changes required!** -| Prefix | Provider | Example | -|--------|----------|---------| -| `openai/` | OpenAI (default) | `openai/gpt-4o` | -| `anthropic/` | Anthropic | `anthropic/claude-3-sonnet` | -| `antigravity/` | Google via OAuth | `antigravity/gemini-2.0-flash` | -| `deepseek/` | DeepSeek | `deepseek/deepseek-chat` | -| `qwen/` | Alibaba Qwen | `qwen/qwen-max` | -| `groq/` | Groq | `groq/llama-3.1-70b` | -| `cerebras/` | Cerebras | `cerebras/llama-3.3-70b` | +This design also enables **multi-agent support** with flexible provider selection: -**Example:** +- **Different agents, different providers**: Each agent can use its own LLM provider +- **Model fallbacks**: Configure primary and fallback models for resilience +- **Load balancing**: Distribute requests across multiple endpoints +- **Centralized configuration**: Manage all providers in one place + +#### 📋 All Supported Vendors + +| Vendor | `model` Prefix | Default API Base | Protocol | API Key | +|--------|----------------|------------------|----------|---------| +| **OpenAI** | `openai/` | `https://api.openai.com/v1` | OpenAI | [Get Key](https://platform.openai.com) | +| **Anthropic** | `anthropic/` | `https://api.anthropic.com/v1` | Anthropic | [Get Key](https://console.anthropic.com) | +| **智谱 AI (GLM)** | `zhipu/` | `https://open.bigmodel.cn/api/paas/v4` | OpenAI | [Get Key](https://open.bigmodel.cn/usercenter/proj-mgmt/apikeys) | +| **DeepSeek** | `deepseek/` | `https://api.deepseek.com/v1` | OpenAI | [Get Key](https://platform.deepseek.com) | +| **Google Gemini** | `gemini/` | `https://generativelanguage.googleapis.com/v1beta` | OpenAI | [Get Key](https://aistudio.google.com/api-keys) | +| **Groq** | `groq/` | `https://api.groq.com/openai/v1` | OpenAI | [Get Key](https://console.groq.com) | +| **Moonshot** | `moonshot/` | `https://api.moonshot.cn/v1` | OpenAI | [Get Key](https://platform.moonshot.cn) | +| **通义千问 (Qwen)** | `qwen/` | `https://dashscope.aliyuncs.com/compatible-mode/v1` | OpenAI | [Get Key](https://dashscope.console.aliyun.com) | +| **NVIDIA** | `nvidia/` | `https://integrate.api.nvidia.com/v1` | OpenAI | [Get Key](https://build.nvidia.com) | +| **Ollama** | `ollama/` | `http://localhost:11434/v1` | OpenAI | Local (no key needed) | +| **OpenRouter** | `openrouter/` | `https://openrouter.ai/api/v1` | OpenAI | [Get Key](https://openrouter.ai/keys) | +| **VLLM** | `vllm/` | `http://localhost:8000/v1` | OpenAI | Local | +| **Cerebras** | `cerebras/` | `https://api.cerebras.ai/v1` | OpenAI | [Get Key](https://cerebras.ai) | +| **火山引擎** | `volcengine/` | `https://ark.cn-beijing.volces.com/api/v3` | OpenAI | [Get Key](https://console.volcengine.com) | +| **神算云** | `shengsuanyun/` | `https://router.shengsuanyun.com/api/v1` | OpenAI | - | +| **Antigravity** | `antigravity/` | Google Cloud | Custom | OAuth only | +| **GitHub Copilot** | `github-copilot/` | `localhost:4321` | gRPC | - | + +#### Basic Configuration ```json { "model_list": [ { - "model_name": "gpt4", + "model_name": "gpt-4o", "model": "openai/gpt-4o", - "api_key": "your-openai-key" + "api_key": "sk-your-openai-key" }, { - "model_name": "claude3", - "model": "anthropic/claude-3-sonnet", - "api_key": "your-anthropic-key" + "model_name": "claude-3-sonnet", + "model": "anthropic/claude-3-5-sonnet-20241022", + "api_key": "sk-ant-your-key" }, { - "model_name": "custom", - "model": "openai/your-model", - "api_base": "https://your-api.com/v1", - "api_key": "your-key" + "model_name": "glm-4.7", + "model": "zhipu/glm-4.7", + "api_key": "your-zhipu-key" } ], "agents": { "defaults": { - "model": "gpt4" + "model": "gpt-4o" } } } ``` -**Load Balancing:** Configure multiple endpoints for the same model: +#### Vendor-Specific Examples + +**OpenAI** +```json +{ + "model_name": "gpt-4o", + "model": "openai/gpt-4o", + "api_key": "sk-..." +} +``` + +**智谱 AI (GLM)** +```json +{ + "model_name": "glm-4.7", + "model": "zhipu/glm-4.7", + "api_key": "your-key" +} +``` + +**DeepSeek** +```json +{ + "model_name": "deepseek-chat", + "model": "deepseek/deepseek-chat", + "api_key": "sk-..." +} +``` + +**Anthropic (with OAuth)** +```json +{ + "model_name": "claude-sonnet-4", + "model": "anthropic/claude-sonnet-4-20250514", + "auth_method": "oauth" +} +``` +> Run `picoclaw auth login --provider anthropic` to set up OAuth credentials. + +**Ollama (local)** +```json +{ + "model_name": "llama3", + "model": "ollama/llama3" +} +``` + +**Custom Proxy/API** +```json +{ + "model_name": "my-custom-model", + "model": "openai/custom-model", + "api_base": "https://my-proxy.com/v1", + "api_key": "sk-..." +} +``` + +#### Load Balancing + +Configure multiple endpoints for the same model name—PicoClaw will automatically round-robin between them: ```json { "model_list": [ - {"model_name": "gpt4", "model": "openai/gpt-4o", "api_base": "https://api1.example.com/v1"}, - {"model_name": "gpt4", "model": "openai/gpt-4o", "api_base": "https://api2.example.com/v1"} + { + "model_name": "gpt-4o", + "model": "openai/gpt-4o", + "api_base": "https://api1.example.com/v1", + "api_key": "sk-key1" + }, + { + "model_name": "gpt-4o", + "model": "openai/gpt-4o", + "api_base": "https://api2.example.com/v1", + "api_key": "sk-key2" + } ] } ``` -> **Note**: The legacy `providers` configuration is deprecated. See [migration guide](docs/migration/model-list-migration.md) for details. +#### Migration from Legacy `providers` Config + +The old `providers` configuration is **deprecated** but still supported for backward compatibility. + +**Old Config (deprecated):** +```json +{ + "providers": { + "zhipu": { + "api_key": "your-key", + "api_base": "https://open.bigmodel.cn/api/paas/v4" + } + }, + "agents": { + "defaults": { + "provider": "zhipu", + "model": "glm-4.7" + } + } +} +``` + +**New Config (recommended):** +```json +{ + "model_list": [ + { + "model_name": "glm-4.7", + "model": "zhipu/glm-4.7", + "api_key": "your-key" + } + ], + "agents": { + "defaults": { + "model": "glm-4.7" + } + } +} +``` + +For detailed migration guide, see [docs/migration/model-list-migration.md](docs/migration/model-list-migration.md). ### Provider Architecture diff --git a/README.pt-br.md b/README.pt-br.md index a89854be7..fbb79bb96 100644 --- a/README.pt-br.md +++ b/README.pt-br.md @@ -795,6 +795,163 @@ picoclaw agent -m "Ola, como vai?" +### Configuração de Modelo (model_list) + +> **Novidade!** PicoClaw agora usa uma abordagem de configuração **centrada no modelo**. Basta especificar o formato `fornecedor/modelo` (ex: `zhipu/glm-4.7`) para adicionar novos provedores—**nenhuma alteração de código necessária!** + +Este design também possibilita o **suporte multi-agent** com seleção flexível de provedores: + +- **Diferentes agentes, diferentes provedores** : Cada agente pode usar seu próprio provedor LLM +- **Modelos de fallback** : Configure modelos primários e de reserva para resiliência +- **Balanceamento de carga** : Distribua solicitações entre múltiplos endpoints +- **Configuração centralizada** : Gerencie todos os provedores em um só lugar + +#### 📋 Todos os Fornecedores Suportados + +| Fornecedor | Prefixo `model` | API Base Padrão | Protocolo | Chave API | +|-------------|-----------------|------------------|----------|-----------| +| **OpenAI** | `openai/` | `https://api.openai.com/v1` | OpenAI | [Obter Chave](https://platform.openai.com) | +| **Anthropic** | `anthropic/` | `https://api.anthropic.com/v1` | Anthropic | [Obter Chave](https://console.anthropic.com) | +| **Zhipu AI (GLM)** | `zhipu/` | `https://open.bigmodel.cn/api/paas/v4` | OpenAI | [Obter Chave](https://open.bigmodel.cn/usercenter/proj-mgmt/apikeys) | +| **DeepSeek** | `deepseek/` | `https://api.deepseek.com/v1` | OpenAI | [Obter Chave](https://platform.deepseek.com) | +| **Google Gemini** | `gemini/` | `https://generativelanguage.googleapis.com/v1beta` | OpenAI | [Obter Chave](https://aistudio.google.com/api-keys) | +| **Groq** | `groq/` | `https://api.groq.com/openai/v1` | OpenAI | [Obter Chave](https://console.groq.com) | +| **Moonshot** | `moonshot/` | `https://api.moonshot.cn/v1` | OpenAI | [Obter Chave](https://platform.moonshot.cn) | +| **Qwen (Alibaba)** | `qwen/` | `https://dashscope.aliyuncs.com/compatible-mode/v1` | OpenAI | [Obter Chave](https://dashscope.console.aliyun.com) | +| **NVIDIA** | `nvidia/` | `https://integrate.api.nvidia.com/v1` | OpenAI | [Obter Chave](https://build.nvidia.com) | +| **Ollama** | `ollama/` | `http://localhost:11434/v1` | OpenAI | Local (sem chave necessária) | +| **OpenRouter** | `openrouter/` | `https://openrouter.ai/api/v1` | OpenAI | [Obter Chave](https://openrouter.ai/keys) | +| **VLLM** | `vllm/` | `http://localhost:8000/v1` | OpenAI | Local | +| **Cerebras** | `cerebras/` | `https://api.cerebras.ai/v1` | OpenAI | [Obter Chave](https://cerebras.ai) | +| **Volcengine** | `volcengine/` | `https://ark.cn-beijing.volces.com/api/v3` | OpenAI | [Obter Chave](https://console.volcengine.com) | +| **ShengsuanYun** | `shengsuanyun/` | `https://router.shengsuanyun.com/api/v1` | OpenAI | - | +| **Antigravity** | `antigravity/` | Google Cloud | Custom | Apenas OAuth | +| **GitHub Copilot** | `github-copilot/` | `localhost:4321` | gRPC | - | + +#### Configuração Básica + +```json +{ + "model_list": [ + { + "model_name": "gpt-4o", + "model": "openai/gpt-4o", + "api_key": "sk-your-openai-key" + }, + { + "model_name": "claude-3-sonnet", + "model": "anthropic/claude-3-5-sonnet-20241022", + "api_key": "sk-ant-your-key" + }, + { + "model_name": "glm-4.7", + "model": "zhipu/glm-4.7", + "api_key": "your-zhipu-key" + } + ], + "agents": { + "defaults": { + "model": "gpt-4o" + } + } +} +``` + +#### Exemplos por Fornecedor + +**OpenAI** +```json +{ + "model_name": "gpt-4o", + "model": "openai/gpt-4o", + "api_key": "sk-..." +} +``` + +**Zhipu AI (GLM)** +```json +{ + "model_name": "glm-4.7", + "model": "zhipu/glm-4.7", + "api_key": "your-key" +} +``` + +**Anthropic (com OAuth)** +```json +{ + "model_name": "claude-sonnet-4", + "model": "anthropic/claude-sonnet-4-20250514", + "auth_method": "oauth" +} +``` +> Execute `picoclaw auth login --provider anthropic` para configurar credenciais OAuth. + +#### Balanceamento de Carga + +Configure vários endpoints para o mesmo nome de modelo—PicoClaw fará round-robin automaticamente entre eles: + +```json +{ + "model_list": [ + { + "model_name": "gpt-4o", + "model": "openai/gpt-4o", + "api_base": "https://api1.example.com/v1", + "api_key": "sk-key1" + }, + { + "model_name": "gpt-4o", + "model": "openai/gpt-4o", + "api_base": "https://api2.example.com/v1", + "api_key": "sk-key2" + } + ] +} +``` + +#### Migração da Configuração Legada `providers` + +A configuração antiga `providers` está **descontinuada** mas ainda é suportada para compatibilidade reversa. + +**Configuração Antiga (descontinuada):** +```json +{ + "providers": { + "zhipu": { + "api_key": "your-key", + "api_base": "https://open.bigmodel.cn/api/paas/v4" + } + }, + "agents": { + "defaults": { + "provider": "zhipu", + "model": "glm-4.7" + } + } +} +``` + +**Nova Configuração (recomendada):** +```json +{ + "model_list": [ + { + "model_name": "glm-4.7", + "model": "zhipu/glm-4.7", + "api_key": "your-key" + } + ], + "agents": { + "defaults": { + "model": "glm-4.7" + } + } +} +``` + +Para o guia de migração detalhado, consulte [docs/migration/model-list-migration.md](docs/migration/model-list-migration.md). + ## Referência CLI | Comando | Descrição | diff --git a/README.vi.md b/README.vi.md index c36be9865..eacf3917e 100644 --- a/README.vi.md +++ b/README.vi.md @@ -772,6 +772,163 @@ picoclaw agent -m "Xin chào" +### Cấu hình Mô hình (model_list) + +> **Tính năng mới!** PicoClaw hiện sử dụng phương pháp cấu hình **đặt mô hình vào trung tâm**. Chỉ cần chỉ định dạng `nhà cung cấp/mô hình` (ví dụ: `zhipu/glm-4.7`) để thêm nhà cung cấp mới—**không cần thay đổi mã!** + +Thiết kế này cũng cho phép **hỗ trợ đa tác nhân** với lựa chọn nhà cung cấp linh hoạt: + +- **Tác nhân khác nhau, nhà cung cấp khác nhau** : Mỗi tác nhân có thể sử dụng nhà cung cấp LLM riêng +- **Mô hình dự phòng** : Cấu hình mô hình chính và dự phòng để tăng độ tin cậy +- **Cân bằng tải** : Phân phối yêu cầu trên nhiều endpoint khác nhau +- **Cấu hình tập trung** : Quản lý tất cả nhà cung cấp ở một nơi + +#### 📋 Tất cả Nhà cung cấp được Hỗ trợ + +| Nhà cung cấp | Prefix `model` | API Base Mặc định | Giao thức | Khóa API | +|-------------|----------------|-------------------|-----------|----------| +| **OpenAI** | `openai/` | `https://api.openai.com/v1` | OpenAI | [Lấy Khóa](https://platform.openai.com) | +| **Anthropic** | `anthropic/` | `https://api.anthropic.com/v1` | Anthropic | [Lấy Khóa](https://console.anthropic.com) | +| **Zhipu AI (GLM)** | `zhipu/` | `https://open.bigmodel.cn/api/paas/v4` | OpenAI | [Lấy Khóa](https://open.bigmodel.cn/usercenter/proj-mgmt/apikeys) | +| **DeepSeek** | `deepseek/` | `https://api.deepseek.com/v1` | OpenAI | [Lấy Khóa](https://platform.deepseek.com) | +| **Google Gemini** | `gemini/` | `https://generativelanguage.googleapis.com/v1beta` | OpenAI | [Lấy Khóa](https://aistudio.google.com/api-keys) | +| **Groq** | `groq/` | `https://api.groq.com/openai/v1` | OpenAI | [Lấy Khóa](https://console.groq.com) | +| **Moonshot** | `moonshot/` | `https://api.moonshot.cn/v1` | OpenAI | [Lấy Khóa](https://platform.moonshot.cn) | +| **Qwen (Alibaba)** | `qwen/` | `https://dashscope.aliyuncs.com/compatible-mode/v1` | OpenAI | [Lấy Khóa](https://dashscope.console.aliyun.com) | +| **NVIDIA** | `nvidia/` | `https://integrate.api.nvidia.com/v1` | OpenAI | [Lấy Khóa](https://build.nvidia.com) | +| **Ollama** | `ollama/` | `http://localhost:11434/v1` | OpenAI | Local (không cần khóa) | +| **OpenRouter** | `openrouter/` | `https://openrouter.ai/api/v1` | OpenAI | [Lấy Khóa](https://openrouter.ai/keys) | +| **VLLM** | `vllm/` | `http://localhost:8000/v1` | OpenAI | Local | +| **Cerebras** | `cerebras/` | `https://api.cerebras.ai/v1` | OpenAI | [Lấy Khóa](https://cerebras.ai) | +| **Volcengine** | `volcengine/` | `https://ark.cn-beijing.volces.com/api/v3` | OpenAI | [Lấy Khóa](https://console.volcengine.com) | +| **ShengsuanYun** | `shengsuanyun/` | `https://router.shengsuanyun.com/api/v1` | OpenAI | - | +| **Antigravity** | `antigravity/` | Google Cloud | Tùy chỉnh | Chỉ OAuth | +| **GitHub Copilot** | `github-copilot/` | `localhost:4321` | gRPC | - | + +#### Cấu hình Cơ bản + +```json +{ + "model_list": [ + { + "model_name": "gpt-4o", + "model": "openai/gpt-4o", + "api_key": "sk-your-openai-key" + }, + { + "model_name": "claude-3-sonnet", + "model": "anthropic/claude-3-5-sonnet-20241022", + "api_key": "sk-ant-your-key" + }, + { + "model_name": "glm-4.7", + "model": "zhipu/glm-4.7", + "api_key": "your-zhipu-key" + } + ], + "agents": { + "defaults": { + "model": "gpt-4o" + } + } +} +``` + +#### Ví dụ theo Nhà cung cấp + +**OpenAI** +```json +{ + "model_name": "gpt-4o", + "model": "openai/gpt-4o", + "api_key": "sk-..." +} +``` + +**Zhipu AI (GLM)** +```json +{ + "model_name": "glm-4.7", + "model": "zhipu/glm-4.7", + "api_key": "your-key" +} +``` + +**Anthropic (với OAuth)** +```json +{ + "model_name": "claude-sonnet-4", + "model": "anthropic/claude-sonnet-4-20250514", + "auth_method": "oauth" +} +``` +> Chạy `picoclaw auth login --provider anthropic` để thiết lập thông tin xác thực OAuth. + +#### Cân bằng Tải tải + +Định cấu hình nhiều endpoint cho cùng một tên mô hình—PicoClaw sẽ tự động phân phối round-robin giữa chúng: + +```json +{ + "model_list": [ + { + "model_name": "gpt-4o", + "model": "openai/gpt-4o", + "api_base": "https://api1.example.com/v1", + "api_key": "sk-key1" + }, + { + "model_name": "gpt-4o", + "model": "openai/gpt-4o", + "api_base": "https://api2.example.com/v1", + "api_key": "sk-key2" + } + ] +} +``` + +#### Chuyển đổi từ Cấu hình `providers` Cũ + +Cấu hình `providers` cũ đã **ngừng sử dụng** nhưng vẫn được hỗ trợ để tương thích ngược. + +**Cấu hình Cũ (đã ngừng sử dụng):** +```json +{ + "providers": { + "zhipu": { + "api_key": "your-key", + "api_base": "https://open.bigmodel.cn/api/paas/v4" + } + }, + "agents": { + "defaults": { + "provider": "zhipu", + "model": "glm-4.7" + } + } +} +``` + +**Cấu hình Mới (khuyến nghị):** +```json +{ + "model_list": [ + { + "model_name": "glm-4.7", + "model": "zhipu/glm-4.7", + "api_key": "your-key" + } + ], + "agents": { + "defaults": { + "model": "glm-4.7" + } + } +} +``` + +Xem hướng dẫn chuyển đổi chi tiết tại [docs/migration/model-list-migration.md](docs/migration/model-list-migration.md). + ## Tham chiếu CLI | Lệnh | Mô tả | diff --git a/README.zh.md b/README.zh.md index 7132c5a9d..49ff92da3 100644 --- a/README.zh.md +++ b/README.zh.md @@ -568,60 +568,187 @@ Agent 读取 HEARTBEAT.md ### 模型配置 (model_list) -新的 `model_list` 配置格式支持零代码添加 provider。使用协议前缀指定提供商类型: +> **新功能!** PicoClaw 现在采用**以模型为中心**的配置方式。只需使用 `厂商/模型` 格式(如 `zhipu/glm-4.7`)即可添加新的 provider——**无需修改任何代码!** -| 前缀 | 提供商 | 示例 | -|------|--------|------| -| `openai/` | OpenAI (默认) | `openai/gpt-4o` | -| `anthropic/` | Anthropic | `anthropic/claude-3-sonnet` | -| `antigravity/` | Google via OAuth | `antigravity/gemini-2.0-flash` | -| `deepseek/` | DeepSeek | `deepseek/deepseek-chat` | -| `qwen/` | 通义千问 | `qwen/qwen-max` | -| `groq/` | Groq | `groq/llama-3.1-70b` | -| `cerebras/` | Cerebras | `cerebras/llama-3.3-70b` | +该设计同时支持**多 Agent 场景**,提供灵活的 Provider 选择: -**示例:** +- **不同 Agent 使用不同 Provider**:每个 Agent 可以使用自己的 LLM provider +- **模型回退(Fallback)**:配置主模型和备用模型,提高可靠性 +- **负载均衡**:在多个 API 端点之间分配请求 +- **集中化配置**:在一个地方管理所有 provider + +#### 📋 所有支持的厂商 + +| 厂商 | `model` 前缀 | 默认 API Base | 协议 | 获取 API Key | +|------|-------------|---------------|------|--------------| +| **OpenAI** | `openai/` | `https://api.openai.com/v1` | OpenAI | [获取密钥](https://platform.openai.com) | +| **Anthropic** | `anthropic/` | `https://api.anthropic.com/v1` | Anthropic | [获取密钥](https://console.anthropic.com) | +| **智谱 AI (GLM)** | `zhipu/` | `https://open.bigmodel.cn/api/paas/v4` | OpenAI | [获取密钥](https://open.bigmodel.cn/usercenter/proj-mgmt/apikeys) | +| **DeepSeek** | `deepseek/` | `https://api.deepseek.com/v1` | OpenAI | [获取密钥](https://platform.deepseek.com) | +| **Google Gemini** | `gemini/` | `https://generativelanguage.googleapis.com/v1beta` | OpenAI | [获取密钥](https://aistudio.google.com/api-keys) | +| **Groq** | `groq/` | `https://api.groq.com/openai/v1` | OpenAI | [获取密钥](https://console.groq.com) | +| **Moonshot** | `moonshot/` | `https://api.moonshot.cn/v1` | OpenAI | [获取密钥](https://platform.moonshot.cn) | +| **通义千问 (Qwen)** | `qwen/` | `https://dashscope.aliyuncs.com/compatible-mode/v1` | OpenAI | [获取密钥](https://dashscope.console.aliyun.com) | +| **NVIDIA** | `nvidia/` | `https://integrate.api.nvidia.com/v1` | OpenAI | [获取密钥](https://build.nvidia.com) | +| **Ollama** | `ollama/` | `http://localhost:11434/v1` | OpenAI | 本地(无需密钥) | +| **OpenRouter** | `openrouter/` | `https://openrouter.ai/api/v1` | OpenAI | [获取密钥](https://openrouter.ai/keys) | +| **VLLM** | `vllm/` | `http://localhost:8000/v1` | OpenAI | 本地 | +| **Cerebras** | `cerebras/` | `https://api.cerebras.ai/v1` | OpenAI | [获取密钥](https://cerebras.ai) | +| **火山引擎** | `volcengine/` | `https://ark.cn-beijing.volces.com/api/v3` | OpenAI | [获取密钥](https://console.volcengine.com) | +| **神算云** | `shengsuanyun/` | `https://router.shengsuanyun.com/api/v1` | OpenAI | - | +| **Antigravity** | `antigravity/` | Google Cloud | 自定义 | 仅 OAuth | +| **GitHub Copilot** | `github-copilot/` | `localhost:4321` | gRPC | - | + +#### 基础配置示例 ```json { "model_list": [ { - "model_name": "gpt4", + "model_name": "gpt-4o", "model": "openai/gpt-4o", - "api_key": "your-openai-key" + "api_key": "sk-your-openai-key" }, { - "model_name": "claude3", - "model": "anthropic/claude-3-sonnet", - "api_key": "your-anthropic-key" + "model_name": "claude-3-sonnet", + "model": "anthropic/claude-3-5-sonnet-20241022", + "api_key": "sk-ant-your-key" }, { - "model_name": "custom", - "model": "openai/your-model", - "api_base": "https://your-api.com/v1", - "api_key": "your-key" + "model_name": "glm-4.7", + "model": "zhipu/glm-4.7", + "api_key": "your-zhipu-key" } ], "agents": { "defaults": { - "model": "gpt4" + "model": "gpt-4o" } } } ``` -**负载均衡:** 为同一模型配置多个端点: +#### 各厂商配置示例 + +**OpenAI** +```json +{ + "model_name": "gpt-4o", + "model": "openai/gpt-4o", + "api_key": "sk-..." +} +``` + +**智谱 AI (GLM)** +```json +{ + "model_name": "glm-4.7", + "model": "zhipu/glm-4.7", + "api_key": "your-key" +} +``` + +**DeepSeek** +```json +{ + "model_name": "deepseek-chat", + "model": "deepseek/deepseek-chat", + "api_key": "sk-..." +} +``` + +**Anthropic (使用 OAuth)** +```json +{ + "model_name": "claude-sonnet-4", + "model": "anthropic/claude-sonnet-4-20250514", + "auth_method": "oauth" +} +``` +> 运行 `picoclaw auth login --provider anthropic` 来设置 OAuth 凭证。 + +**Ollama (本地)** +```json +{ + "model_name": "llama3", + "model": "ollama/llama3" +} +``` + +**自定义代理/API** +```json +{ + "model_name": "my-custom-model", + "model": "openai/custom-model", + "api_base": "https://my-proxy.com/v1", + "api_key": "sk-..." +} +``` + +#### 负载均衡 + +为同一个模型名称配置多个端点——PicoClaw 会自动在它们之间轮询: ```json { "model_list": [ - {"model_name": "gpt4", "model": "openai/gpt-4o", "api_base": "https://api1.example.com/v1"}, - {"model_name": "gpt4", "model": "openai/gpt-4o", "api_base": "https://api2.example.com/v1"} + { + "model_name": "gpt-4o", + "model": "openai/gpt-4o", + "api_base": "https://api1.example.com/v1", + "api_key": "sk-key1" + }, + { + "model_name": "gpt-4o", + "model": "openai/gpt-4o", + "api_base": "https://api2.example.com/v1", + "api_key": "sk-key2" + } ] } ``` -> **注意**: 旧的 `providers` 配置格式已弃用。详见[迁移指南](docs/migration/model-list-migration.md)。 +#### 从旧的 `providers` 配置迁移 + +旧的 `providers` 配置格式**已弃用**,但为向后兼容仍支持。 + +**旧配置(已弃用):** +```json +{ + "providers": { + "zhipu": { + "api_key": "your-key", + "api_base": "https://open.bigmodel.cn/api/paas/v4" + } + }, + "agents": { + "defaults": { + "provider": "zhipu", + "model": "glm-4.7" + } + } +} +``` + +**新配置(推荐):** +```json +{ + "model_list": [ + { + "model_name": "glm-4.7", + "model": "zhipu/glm-4.7", + "api_key": "your-key" + } + ], + "agents": { + "defaults": { + "model": "glm-4.7" + } + } +} +``` + +详细的迁移指南请参考 [docs/migration/model-list-migration.md](docs/migration/model-list-migration.md)。
智谱 (Zhipu) 配置示例