Урок 04. Обработка запросов и таймаутов. Эмбеддинги и векторы
⚡ Кратко: надёжные запросы и эмбеддинги
Реальные API ненадёжны: сервер тормозит, бывают лимиты (rate limits), разрывы сети. Код должен это переживать.
- Задержки между запросами — не упереться в лимит (Gemini 2.0 Flash в лекции: 2000 запр./мин).
- Таймаут — чтобы запрос не «висел» вечно (например, 10 с).
- Повтор с ростом задержки при ошибках 429/500/403 — библиотека
tenacity(2 → 4 → 8 с). - Эмбеддинг — числовой вектор текста; близкие по смыслу тексты → близкие векторы.
- Семантический поиск — поиск по смыслу, а не по словам (FAISS / Pinecone / Weaviate).
# retry.py — повтор запроса с экспоненциальной задержкой
from tenacity import retry, stop_after_attempt, wait_exponential
@retry(stop=stop_after_attempt(3),
wait=wait_exponential(multiplier=1, min=2, max=10))
def ask(prompt):
return client.models.generate_content(
model="gemini-2.0-flash", contents=[prompt]).text
📖 О чём этот урок
Урок 03 научил отправлять первый запрос к LLM. Но в реальной жизни API ненадёжны: сервер перегружен, есть лимиты на число запросов, сеть рвётся. Сначала научимся писать устойчивый к сбоям код (таймауты, лимиты, повторы). Затем перейдём к эмбеддингам — числовому представлению смысла текста — и построим семантический поиск, который находит похожие тексты, даже если в них нет совпадающих слов.
Что изучим
- Проблемы при работе с API: перегрузка, rate limits, нестабильная сеть
- Задержки между запросами и установка таймаута
- Ошибки API (500 / 403 / 429) и автоповтор запроса с
tenacity - Эмбеддинги: что это, зачем, как близость векторов = близость смысла
- Семантический поиск и векторные базы данных (FAISS, Pinecone, Weaviate)
- Best practices (вне лекции): косинусная близость и нормализация, батчи эмбеддингов
📚 Что повторить перед изучением
- ← Урок 03: Токенизация и работа с API LLM (клиент Gemini, .env)
- Python: функции, декораторы (в общих чертах),
try/except - Установленные
numpy,tenacity,faiss-cpu(для практики); ключ Gemini