Ваш первый вызов API
Поприветствовать Claude, возможно, приятно, но не очень полезно. В этом уроке мы отправим Claude нечто осмысленное и получим структурированную информацию в ответ — всего за двадцать строк кода.
Настройка
Сначала получите API key на platform.claude.com. Вам потребуется предварительно приобрести кредиты.
Возьмите API key и сохраните его в файле .env.local, чтобы он не попал в вашу систему контроля версий. Жёсткое кодирование ключей в исходных файлах приводит к их утечке на GitHub — вместо этого храните их в файлах окружения.
Далее установите SDK:
npm install @anthropic-ai/sdkАнатомия запроса
Каждый вызов API проходит через функцию messages.create. Вы указываете три параметра:
- Модель — какая модель Claude обрабатывает запрос
- Лимит max tokens — ограничение на длину ответа
- Список messages — объекты с ролями
userилиassistant, структурированные аналогично тому, как вы бы общались с Claude в другом месте
Вот как это выглядит в своей простейшей форме:
import Anthropic from "@anthropic-ai/sdk"; const client = new Anthropic(); const msg = await client.messages.create({ model: "claude-sonnet-5", max_tokens: 2048, messages: [{ role: "user", content: "Hello, Claude", }], });Реальный пример: анализ ошибочного кода
Давайте дадим Claude что-то более интересное, чем "привет". Мы укажем ему на ошибочный код и попросим провести ревью. Вот весь код — один файл, около 20 строк:
import Anthropic from "@anthropic-ai/sdk"; const client = new Anthropic(); const buggyCode = ` function add(a, b) { return a - b; } `; const response = await client.messages.create({ model: "claude-sonnet-5", max_tokens: 2048, system: "You are a terse senior code reviewer. Give feedback in one paragraph.", messages: [ { role: "user", content: `Review this code:\n${buggyCode}` }, ], }); for (const block of response.content) { if (block.type === "text") { console.log(block.text); } }Здесь стоит отметить две вещи:
systemprompt — это то место, где вы формируете личность. Я хочу получить краткого старшего ревьюера, а не болтливого — поэтому я просто указываю это.message.contentв ответе представляет собой массив блоков, а не строку. Для простого текстового ответа обычно есть только один блок типаtext, но Claude может возвращать несколько блоков — текст, вызовы инструментов (tool calls), размышления — поэтому мы всегда перебираем их и проверяем тип.
Запустите его, и Claude обнаружит, что add выполняет вычитание, и сообщит вам об этом в одном абзаце. Вот и всё. Это весь вызов API.
От скрипта к продукту
В реальном продукте эта же структура messages.create является основой для таких вещей, как endpoint для суммаризации. Извлеките стенограмму совещания из базы данных, передайте её Claude с system prompt, который гласит "извлечь инсайты и риски", сохраните результат обратно в строку и верните его в UI. Это тот же вызов — просто обёрнутый в обработчик маршрута (route handler).
Итоги
- Ваш первый вызов API — это функция
messages.createс model, token limit и messages. - Храните ваш API key в файле
.env.local, чтобы он не попал в систему контроля версий. - Добавьте system prompt, чтобы формировать поведение Claude.
contentответа — это массив блоков; перебирайте их и проверяйтеtypeкаждого блока.- Далее всё строится на этом шаблоне.