Sobes.tech
Senior
15

Как бы ты написал retry-логику при обращении к LLM? Знаком ли с библиотекой Tenacity?

Компании, где спрашивали
Сбербанк

Ответ от нейросети

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}")

Такой подход позволяет автоматически повторять запросы при временных ошибках, снижая вероятность сбоев в работе приложения.