mirror of
https://github.com/zhayujie/chatgpt-on-wechat.git
synced 2026-07-17 11:07:11 +08:00
Adds first-class support for configuring more than one custom OpenAI-compatible provider (e.g. SiliconFlow, DeepSeek, local vLLM) and switching the active one from the web console, addressing #2838. Backend: - config: new `custom_providers` (list) and `custom_active_provider` fields, fully backward compatible with the legacy single `open_ai_api_base`/`model` fields (used as fallback). - models/custom_provider.py: centralized resolver `resolve_custom_credentials()` returning (api_key, api_base, model), with active-provider selection and graceful fallback. - chat_gpt_bot.py wired to use the resolver. - web_channel.py: `_provider_overview` expands `custom_providers` into one card per provider (id `custom:<name>`, active flag, masked key); new POST actions `set_custom_provider`, `delete_custom_provider`, `set_active_custom_provider` with hermetic persistence + bridge reset. Frontend: - console.js: dedicated "Custom providers" section with add / edit / delete / set-active actions, masked-key keep-existing handling, and ~20 new zh/en i18n strings. - chat.html: custom provider modal. Tests: - tests/test_custom_provider.py (11) - resolver/config behavior. - tests/test_custom_provider_handlers.py (18) - write-side handlers and overview expansion, including duplicate-name rejection. All 29 unit tests pass.
97 lines
3.5 KiB
Plaintext
97 lines
3.5 KiB
Plaintext
---
|
||
title: カスタム
|
||
description: カスタムベンダー設定。サードパーティ API プロキシやローカルモデル向け
|
||
---
|
||
|
||
OpenAI 互換プロトコルで接続するサードパーティのモデルサービスや、ローカルにデプロイしたモデルに適しています。例えば:
|
||
|
||
- **サードパーティ API プロキシ**:統一された API Base から複数のモデルを呼び出す
|
||
- **ローカルモデル**:Ollama、vLLM、LocalAI などのツールでローカルにデプロイしたモデル
|
||
- **プライベートデプロイ**:企業内部にデプロイしたモデルサービス
|
||
|
||
<Note>
|
||
`openai` ベンダーとの違い:カスタムベンダーを選択した場合、`/config model` でモデルを切り替えてもベンダータイプは自動で切り替わらず、常にカスタムの API アドレスを使用します。
|
||
</Note>
|
||
|
||
## テキスト対話
|
||
|
||
### サードパーティ API プロキシ
|
||
|
||
```json
|
||
{
|
||
"bot_type": "custom",
|
||
"model": "",
|
||
"custom_api_key": "YOUR_API_KEY",
|
||
"custom_api_base": "https://{your-proxy.com}/v1"
|
||
}
|
||
```
|
||
|
||
| パラメータ | 説明 |
|
||
| --- | --- |
|
||
| `bot_type` | `custom` に設定する必要があります |
|
||
| `model` | モデル名。プロキシサービスがサポートする任意のモデル名を指定 |
|
||
| `custom_api_key` | API キー。プロキシサービスから提供されます |
|
||
| `custom_api_base` | API アドレス。プロキシサービスから提供され、OpenAI プロトコル互換である必要があります |
|
||
|
||
### ローカルモデル
|
||
|
||
ローカルモデルは通常 API Key が不要で、API Base のみ設定します:
|
||
|
||
```json
|
||
{
|
||
"bot_type": "custom",
|
||
"model": "qwen3.5:27b",
|
||
"custom_api_base": "http://localhost:11434/v1"
|
||
}
|
||
```
|
||
|
||
一般的なローカルデプロイツールとデフォルトアドレス:
|
||
|
||
| ツール | デフォルト API Base |
|
||
| --- | --- |
|
||
| [Ollama](https://ollama.com) | `http://localhost:11434/v1` |
|
||
| [vLLM](https://docs.vllm.ai) | `http://localhost:8000/v1` |
|
||
| [LocalAI](https://localai.io) | `http://localhost:8080/v1` |
|
||
|
||
### モデル切り替え
|
||
|
||
カスタムベンダーでモデルを切り替える際は `model` のみが変更され、`bot_type` と API アドレスは変わりません:
|
||
|
||
```
|
||
/config model qwen3.5:27b
|
||
```
|
||
|
||
## 複数のカスタムベンダーを設定する
|
||
|
||
複数の OpenAI 互換サードパーティサービス(例:SiliconFlow、Qiniu)を同時に設定したい場合は、`custom_providers` リストを使用し、`custom_active_provider` で現在有効なベンダーを指定します:
|
||
|
||
```json
|
||
{
|
||
"bot_type": "custom",
|
||
"custom_active_provider": "siliconflow",
|
||
"custom_providers": [
|
||
{
|
||
"name": "siliconflow",
|
||
"api_key": "YOUR_SILICONFLOW_KEY",
|
||
"api_base": "https://api.siliconflow.cn/v1",
|
||
"model": "deepseek-ai/DeepSeek-V3"
|
||
},
|
||
{
|
||
"name": "qiniu",
|
||
"api_key": "YOUR_QINIU_KEY",
|
||
"api_base": "https://api.qnaigc.com/v1",
|
||
"model": "deepseek-v3"
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
| パラメータ | 説明 |
|
||
| --- | --- |
|
||
| `custom_providers` | カスタムベンダーのリスト。各項目に `name`、`api_key`、`api_base`、任意の `model` を含む |
|
||
| `custom_active_provider` | 有効なベンダーの `name`。空の場合はリストの最初の項目が使用される |
|
||
|
||
<Note>
|
||
`custom_providers` が空の場合、上記の単一ベンダー設定 `custom_api_key` / `custom_api_base` に自動的にフォールバックするため、既存の設定はそのまま動作します。
|
||
</Note>
|