Simulieren von Fehlern aus OpenAI-APIs
Wenn Sie OpenAI-APIs in Ihrer App verwenden, sollten Sie testen, wie Ihre App API-Fehler behandelt. Mit dem Dev Proxy können Sie Fehler in jeder OpenAI-API mithilfe von GenericRandomErrorPlugin simulieren.
Tipp
Laden Sie diese Voreinstellung herunter, indem Sie an der Eingabeaufforderung devproxy preset get openai-throttling
ausführen.
Suchen Sie im Dev Proxy-Installationsordner nach dem presets
Ordner. Erstellen Sie im presets
Ordner eine neue Datei mit dem Namen openai-errors.json
. Öffnen Sie die Datei in einem Code-Editor.
Erstellen Sie ein neues Objekt im Array, das plugins
GenericRandomErrorPlugin
auf verweist. Definieren Sie die OpenAI-API-URL für das Plug-In, für das watch soll, und fügen Sie einen Verweis auf die Plug-In-Konfiguration hinzu.
{
"$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.14.1/rc.schema.json",
"plugins": [
{
"name": "GenericRandomErrorPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll",
"configSection": "openAIAPI",
"urlsToWatch": [
"https://api.openai.com/*"
]
}
]
}
Erstellen Sie das Plug-In-Konfigurationsobjekt, um dem Plug-In den Speicherort der Fehlerantworten bereitzustellen.
{
"$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.14.1/rc.schema.json",
"plugins": [
{
"name": "GenericRandomErrorPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll",
"configSection": "openAIAPI",
"urlsToWatch": [
"https://api.openai.com/*"
]
}
],
"openAIAPI": {
"errorsFile": "errors-openai.json"
}
}
Erstellen Sie die errors-openai.json
Datei im selben Ordner. Diese Datei enthält die möglichen Fehlerantworten, die zurückgegeben werden können, wenn das Plug-In eine Fehlerantwort sendet.
{
"responses": [
{
"statusCode": 429,
"headers": [
{
"name": "content-type",
"value": "application/json; charset=utf-8"
}
],
"body": {
"error": {
"message": "Rate limit reached for default-text-davinci-003 in organization org-K7hT684bLccDbBRnySOoK9f2 on tokens per min. Limit: 150000.000000 / min. Current: 160000.000000 / min. Contact support@openai.com if you continue to have issues. Please add a payment method to your account to increase your rate limit. Visit https://beta.openai.com/account/billing to add a payment method.",
"type": "tokens",
"param": null,
"code": null
}
}
},
{
"statusCode": 429,
"headers": [
{
"name": "content-type",
"value": "application/json; charset=utf-8"
}
],
"body": {
"error": {
"message": "Rate limit reached for default-text-davinci-003 in organization org-K7hT684bLccDbBRnySOoK9f2 on requests per min. Limit: 60.000000 / min. Current: 70.000000 / min. Contact support@openai.com if you continue to have issues. Please add a payment method to your account to increase your rate limit. Visit https://beta.openai.com/account/billing to add a payment method.",
"type": "requests",
"param": null,
"code": null
}
}
},
{
"statusCode": 429,
"addDynamicRetryAfter": true,
"headers": [
{
"name": "content-type",
"value": "application/json; charset=utf-8"
}
],
"body": {
"error": {
"message": "The engine is currently overloaded, please try again later.",
"type": "requests",
"param": null,
"code": null
}
}
}
]
}
Starten Sie den Dev Proxy mit der Konfigurationsdatei:
devproxy --config-file "~appFolder/presets/openai-errors.json"
Wenn Sie Ihre App verwenden, die OpenAI-APIs aufruft, gibt der Dev Proxy zufällig eine der Fehlerantworten zurück, die Sie in der errors-openai.json
Datei definiert haben.
Erfahren Sie mehr über genericRandomErrorPlugin.