Proveedores personalizados
Los proveedores personalizados (BYOK - Bring Your Own Key) permiten conectarse a endpoints de API compatibles con OpenAI usando tu propia API key. También admite proveedores locales como Ollama.ProviderConfig
La claseProviderConfig tiene las siguientes propiedades:
Uso básico
Cuando usas un proveedor personalizado, el parámetromodel es obligatorio.
Ollama (proveedor local)
Para proveedores locales como Ollama,apiKey no es necesaria.
Azure OpenAI
Para usar Azure OpenAI, ten en cuenta lo siguiente:- Indica siempre
typecomoazure(noopenai) - En
baseUrlindica solo el host (no incluyas la ruta/openai/v1u otras)
Azure Managed Identity
UsabearerTokenProvider cuando tu proveedor utilice tokens de corta duración, como Azure Managed Identity. El runtime llama al callback en cada solicitud al proveedor. El callback recibe un array que contiene providerName y sessionId, y debe devolver el bearer token como string. El siguiente ejemplo llama a un servicio de tokens de tu aplicación.
Comando de API key
Si usas API keys que rotan, conapiKeyCommand puedes ejecutar un comando antes de cada solicitud al proveedor para obtener la key más reciente. El comando lo ejecuta el runtime de Copilot, no este paquete.
apiKeyCommanddebe sernullo una cadena que no esté en blanco. Si es una cadena vacía o solo contiene espacios, se lanzaInvalidArgumentExceptionantes de enviar la solicitud. También se lanzaInvalidArgumentExceptionsi en el formato de array indicas un valor que no es una cadena. Si pasas un valor que no es una cadena al constructor deProviderConfig, la comprobación de tipos de PHP lanza unTypeError. Los mensajes de excepción no incluyen el comando.- El runtime trata un fallo del comando como un fallo del turno, y no se envía ninguna solicitud al modelo.
- Si indicas
bearerTokenProvider, este tiene prioridad yapiKeyCommandno se ejecuta. - Trata la cadena del comando como información sensible, igual que las credenciales, y no la escribas en logs ni en mensajes de excepción. Este paquete tampoco registra el comando ni su salida.
apiKeyCommandsolo está disponible enProviderConfig(no es compatible conNamedProviderConfig).
Consideraciones importantes
- En endpoints de Azure (
*.openai.azure.com), usa siempretype: 'azure' - Indica en
baseUrlsolo el host; el SDK construye la ruta automáticamente
Handler onListModels
Cuando usas un proveedor personalizado en modo BYOK, puedes hacer que client->listModels() invoque un handler personalizado en lugar del servidor CLI.
Se configura con el método listModelsUsing(). Como el client es fácil de inicializar, define siempre listModelsUsing() antes de listModels().
null se elimina el handler y se vuelve al comportamiento por defecto (consultar al servidor CLI).
listModelsUsing(), listModels() no necesita conexión con el servidor CLI ni usa la caché.
Consulta la información más reciente en el repositorio de GitHub.