Senior
16
Как бы ты написал retry-логику при обращении к LLM? Знаком ли с библиотекой Tenacity?
Companies where asked
Сбербанк
Answer from AI
sobes.tech AI
Для реализации retry-логики при обращении к LLM (Large Language Model) важно учитывать возможные временные ошибки, таймауты и ограничения по количеству запросов. Библиотека Tenacity — это мощный инструмент для Python, который позволяет легко настроить повторные попытки с различными стратегиями (экспоненциальная задержка, максимальное количество попыток, фильтрация исключений и т.д.).
Пример использования Tenacity для вызова LLM с retry:
from tenacity import retry, stop_after_attempt, wait_exponential, retry_if_exception_type
import requests
class LLMError(Exception):
pass
@retry(
stop=stop_after_attempt(5),
wait=wait_exponential(multiplier=1, min=2, max=10),
retry=retry_if_exception_type(LLMError)
)
def call_llm_api(prompt):
response = requests.post('https://api.llm.example/generate', json={'prompt': prompt})
if response.status_code != 200:
raise LLMError(f"API error: {response.status_code}")
return response.json()
# Использование
try:
result = call_llm_api("Привет, расскажи анекдот")
print(result)
except LLMError as e:
print(f"Не удалось получить ответ от LLM: {e}")
Такой подход позволяет автоматически повторять запросы при временных ошибках, снижая вероятность сбоев в работе приложения.