Saltar al contenido principal

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 clase ProviderConfig tiene las siguientes propiedades:

Uso básico

Cuando usas un proveedor personalizado, el parámetro model es obligatorio.
También puedes indicarlo como array.

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 type como azure (no openai)
  • En baseUrl indica solo el host (no incluyas la ruta /openai/v1 u otras)

Azure Managed Identity

Usa bearerTokenProvider 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.
Gestiona la obtención, el almacenamiento en caché y la renovación del token dentro del callback.

Comando de API key

Si usas API keys que rotan, con apiKeyCommand 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.
  • apiKeyCommand debe ser null o una cadena que no esté en blanco. Si es una cadena vacía o solo contiene espacios, se lanza InvalidArgumentException antes de enviar la solicitud. También se lanza InvalidArgumentException si en el formato de array indicas un valor que no es una cadena. Si pasas un valor que no es una cadena al constructor de ProviderConfig, la comprobación de tipos de PHP lanza un TypeError. 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 y apiKeyCommand no 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.
  • apiKeyCommand solo está disponible en ProviderConfig (no es compatible con NamedProviderConfig).

Consideraciones importantes

Al usar un proveedor personalizado, el parámetro model es obligatorio. Si no lo indicas, se produce un error.
  • En endpoints de Azure (*.openai.azure.com), usa siempre type: 'azure'
  • Indica en baseUrl solo 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().
Pasando null se elimina el handler y se vuelve al comportamiento por defecto (consultar al servidor CLI).
Si tienes definido 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.
Última modificación el 26 de octubre de 2026