メインコンテンツへスキップ

Documentation Index

Fetch the complete documentation index at: https://kawax.biz/llms.txt

Use this file to discover all available pages before exploring further.

カスタムプロバイダー

カスタムプロバイダー(BYOK - Bring Your Own Key)を使用すると、独自の API キーで OpenAI 互換の API エンドポイントに接続できます。Ollama などのローカルプロバイダーもサポートしています。

ProviderConfig

ProviderConfig クラスは以下のプロパティを持ちます。
プロパティ説明
baseUrlstring必須。APIエンドポイントのURL
typestring|nullプロバイダータイプ。openai(デフォルト)、azureanthropic
wireApistring|nullAPIフォーマット(openai/azureのみ)。completions(デフォルト)またはresponses
apiKeystring|nullAPIキー。Ollamaなどのローカルプロバイダーでは不要
bearerTokenstring|nullBearer Token認証用。apiKeyより優先される
azurearray|nullAzure固有のオプション。['apiVersion' => '2024-10-21']など

基本的な使い方

カスタムプロバイダーを使用する場合、model パラメータは必須です。
use Revolution\Copilot\Facades\Copilot;
use Revolution\Copilot\Types\ProviderConfig;
use Revolution\Copilot\Types\SessionConfig;

$response = Copilot::run(
    prompt: 'Hello!',
    config: new SessionConfig(
        model: 'gpt-4', // カスタムプロバイダー使用時は必須
        provider: new ProviderConfig(
            baseUrl: 'https://my-api.example.com/v1',
            apiKey: config('services.openai.key'),
        ),
    ),
);
配列形式でも指定可能です。
$response = Copilot::run(
    prompt: 'Hello!',
    config: [
        'model' => 'gpt-4',
        'provider' => [
            'baseUrl' => 'https://my-api.example.com/v1',
            'apiKey' => config('services.openai.key'),
        ],
    ],
);

Ollama(ローカルプロバイダー)

Ollama などのローカルプロバイダーでは apiKey は不要です。
use Revolution\Copilot\Facades\Copilot;
use Revolution\Copilot\Types\ProviderConfig;
use Revolution\Copilot\Types\SessionConfig;

$response = Copilot::run(
    prompt: 'Hello!',
    config: new SessionConfig(
        model: 'deepseek-coder-v2:16b',
        provider: new ProviderConfig(
            type: 'openai',
            baseUrl: 'http://localhost:11434/v1',
        ),
    ),
);

Azure OpenAI

Azure OpenAI を使用する場合、以下の点に注意してください。
  • type は必ず azure を指定(openai ではなく)
  • baseUrl にはホストのみを指定(/openai/v1 などのパスは含めない)
use Revolution\Copilot\Facades\Copilot;
use Revolution\Copilot\Types\ProviderConfig;
use Revolution\Copilot\Types\SessionConfig;

$response = Copilot::run(
    prompt: 'Hello!',
    config: new SessionConfig(
        model: 'gpt-4',
        provider: new ProviderConfig(
            type: 'azure', // Azureエンドポイントでは必ず'azure'を指定
            baseUrl: 'https://my-resource.openai.azure.com', // ホストのみ
            apiKey: config('services.azure.openai_key'),
            azure: [
                'apiVersion' => '2024-10-21',
            ],
        ),
    ),
);

重要な注意点

カスタムプロバイダー使用時は model パラメータが必須です。指定しないとエラーになります。
  • Azureエンドポイント(*.openai.azure.com)では、必ず type: 'azure' を使用してください
  • baseUrl はホストのみを指定し、パスの構築は SDK が自動的に行います

onListModels ハンドラー

BYOK モードでカスタムプロバイダーを使用している場合、client->listModels() が CLI サーバーではなくカスタムハンドラーを呼び出すように設定できます。 listModelsUsing() メソッドを使って設定します。client は初期化されやすいため、listModels() の前に常に listModelsUsing() を設定してください。
use Revolution\Copilot\Facades\Copilot;
use Revolution\Copilot\Types\ModelInfo;

$models = Copilot::client()->listModelsUsing(function (): array {
    // カスタムプロバイダーで利用可能なモデルを返す
    return [
        ['id' => 'my-model-1', 'name' => 'My Model 1', 'version' => '1.0'],
        ['id' => 'my-model-2', 'name' => 'My Model 2', 'version' => '2.0'],
    ];
})->listModels();
null を渡すとハンドラーを解除してデフォルトの CLI サーバー動作に戻ります。
// ハンドラーを解除してデフォルト動作(CLIサーバーに問い合わせ)に戻す
$models = Copilot::client()->listModelsUsing(null)->listModels();
listModelsUsing() が設定されている場合、listModels() は CLI サーバーへの接続を必要とせず、キャッシュも使用しません。
最新情報は GitHub リポジトリ を参照してください。
Last modified on April 22, 2026