Skip to main content

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.

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 19 de octubre de 2026