カスタムプロバイダー
カスタムプロバイダー(BYOK - Bring Your Own Key)を使用すると、独自の API キーで OpenAI 互換の API エンドポイントに接続できます。Ollama などのローカルプロバイダーもサポートしています。ProviderConfig
ProviderConfig クラスは以下のプロパティを持ちます。
基本的な使い方
カスタムプロバイダーを使用する場合、model パラメータは必須です。
Ollama(ローカルプロバイダー)
Ollama などのローカルプロバイダーではapiKey は不要です。
Azure OpenAI
Azure OpenAI を使用する場合、以下の点に注意してください。typeは必ずazureを指定(openaiではなく)baseUrlにはホストのみを指定(/openai/v1などのパスは含めない)
Azure Managed Identity
有効期限付きトークンを使う場合は、bearerTokenProviderで各リクエスト時にトークンを取得できます。コールバックにはproviderNameとsessionIdを含む配列が渡されます。次の例では、アプリケーション側のトークン取得サービスを呼び出します。
API キーコマンド
ローテーションされる API キーを使う場合は、apiKeyCommand で各プロバイダーリクエストの前にコマンドを実行して最新のキーを取得できます。コマンドはこのパッケージではなく Copilot ランタイムが実行します。
apiKeyCommandはnullまたは空白でない文字列である必要があります。空文字列や空白のみの場合は、リクエスト送信前にInvalidArgumentExceptionが発生します。配列形式で文字列以外を指定した場合もInvalidArgumentExceptionになります。ProviderConfigコンストラクターに文字列以外を渡すと、PHP の型チェックによりTypeErrorが発生します。例外メッセージにコマンドは含まれません。- コマンドの失敗はランタイム側でターンの失敗として扱われ、モデルへのリクエストは送信されません。
bearerTokenProviderを指定するとそちらが優先され、apiKeyCommandは実行されません。- コマンド文字列は資格情報と同様に機密として扱い、ログや例外メッセージに出力しないでください。このパッケージもコマンドやその出力をログに記録しません。
apiKeyCommandはProviderConfigのみで利用できます(NamedProviderConfigでは未対応)。
重要な注意点
- Azureエンドポイント(
*.openai.azure.com)では、必ずtype: 'azure'を使用してください baseUrlはホストのみを指定し、パスの構築は SDK が自動的に行います
onListModels ハンドラー
BYOK モードでカスタムプロバイダーを使用している場合、client->listModels() が CLI サーバーではなくカスタムハンドラーを呼び出すように設定できます。
listModelsUsing() メソッドを使って設定します。client は初期化されやすいため、listModels() の前に常に listModelsUsing() を設定してください。
null を渡すとハンドラーを解除してデフォルトの CLI サーバー動作に戻ります。
listModelsUsing() が設定されている場合、listModels() は CLI サーバーへの接続を必要とせず、キャッシュも使用しません。
最新情報は GitHub リポジトリ を参照してください。