# プロバイダーの設定

AQBot は任意の数の AI プロバイダーに同時に接続できます。各プロバイダーには独自の API キー、モデルリスト、パラメーターのデフォルトがあります。

## サポートされているプロバイダー

AQBot は以下のプロバイダーをファーストクラスでサポートしています。OpenAI 互換 API を公開するサービスはすべてそのまま動作します。

| プロバイダー | モデル例 |
|------------|---------|
| **OpenAI** | GPT-4o、GPT-4、o3、o4-mini |
| **Anthropic** | Claude 4 Sonnet、Claude 4 Opus、Claude 3.5 Sonnet |
| **Google** | Gemini 2.5 Pro、Gemini 2.5 Flash、Gemini 2.0 |
| **DeepSeek** | DeepSeek V3、DeepSeek R1 |
| **Alibaba Cloud** | Qwen シリーズ |
| **Zhipu AI** | GLM シリーズ |
| **xAI** | Grok シリーズ |
| **OpenAI 互換 API** | Ollama、vLLM、LiteLLM、サードパーティリレーなど |

---

## プロバイダーの追加

1. **設定 → プロバイダー**に移動します。
2. 左下の **+** ボタンをクリックします。
3. プロバイダーの詳細を入力します：

| フィールド | 説明 |
|-----------|------|
| **名前** | サイドバーの表示名（例：*OpenAI*） |
| **タイプ** | プロバイダータイプ — デフォルトの Base URL と API 動作を決定 |
| **アイコン** | 視覚的識別のためのオプションアイコン |
| **API キー** | プロバイダーのダッシュボードからのシークレットキー |
| **Base URL** | API エンドポイント（ビルトインタイプには事前入力、リレー用に変更可能） |
| **API パス** | リクエストパス — デフォルトは `/v1/chat/completions` |

> **ヒント**
>
> サードパーティのリレーサービスの場合、タイプを **OpenAI**（または対応するアップストリームタイプ）に設定し、**Base URL** をリレーのエンドポイントに変更します。

---

## Web サイトのリンクからインポート

プロバイダーの Web サイト、リレーサービスのダッシュボード、プライベートモデル基盤、ローカルゲートウェイの管理画面は、**AQBot で開く** リンクを提供できます。ユーザーがクリックするとブラウザーが AQBot デスクトップアプリを起動し、AQBot は **設定 → プロバイダー** に移動して確認ダイアログを表示します。インポートはユーザーが確認した後にのみ実行されます。

### ユーザーフロー

1. プロバイダーリンクのインポートに対応した AQBot をインストールして開きます。
2. ブラウザーでプロバイダーが提供する **AQBot で開く** リンクをクリックします。
3. AQBot の確認ダイアログで、プロバイダー名、Base URL、タイプ、API キーのプレフィックスを確認します。
4. AQBot は同じ **Base URL + タイプ** の既存プロバイダーを再利用します。存在しない場合は新規作成し、API キーがまだ存在しない場合のみ追加します。

AQBot は API キーの検証やモデル取得を自動では行いません。インポート後に **モデルを取得** をクリックするか、モデル ID を手動で追加してください。

### リンク形式

```text
aqbot://providers?name=<name>&baseurl=<base-url>&apikey=<api-key>&type=<provider-type>
```

例：

```text
aqbot://providers?name=OpenAI&baseurl=https%3A%2F%2Fapi.openai.com&apikey=sk-xxx&type=openai
```

### パラメーター

| パラメーター | 必須 | 説明 |
|-------------|------|------|
| `name` | はい | AQBot に表示する名前。例：`OpenAI`、`My Relay` |
| `baseurl` | はい | URL エンコード済みの Base URL。`http` / `https` のみ有効で、query や hash は拒否されます。 |
| `apikey` | はい | AQBot に保存する API キー。確認ダイアログにはプレフィックスのみ表示されます。 |
| `type` | はい | プロバイダータイプ。指定可能な値：`openai`、`openai_responses`、`anthropic`、`gemini`、`custom`。 |

`baseurl` では AQBot 既存の強制サフィックスも使用できます（例：`https://example.com!`）。リンク経由のインポートでは `api_path` は設定されず、選択したプロバイダータイプのデフォルトパスが使われます。

### Web サイト側の設定

すべての動的値は `encodeURIComponent` または `URLSearchParams` でエンコードしてください：

```html
<a id="open-aqbot" href="#">AQBot で開く</a>

<script>
  const provider = {
    name: 'My Relay',
    baseurl: 'https://api.example.com',
    apikey: 'sk-user-key',
    type: 'openai',
  };

  const params = new URLSearchParams({
    name: provider.name,
    baseurl: provider.baseurl,
    apikey: provider.apikey,
    type: provider.type,
  });

  document.getElementById('open-aqbot').href = `aqbot://providers?${params.toString()}`;
</script>
```

API キーをオンラインで生成できるサービスでは、ユーザーがログインし、明示的にキーを選択または作成した後にのみリンクを生成することを推奨します。

> **セキュリティ**
>
> URL 内の API キーは、ブラウザー履歴、ログ、拡張機能、解析スクリプトに記録される可能性があります。実際のキーを公開ページ、静的 HTML、第三者のリダイレクト URL に置かないでください。ユーザー専用のアカウントページで、確認後に生成する方法を推奨します。

> **テスト**
>
> `aqbot://` はインストール済みデスクトップアプリがシステムに登録するカスタムプロトコルです。Web サイトや Vite 開発サーバーを実行するだけでは登録されません。クリックしても AQBot が開かない場合は、まず最新の AQBot デスクトップアプリをインストールまたは再ビルドしてください。

---

## CC Switch からインポート

Settings -> Providers で CC Switch のプロバイダー設定をスキャンできます。候補を確認し、インポート可能な行を選ぶと、プロバイダー、Base URL、API Key、モデルリストを AQBot に取り込めます。OAuth のみ、または再利用できるキーがない項目は理由付きでスキップされます。

## 高度なモデルリクエストボディ

各モデルには extra_body を設定できます。これは OpenAI 互換 Chat Completions のリクエストへ平坦化して追加される JSON オブジェクトです。enable_thinking などのベンダー固有オプションに使えます。AQBot は JSON を検証し、model、messages、stream、tools、基本サンプリング項目の上書きを防ぎます。

## マルチキーローテーション

AQBot はロード分散とレート制限回避のために、プロバイダーごとに複数の API キーをサポートします。

### キーの追加

プロバイダー詳細パネルで**キーを追加**をクリックして、追加の API キーを追加します。各キーには、プレフィックス、作成日、最終使用タイムスタンプが表示されます。

### ローテーションの仕組み

AQBot はラウンドロビンインデックスを使用して有効なキーを自動的にローテーションします。リクエストが完了すると、ローテーションインデックスが次のキーに進みます。キーが無効化されたり検証に失敗した場合はスキップされます。

### キーの検証

キーの隣の**検証**ボタンをクリックして、プロバイダーの API に対して検証します。検証結果とエラーメッセージが記録されます。

---

## モデル管理

### モデルの取得

プロバイダー詳細パネルで**モデルを取得**をクリックして、プロバイダーの API から利用可能なモデルの完全なリストを取得します。発見されたモデルは自動的にローカルリストに追加されます。

### モデルの手動追加

API によって返されないモデル（例：ファインチューニングされたモデルや新しいリリース）は、モデル ID を直接入力して追加できます。

### モデルごとのパラメーター

各モデルに独自のデフォルトパラメーターオーバーライドを設定できます：

| パラメーター | 説明 |
|------------|------|
| **温度** | ランダム性を制御（0 = 決定論的、高いほどよりクリエイティブ） |
| **最大トークン数** | レスポンスの最大トークン数 |
| **Top P** | 核サンプリングのしきい値 |
| **頻度ペナルティ** | トークンシーケンスの繰り返しを減少 |
| **存在ペナルティ** | モデルが新しいトピックを導入するよう促す |

### モデル能力

AQBot はモデルごとに能力（**ビジョン**、**関数呼び出し**、**推論**など）を追跡し、タグとして表示します。これらの能力は会話中に利用できる機能に影響します。

---

## カスタム & ローカルエンドポイント

AQBot は OpenAI チャットコンプリーション API を実装するエンドポイントであれば何でも動作します。

### Ollama（ローカルモデル）

1. [Ollama](https://ollama.com/) をインストールして起動します。
2. AQBot でタイプ **OpenAI** の新しいプロバイダーを作成します。
3. **Base URL** を `http://localhost:11434` に設定します。
4. **モデルを取得**をクリックして、ローカルにプルされたモデルを発見します。

### vLLM / TGI

推論サーバーのアドレス（例：`http://localhost:8000`）に **Base URL** を設定し、通常通りモデルを取得または追加します。

### API リレーサービス

リレーまたはアグリゲーターサービス（例：OpenRouter、one-api）の場合、タイプを **OpenAI** に設定し、リレーの Base URL を入力し、リレーの API キーを提供します。

---

## デフォルトモデル設定

### デフォルトアシスタントモデル

**設定 → デフォルトモデル**に移動して、新しい会話でデフォルトとして使用するプロバイダーとモデルを選択します。モデルセレクターから会話ごとに常にモデルをオーバーライドできます。

### トピック命名モデル

AQBot は各会話のタイトルを自動的に生成できます。デフォルトモデル設定で、タイトル生成のコストとレイテンシーを節約するために、トピック命名専用の軽量モデルを割り当てられます。タイトル生成用のカスタムプロンプトとコンテキストウィンドウサイズを設定できます。

---

## 次のステップ

- [MCP サーバー](./mcp) — AI 機能を拡張する外部ツールの接続
- [API ゲートウェイ](./gateway) — プロバイダーをローカル API サーバーとして公開
