Zum Hauptinhalt springen

Timeouts

Das im Router eingestellte Timeout gilt für die gesamte Dauer des Aufrufs und wird auch auf die Ebene des completion()-Aufrufs weitergegeben.

Globale Timeouts​

from litellm import Router 

model_list = [{...}]

router = Router(model_list=model_list,
timeout=30) # raise timeout error if call takes > 30s

print(response)

Benutzerdefinierte Timeouts, Stream-Timeouts - Pro Modell​

Für jedes Modell können Sie timeout & stream_timeout unter litellm_params einstellen.

from litellm import Router 
import asyncio

model_list = [{
"model_name": "gpt-3.5-turbo",
"litellm_params": {
"model": "azure/chatgpt-v-2",
"api_key": os.getenv("AZURE_API_KEY"),
"api_version": os.getenv("AZURE_API_VERSION"),
"api_base": os.getenv("AZURE_API_BASE"),
"timeout": 300 # sets a 5 minute timeout
"stream_timeout": 30 # sets a 30s timeout for streaming calls
}
}]

# init router
router = Router(model_list=model_list, routing_strategy="least-busy")
async def router_acompletion():
response = await router.acompletion(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": "Hey, how's it going?"}]
)
print(response)
return response

asyncio.run(router_acompletion())

Dynamische Timeouts einstellen - Pro Anfrage​

LiteLLM unterstützt das Einstellen eines timeout pro Anfrage.

Beispielverwendung

from litellm import Router 

model_list = [{...}]
router = Router(model_list=model_list)

response = router.completion(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": "what color is red"}],
timeout=1
)

Testen des Timeout-Handlings​

Um zu testen, ob Ihre Wiederholungs-/Fallback-Logik Timeouts verarbeiten kann, können Sie mock_timeout=True zu Testzwecken setzen.

Dies wird derzeit nur für die Endpunkte /chat/completions und /completions unterstützt. Bitte lassen Sie uns wissen, wenn Sie dies für andere Endpunkte benötigen.

curl -L -X POST 'http://0.0.0.0:4000/v1/chat/completions' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer sk-1234' \
--data-raw '{
"model": "gemini/gemini-1.5-flash",
"messages": [
{"role": "user", "content": "hi my email is ishaan@berri.ai"}
],
"mock_timeout": true # 👈 KEY CHANGE
}'