Zum Hauptinhalt springen

Ausnahmesteuerung

LiteLLM bildet Ausnahmen über alle Anbieter auf ihre OpenAI-Gegenstücke ab.

Alle Ausnahmen können aus litellm importiert werden - z.B. from litellm import BadRequestError

LiteLLM-Ausnahmen​

StatuscodeFehlertypErbt vonBeschreibung
400BadRequestErroropenai.BadRequestError
400UnsupportedParamsErrorlitellm.BadRequestErrorAusgelöst, wenn nicht unterstützte Parameter übergeben werden
400ContextWindowExceededErrorlitellm.BadRequestErrorSpezieller Fehlertyp für Fehlermeldungen, die das Überschreiten des Kontextfensters betreffen - ermöglicht Fallbacks für das Kontextfenster
400ContentPolicyViolationErrorlitellm.BadRequestErrorSpezieller Fehlertyp für Fehlermeldungen, die die Verletzung von Inhaltsrichtlinien betreffen - ermöglicht Fallbacks für Inhaltsrichtlinien
400InvalidRequestErroropenai.BadRequestErrorVeraltet, verwenden Sie stattdessen BadRequestError
401AuthenticationErroropenai.AuthenticationError
403PermissionDeniedErroropenai.PermissionDeniedError
404NotFoundErroropenai.NotFoundErrorWird ausgelöst, wenn ungültige Modelle übergeben werden, z. B. gpt-8
408Timeoutopenai.APITimeoutErrorAusgelöst, wenn ein Timeout auftritt
422UnprocessableEntityErroropenai.UnprocessableEntityError
429RateLimitErroropenai.RateLimitError
500APIConnectionErroropenai.APIConnectionErrorWenn eine nicht zugeordnete Ausnahme zurückgegeben wird, geben wir diese Ausnahme zurück
500APIErroropenai.APIErrorGenereller Fehler mit Statuscode 500
503ServiceUnavailableErroropenai.APIStatusErrorWenn der Anbieter einen Fehler wegen nicht verfügbarer Dienste zurückgibt, wird diese Ausnahme ausgelöst
>=500InternalServerErroropenai.InternalServerErrorWenn ein nicht zugeordneter Fehler mit Statuscode 500 zurückgegeben wird, wird diese Ausnahme ausgelöst
N/AAPIResponseValidationErroropenai.APIResponseValidationErrorWenn Regeln verwendet werden und Anfrage/Antwort eine Regel verletzen, wird diese Ausnahme ausgelöst
N/ABudgetExceededErrorExceptionAusgelöst für den Proxy, wenn das Budget überschritten wird
N/AJSONSchemaValidationErrorlitellm.APIResponseValidationErrorAusgelöst, wenn die Antwort nicht dem erwarteten JSON-Schema entspricht - verwendet, wenn der Parameter response_schema mit enforce_validation=True übergeben wird
N/AMockExceptionExceptionInterne Ausnahme, ausgelöst durch die Klasse mock_completion. Nicht direkt verwenden
N/AOpenAIErroropenai.OpenAIErrorVeraltete interne Ausnahme, erbt von openai.OpenAIError.

Basisfall - wir geben APIConnectionError zurück

Alle unsere Ausnahmen erben von den Ausnahmetypen von OpenAI, daher sollte jede Fehlerbehandlung, die Sie für diese haben, sofort mit LiteLLM funktionieren.

In allen Fällen erbt die zurückgegebene Ausnahme von der ursprünglichen OpenAI-Ausnahme, enthält aber 3 zusätzliche Attribute

  • status_code - der http-statuscode der Ausnahme
  • message - die Fehlermeldung
  • llm_provider - der Anbieter, der die Ausnahme auslöst

Verwendung​

import litellm
import openai

try:
response = litellm.completion(
model="gpt-4",
messages=[
{
"role": "user",
"content": "hello, write a 20 pageg essay"
}
],
timeout=0.01, # this will raise a timeout exception
)
except openai.APITimeoutError as e:
print("Passed: Raised correct exception. Got openai.APITimeoutError\nGood Job", e)
print(type(e))
pass

Verwendung - Streaming-Ausnahmen abfangen​

import litellm
try:
response = litellm.completion(
model="gpt-3.5-turbo",
messages=[
{
"role": "user",
"content": "hello, write a 20 pg essay"
}
],
timeout=0.0001, # this will raise an exception
stream=True,
)
for chunk in response:
print(chunk)
except openai.APITimeoutError as e:
print("Passed: Raised correct exception. Got openai.APITimeoutError\nGood Job", e)
print(type(e))
pass
except Exception as e:
print(f"Did not raise error `openai.APITimeoutError`. Instead raised error type: {type(e)}, Error: {e}")

Verwendung - Sollten Sie die Ausnahme erneut versuchen?​

import litellm
import openai

try:
response = litellm.completion(
model="gpt-4",
messages=[
{
"role": "user",
"content": "hello, write a 20 pageg essay"
}
],
timeout=0.01, # this will raise a timeout exception
)
except openai.APITimeoutError as e:
should_retry = litellm._should_retry(e.status_code)
print(f"should_retry: {should_retry}")

Details​

Um zu sehen, wie es implementiert ist - schauen Sie sich den Code an

Erstellen Sie ein Problem oder machen Sie einen PR, wenn Sie die Ausnahmezuordnung verbessern möchten.

Hinweis Für OpenAI und Azure geben wir die ursprüngliche Ausnahme zurück (da sie vom Typ OpenAI Error sind). Wir fügen ihnen jedoch das Attribut 'llm_provider' hinzu. Siehe Code

Benutzerdefinierte Zuordnungsliste​

Basisfall - wir geben die Ausnahme litellm.APIConnectionError zurück (erbt von der Ausnahme APIConnectionError von openai).

custom_llm_providerTimeoutContextWindowExceededErrorBadRequestErrorNotFoundErrorContentPolicyViolationErrorAuthenticationErrorAPIErrorRateLimitErrorServiceUnavailableErrorPermissionDeniedErrorUnprocessableEntityError
openai✓✓✓✓✓
watsonx✓
text-completion-openai✓✓✓✓✓
custom_openai✓✓✓✓✓
openai_compatible_providers✓✓✓✓✓
anthropic✓✓✓✓✓✓✓
replicate✓✓✓✓✓✓✓
bedrock✓✓✓✓✓✓✓✓
sagemaker✓✓
vertex_ai✓✓✓✓
palm✓✓✓
gemini✓✓✓
cloudflare✓✓
cohere✓✓✓✓
cohere_chat✓✓✓✓
huggingface✓✓✓✓✓✓
ai21✓✓✓✓✓✓
nlp_cloud✓✓✓✓✓✓✓
together_ai✓✓✓✓
aleph_alpha✓✓
ollama✓✓✓
ollama_chat✓✓✓
vllm✓✓
azure✓✓✓✓✓✓✓
  • "✓" bedeutet, dass der angegebene custom_llm_provider die entsprechende Ausnahme auslösen kann.
  • Leere Zellen deuten auf fehlende Zuordnung hin oder darauf, dass der Anbieter diesen bestimmten Ausnahmetyp nicht wie in der Funktion angegeben auslöst.

Für ein tieferes Verständnis dieser Ausnahmen können Sie diese Implementierung zur zusätzlichen Einsicht konsultieren.

Die ContextWindowExceededError ist eine Unterklasse von InvalidRequestError. Sie wurde eingeführt, um mehr Granularität für die Ausnahmebehandlung zu bieten. Bitte beziehen Sie sich auf dieses Problem, um mehr zu erfahren.

Beiträge zur Verbesserung der Ausnahmezuordnung sind willkommen