Как устроено взаимодействие с LLM API
Что происходит, когда ваше приложение «разговаривает» с большой языковой моделью через HTTP.
LLM API — это HTTP-эндпоинт, которому вы посылаете текст (промпт) и параметры, а в ответ получаете сгенерированный моделью текст.
Запрос → ответ, и ничего магического
С точки зрения кода работа с Claude или GPT — это обычный сетевой запрос. Вы формируете JSON-тело: модель, входные сообщения, лимит на длину ответа. Сервер прогоняет вход через нейросеть и возвращает JSON с текстом. Никакого постоянного соединения, никакой «сессии» на сервере — каждый вызов независим.
Ваше приложение ──POST /v1/messages──▶ API провайдера
◀──── JSON с ответом ───
API без состояния (stateless)
Это ключевой момент, который путает новичков. Модель не помнит предыдущие запросы. Если вы спросили «Как меня зовут?» после того как в прошлом запросе представились, — она не ответит, потому что прошлый запрос для неё не существует. Чтобы поддержать диалог, вы сами при каждом вызове отправляете всю историю переписки. Об этом — весь второй раздел курса.
Из чего состоит запрос
| Поле | Зачем |
model | какую модель использовать (например, claude-opus-4-8) |
messages | массив сообщений диалога (роль + содержимое) |
max_tokens | верхний предел длины ответа |
system / system-роль | инструкция, задающая поведение модели |
Как выглядит минимальный обмен
Тело запроса (для Anthropic Messages API) — это JSON:
{
"model": "claude-opus-4-8",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "Привет! Назови столицу Франции."}
]
}
Ответ — тоже JSON, текст лежит внутри массива блоков:
{
"id": "msg_01XYZ",
"role": "assistant",
"content": [
{"type": "text", "text": "Столица Франции — Париж."}
],
"stop_reason": "end_turn",
"usage": {"input_tokens": 14, "output_tokens": 7}
}
Почему важно понимать это с самого начала
Вся «магия» LLM-приложений (чат-боты, ассистенты, RAG, агенты) строится поверх этого простого цикла «запрос-ответ». Память, инструменты, потоковый вывод — это надстройки. Если держать в голове, что сервер ничего не помнит и каждый раз получает полный контекст, большинство ошибок интеграции отпадают сами.
Итог
- Вызов LLM — это обычный HTTP POST с JSON-телом.
- API без состояния: историю диалога отправляете вы при каждом запросе.
- В ответе — текст плюс служебные поля: причина остановки и счётчики токенов.