Benutzerdefinierte Provider
Mit benutzerdefinierten Providern (BYOK – Bring Your Own Key) können Sie mit eigenen API-Schlüsseln OpenAI-kompatible API-Endpunkte anbinden. Lokale Provider wie Ollama werden ebenfalls unterstützt.ProviderConfig
Die KlasseProviderConfig hat folgende Eigenschaften.
Grundlegende Verwendung
Wenn Sie einen benutzerdefinierten Provider verwenden, ist der Parametermodel erforderlich.
Ollama (lokaler Provider)
Für lokale Provider wie Ollama istapiKey nicht erforderlich.
Azure OpenAI
Beachten Sie bei der Verwendung von Azure OpenAI Folgendes.- Für
typemuss zwingendazureangegeben werden (nichtopenai) - In
baseUrlnur den Host angeben (keine Pfade wie/openai/v1mitgeben)
Azure Managed Identity
Verwenden SiebearerTokenProvider, wenn Ihr Provider kurzlebige Tokens verwendet, etwa bei Azure Managed Identity. Die Runtime ruft den Callback bei jeder Provider-Anfrage auf. Der Callback erhält ein Array mit providerName und sessionId und muss das Bearer-Token als String zurückgeben. Das folgende Beispiel ruft einen Token-Service Ihrer Anwendung auf.
API-Schlüssel-Befehl
Wenn Sie rotierende API-Schlüssel verwenden, können Sie mitapiKeyCommand vor jeder Provider-Anfrage einen Befehl ausführen, der den aktuellen Schlüssel abruft. Der Befehl wird von der Copilot-Runtime ausgeführt, nicht von diesem Paket.
apiKeyCommandmussnulloder ein nicht leerer String sein. Bei einem leeren String oder einem String nur aus Leerzeichen wird vor dem Senden der Anfrage eineInvalidArgumentExceptionausgelöst. Auch wenn Sie im Array-Format einen Nicht-String angeben, wird eineInvalidArgumentExceptionausgelöst. Übergeben Sie demProviderConfig-Konstruktor einen Nicht-String, löst die PHP-Typprüfung einenTypeErroraus. Die Ausnahmemeldung enthält den Befehl nicht.- Ein Fehlschlagen des Befehls wird von der Runtime als fehlgeschlagener Turn behandelt, und es wird keine Anfrage an das Modell gesendet.
- Wenn
bearerTokenProviderangegeben ist, hat dieser Vorrang, undapiKeyCommandwird nicht ausgeführt. - Behandeln Sie den Befehls-String wie Zugangsdaten als vertraulich und geben Sie ihn nicht in Logs oder Ausnahmemeldungen aus. Auch dieses Paket protokolliert weder den Befehl noch dessen Ausgabe.
apiKeyCommandist nur inProviderConfigverfügbar (inNamedProviderConfignicht unterstützt).
Wichtige Hinweise
- Verwenden Sie bei Azure-Endpunkten (
*.openai.azure.com) unbedingttype: 'azure' - Geben Sie in
baseUrlnur den Host an; die Pfadbildung übernimmt das SDK automatisch
onListModels-Handler
Wenn Sie im BYOK-Modus einen benutzerdefinierten Provider einsetzen, können Sieclient->listModels() so konfigurieren, dass statt des CLI-Servers ein benutzerdefinierter Handler aufgerufen wird.
Konfigurieren Sie ihn mit der Methode listModelsUsing(). Da der Client leicht initialisiert wird, setzen Sie listModelsUsing() stets vor listModels().
null wird der Handler aufgehoben, und das Standardverhalten des CLI-Servers wird wiederhergestellt.
listModelsUsing() konfiguriert ist, benötigt listModels() keine Verbindung zum CLI-Server und verwendet auch keinen Cache.
Aktuelle Informationen finden Sie im GitHub-Repository.