L2 Открытый урок · Новичок

L2.7. HTTP, REST, API и первый вызов LLM

Запрос и ответ, коды статуса, REST, таймауты и первый вызов LLM API через SDK: сообщения, блоки ответа, токены и ошибки.

Объём
4 урока · 10 часов
Компетенции
PROG-05·F, API-01·F

Запрос и ответ

Программы общаются по HTTP: клиент отправляет запрос (метод, адрес, заголовки, тело), сервер возвращает ответ (код статуса, заголовки, тело — часто JSON).

Код Значит Что делать
200 всё хорошо читать ответ
400 ошибка в запросе исправить запрос
401 / 403 нет доступа проверить ключ и права
404 нет такого ресурса проверить адрес
429 слишком много запросов подождать и повторить
500–599 сбой на сервере повторить позже

REST — стиль API, где адрес обозначает ресурс (/repos/python/cpython), а метод — действие: GET — получить, POST — создать или отправить.

Первый запрос к публичному API

import requests

resp = requests.get("https://api.github.com/repos/python/cpython", timeout=10)
resp.raise_for_status()                 # ошибка, если код не 2xx
data = resp.json()
print(data["full_name"], data["stargazers_count"])

Всегда ставьте timeout: без него программа может ждать вечно.

Первый вызов LLM API

У провайдеров моделей есть SDK — библиотека, которая делает HTTP-запросы за вас. Пример с Claude (pip install "anthropic>=1.0,<2"):

import anthropic

client = anthropic.Anthropic()          # ключ берётся из ANTHROPIC_API_KEY
resp = client.messages.create(
    model="claude-opus-5-5",
    max_tokens=16000,                   # у этой модели рассуждение входит в лимит — не ставьте мало
    messages=[{"role": "user", "content": "Объясни, что такое токен, в двух предложениях."}],
)
text = next(b.text for b in resp.content if b.type == "text")   # ответ — список блоков
print(text)
print("токенов:", resp.usage.input_tokens, "+", resp.usage.output_tokens)

Что здесь важно:

  • Сообщения — список с ролями: user (вы), assistant (модель). История диалога — это этот список (вспомните L1.1).
  • Ответ — не строка, а объект. Текст лежит в блоках content; кроме текста там бывают другие блоки — например, рассуждение модели. Поэтому берём именно блок text.
  • Токены приходят в usage — по ним считается цена (задача 20 из L2.4).
  • Ошибки: SDK сам повторяет запрос при 429, 5xx и сетевых сбоях, а остальные бросает исключениями: anthropic.AuthenticationError (неверный ключ), anthropic.APIConnectionError (нет сети), anthropic.APIStatusError (другие коды).

Практикум: вызов публичного API

Скрипт: запрашивает данные публичного API (GitHub или любой без ключа) по названию из аргумента командной строки, обрабатывает 404 и отсутствие сети понятным сообщением, сохраняет нужные поля в JSON-файл.

Диагностика уровня

С какого уровня начать?

Оставьте контакты — свяжемся, зададим несколько вопросов об опыте и целях и подскажем уровень входа: с нуля, с середины программы или через Fast Track для разработчиков.

Или напишите: hello@superint.ru