Merge d0e0eea7b8 into 5745957429
This commit is contained in:
commit
d056cad375
34 changed files with 281 additions and 39 deletions
16
README.md
16
README.md
|
|
@ -404,6 +404,7 @@ PicoClaw supports 30+ LLM providers through the `model_list` configuration. Use
|
||||||
| [Xiaomi MiMo](https://platform.xiaomimimo.com/) | `mimo/` | Required | MiMo models |
|
| [Xiaomi MiMo](https://platform.xiaomimimo.com/) | `mimo/` | Required | MiMo models |
|
||||||
| [Ollama](https://ollama.com/) | `ollama/` | Not needed | Local models, self-hosted |
|
| [Ollama](https://ollama.com/) | `ollama/` | Not needed | Local models, self-hosted |
|
||||||
| [vLLM](https://docs.vllm.ai/) | `vllm/` | Not needed | Local deployment, OpenAI-compatible |
|
| [vLLM](https://docs.vllm.ai/) | `vllm/` | Not needed | Local deployment, OpenAI-compatible |
|
||||||
|
| [OVMS](https://docs.openvino.ai/2026/model-server/ovms_docs_llm_quickstart.html) | `ovms/` | Not needed | Intel OpenVINO Model Server, OpenAI-compatible |
|
||||||
| [LiteLLM](https://docs.litellm.ai/) | `litellm/` | Varies | Proxy for 100+ providers |
|
| [LiteLLM](https://docs.litellm.ai/) | `litellm/` | Varies | Proxy for 100+ providers |
|
||||||
| [Azure OpenAI](https://portal.azure.com/) | `azure/` | Required | Enterprise Azure deployment |
|
| [Azure OpenAI](https://portal.azure.com/) | `azure/` | Required | Enterprise Azure deployment |
|
||||||
| [GitHub Copilot](https://github.com/features/copilot) | `github-copilot/` | OAuth | Device code login |
|
| [GitHub Copilot](https://github.com/features/copilot) | `github-copilot/` | OAuth | Device code login |
|
||||||
|
|
@ -413,7 +414,7 @@ PicoClaw supports 30+ LLM providers through the `model_list` configuration. Use
|
||||||
> \* AWS Bedrock requires build tag: `go build -tags bedrock`. Set `api_base` to a region name (e.g., `us-east-1`) for automatic endpoint resolution across all AWS partitions (aws, aws-cn, aws-us-gov). When using a full endpoint URL instead, you must also configure `AWS_REGION` via environment variable or AWS config/profile.
|
> \* AWS Bedrock requires build tag: `go build -tags bedrock`. Set `api_base` to a region name (e.g., `us-east-1`) for automatic endpoint resolution across all AWS partitions (aws, aws-cn, aws-us-gov). When using a full endpoint URL instead, you must also configure `AWS_REGION` via environment variable or AWS config/profile.
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary><b>Local deployment (Ollama, vLLM, etc.)</b></summary>
|
<summary><b>Local deployment (Ollama, vLLM, OVMS, etc.)</b></summary>
|
||||||
|
|
||||||
**Ollama:**
|
**Ollama:**
|
||||||
```json
|
```json
|
||||||
|
|
@ -441,6 +442,19 @@ PicoClaw supports 30+ LLM providers through the `model_list` configuration. Use
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**OVMS (OpenVINO Model Server):**
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"model_list": [
|
||||||
|
{
|
||||||
|
"model_name": "local-ovms",
|
||||||
|
"model": "ovms/your-model",
|
||||||
|
"api_base": "http://localhost:8000/v3"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
For full provider configuration details, see [Providers & Models](docs/guides/providers.md).
|
For full provider configuration details, see [Providers & Models](docs/guides/providers.md).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,7 @@
|
||||||
|
|
||||||
* **Provider**
|
* **Provider**
|
||||||
* [**Architecture Upgrade**](https://github.com/sipeed/picoclaw/issues/283): Refactor from "Vendor-based" to "Protocol-based" classification (e.g., OpenAI-compatible, Ollama-compatible). *(Status: In progress by @Daming, ETA 5 days)*
|
* [**Architecture Upgrade**](https://github.com/sipeed/picoclaw/issues/283): Refactor from "Vendor-based" to "Protocol-based" classification (e.g., OpenAI-compatible, Ollama-compatible). *(Status: In progress by @Daming, ETA 5 days)*
|
||||||
* **Local Models**: Deep integration with **Ollama**, **vLLM**, **LM Studio**, and **Mistral** (local inference).
|
* **Local Models**: Deep integration with **Ollama**, **vLLM**, **OVMS**, **LM Studio**, and **Mistral** (local inference).
|
||||||
* **Online Models**: Continued support for frontier closed-source models.
|
* **Online Models**: Continued support for frontier closed-source models.
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -30,11 +30,13 @@ Examples:
|
||||||
picoclaw model # Show current default model
|
picoclaw model # Show current default model
|
||||||
picoclaw model gpt-5.2 # Set gpt-5.2 as default
|
picoclaw model gpt-5.2 # Set gpt-5.2 as default
|
||||||
picoclaw model claude-sonnet-4.6 # Set claude-sonnet-4.6 as default
|
picoclaw model claude-sonnet-4.6 # Set claude-sonnet-4.6 as default
|
||||||
picoclaw model local-model # Set local VLLM server as default
|
picoclaw model local-model # Set local vLLM server as default
|
||||||
|
picoclaw model local-ovms # Set local OVMS server as default
|
||||||
picoclaw model add -b URL -k KEY # Add a model from a custom endpoint
|
picoclaw model add -b URL -k KEY # Add a model from a custom endpoint
|
||||||
|
|
||||||
Note: 'local-model' is a special value for using a local VLLM server
|
Note: 'local-model' is a built-in entry for a local vLLM server (localhost:8000/v1).
|
||||||
(running at localhost:8000 by default) which does not require an API key.`,
|
'local-ovms' is a built-in entry for a local OVMS server (localhost:8000/v3).
|
||||||
|
Neither requires an API key.`,
|
||||||
Args: cobra.MaximumNArgs(1),
|
Args: cobra.MaximumNArgs(1),
|
||||||
RunE: func(cmd *cobra.Command, args []string) error {
|
RunE: func(cmd *cobra.Command, args []string) error {
|
||||||
configPath := internal.GetConfigPath()
|
configPath := internal.GetConfigPath()
|
||||||
|
|
|
||||||
|
|
@ -368,7 +368,7 @@ L'ancienne configuration `providers` est **dépréciée** et a été supprimée
|
||||||
|
|
||||||
PicoClaw route les providers par famille de protocole :
|
PicoClaw route les providers par famille de protocole :
|
||||||
|
|
||||||
- **Compatible OpenAI** : OpenRouter, Groq, Zhipu, endpoints vLLM et la plupart des autres.
|
- **Compatible OpenAI** : OpenRouter, Groq, Zhipu, endpoints vLLM, OVMS et la plupart des autres.
|
||||||
- **Gemini natif** : Google Gemini via les endpoints natifs `models/*:generateContent` et `models/*:streamGenerateContent`.
|
- **Gemini natif** : Google Gemini via les endpoints natifs `models/*:generateContent` et `models/*:streamGenerateContent`.
|
||||||
- **Anthropic** : Comportement natif de l'API Claude.
|
- **Anthropic** : Comportement natif de l'API Claude.
|
||||||
- **Codex/OAuth** : Route d'authentification OAuth/token OpenAI.
|
- **Codex/OAuth** : Route d'authentification OAuth/token OpenAI.
|
||||||
|
|
|
||||||
|
|
@ -369,7 +369,7 @@ HEARTBEAT_OK を返信 ユーザーが直接結果を受信
|
||||||
|
|
||||||
PicoClaw はプロトコルファミリーで Provider をルーティングします:
|
PicoClaw はプロトコルファミリーで Provider をルーティングします:
|
||||||
|
|
||||||
- **OpenAI 互換**:OpenRouter、Groq、Zhipu、vLLM スタイルのエンドポイントなど。
|
- **OpenAI 互換**:OpenRouter、Groq、Zhipu、vLLM スタイルのエンドポイント、OVMSなど。
|
||||||
- **Gemini ネイティブ**:Google Gemini のネイティブ `models/*:generateContent` / `models/*:streamGenerateContent` エンドポイント。
|
- **Gemini ネイティブ**:Google Gemini のネイティブ `models/*:generateContent` / `models/*:streamGenerateContent` エンドポイント。
|
||||||
- **Anthropic**:Claude ネイティブ API の動作。
|
- **Anthropic**:Claude ネイティブ API の動作。
|
||||||
- **Codex/OAuth**:OpenAI OAuth/トークン認証ルート。
|
- **Codex/OAuth**:OpenAI OAuth/トークン認証ルート。
|
||||||
|
|
|
||||||
|
|
@ -592,6 +592,7 @@ For complete documentation, see [`../security/security_configuration.md`](../sec
|
||||||
| **OpenRouter** | `openrouter` | `https://openrouter.ai/api/v1` | OpenAI | [Get Key](https://openrouter.ai/keys) |
|
| **OpenRouter** | `openrouter` | `https://openrouter.ai/api/v1` | OpenAI | [Get Key](https://openrouter.ai/keys) |
|
||||||
| **LiteLLM Proxy** | `litellm` | `http://localhost:4000/v1` | OpenAI | Your LiteLLM proxy key |
|
| **LiteLLM Proxy** | `litellm` | `http://localhost:4000/v1` | OpenAI | Your LiteLLM proxy key |
|
||||||
| **VLLM** | `vllm` | `http://localhost:8000/v1` | OpenAI | Local |
|
| **VLLM** | `vllm` | `http://localhost:8000/v1` | OpenAI | Local |
|
||||||
|
| **OVMS** | `ovms` | `http://localhost:8000/v3` | OpenAI | Local (no key needed) |
|
||||||
| **Cerebras** | `cerebras` | `https://api.cerebras.ai/v1` | OpenAI | [Get Key](https://cerebras.ai) |
|
| **Cerebras** | `cerebras` | `https://api.cerebras.ai/v1` | OpenAI | [Get Key](https://cerebras.ai) |
|
||||||
| **VolcEngine (Doubao)** | `volcengine` | `https://ark.cn-beijing.volces.com/api/v3` | OpenAI | [Get Key](https://www.volcengine.com/activity/codingplan?utm_campaign=PicoClaw&utm_content=PicoClaw&utm_medium=devrel&utm_source=OWO&utm_term=PicoClaw) |
|
| **VolcEngine (Doubao)** | `volcengine` | `https://ark.cn-beijing.volces.com/api/v3` | OpenAI | [Get Key](https://www.volcengine.com/activity/codingplan?utm_campaign=PicoClaw&utm_content=PicoClaw&utm_medium=devrel&utm_source=OWO&utm_term=PicoClaw) |
|
||||||
| **神算云** | `shengsuanyun` | `https://router.shengsuanyun.com/api/v1` | OpenAI | — |
|
| **神算云** | `shengsuanyun` | `https://router.shengsuanyun.com/api/v1` | OpenAI | — |
|
||||||
|
|
@ -848,7 +849,7 @@ The old `providers` configuration is **deprecated** and has been removed in V2.
|
||||||
|
|
||||||
PicoClaw routes providers by protocol family:
|
PicoClaw routes providers by protocol family:
|
||||||
|
|
||||||
- **OpenAI-compatible**: OpenRouter, Groq, Zhipu, vLLM-style endpoints, and most others.
|
- **OpenAI-compatible**: OpenRouter, Groq, Zhipu, vLLM-style endpoints, OVMS, and most others.
|
||||||
- **Gemini native**: Google Gemini via the native `models/*:generateContent` and `models/*:streamGenerateContent` endpoints.
|
- **Gemini native**: Google Gemini via the native `models/*:generateContent` and `models/*:streamGenerateContent` endpoints.
|
||||||
- **Anthropic**: Claude-native API behavior.
|
- **Anthropic**: Claude-native API behavior.
|
||||||
- **Codex/OAuth**: OpenAI OAuth/token authentication route.
|
- **Codex/OAuth**: OpenAI OAuth/token authentication route.
|
||||||
|
|
|
||||||
|
|
@ -369,7 +369,7 @@ A configuração antiga `providers` está **depreciada** e foi removida no V2. C
|
||||||
|
|
||||||
PicoClaw roteia providers por família de protocolo:
|
PicoClaw roteia providers por família de protocolo:
|
||||||
|
|
||||||
- **Compatível com OpenAI**: OpenRouter, Groq, Zhipu, endpoints vLLM e a maioria dos outros.
|
- **Compatível com OpenAI**: OpenRouter, Groq, Zhipu, endpoints vLLM, OVMS e a maioria dos outros.
|
||||||
- **Gemini nativo**: Google Gemini via endpoints nativos `models/*:generateContent` e `models/*:streamGenerateContent`.
|
- **Gemini nativo**: Google Gemini via endpoints nativos `models/*:generateContent` e `models/*:streamGenerateContent`.
|
||||||
- **Anthropic**: Comportamento nativo da API Claude.
|
- **Anthropic**: Comportamento nativo da API Claude.
|
||||||
- **Codex/OAuth**: Rota de autenticação OAuth/token OpenAI.
|
- **Codex/OAuth**: Rota de autenticação OAuth/token OpenAI.
|
||||||
|
|
|
||||||
|
|
@ -369,7 +369,7 @@ Cấu hình `providers` cũ đã **bị deprecated** và đã được loại b
|
||||||
|
|
||||||
PicoClaw định tuyến provider theo họ giao thức:
|
PicoClaw định tuyến provider theo họ giao thức:
|
||||||
|
|
||||||
- **Tương thích OpenAI**: OpenRouter, Groq, Zhipu, endpoint kiểu vLLM và hầu hết các provider khác.
|
- **Tương thích OpenAI**: OpenRouter, Groq, Zhipu, endpoint kiểu vLLM, OVMS và hầu hết các provider khác.
|
||||||
- **Gemini native**: Google Gemini qua các endpoint native `models/*:generateContent` và `models/*:streamGenerateContent`.
|
- **Gemini native**: Google Gemini qua các endpoint native `models/*:generateContent` và `models/*:streamGenerateContent`.
|
||||||
- **Anthropic**: Hành vi API Claude gốc.
|
- **Anthropic**: Hành vi API Claude gốc.
|
||||||
- **Codex/OAuth**: Tuyến xác thực OAuth/token OpenAI.
|
- **Codex/OAuth**: Tuyến xác thực OAuth/token OpenAI.
|
||||||
|
|
|
||||||
|
|
@ -452,6 +452,7 @@ Agent 读取 HEARTBEAT.md
|
||||||
| **OpenRouter** | `openrouter` | `https://openrouter.ai/api/v1` | OpenAI | [获取](https://openrouter.ai/keys) |
|
| **OpenRouter** | `openrouter` | `https://openrouter.ai/api/v1` | OpenAI | [获取](https://openrouter.ai/keys) |
|
||||||
| **LiteLLM Proxy** | `litellm` | `http://localhost:4000/v1` | OpenAI | 你的 LiteLLM 代理 Key |
|
| **LiteLLM Proxy** | `litellm` | `http://localhost:4000/v1` | OpenAI | 你的 LiteLLM 代理 Key |
|
||||||
| **VLLM** | `vllm` | `http://localhost:8000/v1` | OpenAI | 本地 |
|
| **VLLM** | `vllm` | `http://localhost:8000/v1` | OpenAI | 本地 |
|
||||||
|
| **OVMS** | `ovms` | `http://localhost:8000/v3` | OpenAI | 本地(无需密钥) |
|
||||||
| **Cerebras** | `cerebras` | `https://api.cerebras.ai/v1` | OpenAI | [获取](https://cerebras.ai) |
|
| **Cerebras** | `cerebras` | `https://api.cerebras.ai/v1` | OpenAI | [获取](https://cerebras.ai) |
|
||||||
| **火山引擎 (豆包)** | `volcengine` | `https://ark.cn-beijing.volces.com/api/v3` | OpenAI | [获取](https://www.volcengine.com/activity/codingplan?utm_campaign=PicoClaw&utm_content=PicoClaw&utm_medium=devrel&utm_source=OWO&utm_term=PicoClaw) |
|
| **火山引擎 (豆包)** | `volcengine` | `https://ark.cn-beijing.volces.com/api/v3` | OpenAI | [获取](https://www.volcengine.com/activity/codingplan?utm_campaign=PicoClaw&utm_content=PicoClaw&utm_medium=devrel&utm_source=OWO&utm_term=PicoClaw) |
|
||||||
| **神算云** | `shengsuanyun` | `https://router.shengsuanyun.com/api/v1` | OpenAI | — |
|
| **神算云** | `shengsuanyun` | `https://router.shengsuanyun.com/api/v1` | OpenAI | — |
|
||||||
|
|
@ -674,7 +675,7 @@ Agent 读取 HEARTBEAT.md
|
||||||
|
|
||||||
PicoClaw 按协议族路由提供商:
|
PicoClaw 按协议族路由提供商:
|
||||||
|
|
||||||
- **OpenAI 兼容**:OpenRouter、Groq、智谱、vLLM 风格端点及大多数其他提供商。
|
- **OpenAI 兼容**:OpenRouter、Groq、智谱、vLLM 风格端点、OVMS 及大多数其他提供商。
|
||||||
- **Gemini 原生**:Google Gemini 通过原生 `models/*:generateContent` 和 `models/*:streamGenerateContent` 端点接入。
|
- **Gemini 原生**:Google Gemini 通过原生 `models/*:generateContent` 和 `models/*:streamGenerateContent` 端点接入。
|
||||||
- **Anthropic**:Claude 原生 API 行为。
|
- **Anthropic**:Claude 原生 API 行为。
|
||||||
- **Codex/OAuth**:OpenAI OAuth/Token 认证路由。
|
- **Codex/OAuth**:OpenAI OAuth/Token 认证路由。
|
||||||
|
|
|
||||||
|
|
@ -55,6 +55,7 @@ Cette conception permet également le **support multi-agents** avec une sélecti
|
||||||
| **OpenRouter** | `openrouter/` | `https://openrouter.ai/api/v1` | OpenAI | [Get Key](https://openrouter.ai/keys) |
|
| **OpenRouter** | `openrouter/` | `https://openrouter.ai/api/v1` | OpenAI | [Get Key](https://openrouter.ai/keys) |
|
||||||
| **LiteLLM Proxy** | `litellm/` | `http://localhost:4000/v1` | OpenAI | Your LiteLLM proxy key |
|
| **LiteLLM Proxy** | `litellm/` | `http://localhost:4000/v1` | OpenAI | Your LiteLLM proxy key |
|
||||||
| **VLLM** | `vllm/` | `http://localhost:8000/v1` | OpenAI | Local |
|
| **VLLM** | `vllm/` | `http://localhost:8000/v1` | OpenAI | Local |
|
||||||
|
| **OVMS** | `ovms/` | `http://localhost:8000/v3` | OpenAI | Local (no key needed) |
|
||||||
| **Cerebras** | `cerebras/` | `https://api.cerebras.ai/v1` | OpenAI | [Get Key](https://cerebras.ai) |
|
| **Cerebras** | `cerebras/` | `https://api.cerebras.ai/v1` | OpenAI | [Get Key](https://cerebras.ai) |
|
||||||
| **VolcEngine (Doubao)** | `volcengine/` | `https://ark.cn-beijing.volces.com/api/v3` | OpenAI | [Get Key](https://www.volcengine.com/activity/codingplan?utm_campaign=PicoClaw&utm_content=PicoClaw&utm_medium=devrel&utm_source=OWO&utm_term=PicoClaw) |
|
| **VolcEngine (Doubao)** | `volcengine/` | `https://ark.cn-beijing.volces.com/api/v3` | OpenAI | [Get Key](https://www.volcengine.com/activity/codingplan?utm_campaign=PicoClaw&utm_content=PicoClaw&utm_medium=devrel&utm_source=OWO&utm_term=PicoClaw) |
|
||||||
| **神算云** | `shengsuanyun/` | `https://router.shengsuanyun.com/api/v1` | OpenAI | - |
|
| **神算云** | `shengsuanyun/` | `https://router.shengsuanyun.com/api/v1` | OpenAI | - |
|
||||||
|
|
@ -105,7 +106,7 @@ Cette conception permet également le **support multi-agents** avec une sélecti
|
||||||
|-------|------|--------|-------------|
|
|-------|------|--------|-------------|
|
||||||
| `model_name` | string | Oui | Nom unique pour référencer ce modèle dans la config agent |
|
| `model_name` | string | Oui | Nom unique pour référencer ce modèle dans la config agent |
|
||||||
| `model` | string | Oui | Identifiant fournisseur/modèle (ex : `openai/gpt-5.4`, `azure/gpt-5.4`, `anthropic/claude-sonnet-4.6`) |
|
| `model` | string | Oui | Identifiant fournisseur/modèle (ex : `openai/gpt-5.4`, `azure/gpt-5.4`, `anthropic/claude-sonnet-4.6`) |
|
||||||
| `api_keys` | string[] | Oui* | Clé(s) API pour l'authentification. Plusieurs clés permettent la rotation par requête. Non requis pour les fournisseurs locaux (Ollama, LM Studio, VLLM) |
|
| `api_keys` | string[] | Oui* | Clé(s) API pour l'authentification. Plusieurs clés permettent la rotation par requête. Non requis pour les fournisseurs locaux (Ollama, LM Studio, VLLM, OVMS) |
|
||||||
| `api_base` | string | Non | Remplace l'URL de base API par défaut |
|
| `api_base` | string | Non | Remplace l'URL de base API par défaut |
|
||||||
| `proxy` | string | Non | URL du proxy HTTP pour cette entrée de modèle |
|
| `proxy` | string | Non | URL du proxy HTTP pour cette entrée de modèle |
|
||||||
| `user_agent` | string | Non | En-tête `User-Agent` personnalisé pour les requêtes API (supporté par les providers compatibles OpenAI, Gemini, Anthropic et Azure) |
|
| `user_agent` | string | Non | En-tête `User-Agent` personnalisé pour les requêtes API (supporté par les providers compatibles OpenAI, Gemini, Anthropic et Azure) |
|
||||||
|
|
@ -298,7 +299,7 @@ Pour un guide de migration détaillé, voir [migration/model-list-migration.md](
|
||||||
|
|
||||||
PicoClaw route les fournisseurs par famille de protocoles :
|
PicoClaw route les fournisseurs par famille de protocoles :
|
||||||
|
|
||||||
- Protocole compatible OpenAI : OpenRouter, passerelles compatibles OpenAI, Groq, Zhipu et endpoints de type vLLM.
|
- Protocole compatible OpenAI : OpenRouter, passerelles compatibles OpenAI, Groq, Zhipu et endpoints de type vLLM et OVMS.
|
||||||
- Protocole Gemini natif : Google Gemini via les endpoints natifs `models/*:generateContent` et `models/*:streamGenerateContent`.
|
- Protocole Gemini natif : Google Gemini via les endpoints natifs `models/*:generateContent` et `models/*:streamGenerateContent`.
|
||||||
- Protocole Anthropic : Comportement natif de l'API Claude.
|
- Protocole Anthropic : Comportement natif de l'API Claude.
|
||||||
- Chemin Codex/OAuth : Route d'authentification OAuth/token OpenAI.
|
- Chemin Codex/OAuth : Route d'authentification OAuth/token OpenAI.
|
||||||
|
|
|
||||||
|
|
@ -56,6 +56,7 @@
|
||||||
| **OpenRouter** | `openrouter/` | `https://openrouter.ai/api/v1` | OpenAI | [キーを取得](https://openrouter.ai/keys) |
|
| **OpenRouter** | `openrouter/` | `https://openrouter.ai/api/v1` | OpenAI | [キーを取得](https://openrouter.ai/keys) |
|
||||||
| **LiteLLM Proxy** | `litellm/` | `http://localhost:4000/v1` | OpenAI | LiteLLM プロキシキー |
|
| **LiteLLM Proxy** | `litellm/` | `http://localhost:4000/v1` | OpenAI | LiteLLM プロキシキー |
|
||||||
| **VLLM** | `vllm/` | `http://localhost:8000/v1` | OpenAI | ローカル |
|
| **VLLM** | `vllm/` | `http://localhost:8000/v1` | OpenAI | ローカル |
|
||||||
|
| **OVMS** | `ovms/` | `http://localhost:8000/v3` | OpenAI | ローカル(キー不要) |
|
||||||
| **Cerebras** | `cerebras/` | `https://api.cerebras.ai/v1` | OpenAI | [キーを取得](https://cerebras.ai) |
|
| **Cerebras** | `cerebras/` | `https://api.cerebras.ai/v1` | OpenAI | [キーを取得](https://cerebras.ai) |
|
||||||
| **VolcEngine (Doubao)** | `volcengine/` | `https://ark.cn-beijing.volces.com/api/v3` | OpenAI | [キーを取得](https://www.volcengine.com/activity/codingplan?utm_campaign=PicoClaw&utm_content=PicoClaw&utm_medium=devrel&utm_source=OWO&utm_term=PicoClaw) |
|
| **VolcEngine (Doubao)** | `volcengine/` | `https://ark.cn-beijing.volces.com/api/v3` | OpenAI | [キーを取得](https://www.volcengine.com/activity/codingplan?utm_campaign=PicoClaw&utm_content=PicoClaw&utm_medium=devrel&utm_source=OWO&utm_term=PicoClaw) |
|
||||||
| **神算云** | `shengsuanyun/` | `https://router.shengsuanyun.com/api/v1` | OpenAI | - |
|
| **神算云** | `shengsuanyun/` | `https://router.shengsuanyun.com/api/v1` | OpenAI | - |
|
||||||
|
|
@ -106,7 +107,7 @@
|
||||||
|-----------|------|------|------|
|
|-----------|------|------|------|
|
||||||
| `model_name` | string | はい | agent 設定でこのモデルを参照するための一意の名前 |
|
| `model_name` | string | はい | agent 設定でこのモデルを参照するための一意の名前 |
|
||||||
| `model` | string | はい | ベンダー/モデル識別子(例:`openai/gpt-5.4`、`azure/gpt-5.4`、`anthropic/claude-sonnet-4.6`) |
|
| `model` | string | はい | ベンダー/モデル識別子(例:`openai/gpt-5.4`、`azure/gpt-5.4`、`anthropic/claude-sonnet-4.6`) |
|
||||||
| `api_keys` | string[] | はい* | 認証キー。複数キーでリクエストごとのローテーションが可能。ローカル provider(Ollama、LM Studio、VLLM)には不要 |
|
| `api_keys` | string[] | はい* | 認証キー。複数キーでリクエストごとのローテーションが可能。ローカル provider(Ollama、LM Studio、VLLM、OVMS)には不要 |
|
||||||
| `api_base` | string | いいえ | デフォルトの API エンドポイント URL を上書き |
|
| `api_base` | string | いいえ | デフォルトの API エンドポイント URL を上書き |
|
||||||
| `proxy` | string | いいえ | このモデルエントリの HTTP プロキシ URL |
|
| `proxy` | string | いいえ | このモデルエントリの HTTP プロキシ URL |
|
||||||
| `user_agent` | string | いいえ | カスタム `User-Agent` リクエストヘッダー(OpenAI 互換、Gemini、Anthropic、Azure provider で対応) |
|
| `user_agent` | string | いいえ | カスタム `User-Agent` リクエストヘッダー(OpenAI 互換、Gemini、Anthropic、Azure provider で対応) |
|
||||||
|
|
@ -310,7 +311,7 @@ PicoClaw はリクエスト送信前に外側の `litellm/` プレフィック
|
||||||
|
|
||||||
PicoClaw はプロトコルファミリーごとに Provider をルーティングします:
|
PicoClaw はプロトコルファミリーごとに Provider をルーティングします:
|
||||||
|
|
||||||
- OpenAI 互換プロトコル:OpenRouter、OpenAI 互換ゲートウェイ、Groq、Zhipu、vLLM スタイルのエンドポイント。
|
- OpenAI 互換プロトコル:OpenRouter、OpenAI 互換ゲートウェイ、Groq、Zhipu、vLLM スタイルのエンドポイント、OVMS。
|
||||||
- Gemini ネイティブプロトコル:Google Gemini のネイティブ `models/*:generateContent` / `models/*:streamGenerateContent` エンドポイント。
|
- Gemini ネイティブプロトコル:Google Gemini のネイティブ `models/*:generateContent` / `models/*:streamGenerateContent` エンドポイント。
|
||||||
- Anthropic プロトコル:Claude ネイティブ API 動作。
|
- Anthropic プロトコル:Claude ネイティブ API 動作。
|
||||||
- Codex/OAuth パス:OpenAI OAuth/Token 認証ルート。
|
- Codex/OAuth パス:OpenAI OAuth/Token 認証ルート。
|
||||||
|
|
|
||||||
|
|
@ -64,6 +64,7 @@ This design also enables **multi-agent support** with flexible provider selectio
|
||||||
| **OpenRouter** | `openrouter` | `https://openrouter.ai/api/v1` | OpenAI | [Get Key](https://openrouter.ai/keys) |
|
| **OpenRouter** | `openrouter` | `https://openrouter.ai/api/v1` | OpenAI | [Get Key](https://openrouter.ai/keys) |
|
||||||
| **LiteLLM Proxy** | `litellm` | `http://localhost:4000/v1` | OpenAI | Your LiteLLM proxy key |
|
| **LiteLLM Proxy** | `litellm` | `http://localhost:4000/v1` | OpenAI | Your LiteLLM proxy key |
|
||||||
| **VLLM** | `vllm` | `http://localhost:8000/v1` | OpenAI | Local |
|
| **VLLM** | `vllm` | `http://localhost:8000/v1` | OpenAI | Local |
|
||||||
|
| **OVMS** | `ovms` | `http://localhost:8000/v3` | OpenAI | Local (no key needed) |
|
||||||
| **Cerebras** | `cerebras` | `https://api.cerebras.ai/v1` | OpenAI | [Get Key](https://cerebras.ai) |
|
| **Cerebras** | `cerebras` | `https://api.cerebras.ai/v1` | OpenAI | [Get Key](https://cerebras.ai) |
|
||||||
| **VolcEngine (Doubao)** | `volcengine` | `https://ark.cn-beijing.volces.com/api/v3` | OpenAI | [Get Key](https://www.volcengine.com/activity/codingplan?utm_campaign=PicoClaw&utm_content=PicoClaw&utm_medium=devrel&utm_source=OWO&utm_term=PicoClaw) |
|
| **VolcEngine (Doubao)** | `volcengine` | `https://ark.cn-beijing.volces.com/api/v3` | OpenAI | [Get Key](https://www.volcengine.com/activity/codingplan?utm_campaign=PicoClaw&utm_content=PicoClaw&utm_medium=devrel&utm_source=OWO&utm_term=PicoClaw) |
|
||||||
| **神算云** | `shengsuanyun` | `https://router.shengsuanyun.com/api/v1` | OpenAI | - |
|
| **神算云** | `shengsuanyun` | `https://router.shengsuanyun.com/api/v1` | OpenAI | - |
|
||||||
|
|
@ -121,7 +122,7 @@ This design also enables **multi-agent support** with flexible provider selectio
|
||||||
| `model_name` | string | Yes | Unique name used to reference this model in agent config |
|
| `model_name` | string | Yes | Unique name used to reference this model in agent config |
|
||||||
| `provider` | string | No | Preferred provider identifier. When present, PicoClaw sends `model` unchanged to that provider |
|
| `provider` | string | No | Preferred provider identifier. When present, PicoClaw sends `model` unchanged to that provider |
|
||||||
| `model` | string | Yes | Native model ID when `provider` is set. If `provider` is omitted, the legacy `provider/model` form is still supported |
|
| `model` | string | Yes | Native model ID when `provider` is set. If `provider` is omitted, the legacy `provider/model` form is still supported |
|
||||||
| `api_keys` | string[] | Yes* | API key(s) for authentication. Multiple keys enable per-request rotation. Not required for local providers (Ollama, LM Studio, VLLM) |
|
| `api_keys` | string[] | Yes* | API key(s) for authentication. Multiple keys enable per-request rotation. Not required for local providers (Ollama, LM Studio, VLLM, OVMS) |
|
||||||
| `api_base` | string | No | Override the default API endpoint URL |
|
| `api_base` | string | No | Override the default API endpoint URL |
|
||||||
| `proxy` | string | No | HTTP proxy URL for this model entry |
|
| `proxy` | string | No | HTTP proxy URL for this model entry |
|
||||||
| `user_agent` | string | No | Custom `User-Agent` header sent with API requests (supported by OpenAI-compatible, Gemini, Anthropic, and Azure providers) |
|
| `user_agent` | string | No | Custom `User-Agent` header sent with API requests (supported by OpenAI-compatible, Gemini, Anthropic, and Azure providers) |
|
||||||
|
|
@ -476,7 +477,7 @@ For detailed migration guide, see [migration/model-list-migration.md](../migrati
|
||||||
|
|
||||||
PicoClaw routes providers by protocol family:
|
PicoClaw routes providers by protocol family:
|
||||||
|
|
||||||
- OpenAI-compatible protocol: OpenRouter, OpenAI-compatible gateways, Groq, Zhipu, and vLLM-style endpoints.
|
- OpenAI-compatible protocol: OpenRouter, OpenAI-compatible gateways, Groq, Zhipu, OVMS, and vLLM-style endpoints.
|
||||||
- Gemini native protocol: Google Gemini via the native `models/*:generateContent` and `models/*:streamGenerateContent` endpoints.
|
- Gemini native protocol: Google Gemini via the native `models/*:generateContent` and `models/*:streamGenerateContent` endpoints.
|
||||||
- Anthropic protocol: Claude-native API behavior.
|
- Anthropic protocol: Claude-native API behavior.
|
||||||
- Codex/OAuth path: OpenAI OAuth/token authentication route.
|
- Codex/OAuth path: OpenAI OAuth/token authentication route.
|
||||||
|
|
|
||||||
|
|
@ -55,6 +55,7 @@ Este design também permite **suporte multi-agente** com seleção flexível de
|
||||||
| **OpenRouter** | `openrouter/` | `https://openrouter.ai/api/v1` | OpenAI | [Get Key](https://openrouter.ai/keys) |
|
| **OpenRouter** | `openrouter/` | `https://openrouter.ai/api/v1` | OpenAI | [Get Key](https://openrouter.ai/keys) |
|
||||||
| **LiteLLM Proxy** | `litellm/` | `http://localhost:4000/v1` | OpenAI | Your LiteLLM proxy key |
|
| **LiteLLM Proxy** | `litellm/` | `http://localhost:4000/v1` | OpenAI | Your LiteLLM proxy key |
|
||||||
| **VLLM** | `vllm/` | `http://localhost:8000/v1` | OpenAI | Local |
|
| **VLLM** | `vllm/` | `http://localhost:8000/v1` | OpenAI | Local |
|
||||||
|
| **OVMS** | `ovms/` | `http://localhost:8000/v3` | OpenAI | Local |
|
||||||
| **Cerebras** | `cerebras/` | `https://api.cerebras.ai/v1` | OpenAI | [Get Key](https://cerebras.ai) |
|
| **Cerebras** | `cerebras/` | `https://api.cerebras.ai/v1` | OpenAI | [Get Key](https://cerebras.ai) |
|
||||||
| **VolcEngine (Doubao)** | `volcengine/` | `https://ark.cn-beijing.volces.com/api/v3` | OpenAI | [Get Key](https://www.volcengine.com/activity/codingplan?utm_campaign=PicoClaw&utm_content=PicoClaw&utm_medium=devrel&utm_source=OWO&utm_term=PicoClaw) |
|
| **VolcEngine (Doubao)** | `volcengine/` | `https://ark.cn-beijing.volces.com/api/v3` | OpenAI | [Get Key](https://www.volcengine.com/activity/codingplan?utm_campaign=PicoClaw&utm_content=PicoClaw&utm_medium=devrel&utm_source=OWO&utm_term=PicoClaw) |
|
||||||
| **神算云** | `shengsuanyun/` | `https://router.shengsuanyun.com/api/v1` | OpenAI | - |
|
| **神算云** | `shengsuanyun/` | `https://router.shengsuanyun.com/api/v1` | OpenAI | - |
|
||||||
|
|
@ -105,7 +106,7 @@ Este design também permite **suporte multi-agente** com seleção flexível de
|
||||||
|-------|------|-------------|-----------|
|
|-------|------|-------------|-----------|
|
||||||
| `model_name` | string | Sim | Nome único para referenciar este modelo na config do agent |
|
| `model_name` | string | Sim | Nome único para referenciar este modelo na config do agent |
|
||||||
| `model` | string | Sim | Identificador fornecedor/modelo (ex: `openai/gpt-5.4`, `azure/gpt-5.4`, `anthropic/claude-sonnet-4.6`) |
|
| `model` | string | Sim | Identificador fornecedor/modelo (ex: `openai/gpt-5.4`, `azure/gpt-5.4`, `anthropic/claude-sonnet-4.6`) |
|
||||||
| `api_keys` | string[] | Sim* | Chave(s) API para autenticação. Múltiplas chaves permitem rotação por requisição. Não necessário para providers locais (Ollama, LM Studio, VLLM) |
|
| `api_keys` | string[] | Sim* | Chave(s) API para autenticação. Múltiplas chaves permitem rotação por requisição. Não necessário para providers locais (Ollama, LM Studio, VLLM, OVMS) |
|
||||||
| `api_base` | string | Não | Substitui a URL base da API padrão |
|
| `api_base` | string | Não | Substitui a URL base da API padrão |
|
||||||
| `proxy` | string | Não | URL do proxy HTTP para esta entrada de modelo |
|
| `proxy` | string | Não | URL do proxy HTTP para esta entrada de modelo |
|
||||||
| `user_agent` | string | Não | Cabeçalho `User-Agent` personalizado enviado com requisições API (suportado por providers OpenAI-compatible, Gemini, Anthropic e Azure) |
|
| `user_agent` | string | Não | Cabeçalho `User-Agent` personalizado enviado com requisições API (suportado por providers OpenAI-compatible, Gemini, Anthropic e Azure) |
|
||||||
|
|
@ -298,7 +299,7 @@ Para guia de migração detalhado, veja [migration/model-list-migration.md](../m
|
||||||
|
|
||||||
O PicoClaw roteia provedores por família de protocolo:
|
O PicoClaw roteia provedores por família de protocolo:
|
||||||
|
|
||||||
- Protocolo compatível com OpenAI: OpenRouter, gateways compatíveis com OpenAI, Groq, Zhipu e endpoints estilo vLLM.
|
- Protocolo compatível com OpenAI: OpenRouter, gateways compatíveis com OpenAI, Groq, Zhipu, endpoints estilo vLLM e OVMS.
|
||||||
- Protocolo Gemini nativo: Google Gemini via endpoints nativos `models/*:generateContent` e `models/*:streamGenerateContent`.
|
- Protocolo Gemini nativo: Google Gemini via endpoints nativos `models/*:generateContent` e `models/*:streamGenerateContent`.
|
||||||
- Protocolo Anthropic: Comportamento nativo da API Claude.
|
- Protocolo Anthropic: Comportamento nativo da API Claude.
|
||||||
- Caminho Codex/OAuth: Rota de autenticação OAuth/token da OpenAI.
|
- Caminho Codex/OAuth: Rota de autenticação OAuth/token da OpenAI.
|
||||||
|
|
|
||||||
|
|
@ -55,6 +55,7 @@ Thiết kế này cũng cho phép **hỗ trợ đa agent** với lựa chọn pr
|
||||||
| **OpenRouter** | `openrouter/` | `https://openrouter.ai/api/v1` | OpenAI | [Get Key](https://openrouter.ai/keys) |
|
| **OpenRouter** | `openrouter/` | `https://openrouter.ai/api/v1` | OpenAI | [Get Key](https://openrouter.ai/keys) |
|
||||||
| **LiteLLM Proxy** | `litellm/` | `http://localhost:4000/v1` | OpenAI | Your LiteLLM proxy key |
|
| **LiteLLM Proxy** | `litellm/` | `http://localhost:4000/v1` | OpenAI | Your LiteLLM proxy key |
|
||||||
| **VLLM** | `vllm/` | `http://localhost:8000/v1` | OpenAI | Local |
|
| **VLLM** | `vllm/` | `http://localhost:8000/v1` | OpenAI | Local |
|
||||||
|
| **OVMS** | `ovms/` | `http://localhost:8000/v3` | OpenAI | Local |
|
||||||
| **Cerebras** | `cerebras/` | `https://api.cerebras.ai/v1` | OpenAI | [Get Key](https://cerebras.ai) |
|
| **Cerebras** | `cerebras/` | `https://api.cerebras.ai/v1` | OpenAI | [Get Key](https://cerebras.ai) |
|
||||||
| **VolcEngine (Doubao)** | `volcengine/` | `https://ark.cn-beijing.volces.com/api/v3` | OpenAI | [Get Key](https://www.volcengine.com/activity/codingplan?utm_campaign=PicoClaw&utm_content=PicoClaw&utm_medium=devrel&utm_source=OWO&utm_term=PicoClaw) |
|
| **VolcEngine (Doubao)** | `volcengine/` | `https://ark.cn-beijing.volces.com/api/v3` | OpenAI | [Get Key](https://www.volcengine.com/activity/codingplan?utm_campaign=PicoClaw&utm_content=PicoClaw&utm_medium=devrel&utm_source=OWO&utm_term=PicoClaw) |
|
||||||
| **神算云** | `shengsuanyun/` | `https://router.shengsuanyun.com/api/v1` | OpenAI | - |
|
| **神算云** | `shengsuanyun/` | `https://router.shengsuanyun.com/api/v1` | OpenAI | - |
|
||||||
|
|
@ -105,7 +106,7 @@ Thiết kế này cũng cho phép **hỗ trợ đa agent** với lựa chọn pr
|
||||||
|--------|------|----------|------|
|
|--------|------|----------|------|
|
||||||
| `model_name` | string | Có | Tên duy nhất để tham chiếu model này trong cấu hình agent |
|
| `model_name` | string | Có | Tên duy nhất để tham chiếu model này trong cấu hình agent |
|
||||||
| `model` | string | Có | Định danh nhà cung cấp/model (ví dụ: `openai/gpt-5.4`, `azure/gpt-5.4`, `anthropic/claude-sonnet-4.6`) |
|
| `model` | string | Có | Định danh nhà cung cấp/model (ví dụ: `openai/gpt-5.4`, `azure/gpt-5.4`, `anthropic/claude-sonnet-4.6`) |
|
||||||
| `api_keys` | string[] | Có* | Khóa API xác thực. Nhiều khóa cho phép xoay vòng theo yêu cầu. Không cần thiết cho provider nội bộ (Ollama, LM Studio, VLLM) |
|
| `api_keys` | string[] | Có* | Khóa API xác thực. Nhiều khóa cho phép xoay vòng theo yêu cầu. Không cần thiết cho provider nội bộ (Ollama, LM Studio, VLLM, OVMS) |
|
||||||
| `api_base` | string | Không | Ghi đè URL endpoint API mặc định |
|
| `api_base` | string | Không | Ghi đè URL endpoint API mặc định |
|
||||||
| `proxy` | string | Không | URL proxy HTTP cho entry model này |
|
| `proxy` | string | Không | URL proxy HTTP cho entry model này |
|
||||||
| `user_agent` | string | Không | Header `User-Agent` tùy chỉnh gửi với yêu cầu API (được hỗ trợ bởi provider OpenAI-compatible, Gemini, Anthropic và Azure) |
|
| `user_agent` | string | Không | Header `User-Agent` tùy chỉnh gửi với yêu cầu API (được hỗ trợ bởi provider OpenAI-compatible, Gemini, Anthropic và Azure) |
|
||||||
|
|
@ -298,7 +299,7 @@ Cấu hình `providers` cũ đã **bị deprecated** và đã được loại b
|
||||||
|
|
||||||
PicoClaw định tuyến provider theo họ giao thức:
|
PicoClaw định tuyến provider theo họ giao thức:
|
||||||
|
|
||||||
- Giao thức tương thích OpenAI: OpenRouter, gateway tương thích OpenAI, Groq, Zhipu, và endpoint kiểu vLLM.
|
- Giao thức tương thích OpenAI: OpenRouter, gateway tương thích OpenAI, Groq, Zhipu, endpoint kiểu vLLM và OVMS.
|
||||||
- Giao thức Gemini native: Google Gemini qua các endpoint native `models/*:generateContent` và `models/*:streamGenerateContent`.
|
- Giao thức Gemini native: Google Gemini qua các endpoint native `models/*:generateContent` và `models/*:streamGenerateContent`.
|
||||||
- Giao thức Anthropic: Hành vi API native của Claude.
|
- Giao thức Anthropic: Hành vi API native của Claude.
|
||||||
- Đường dẫn Codex/OAuth: Tuyến xác thực OAuth/token của OpenAI.
|
- Đường dẫn Codex/OAuth: Tuyến xác thực OAuth/token của OpenAI.
|
||||||
|
|
|
||||||
|
|
@ -62,6 +62,7 @@
|
||||||
| **OpenRouter** | `openrouter` | `https://openrouter.ai/api/v1` | OpenAI | [获取密钥](https://openrouter.ai/keys) |
|
| **OpenRouter** | `openrouter` | `https://openrouter.ai/api/v1` | OpenAI | [获取密钥](https://openrouter.ai/keys) |
|
||||||
| **LiteLLM Proxy** | `litellm` | `http://localhost:4000/v1` | OpenAI | 你的 LiteLLM 代理密钥 |
|
| **LiteLLM Proxy** | `litellm` | `http://localhost:4000/v1` | OpenAI | 你的 LiteLLM 代理密钥 |
|
||||||
| **VLLM** | `vllm` | `http://localhost:8000/v1` | OpenAI | 本地 |
|
| **VLLM** | `vllm` | `http://localhost:8000/v1` | OpenAI | 本地 |
|
||||||
|
| **OVMS** | `ovms` | `http://localhost:8000/v3` | OpenAI | 本地(无需密钥) |
|
||||||
| **Cerebras** | `cerebras` | `https://api.cerebras.ai/v1` | OpenAI | [获取密钥](https://cerebras.ai) |
|
| **Cerebras** | `cerebras` | `https://api.cerebras.ai/v1` | OpenAI | [获取密钥](https://cerebras.ai) |
|
||||||
| **火山引擎(Doubao)** | `volcengine` | `https://ark.cn-beijing.volces.com/api/v3` | OpenAI | [获取密钥](https://www.volcengine.com/activity/codingplan?utm_campaign=PicoClaw&utm_content=PicoClaw&utm_medium=devrel&utm_source=OWO&utm_term=PicoClaw) |
|
| **火山引擎(Doubao)** | `volcengine` | `https://ark.cn-beijing.volces.com/api/v3` | OpenAI | [获取密钥](https://www.volcengine.com/activity/codingplan?utm_campaign=PicoClaw&utm_content=PicoClaw&utm_medium=devrel&utm_source=OWO&utm_term=PicoClaw) |
|
||||||
| **神算云** | `shengsuanyun` | `https://router.shengsuanyun.com/api/v1` | OpenAI | - |
|
| **神算云** | `shengsuanyun` | `https://router.shengsuanyun.com/api/v1` | OpenAI | - |
|
||||||
|
|
@ -118,7 +119,7 @@
|
||||||
| `model_name` | string | 是 | 在 agent 配置中引用此模型的唯一名称 |
|
| `model_name` | string | 是 | 在 agent 配置中引用此模型的唯一名称 |
|
||||||
| `provider` | string | 否 | 推荐的 provider 标识。设置后,PicoClaw 会将 `model` 原样发送给该 provider |
|
| `provider` | string | 否 | 推荐的 provider 标识。设置后,PicoClaw 会将 `model` 原样发送给该 provider |
|
||||||
| `model` | string | 是 | 当设置 `provider` 时,这里填写 provider 原生模型 ID。若未设置 `provider`,仍兼容旧的 `provider/model` 写法 |
|
| `model` | string | 是 | 当设置 `provider` 时,这里填写 provider 原生模型 ID。若未设置 `provider`,仍兼容旧的 `provider/model` 写法 |
|
||||||
| `api_keys` | string[] | 是* | 认证密钥。多个密钥可按请求轮换。本地 provider(Ollama、LM Studio、VLLM)不需要 |
|
| `api_keys` | string[] | 是* | 认证密钥。多个密钥可按请求轮换。本地 provider(Ollama、LM Studio、VLLM、OVMS)不需要 |
|
||||||
| `api_base` | string | 否 | 覆盖默认的 API 端点 URL |
|
| `api_base` | string | 否 | 覆盖默认的 API 端点 URL |
|
||||||
| `proxy` | string | 否 | 此模型条目的 HTTP 代理 URL |
|
| `proxy` | string | 否 | 此模型条目的 HTTP 代理 URL |
|
||||||
| `user_agent` | string | 否 | 自定义 `User-Agent` 请求头(支持 OpenAI 兼容、Gemini、Anthropic 和 Azure provider) |
|
| `user_agent` | string | 否 | 自定义 `User-Agent` 请求头(支持 OpenAI 兼容、Gemini、Anthropic 和 Azure provider) |
|
||||||
|
|
@ -421,7 +422,7 @@ PicoClaw 按下面的规则解析 `provider` 和最终发给上游的模型 ID
|
||||||
|
|
||||||
PicoClaw 按协议族路由 Provider:
|
PicoClaw 按协议族路由 Provider:
|
||||||
|
|
||||||
- OpenAI 兼容协议:OpenRouter、OpenAI 兼容网关、Groq、智谱、vLLM 风格端点。
|
- OpenAI 兼容协议:OpenRouter、OpenAI 兼容网关、Groq、智谱、vLLM 风格端点和 OVMS。
|
||||||
- Gemini 原生协议:Google Gemini 通过原生 `models/*:generateContent` 和 `models/*:streamGenerateContent` 端点接入。
|
- Gemini 原生协议:Google Gemini 通过原生 `models/*:generateContent` 和 `models/*:streamGenerateContent` 端点接入。
|
||||||
- Anthropic 协议:Claude 原生 API 行为。
|
- Anthropic 协议:Claude 原生 API 行为。
|
||||||
- Codex/OAuth 路径:OpenAI OAuth/Token 认证路由。
|
- Codex/OAuth 路径:OpenAI OAuth/Token 认证路由。
|
||||||
|
|
|
||||||
|
|
@ -403,13 +403,14 @@ PicoClaw supporte plus de 30 providers LLM via la configuration `model_list`. Ut
|
||||||
| [Xiaomi MiMo](https://platform.xiaomimimo.com/) | `mimo/` | Requise | Modèles MiMo |
|
| [Xiaomi MiMo](https://platform.xiaomimimo.com/) | `mimo/` | Requise | Modèles MiMo |
|
||||||
| [Ollama](https://ollama.com/) | `ollama/` | Non requise | Modèles locaux, auto-hébergé |
|
| [Ollama](https://ollama.com/) | `ollama/` | Non requise | Modèles locaux, auto-hébergé |
|
||||||
| [vLLM](https://docs.vllm.ai/) | `vllm/` | Non requise | Déploiement local, compatible OpenAI |
|
| [vLLM](https://docs.vllm.ai/) | `vllm/` | Non requise | Déploiement local, compatible OpenAI |
|
||||||
|
| [OVMS](https://docs.openvino.ai/2026/model-server/ovms_docs_llm_quickstart.html) | `ovms/` | Non requise | Intel OpenVINO Model Server, compatible OpenAI |
|
||||||
| [LiteLLM](https://docs.litellm.ai/) | `litellm/` | Variable | Proxy pour 100+ providers |
|
| [LiteLLM](https://docs.litellm.ai/) | `litellm/` | Variable | Proxy pour 100+ providers |
|
||||||
| [Azure OpenAI](https://portal.azure.com/) | `azure/` | Requise | Déploiement Azure entreprise |
|
| [Azure OpenAI](https://portal.azure.com/) | `azure/` | Requise | Déploiement Azure entreprise |
|
||||||
| [GitHub Copilot](https://github.com/features/copilot) | `github-copilot/` | OAuth | Connexion par code appareil |
|
| [GitHub Copilot](https://github.com/features/copilot) | `github-copilot/` | OAuth | Connexion par code appareil |
|
||||||
| [Antigravity](https://console.cloud.google.com/) | `antigravity/` | OAuth | Google Cloud AI |
|
| [Antigravity](https://console.cloud.google.com/) | `antigravity/` | OAuth | Google Cloud AI |
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary><b>Déploiement local (Ollama, vLLM, etc.)</b></summary>
|
<summary><b>Déploiement local (Ollama, vLLM, OVMS, etc.)</b></summary>
|
||||||
|
|
||||||
**Ollama :**
|
**Ollama :**
|
||||||
```json
|
```json
|
||||||
|
|
@ -437,6 +438,19 @@ PicoClaw supporte plus de 30 providers LLM via la configuration `model_list`. Ut
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**OVMS (OpenVINO Model Server) :**
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"model_list": [
|
||||||
|
{
|
||||||
|
"model_name": "local-ovms",
|
||||||
|
"model": "ovms/your-model",
|
||||||
|
"api_base": "http://localhost:8000/v3"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
Pour les détails complets de configuration des providers, voir [Providers & Models](../guides/providers.fr.md).
|
Pour les détails complets de configuration des providers, voir [Providers & Models](../guides/providers.fr.md).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
||||||
|
|
@ -398,13 +398,14 @@ PicoClaw mendukung 30+ provider LLM melalui konfigurasi `model_list`. Gunakan fo
|
||||||
| [Xiaomi MiMo](https://platform.xiaomimimo.com/) | `mimo/` | Diperlukan | Model MiMo |
|
| [Xiaomi MiMo](https://platform.xiaomimimo.com/) | `mimo/` | Diperlukan | Model MiMo |
|
||||||
| [Ollama](https://ollama.com/) | `ollama/` | Tidak perlu | Model lokal, self-hosted |
|
| [Ollama](https://ollama.com/) | `ollama/` | Tidak perlu | Model lokal, self-hosted |
|
||||||
| [vLLM](https://docs.vllm.ai/) | `vllm/` | Tidak perlu | Deploy lokal, kompatibel OpenAI |
|
| [vLLM](https://docs.vllm.ai/) | `vllm/` | Tidak perlu | Deploy lokal, kompatibel OpenAI |
|
||||||
|
| [OVMS](https://docs.openvino.ai/2026/model-server/ovms_docs_llm_quickstart.html) | `ovms/` | Tidak perlu | Intel OpenVINO Model Server, kompatibel OpenAI |
|
||||||
| [LiteLLM](https://docs.litellm.ai/) | `litellm/` | Bervariasi | Proxy untuk 100+ provider |
|
| [LiteLLM](https://docs.litellm.ai/) | `litellm/` | Bervariasi | Proxy untuk 100+ provider |
|
||||||
| [Azure OpenAI](https://portal.azure.com/) | `azure/` | Diperlukan | Deploy Azure enterprise |
|
| [Azure OpenAI](https://portal.azure.com/) | `azure/` | Diperlukan | Deploy Azure enterprise |
|
||||||
| [GitHub Copilot](https://github.com/features/copilot) | `github-copilot/` | OAuth | Login dengan device code |
|
| [GitHub Copilot](https://github.com/features/copilot) | `github-copilot/` | OAuth | Login dengan device code |
|
||||||
| [Antigravity](https://console.cloud.google.com/) | `antigravity/` | OAuth | Google Cloud AI |
|
| [Antigravity](https://console.cloud.google.com/) | `antigravity/` | OAuth | Google Cloud AI |
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary><b>Deploy lokal (Ollama, vLLM, dll.)</b></summary>
|
<summary><b>Deploy lokal (Ollama, vLLM, OVMS, dll.)</b></summary>
|
||||||
|
|
||||||
**Ollama:**
|
**Ollama:**
|
||||||
```json
|
```json
|
||||||
|
|
@ -432,6 +433,19 @@ PicoClaw mendukung 30+ provider LLM melalui konfigurasi `model_list`. Gunakan fo
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**OVMS (OpenVINO Model Server):**
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"model_list": [
|
||||||
|
{
|
||||||
|
"model_name": "local-ovms",
|
||||||
|
"model": "ovms/your-model",
|
||||||
|
"api_base": "http://localhost:8000/v3"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
Untuk detail konfigurasi provider lengkap, lihat [Providers & Models](../guides/providers.md).
|
Untuk detail konfigurasi provider lengkap, lihat [Providers & Models](../guides/providers.md).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
||||||
|
|
@ -398,13 +398,14 @@ PicoClaw supporta 30+ provider LLM tramite la configurazione `model_list`. Usa i
|
||||||
| [Xiaomi MiMo](https://platform.xiaomimimo.com/) | `mimo/` | Richiesta | Modelli MiMo |
|
| [Xiaomi MiMo](https://platform.xiaomimimo.com/) | `mimo/` | Richiesta | Modelli MiMo |
|
||||||
| [Ollama](https://ollama.com/) | `ollama/` | Non necessaria | Modelli locali, self-hosted |
|
| [Ollama](https://ollama.com/) | `ollama/` | Non necessaria | Modelli locali, self-hosted |
|
||||||
| [vLLM](https://docs.vllm.ai/) | `vllm/` | Non necessaria | Deploy locale, compatibile OpenAI |
|
| [vLLM](https://docs.vllm.ai/) | `vllm/` | Non necessaria | Deploy locale, compatibile OpenAI |
|
||||||
|
| [OVMS](https://docs.openvino.ai/2026/model-server/ovms_docs_llm_quickstart.html) | `ovms/` | Non necessaria | Intel OpenVINO Model Server, compatibile OpenAI |
|
||||||
| [LiteLLM](https://docs.litellm.ai/) | `litellm/` | Variabile | Proxy per 100+ provider |
|
| [LiteLLM](https://docs.litellm.ai/) | `litellm/` | Variabile | Proxy per 100+ provider |
|
||||||
| [Azure OpenAI](https://portal.azure.com/) | `azure/` | Richiesta | Deploy Azure enterprise |
|
| [Azure OpenAI](https://portal.azure.com/) | `azure/` | Richiesta | Deploy Azure enterprise |
|
||||||
| [GitHub Copilot](https://github.com/features/copilot) | `github-copilot/` | OAuth | Login con device code |
|
| [GitHub Copilot](https://github.com/features/copilot) | `github-copilot/` | OAuth | Login con device code |
|
||||||
| [Antigravity](https://console.cloud.google.com/) | `antigravity/` | OAuth | Google Cloud AI |
|
| [Antigravity](https://console.cloud.google.com/) | `antigravity/` | OAuth | Google Cloud AI |
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary><b>Deploy locale (Ollama, vLLM, ecc.)</b></summary>
|
<summary><b>Deploy locale (Ollama, vLLM, OVMS, ecc.)</b></summary>
|
||||||
|
|
||||||
**Ollama:**
|
**Ollama:**
|
||||||
```json
|
```json
|
||||||
|
|
@ -432,6 +433,19 @@ PicoClaw supporta 30+ provider LLM tramite la configurazione `model_list`. Usa i
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**OVMS (OpenVINO Model Server):**
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"model_list": [
|
||||||
|
{
|
||||||
|
"model_name": "local-ovms",
|
||||||
|
"model": "ovms/your-model",
|
||||||
|
"api_base": "http://localhost:8000/v3"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
Per i dettagli completi sulla configurazione dei provider, vedi [Provider & Modelli](../guides/providers.md).
|
Per i dettagli completi sulla configurazione dei provider, vedi [Provider & Modelli](../guides/providers.md).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
||||||
|
|
@ -399,13 +399,14 @@ PicoClaw は `model_list` 設定を通じて 30 以上の LLM Provider をサポ
|
||||||
| [Xiaomi MiMo](https://platform.xiaomimimo.com/) | `mimo/` | 必須 | MiMo モデル |
|
| [Xiaomi MiMo](https://platform.xiaomimimo.com/) | `mimo/` | 必須 | MiMo モデル |
|
||||||
| [Ollama](https://ollama.com/) | `ollama/` | 不要 | ローカルモデル、セルフホスト |
|
| [Ollama](https://ollama.com/) | `ollama/` | 不要 | ローカルモデル、セルフホスト |
|
||||||
| [vLLM](https://docs.vllm.ai/) | `vllm/` | 不要 | ローカルデプロイ、OpenAI 互換 |
|
| [vLLM](https://docs.vllm.ai/) | `vllm/` | 不要 | ローカルデプロイ、OpenAI 互換 |
|
||||||
|
| [OVMS](https://docs.openvino.ai/2026/model-server/ovms_docs_llm_quickstart.html) | `ovms/` | 不要 | Intel OpenVINO Model Server、OpenAI 互換 |
|
||||||
| [LiteLLM](https://docs.litellm.ai/) | `litellm/` | 場合による | 100 以上の Provider のプロキシ |
|
| [LiteLLM](https://docs.litellm.ai/) | `litellm/` | 場合による | 100 以上の Provider のプロキシ |
|
||||||
| [Azure OpenAI](https://portal.azure.com/) | `azure/` | 必須 | エンタープライズ Azure デプロイ |
|
| [Azure OpenAI](https://portal.azure.com/) | `azure/` | 必須 | エンタープライズ Azure デプロイ |
|
||||||
| [GitHub Copilot](https://github.com/features/copilot) | `github-copilot/` | OAuth | デバイスコードログイン |
|
| [GitHub Copilot](https://github.com/features/copilot) | `github-copilot/` | OAuth | デバイスコードログイン |
|
||||||
| [Antigravity](https://console.cloud.google.com/) | `antigravity/` | OAuth | Google Cloud AI |
|
| [Antigravity](https://console.cloud.google.com/) | `antigravity/` | OAuth | Google Cloud AI |
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary><b>ローカルデプロイ(Ollama、vLLM など)</b></summary>
|
<summary><b>ローカルデプロイ(Ollama、vLLM、OVMS など)</b></summary>
|
||||||
|
|
||||||
**Ollama:**
|
**Ollama:**
|
||||||
```json
|
```json
|
||||||
|
|
@ -433,6 +434,19 @@ PicoClaw は `model_list` 設定を通じて 30 以上の LLM Provider をサポ
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**OVMS (OpenVINO Model Server):**
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"model_list": [
|
||||||
|
{
|
||||||
|
"model_name": "local-ovms",
|
||||||
|
"model": "ovms/your-model",
|
||||||
|
"api_base": "http://localhost:8000/v3"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
Provider の完全な設定詳細は [Provider とモデル](../guides/providers.ja.md) を参照してください。
|
Provider の完全な設定詳細は [Provider とモデル](../guides/providers.ja.md) を参照してください。
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
||||||
|
|
@ -394,6 +394,7 @@ PicoClaw menyokong 30+ penyedia LLM melalui konfigurasi `model_list`. Gunakan fo
|
||||||
| [Xiaomi MiMo](https://platform.xiaomimimo.com/) | `mimo/` | Diperlukan | Model MiMo |
|
| [Xiaomi MiMo](https://platform.xiaomimimo.com/) | `mimo/` | Diperlukan | Model MiMo |
|
||||||
| [Ollama](https://ollama.com/) | `ollama/` | Tidak perlu | Model tempatan, self-hosted |
|
| [Ollama](https://ollama.com/) | `ollama/` | Tidak perlu | Model tempatan, self-hosted |
|
||||||
| [vLLM](https://docs.vllm.ai/) | `vllm/` | Tidak perlu | Deployment tempatan, serasi OpenAI |
|
| [vLLM](https://docs.vllm.ai/) | `vllm/` | Tidak perlu | Deployment tempatan, serasi OpenAI |
|
||||||
|
| [OVMS](https://docs.openvino.ai/2026/model-server/ovms_docs_llm_quickstart.html) | `ovms/` | Tidak perlu | Intel OpenVINO Model Server, serasi OpenAI |
|
||||||
| [LiteLLM](https://docs.litellm.ai/) | `litellm/` | Berbeza | Proksi untuk 100+ penyedia |
|
| [LiteLLM](https://docs.litellm.ai/) | `litellm/` | Berbeza | Proksi untuk 100+ penyedia |
|
||||||
| [Azure OpenAI](https://portal.azure.com/) | `azure/` | Diperlukan | Deployment Azure perusahaan |
|
| [Azure OpenAI](https://portal.azure.com/) | `azure/` | Diperlukan | Deployment Azure perusahaan |
|
||||||
| [GitHub Copilot](https://github.com/features/copilot) | `github-copilot/` | OAuth | Log masuk kod peranti |
|
| [GitHub Copilot](https://github.com/features/copilot) | `github-copilot/` | OAuth | Log masuk kod peranti |
|
||||||
|
|
@ -403,7 +404,7 @@ PicoClaw menyokong 30+ penyedia LLM melalui konfigurasi `model_list`. Gunakan fo
|
||||||
> \* AWS Bedrock memerlukan tag binaan: `go build -tags bedrock`. Tetapkan `api_base` kepada nama rantau (cth. `us-east-1`) untuk resolusi endpoint automatik merentasi semua partition AWS. Apabila menggunakan URL endpoint penuh, anda juga perlu mengkonfigurasi `AWS_REGION` melalui pemboleh ubah persekitaran.
|
> \* AWS Bedrock memerlukan tag binaan: `go build -tags bedrock`. Tetapkan `api_base` kepada nama rantau (cth. `us-east-1`) untuk resolusi endpoint automatik merentasi semua partition AWS. Apabila menggunakan URL endpoint penuh, anda juga perlu mengkonfigurasi `AWS_REGION` melalui pemboleh ubah persekitaran.
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary><b>Deployment tempatan (Ollama, vLLM, dll.)</b></summary>
|
<summary><b>Deployment tempatan (Ollama, vLLM, OVMS, dll.)</b></summary>
|
||||||
|
|
||||||
**Ollama:**
|
**Ollama:**
|
||||||
```json
|
```json
|
||||||
|
|
@ -431,6 +432,19 @@ PicoClaw menyokong 30+ penyedia LLM melalui konfigurasi `model_list`. Gunakan fo
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**OVMS (OpenVINO Model Server):**
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"model_list": [
|
||||||
|
{
|
||||||
|
"model_name": "local-ovms",
|
||||||
|
"model": "ovms/your-model",
|
||||||
|
"api_base": "http://localhost:8000/v3"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
Untuk butiran konfigurasi penyedia penuh, lihat [Penyedia & Model](../guides/providers.md).
|
Untuk butiran konfigurasi penyedia penuh, lihat [Penyedia & Model](../guides/providers.md).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
||||||
|
|
@ -399,13 +399,14 @@ O PicoClaw suporta mais de 30 providers de LLM através da configuração `model
|
||||||
| [Xiaomi MiMo](https://platform.xiaomimimo.com/) | `mimo/` | Obrigatória | Modelos MiMo |
|
| [Xiaomi MiMo](https://platform.xiaomimimo.com/) | `mimo/` | Obrigatória | Modelos MiMo |
|
||||||
| [Ollama](https://ollama.com/) | `ollama/` | Não necessária | Modelos locais, self-hosted |
|
| [Ollama](https://ollama.com/) | `ollama/` | Não necessária | Modelos locais, self-hosted |
|
||||||
| [vLLM](https://docs.vllm.ai/) | `vllm/` | Não necessária | Implantação local, compatível com OpenAI |
|
| [vLLM](https://docs.vllm.ai/) | `vllm/` | Não necessária | Implantação local, compatível com OpenAI |
|
||||||
|
| [OVMS](https://docs.openvino.ai/2026/model-server/ovms_docs_llm_quickstart.html) | `ovms/` | Não necessária | Intel OpenVINO Model Server, compatível com OpenAI |
|
||||||
| [LiteLLM](https://docs.litellm.ai/) | `litellm/` | Varia | Proxy para 100+ providers |
|
| [LiteLLM](https://docs.litellm.ai/) | `litellm/` | Varia | Proxy para 100+ providers |
|
||||||
| [Azure OpenAI](https://portal.azure.com/) | `azure/` | Obrigatória | Implantação Azure Enterprise |
|
| [Azure OpenAI](https://portal.azure.com/) | `azure/` | Obrigatória | Implantação Azure Enterprise |
|
||||||
| [GitHub Copilot](https://github.com/features/copilot) | `github-copilot/` | OAuth | Login por código de dispositivo |
|
| [GitHub Copilot](https://github.com/features/copilot) | `github-copilot/` | OAuth | Login por código de dispositivo |
|
||||||
| [Antigravity](https://console.cloud.google.com/) | `antigravity/` | OAuth | Google Cloud AI |
|
| [Antigravity](https://console.cloud.google.com/) | `antigravity/` | OAuth | Google Cloud AI |
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary><b>Implantação local (Ollama, vLLM, etc.)</b></summary>
|
<summary><b>Implantação local (Ollama, vLLM, OVMS, etc.)</b></summary>
|
||||||
|
|
||||||
**Ollama:**
|
**Ollama:**
|
||||||
```json
|
```json
|
||||||
|
|
@ -433,6 +434,19 @@ O PicoClaw suporta mais de 30 providers de LLM através da configuração `model
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**OVMS (OpenVINO Model Server):**
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"model_list": [
|
||||||
|
{
|
||||||
|
"model_name": "local-ovms",
|
||||||
|
"model": "ovms/your-model",
|
||||||
|
"api_base": "http://localhost:8000/v3"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
Para detalhes completos de configuração de providers, veja [Providers & Models](../guides/providers.pt-br.md).
|
Para detalhes completos de configuração de providers, veja [Providers & Models](../guides/providers.pt-br.md).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
||||||
|
|
@ -399,13 +399,14 @@ PicoClaw hỗ trợ 30+ Provider LLM thông qua cấu hình `model_list`. Sử d
|
||||||
| [Xiaomi MiMo](https://platform.xiaomimimo.com/) | `mimo/` | Bắt buộc | Mô hình MiMo |
|
| [Xiaomi MiMo](https://platform.xiaomimimo.com/) | `mimo/` | Bắt buộc | Mô hình MiMo |
|
||||||
| [Ollama](https://ollama.com/) | `ollama/` | Không cần | Mô hình cục bộ, tự lưu trữ |
|
| [Ollama](https://ollama.com/) | `ollama/` | Không cần | Mô hình cục bộ, tự lưu trữ |
|
||||||
| [vLLM](https://docs.vllm.ai/) | `vllm/` | Không cần | Triển khai cục bộ, tương thích OpenAI |
|
| [vLLM](https://docs.vllm.ai/) | `vllm/` | Không cần | Triển khai cục bộ, tương thích OpenAI |
|
||||||
|
| [OVMS](https://docs.openvino.ai/2026/model-server/ovms_docs_llm_quickstart.html) | `ovms/` | Không cần | Intel OpenVINO Model Server, tương thích OpenAI |
|
||||||
| [LiteLLM](https://docs.litellm.ai/) | `litellm/` | Tùy | Proxy cho 100+ provider |
|
| [LiteLLM](https://docs.litellm.ai/) | `litellm/` | Tùy | Proxy cho 100+ provider |
|
||||||
| [Azure OpenAI](https://portal.azure.com/) | `azure/` | Bắt buộc | Triển khai Azure doanh nghiệp |
|
| [Azure OpenAI](https://portal.azure.com/) | `azure/` | Bắt buộc | Triển khai Azure doanh nghiệp |
|
||||||
| [GitHub Copilot](https://github.com/features/copilot) | `github-copilot/` | OAuth | Đăng nhập bằng device code |
|
| [GitHub Copilot](https://github.com/features/copilot) | `github-copilot/` | OAuth | Đăng nhập bằng device code |
|
||||||
| [Antigravity](https://console.cloud.google.com/) | `antigravity/` | OAuth | Google Cloud AI |
|
| [Antigravity](https://console.cloud.google.com/) | `antigravity/` | OAuth | Google Cloud AI |
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary><b>Triển khai cục bộ (Ollama, vLLM, v.v.)</b></summary>
|
<summary><b>Triển khai cục bộ (Ollama, vLLM, OVMS, v.v.)</b></summary>
|
||||||
|
|
||||||
**Ollama:**
|
**Ollama:**
|
||||||
```json
|
```json
|
||||||
|
|
@ -433,6 +434,19 @@ PicoClaw hỗ trợ 30+ Provider LLM thông qua cấu hình `model_list`. Sử d
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**OVMS (OpenVINO Model Server):**
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"model_list": [
|
||||||
|
{
|
||||||
|
"model_name": "local-ovms",
|
||||||
|
"model": "ovms/your-model",
|
||||||
|
"api_base": "http://localhost:8000/v3"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
Để biết chi tiết cấu hình provider đầy đủ, xem [Providers & Models](../guides/providers.vi.md).
|
Để biết chi tiết cấu hình provider đầy đủ, xem [Providers & Models](../guides/providers.vi.md).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
||||||
|
|
@ -399,13 +399,14 @@ PicoClaw 通过 `model_list` 配置支持 30+ LLM Provider,使用 `协议/模
|
||||||
| [小米 MiMo](https://platform.xiaomimimo.com/) | `mimo/` | 必填 | MiMo 系列模型 |
|
| [小米 MiMo](https://platform.xiaomimimo.com/) | `mimo/` | 必填 | MiMo 系列模型 |
|
||||||
| [Ollama](https://ollama.com/) | `ollama/` | 无需 | 本地模型,自托管 |
|
| [Ollama](https://ollama.com/) | `ollama/` | 无需 | 本地模型,自托管 |
|
||||||
| [vLLM](https://docs.vllm.ai/) | `vllm/` | 无需 | 本地部署,兼容 OpenAI |
|
| [vLLM](https://docs.vllm.ai/) | `vllm/` | 无需 | 本地部署,兼容 OpenAI |
|
||||||
|
| [OVMS](https://docs.openvino.ai/2026/model-server/ovms_docs_llm_quickstart.html) | `ovms/` | 无需 | Intel OpenVINO Model Server,兼容 OpenAI |
|
||||||
| [LiteLLM](https://docs.litellm.ai/) | `litellm/` | 视情况 | 100+ Provider 代理 |
|
| [LiteLLM](https://docs.litellm.ai/) | `litellm/` | 视情况 | 100+ Provider 代理 |
|
||||||
| [Azure OpenAI](https://portal.azure.com/) | `azure/` | 必填 | 企业级 Azure 部署 |
|
| [Azure OpenAI](https://portal.azure.com/) | `azure/` | 必填 | 企业级 Azure 部署 |
|
||||||
| [GitHub Copilot](https://github.com/features/copilot) | `github-copilot/` | OAuth | 设备码登录 |
|
| [GitHub Copilot](https://github.com/features/copilot) | `github-copilot/` | OAuth | 设备码登录 |
|
||||||
| [Antigravity](https://console.cloud.google.com/) | `antigravity/` | OAuth | Google Cloud AI |
|
| [Antigravity](https://console.cloud.google.com/) | `antigravity/` | OAuth | Google Cloud AI |
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary><b>本地部署(Ollama、vLLM 等)</b></summary>
|
<summary><b>本地部署(Ollama、vLLM、OVMS 等)</b></summary>
|
||||||
|
|
||||||
**Ollama:**
|
**Ollama:**
|
||||||
```json
|
```json
|
||||||
|
|
@ -433,6 +434,19 @@ PicoClaw 通过 `model_list` 配置支持 30+ LLM Provider,使用 `协议/模
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**OVMS (OpenVINO Model Server):**
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"model_list": [
|
||||||
|
{
|
||||||
|
"model_name": "local-ovms",
|
||||||
|
"model": "ovms/your-model",
|
||||||
|
"api_base": "http://localhost:8000/v3"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
完整 Provider 配置详情请参阅 [Providers & Models](../guides/providers.zh.md)。
|
完整 Provider 配置详情请参阅 [Providers & Models](../guides/providers.zh.md)。
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@ func supportsAudioTranscription(modelCfg *config.ModelConfig) bool {
|
||||||
case "openai", "azure", "azure-openai",
|
case "openai", "azure", "azure-openai",
|
||||||
"litellm", "openrouter", "groq", "zhipu", "gemini", "nvidia",
|
"litellm", "openrouter", "groq", "zhipu", "gemini", "nvidia",
|
||||||
"ollama", "moonshot", "shengsuanyun", "deepseek", "cerebras",
|
"ollama", "moonshot", "shengsuanyun", "deepseek", "cerebras",
|
||||||
"vivgrid", "volcengine", "vllm", "qwen", "qwen-portal", "qwen-intl", "qwen-international", "dashscope-intl",
|
"vivgrid", "volcengine", "vllm", "ovms", "qwen", "qwen-portal", "qwen-intl", "qwen-international", "dashscope-intl",
|
||||||
"qwen-us", "dashscope-us", "mistral", "avian", "minimax", "longcat", "modelscope", "novita",
|
"qwen-us", "dashscope-us", "mistral", "avian", "minimax", "longcat", "modelscope", "novita",
|
||||||
"coding-plan", "alibaba-coding", "qwen-coding", "zai":
|
"coding-plan", "alibaba-coding", "qwen-coding", "zai":
|
||||||
// These protocols all go through the OpenAI-compatible or Azure provider path in
|
// These protocols all go through the OpenAI-compatible or Azure provider path in
|
||||||
|
|
@ -47,7 +47,7 @@ func supportsWhisperTranscription(modelCfg *config.ModelConfig) bool {
|
||||||
switch protocol {
|
switch protocol {
|
||||||
case "openai", "litellm", "openrouter", "groq", "zhipu", "gemini", "nvidia",
|
case "openai", "litellm", "openrouter", "groq", "zhipu", "gemini", "nvidia",
|
||||||
"ollama", "moonshot", "shengsuanyun", "deepseek", "cerebras",
|
"ollama", "moonshot", "shengsuanyun", "deepseek", "cerebras",
|
||||||
"vivgrid", "volcengine", "vllm", "qwen", "qwen-portal", "qwen-intl", "qwen-international", "dashscope-intl",
|
"vivgrid", "volcengine", "vllm", "ovms", "qwen", "qwen-portal", "qwen-intl", "qwen-international", "dashscope-intl",
|
||||||
"qwen-us", "dashscope-us", "mistral", "avian", "minimax", "longcat", "modelscope", "novita",
|
"qwen-us", "dashscope-us", "mistral", "avian", "minimax", "longcat", "modelscope", "novita",
|
||||||
"coding-plan", "alibaba-coding", "qwen-coding", "zai", "mimo":
|
"coding-plan", "alibaba-coding", "qwen-coding", "zai", "mimo":
|
||||||
return true
|
return true
|
||||||
|
|
|
||||||
|
|
@ -206,6 +206,35 @@ func TestDetectTranscriber(t *testing.T) {
|
||||||
},
|
},
|
||||||
wantName: "audio-model",
|
wantName: "audio-model",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "ovms voice model name selects audio model transcriber",
|
||||||
|
cfg: &config.Config{
|
||||||
|
Voice: config.VoiceConfig{ModelName: "local-ovms"},
|
||||||
|
ModelList: []*config.ModelConfig{
|
||||||
|
{
|
||||||
|
ModelName: "local-ovms",
|
||||||
|
Model: "ovms/custom-model",
|
||||||
|
APIBase: "http://localhost:8000/v3",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
wantName: "audio-model",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "ovms voice model name with whisper model selects whisper transcriber",
|
||||||
|
cfg: &config.Config{
|
||||||
|
Voice: config.VoiceConfig{ModelName: "local-ovms"},
|
||||||
|
ModelList: []*config.ModelConfig{
|
||||||
|
{
|
||||||
|
ModelName: "local-ovms",
|
||||||
|
Model: "ovms/whisper-large-v3",
|
||||||
|
APIBase: "http://localhost:8000/v3",
|
||||||
|
APIKeys: config.SimpleSecureStrings("sk-ovms-test"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
wantName: "whisper",
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, tc := range tests {
|
for _, tc := range tests {
|
||||||
|
|
|
||||||
|
|
@ -273,6 +273,14 @@ func DefaultConfig() *Config {
|
||||||
APIBase: "http://localhost:8000/v1",
|
APIBase: "http://localhost:8000/v1",
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// OVMS (local) - http://localhost:8000
|
||||||
|
{
|
||||||
|
ModelName: "local-ovms",
|
||||||
|
Provider: "ovms",
|
||||||
|
Model: "custom-model",
|
||||||
|
APIBase: "http://localhost:8000/v3",
|
||||||
|
},
|
||||||
|
|
||||||
// LM Studio (local) - http://localhost:1234
|
// LM Studio (local) - http://localhost:1234
|
||||||
{
|
{
|
||||||
ModelName: "lmstudio-local",
|
ModelName: "lmstudio-local",
|
||||||
|
|
|
||||||
|
|
@ -54,6 +54,7 @@ var protocolMetaByName = map[string]protocolMeta{
|
||||||
"alibaba-coding-anthropic": {defaultAPIBase: "https://coding-intl.dashscope.aliyuncs.com/apps/anthropic"},
|
"alibaba-coding-anthropic": {defaultAPIBase: "https://coding-intl.dashscope.aliyuncs.com/apps/anthropic"},
|
||||||
"zai": {defaultAPIBase: "https://api.z.ai/api/coding/paas/v4"},
|
"zai": {defaultAPIBase: "https://api.z.ai/api/coding/paas/v4"},
|
||||||
"vllm": {defaultAPIBase: "http://localhost:8000/v1", emptyAPIKeyAllowed: true},
|
"vllm": {defaultAPIBase: "http://localhost:8000/v1", emptyAPIKeyAllowed: true},
|
||||||
|
"ovms": {defaultAPIBase: "http://localhost:8000/v3", emptyAPIKeyAllowed: true},
|
||||||
"mistral": {defaultAPIBase: "https://api.mistral.ai/v1"},
|
"mistral": {defaultAPIBase: "https://api.mistral.ai/v1"},
|
||||||
"avian": {defaultAPIBase: "https://api.avian.io/v1"},
|
"avian": {defaultAPIBase: "https://api.avian.io/v1"},
|
||||||
"minimax": {defaultAPIBase: "https://api.minimaxi.com/v1"},
|
"minimax": {defaultAPIBase: "https://api.minimaxi.com/v1"},
|
||||||
|
|
@ -248,7 +249,7 @@ func CreateProviderFromConfig(cfg *config.ModelConfig) (LLMProvider, string, err
|
||||||
|
|
||||||
case "litellm", "lmstudio", "openrouter", "groq", "zhipu", "nvidia", "venice",
|
case "litellm", "lmstudio", "openrouter", "groq", "zhipu", "nvidia", "venice",
|
||||||
"ollama", "moonshot", "shengsuanyun", "deepseek", "cerebras",
|
"ollama", "moonshot", "shengsuanyun", "deepseek", "cerebras",
|
||||||
"vivgrid", "volcengine", "vllm", "qwen", "qwen-portal", "qwen-intl", "qwen-international", "dashscope-intl",
|
"vivgrid", "volcengine", "vllm", "ovms", "qwen", "qwen-portal", "qwen-intl", "qwen-international", "dashscope-intl",
|
||||||
"qwen-us", "dashscope-us", "mistral", "avian", "longcat", "modelscope", "novita",
|
"qwen-us", "dashscope-us", "mistral", "avian", "longcat", "modelscope", "novita",
|
||||||
"coding-plan", "alibaba-coding", "qwen-coding", "zai", "mimo":
|
"coding-plan", "alibaba-coding", "qwen-coding", "zai", "mimo":
|
||||||
// All other OpenAI-compatible HTTP providers
|
// All other OpenAI-compatible HTTP providers
|
||||||
|
|
|
||||||
|
|
@ -199,6 +199,7 @@ func TestCreateProviderFromConfig_DefaultAPIBase(t *testing.T) {
|
||||||
{"vivgrid", "vivgrid"},
|
{"vivgrid", "vivgrid"},
|
||||||
{"qwen", "qwen"},
|
{"qwen", "qwen"},
|
||||||
{"vllm", "vllm"},
|
{"vllm", "vllm"},
|
||||||
|
{"ovms", "ovms"},
|
||||||
{"deepseek", "deepseek"},
|
{"deepseek", "deepseek"},
|
||||||
{"ollama", "ollama"},
|
{"ollama", "ollama"},
|
||||||
{"lmstudio", "lmstudio"},
|
{"lmstudio", "lmstudio"},
|
||||||
|
|
@ -316,6 +317,20 @@ func TestCreateProviderFromConfig_LocalProviders(t *testing.T) {
|
||||||
apiKey: "",
|
apiKey: "",
|
||||||
wantModelID: "Qwen/Qwen3-8B",
|
wantModelID: "Qwen/Qwen3-8B",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "OVMS with API key",
|
||||||
|
modelName: "test-ovms",
|
||||||
|
model: "ovms/llama3",
|
||||||
|
apiKey: "test-key",
|
||||||
|
wantModelID: "llama3",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "OVMS without API key",
|
||||||
|
modelName: "test-ovms",
|
||||||
|
model: "ovms/llama3",
|
||||||
|
apiKey: "",
|
||||||
|
wantModelID: "llama3",
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, tt := range tests {
|
for _, tt := range tests {
|
||||||
|
|
|
||||||
|
|
@ -341,7 +341,7 @@ Check these in the dashboard:
|
||||||
|
|
||||||
- a default model is selected
|
- a default model is selected
|
||||||
- the model has credentials or OAuth state
|
- the model has credentials or OAuth state
|
||||||
- local models such as Ollama or vLLM are reachable
|
- local models such as Ollama, vLLM, or OVMS are reachable
|
||||||
|
|
||||||
### The launcher cannot find `picoclaw`
|
### The launcher cannot find `picoclaw`
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -176,7 +176,7 @@ func runLocalModelProbe(m *config.ModelConfig) bool {
|
||||||
switch protocol {
|
switch protocol {
|
||||||
case "ollama":
|
case "ollama":
|
||||||
return probeOllamaModelFunc(apiBase, modelID)
|
return probeOllamaModelFunc(apiBase, modelID)
|
||||||
case "vllm", "lmstudio":
|
case "vllm", "ovms", "lmstudio":
|
||||||
return probeOpenAICompatibleModelFunc(apiBase, modelID, m.APIKey())
|
return probeOpenAICompatibleModelFunc(apiBase, modelID, m.APIKey())
|
||||||
case "github-copilot", "copilot":
|
case "github-copilot", "copilot":
|
||||||
return probeTCPServiceFunc(apiBase)
|
return probeTCPServiceFunc(apiBase)
|
||||||
|
|
|
||||||
|
|
@ -89,6 +89,56 @@ func TestProbeLocalModelAvailability_LMStudioUsesOpenAICompatibleProbe(t *testin
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestRequiresRuntimeProbe_OVMS(t *testing.T) {
|
||||||
|
if !requiresRuntimeProbe(&config.ModelConfig{
|
||||||
|
Model: "ovms/llama3",
|
||||||
|
}) {
|
||||||
|
t.Fatal("requiresRuntimeProbe(ovms with default base) = false, want true")
|
||||||
|
}
|
||||||
|
|
||||||
|
if requiresRuntimeProbe(&config.ModelConfig{
|
||||||
|
Model: "ovms/llama3",
|
||||||
|
APIBase: "https://api.example.com/v3",
|
||||||
|
}) {
|
||||||
|
t.Fatal("requiresRuntimeProbe(ovms with remote base) = true, want false")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestModelProbeAPIBase_OVMSDefault(t *testing.T) {
|
||||||
|
got := modelProbeAPIBase(&config.ModelConfig{Model: "ovms/llama3"})
|
||||||
|
if got != "http://localhost:8000/v3" {
|
||||||
|
t.Fatalf("modelProbeAPIBase(ovms) = %q, want %q", got, "http://localhost:8000/v3")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestProbeLocalModelAvailability_OVMSUsesOpenAICompatibleProbe(t *testing.T) {
|
||||||
|
originalProbe := probeOpenAICompatibleModelFunc
|
||||||
|
defer func() { probeOpenAICompatibleModelFunc = originalProbe }()
|
||||||
|
|
||||||
|
called := false
|
||||||
|
probeOpenAICompatibleModelFunc = func(apiBase, modelID, apiKey string) bool {
|
||||||
|
called = true
|
||||||
|
if apiBase != "http://localhost:8000/v3" {
|
||||||
|
t.Fatalf("apiBase = %q, want %q", apiBase, "http://localhost:8000/v3")
|
||||||
|
}
|
||||||
|
if modelID != "llama3" {
|
||||||
|
t.Fatalf("modelID = %q, want %q", modelID, "llama3")
|
||||||
|
}
|
||||||
|
if apiKey != "" {
|
||||||
|
t.Fatalf("apiKey = %q, want empty", apiKey)
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
model := &config.ModelConfig{Model: "ovms/llama3"}
|
||||||
|
if !probeLocalModelAvailability(model) {
|
||||||
|
t.Fatal("probeLocalModelAvailability(ovms) = false, want true")
|
||||||
|
}
|
||||||
|
if !called {
|
||||||
|
t.Fatal("probeOpenAICompatibleModelFunc was not called for ovms")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestModelProbeCacheKey_DifferentAPIKeysProduceDifferentKeys(t *testing.T) {
|
func TestModelProbeCacheKey_DifferentAPIKeysProduceDifferentKeys(t *testing.T) {
|
||||||
base := &config.ModelConfig{
|
base := &config.ModelConfig{
|
||||||
ModelName: "local-vllm",
|
ModelName: "local-vllm",
|
||||||
|
|
|
||||||
|
|
@ -42,9 +42,10 @@ const PROVIDER_PRIORITY: Record<string, number> = {
|
||||||
azure: 23,
|
azure: 23,
|
||||||
ollama: 24,
|
ollama: 24,
|
||||||
vllm: 25,
|
vllm: 25,
|
||||||
lmstudio: 26,
|
ovms: 26,
|
||||||
zai: 27,
|
lmstudio: 27,
|
||||||
mimo: 28,
|
zai: 28,
|
||||||
|
mimo: 29,
|
||||||
}
|
}
|
||||||
|
|
||||||
interface ProviderGroup {
|
interface ProviderGroup {
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,7 @@ const PROVIDER_DOMAINS: Record<string, string> = {
|
||||||
mistral: "mistral.ai",
|
mistral: "mistral.ai",
|
||||||
avian: "avian.io",
|
avian: "avian.io",
|
||||||
vllm: "vllm.ai",
|
vllm: "vllm.ai",
|
||||||
|
ovms: "docs.openvino.ai",
|
||||||
zhipu: "zhipuai.cn",
|
zhipu: "zhipuai.cn",
|
||||||
zai: "z.ai",
|
zai: "z.ai",
|
||||||
mimo: "xiaomi.com",
|
mimo: "xiaomi.com",
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@ const PROVIDER_LABELS: Record<string, string> = {
|
||||||
mistral: "Mistral AI",
|
mistral: "Mistral AI",
|
||||||
avian: "Avian",
|
avian: "Avian",
|
||||||
vllm: "VLLM (local)",
|
vllm: "VLLM (local)",
|
||||||
|
ovms: "OVMS (local)",
|
||||||
zhipu: "Zhipu AI (智谱)",
|
zhipu: "Zhipu AI (智谱)",
|
||||||
zai: "Z.ai",
|
zai: "Z.ai",
|
||||||
mimo: "Xiaomi MiMo",
|
mimo: "Xiaomi MiMo",
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue