Vai al contenuto principale

Provider personalizzati

Utilizzando un provider personalizzato (BYOK - Bring Your Own Key), puoi collegarti a endpoint API compatibili con OpenAI usando la tua chiave. Sono supportati anche provider locali come Ollama.

ProviderConfig

La classe ProviderConfig ha le seguenti proprietà.

Uso di base

Quando usi un provider personalizzato, il parametro model è obbligatorio.
Puoi specificarlo anche come array.

Ollama (provider locale)

Per provider locali come Ollama, apiKey non è necessaria.

Azure OpenAI

Quando usi Azure OpenAI, tieni presente quanto segue.
  • Specifica sempre type come azure (non openai)
  • Indica in baseUrl solo l’host (non includere path come /openai/v1)

Azure Managed Identity

Usa bearerTokenProvider quando il provider utilizza token di breve durata, come Azure Managed Identity. Il runtime chiama il callback a ogni richiesta al provider. Il callback riceve un array contenente providerName e sessionId e deve restituire il bearer token come stringa. L’esempio seguente chiama un servizio di token della tua applicazione.
Gestisci l’ottenimento, la memorizzazione nella cache e il rinnovo del token all’interno del callback.

Comando per l’API key

Se usi API key soggette a rotazione, con apiKeyCommand puoi eseguire un comando prima di ogni richiesta al provider per ottenere la chiave più recente. Il comando viene eseguito dal runtime Copilot, non da questo pacchetto.
  • apiKeyCommand deve essere null oppure una stringa non vuota. Una stringa vuota o composta solo da spazi solleva InvalidArgumentException prima dell’invio della richiesta. Anche un valore non stringa nel formato array solleva InvalidArgumentException. Passando un valore non stringa al costruttore di ProviderConfig, il controllo dei tipi di PHP solleva un TypeError. Il messaggio dell’eccezione non include il comando.
  • Il fallimento del comando viene trattato dal runtime come fallimento del turno e nessuna richiesta viene inviata al modello.
  • Se specifichi bearerTokenProvider, questo ha la priorità e apiKeyCommand non viene eseguito.
  • Tratta la stringa del comando come riservata, al pari delle credenziali, e non riportarla nei log o nei messaggi di eccezione. Anche questo pacchetto non registra nei log il comando né il suo output.
  • apiKeyCommand è disponibile solo in ProviderConfig (non supportato in NamedProviderConfig).

Considerazioni importanti

Quando usi un provider personalizzato, il parametro model è obbligatorio. Se non lo specifichi, otterrai un errore.
  • Per gli endpoint Azure (*.openai.azure.com) usa sempre type: 'azure'
  • Specifica in baseUrl solo l’host; la costruzione del path è gestita automaticamente dall’SDK

Handler onListModels

Se usi un provider personalizzato in modalità BYOK, puoi configurare client->listModels() in modo che invochi un handler personalizzato invece del server CLI. Configuralo con il metodo listModelsUsing(). Poiché il client tende a essere già inizializzato, imposta sempre listModelsUsing() prima di listModels().
Passando null rimuovi l’handler e torni al comportamento predefinito del server CLI.
Se listModelsUsing() è impostato, listModels() non richiede una connessione al server CLI e non usa la cache.
Per le informazioni più recenti fai riferimento al repository GitHub.
Ultima modifica il 26 ottobre 2026