LLMプロバイダー概要
Elftia の LLM プロバイダーシステムを使用すると、複数の大規模言語モデルサービスに接続し、統合 API 抽象化を通じてプロバイダー間をシームレスに切り替えることができます。基盤となる API フォーマットの違いを意識する必要はありません。
こんな場面で使う
- 新しい LLM サービス(OpenAI、Anthropic、DeepSeek など)に接続したい
- 同一アプリ内で複数プロバイダーのモデルを使い分けたい
- ローカルにデプロイしたモデル(Ollama や LM Studio など)に接続したい
- API キープールによる高可用性・負荷分散を実現したい
基本概念
プロバイダー
プロバイダーとは、LLM API サービスの設定単位です。各プロバイダーには次の主要情報が含まれます。
| 概念 | 説明 | 例 |
|---|---|---|
| 名前 | プロバイダーの表示名 | OpenAI、DeepSeek、Zhipu GLM |
| API フォーマット | プロバイダーが使用する API プロトコル形式 | openai、anthropic、google |
| ベース URL | API リクエストのベースアドレス | https://api.openai.com/v1/chat/completions |
| API キー | 認証資格情報 | sk-... または $OPENAI_API_KEY のような環境変数参照 |
| モデルリスト | このプロバイダーで利用可能なモデル | gpt-4o、claude-sonnet-4-5、gemini-3-pro |
API フォーマット
Elftia は 5 種類の API フォーマットをサポートしており、組み込みのフォーマット変換機構(Transformer)がリクエスト・レスポンスのフォーマット差異を自動的に吸収します。
| API フォーマット | 説明 | 利用プロバイダー |
|---|---|---|
openai | OpenAI Chat Completions フォーマット(/v1/chat/completions) | OpenAI、DeepSeek、Zhipu、Ollama、Groq、その他ほとんどのプロバイダー |
anthropic | Anthropic Messages フォーマット(/v1/messages) | Anthropic 公式、MiniMax |
google | Google Gemini フォーマット | Google Gemini |
azure-openai | Azure OpenAI フォーマット(OpenAI と同じ仕様、認証方式が異なる) | Azure OpenAI Service |
openai-response | OpenAI Responses API フォーマット(/v1/responses) | OpenAI 新 Responses API |
モデル
各プロバイダーには複数のモデルを設定できます。モデル設定には以下が含まれます。
- モデル ID: API 呼び出し時に使用する識別子(例:
gpt-4o) - 表示名: UI に表示される名前(例:
GPT-4o) - カテゴリ: chat、reasoning、code、image など
- 機能フラグ: ビジョン、ファンクション呼び出し、推論モード、Web 検索のサポート可否
- コンテキスト長: モデルが受け付ける最大入力トークン数
- 最大出力: 1 回のレスポンスで生成できる最大トークン数
API キー
API キーは、プロバイダーサービスにアクセスするための認証資格情報です。Elftia では次の 2 通りの設定方法をサポートしています。
- 直接入力: 設定 UI に API キーを直接貼り付ける
- 環境変数参照: 名前の前に
$を付けてシステム環境変数を参照する(例:$OPENAI_API_KEY)— アプリケーション設定にキーを保存したくない場合に便利
リクエスト処理フロー
ユーザーがメッセージを送信した後、Elftia は次のようにリクエストを処理します。
ユーザーがメッセージを送信
|
v
プロバイダーとモデルを選択
|
v
API キーを解決(直接値 / 環境変数 / キープール)
|
v
Transformer: 統合リクエストをターゲット API フォーマットに変換
| (openai / anthropic / google / ...)
v
プロバイダー API にリクエストを送信
|
v
Transformer: プロバイダーのレスポンスを統合フォーマットに変換
|
v
チャット UI にレスポンスをレンダリング
デフォルトプロバイダーリスト
Elftia には以下のプロバイダーテンプレートが同梱されており、初回起動時に自動的に作成されます(デフォルトは無効 — API キーを入力して有効化することで利用可能になります)。
| プロバイダー | API フォーマット | ベース URL | 特徴 |
|---|---|---|---|
| DeepSeek | openai | https://api.deepseek.com/v1 | 優れたコスパ、推論モード対応 |
| OpenRouter | openai | https://openrouter.ai/api/v1 | 200 以上のモデルを統一課金で集約 |
| SiliconFlow | openai | https://api.siliconflow.cn/v1 | 中国向け高速アクセス、オープンソースモデルをホスト |
| OpenAI | openai | https://api.openai.com/v1/chat/completions | GPT シリーズ、o シリーズ推論モデル |
| Anthropic | anthropic | https://api.anthropic.com/v1/messages | Claude シリーズ、ネイティブ思考の連鎖 |
| Google Gemini | https://generativelanguage.googleapis.com/v1beta/models/ | 超長コンテキスト(100 万トークン) | |
| Zhipu GLM | openai | https://api.z.ai/api/paas/v4 | GLM シリーズ、Coding Plan 対応 |
| Moonshot (Kimi) | openai | https://api.moonshot.ai/v1 | Kimi K2.5、超長コンテキスト |
| Alibaba Cloud Bailian | openai | https://dashscope.aliyuncs.com/compatible-mode/v1 | Qwen シリーズ、100 万トークン |
| Ollama | openai | http://localhost:11434/v1 | ローカルデプロイ、完全オフライン |
| Groq | openai | https://api.groq.com/openai/v1 | 超高速推論、低レイテンシ |
| Claude Code | anthropic | https://api.anthropic.com/v1/messages | Claude Agent SDK 統合 |
上記のデフォルト以外にも、Elftia では中国のクラウドプラットフォーム(Volcengine、Tencent Cloud Hunyuan、Baidu Qianfan、MiniMax、Kuaishou KwaiKAT、Moore Threads など)向けのプリセットテンプレートを提供しており、「プロバイダーを追加」ダイアログから利用できます。
設定リファレンス
| 設定 | 型 | デフォルト | 説明 |
|---|---|---|---|
| プロバイダー名 | String | (テンプレート名) | 表示名、カスタマイズ可能 |
| API フォーマット | Enum | openai | openai / anthropic / google / azure-openai / openai-response |
| ベース URL | URL | (テンプレートにより異なる) | API リクエストアドレス |
| API キー | String | (空) | $ プレフィックスで環境変数参照が可能 |
| モデルリスト | Array | (テンプレートにより異なる) | 手動追加またはモデルディスカバリーで取得 |
| 有効 | Boolean | false | モデル選択リストにプロバイダーを表示するかどうか |
| Transformer | Object | (フォーマットにより異なる) | リクエスト・レスポンスフォーマット変換の設定 |
| デフォルトパラメーター | Object | temperature: 0.7 | プロバイダーレベルのデフォルト生成パラメーター |
| API タイムアウト | ミリ秒 | (グローバル設定) | 単一リクエストのタイムアウト |
| 同時実行制限 | Number | (プロバイダーにより異なる) | Agent モードでの最大同時リクエスト数 |
動作の注意事項
プロバイダーの有効化・無効化
- 無効化されたプロバイダーはモデル選択ドロップダウンに表示されません
- プロバイダーを無効化しても設定は削除されず、再有効化時にすべての設定が保持されます
- 現在のセッションが使用中のモデルのプロバイダーを無効化しても既存セッションには影響しませんが、新しいメッセージではそのモデルを使用できなくなります
モデルディスカバリー
一部のプロバイダーはモデルディスカバリーをサポートしています。Elftia がプロバイダーのモデルリスト API(例: /v1/models)を呼び出して利用可能なモデルを自動取得します。モデルディスカバリーをサポートするプロバイダーには OpenAI、Anthropic、Gemini、Zhipu などが含まれます。
環境変数 API キー
API キーが $ で始まる場合、Elftia は実行時にシステム環境変数から実際の値を読み取ります。例:
- 設定値
$OPENAI_API_KEY→ 実行時にprocess.env.OPENAI_API_KEYを読み取る - 環境変数が存在しない場合、リクエストは認証エラーで失敗します
フォーマット Transformer
Transformer は Elftia のマルチ API フォーマット対応を支えるコアメカニズムです。OpenAI 以外のフォーマットを使用するすべてのプロバイダーには対応する Transformer が割り当てられます。
| プロバイダー種別 | Transformer | 目的 |
|---|---|---|
| Anthropic 公式 | anthropic | Anthropic Messages フォーマットを維持、思考の連鎖を処理 |
| Google Gemini | gemini | Gemini フォーマットにリクエストを変換 |
| OpenAI Responses | openai-response | /v1/responses エンドポイントに適応 |
| OpenRouter | openrouter | プロバイダールーティング設定を処理 |
| DeepSeek | deepseek | DeepSeek 固有の推論フィールドを処理 |
| Groq | groq | Groq のパラメーター制約に適応 |
トラブルシューティング
| 問題 | 考えられる原因 | 解決策 |
|---|---|---|
| モデル選択リストにプロバイダーが表示されない | プロバイダーが無効化されている | プロバイダー設定に移動してトグルを有効化する |
| リクエストが 401 エラーを返す | API キーが無効または期限切れ | API キーを確認・更新し、十分なクォータがあるか確認する |
| リクエストが 403 エラーを返す | API キーに権限がない | 選択したモデルへのアクセス権が API キーにあるか確認する |
| 環境変数キーが無効 | 環境変数名が間違っているか未設定 | システムで環境変数が設定されていることを確認し、Elftia を再起動する |
| リクエストがタイムアウトする | ネットワーク未接続またはプロバイダーサービス障害 | ネットワーク接続を確認し、ベース URL が正しいか検証してプロキシの使用を試みる |
| モデルリストが空 | プロバイダーがモデルディスカバリーに非対応、またはキーが無効 | モデルを手動で追加するか、API キーが正しいか確認する |
| レスポンスフォーマットが異常 | Transformer 設定の不一致 | API フォーマットの選択が正しいか確認し、特定の Transformer が必要かどうか確認する |
| 中国プロバイダーへの接続が遅い | ネットワーク遅延 | 正しい国内ベース URL を使用しているか確認し、プロキシ設定を見直す |
関連ページ
- プロバイダーを追加する - プリセットテンプレートまたはカスタム設定から新しいプロバイダーを追加する
- API キープール - マルチキー負荷分散と自動フェイルオーバー
- カスタムエンドポイント - Ollama や LM Studio などのローカルサービスに接続する
- モデルパラメーター - temperature や max_tokens などの生成パラメーターを設定する