Учебник Работа с API LLM (Claude, OpenAI) для начинающих
Глубокий практический курс для разработчиков, которые встраивают большие языковые модели (Claude, OpenAI/GPT) в приложения. От первого запроса и устройства API до function calling, структурированного вывода, стриминга, кэширования, RAG и продакшн-инженерии: стоимости, безопасности, наблюдаемости и тестирования. Реальная разработка с LLM API, а не теория.
Курс «Работа с API LLM (Claude, OpenAI)» состоит из 6 разделов и 28 уроков: Основы LLM API, Формат сообщений и параметры, Стриминг и обработка ответов, Структурированный вывод и инструменты, Продвинутые возможности и Продакшн. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.
Программа курса
1 Основы LLM API
- Как устроено взаимодействие с LLM API
Запрос с промптом, ответ модели, stateless-природа HTTP API больших языковых моделей: базовая ментальная модель для разработчика.
- Ключи API и безопасность
Как хранить ключи API LLM: переменные окружения, секрет-менеджеры, почему ключи нельзя коммитить в репозиторий и держать во фронтенде.
- Первый запрос: Claude и OpenAI
Структура первого запроса к Anthropic Messages API и OpenAI Chat Completions, установка SDK и извлечение текста ответа.
- Модель, токены и стоимость
Что такое токены, как выбрать модель LLM по цене и качеству и как оценить стоимость запроса. Запускаемый грубый счётчик токенов.
- Лимиты и rate limits
Что такое rate limits (RPM, TPM, TPD) в LLM API, как читать заголовки лимитов и почему ошибка 429 — это нормально.
- Как устроено взаимодействие с LLM API
2 Формат сообщений и параметры
- Роли и история диалога
Роли system, user и assistant в LLM API и как из них собирается история диалога. Запускаемая сборка массива messages.
- Многоходовой разговор
Как поддерживать многоходовой диалог с LLM: передача истории, рост контекста и обрезка старых сообщений. Запускаемый пример окна истории.
- Параметры генерации
Параметры генерации LLM: temperature, max_tokens, top_p, stop-последовательности — на что влияет каждый и когда какой использовать.
- Системный промпт
Зачем нужен системный промпт в LLM API, как он задаёт роль и правила модели и чем отличается от пользовательских сообщений.
- Роли и история диалога
3 Стриминг и обработка ответов
- Потоковая генерация (streaming)
Зачем нужен стриминг в LLM API, как обрабатывать чанки ответа и почему длинные ответы лучше получать потоком. Запускаемая сборка текста из чанков.
- Структура ответа и учёт токенов
Как устроен ответ LLM API: извлечение текста, stop_reason и счётчики токенов usage. Запускаемый разбор готового JSON-ответа.
- Обработка ошибок: таймауты, повторы, backoff
Как обрабатывать ошибки LLM API: коды 429 и 5xx, таймауты, идемпотентные повторы и экспоненциальный backoff. Запускаемый расчёт задержек.
- Асинхронные запросы
Идея асинхронных и параллельных запросов к LLM API: зачем нужен async, как обрабатывать много запросов одновременно и где подводные камни.
- Потоковая генерация (streaming)
4 Структурированный вывод и инструменты
- Получение строгого JSON
Как заставить LLM возвращать строгий JSON: схемы, structured outputs, валидация ответа. Запускаемая проверка JSON по схеме полей.
- Вызов инструментов: как это работает
Function calling / tool use в LLM API: полный протокол вызова инструментов — определение tools, блок tool_use, выполнение и возврат результата.
- Диспетчеризация вызова инструмента
Как маршрутизировать вызов инструмента LLM по имени к нужной функции через реестр. Запускаемый пример диспетчера tool_use.
- Параллельные вызовы инструментов
Параллельные вызовы инструментов в LLM: когда модель просит несколько вызовов сразу и как вернуть все результаты одним сообщением. Запускаемый пример.
- Получение строгого JSON
5 Продвинутые возможности
- Длинный контекст и документы
Работа с длинным контекстом и документами в LLM API: контекстное окно, передача документов, цитирование и стратегии для больших текстов.
- Мультимодальность: изображения на вход
Обзор мультимодальности LLM: передача изображений на вход модели, форматы, базовые сценарии и ограничения работы с картинками.
- Кэширование промптов
Кэширование промптов в LLM API: как переиспользовать общий префикс контекста ради экономии. Запускаемый расчёт экономии на кэше.
- Батчевая обработка
Батчевая обработка в LLM API: как массово обрабатывать тысячи запросов асинхронно дешевле и когда выбирать batch вместо обычных вызовов.
- Эмбеддинги и мост к RAG
Эмбеддинги через API: как превратить текст в вектор для поиска по смыслу и построить RAG. Запускаемый расчёт косинусной близости.
- Длинный контекст и документы
6 Продакшн
- Архитектура приложения с LLM
Архитектура продакшн-приложения с LLM: где хранить промпты, как организовать ретраи и фолбэки, изоляция LLM-слоя.
- Контроль стоимости
Как контролировать стоимость LLM в продакшене: выбор модели, сокращение токенов, кэш и батчи. Запускаемый расчёт затрат по моделям.
- Безопасность: инъекции, модерация, ограничение вывода
Безопасность LLM-приложений: промпт-инъекции, модерация ввода и вывода, ограничение действий модели. Запускаемый наивный детектор инъекций.
- Наблюдаемость: логи и метрики
Наблюдаемость LLM-приложений: что логировать в запросах и ответах, какие метрики собирать (латентность, токены, стоимость, ошибки).
- Тестирование LLM-функций
Как тестировать функции с LLM: моки вместо реального API, проверка парсинга и логики, оценочные тесты качества. Запускаемый пример с фейк-клиентом.
- Claude vs OpenAI и что дальше
Различия Claude и OpenAI API, переносимость кода между провайдерами и направления для дальнейшего изучения: фреймворки и агенты.
- Архитектура приложения с LLM