AIプロバイダー
管理画面での位置: System › Settings › AI provider (
/settings/ai)。AIモジュールのスイッチはそこおよび System › Admin › License & updates (/license) のカード Moduleにあります。
動作内容
AI Chat(自動サポートチャット)およびAI Agent(平易な言葉でのVM管理)には、組み込みモデルは付属していません。独自のプロバイダーを選択します:OpenAI互換のchat/completions APIを提供する任意のサービス(OpenAI、OpenRouter、LiteLLMゲートウェイ、または独自のvLLMサーバーなど)を利用できます。NexCMPはエンドポイントとAPIキーを(暗号化して)保存し、すべてのAI機能で使用します。料金はプロバイダーに直接お支払いいただきます。
要件
| 項目 | 要件 |
|---|---|
| Endpoint | OpenAI互換のベースURL(https://api.openai.com/v1、https://ai.example.com/v1)。NexCMPは、/chat/completionsで終わるURLには/v1を追加し、その他のURLには/v1/chat/completionsを追加します。すでに/chat/completionsで終わっているURLはそのまま使用されます。 |
| モデル | ツール(関数)呼び出しをサポートするモデル。AI Chatとエージェントの両方がこれに依存します。 |
| API キー | そのエンドポイント用のキー。プロバイダー側で**利用上限(スペンディングキャップ)**が設定されたキー(月額予算付きのLiteLLM仮想キーなど)を推奨します。 |
| ネットワーク | パネルサーバーはHTTP(S)経由でエンドポイントに到達できる必要があります。フォームに入力するURLは、ポート80、443、8080、8443のインターネット宛てのみ許可されます。内部アドレスを使用するには、まずプロバイダーを保存してからテストしてください。 |
| 依存関係 | AIモジュールを有効にします。エージェントについてはAI Agentを参照してください。 |
インフラストラクチャの準備
プロバイダーにサインアップしてAPIキーを作成します。プロバイダーが予算やレート制限をサポートしている場合は、月額制限を設定します。
ベースURLと正確なモデル名(およびオプションで最大4つのフォールバックモデル)をメモします。
入力する前にNexCMPサーバーからテストします:
bashcurl -s https://ai.example.com/v1/chat/completions \ -H "Authorization: Bearer XXXX" -H "Content-Type: application/json" \ -d '{"model":"gpt-4o-mini","messages":[{"role":"user","content":"Reply with one word: OK"}]}'choices[0].message.contentを含むJSONの回答は、エンドポイントが機能していることを示します。
NexCMP での接続
System › Settings › AI providerを開きます。
カードModule AIでモジュールをオンに切り替えます。オンにするまで、お客様はポータルでAI ChatやAI Agentを見ることができません。(License & updatesでも切り替えることができます。)
カードConnectionで以下を入力します:
項目 Example 備考 このプロバイダーを使用 on オンにするには、ベースURL、モデル、キーが必要です。 表示名 LiteLLM最大60文字。 ベースURL(OpenAI互換) https://ai.example.com/v1http://またはhttps://、最大300文字、スペースなし。プロバイダーAPIキー sk-XXXX暗号化されて保存され、その後は末尾4文字のみが表示されます。保存されたキーを維持するには空のままにします。 デフォルトモデル gpt-4o-mini文字、数字、および - _ . / : @。フォールバックモデル gemini-2.5-flashカンマ区切り、最大4つ。デフォルトモデルが失敗したときに使用されます。 推論の度合い デフォルト(送信しない) Minimal、Low、Medium、またはHigh。推論モデル(Gemini、oシリーズ)の場合、低いレベルにすると応答が大幅に高速化されます。通常のモデルではデフォルトのままにします。Saveをクリックし、次にTest connectionをクリックします。テストでは短い質問を1つ送信し、
Connected — <model>, <ms> msまたはプロバイダーから返されたエラーを表示します。

保存の動作
- プロバイダーの設定は1つの設定エントリとして保存され、キーはインストールのマスターキーを使用してこの目的にバインドされたAES-256-GCMで暗号化されます。
- サポート設定のPrimary modelとFallback model(AI Chatで使用)は、デフォルトモデルと最初のフォールバックモデルに自動的に設定されます。
- 変更は監査ログに記録されます(エンドポイント、モデル、キーが変更されたかどうか。キー自体は記録されません)。
確認
- Test connectionが緑色に表示されます。
- テスト顧客としてポータルにサインインします。メニューにAI Chat(またはチャットバブル)とAI Agentが表示されます。
- AI Chatに「残高はいくらですか?」と質問します。実際の残高を引用した回答が表示されれば、プロバイダーがツール呼び出しを正しく処理していることを示します。
制限と注意事項
- 単一のプロバイダー。 NexCMPは、Chat、Agent、およびチケット調査用に、設定された単一のプロバイダーを使用します。フォールバックモデルにより、そのプロバイダー内での耐障害性が向上します。
- キーの安全性。 保存されたキーは、保存されたエンドポイントにのみ送信されます。ベースURLを変更する場合は、テストする前にキーを再入力する必要があります。
- 顧客ごとの制限。 AI Chatはログイン中の顧客専用で、分単位およびチャットごとのメッセージ制限があります。AI Agentにはアカウントごとの1日の呼び出し制限があります。AI ChatおよびAI Agentを参照してください。
- プライバシー。 顧客からの質問およびAIがその顧客のために読み取るデータ(読み取り専用)はお使いのプロバイダーに送信されます。プライバシーポリシーにその旨を記載してください。
- コスト管理。 NexCMPはAIのコストを計測しません。プロバイダーの予算機能を使用してください。
- モジュールはいつでもオフにできます:AIメニュー項目が消え、AIルートは404を返します
module_disabled。AI Chatの一部バックグラウンドジョブ(チケット調査、遅延返信)はそのパネルの次回の再起動時に変更を反映します。
トラブルシューティング
| 症状 | 原因 | 対処法 |
|---|---|---|
base_url must be an http(s) URL | スキームの欠落またはスペース | https://host/v1 を使用します。 |
api_key is required to enable the provider | キーが保存されていません | キーを入力して保存します。 |
base_url and model are required to enable the provider | 空のフィールド | 両方に入力してください。 |
| "Base URLがブロックされました: パブリックhttp(s)のみ、ポート80/443/8080/8443" | 保存されていない内部アドレスまたは他のポートのテスト | 最初にプロバイダーを保存してからテストしてください。 |
api_key is required (enter the key again when you change the endpoint) | Base URLが保存されているものと異なります | キーを再入力します。 |
model: letters, digits and - _ . / : @ | 無効な文字 | プロバイダーの正確なモデルIDを使用してください。 |
fallback_models: up to 4 model names | 多すぎます | 4個以下に維持してください。 |
| 401エラーでテストが失敗する | キーが正しくありません | キーとエンドポイントを確認してください。 |
| 404または「model not found」でテストが失敗する | パスまたはモデルが間違っています | ベースURL(/v1)とモデルIDを確認してください。 |
Too many tests — wait a minute (429) | 1分間に10回を超えるテスト | お待ちください。 |
| ポータルにAIメニューが表示されない | モジュールがオフであるか、プロバイダーが「in use」になっていません | モジュールをオンにし、プロバイダーを有効にしてください。 |