自定义提供商
使用自定义提供商(BYOK - Bring Your Own Key)后,你可以用自己的 API key 连接到 OpenAI 兼容的 API 端点。也支持 Ollama 等本地提供商。ProviderConfig
ProviderConfig 类具有以下属性。
基本使用方式
使用自定义提供商时,model 参数是 必需的。
Ollama(本地提供商)
Ollama 等本地提供商不需要apiKey。
Azure OpenAI
使用 Azure OpenAI 时,请注意以下几点。type必须指定为azure(而不是openai)baseUrl只指定 host(不包含/openai/v1等路径)
Azure Managed Identity
当提供商使用 Azure Managed Identity 等短期有效的令牌时,请使用bearerTokenProvider。运行时会在每次提供商请求时调用该回调。回调会接收一个包含 providerName 和 sessionId 的数组,并且必须以字符串形式返回 Bearer Token。以下示例调用了应用中的令牌服务。
API key 命令
使用会轮换的 API key 时,可以通过apiKeyCommand 在每次提供商请求前执行命令以获取最新的 key。该命令由 Copilot 运行时执行,而不是由本包执行。
apiKeyCommand必须是null或非空白字符串。如果是空字符串或仅包含空白,会在发送请求前抛出InvalidArgumentException。在数组形式中指定非字符串值时也会抛出InvalidArgumentException。向ProviderConfig构造函数传入非字符串值时,PHP 的类型检查会抛出TypeError。异常消息中不会包含命令内容。- 命令失败会在运行时侧被视为该轮次失败,不会向模型发送请求。
- 指定
bearerTokenProvider时以其为优先,apiKeyCommand不会被执行。 - 请像对待凭据一样将命令字符串视为敏感信息,不要将其输出到日志或异常消息中。本包也不会在日志中记录命令或其输出。
apiKeyCommand仅可在ProviderConfig中使用(NamedProviderConfig不支持)。
重要注意事项
- 在 Azure 端点(
*.openai.azure.com)上,请务必使用type: 'azure' baseUrl只指定 host,路径的构建由 SDK 自动完成
onListModels 处理器
在 BYOK 模式下使用自定义提供商时,可以配置让client->listModels() 调用自定义处理器而不是 CLI 服务器。
使用 listModelsUsing() 方法进行配置。由于 client 容易被初始化,因此请始终在 listModels() 之前设置 listModelsUsing()。
null 可以解除处理器,回到默认的 CLI 服务器行为。
listModelsUsing() 时,listModels() 不需要连接 CLI 服务器,也不使用缓存。
最新信息请参考 GitHub 仓库。