AI.Product ClubБлог Михаила Карпова
← Все материалы
HOW-TOИИ-агенты8 мин чтения

Claude API: первый запрос на Python и проверка ответа

Как подключить Claude API: получить ключ, выбрать доступную модель, отправить Messages API запрос и обработать ошибки без раскрытия секретов.

Claude API нужен, когда модель должна работать внутри твоего приложения или автоматизации: разбирать заметки, готовить черновики и отвечать на запросы без ручного копирования в чат. Для первой интеграции достаточно Python 3 и ключа API.

Ниже — пример для прямого API Anthropic. Подключения через облачных посредников могут использовать другие адреса и способы авторизации. Задача примера узкая: из короткой заметки о встрече выделить решения, задачи и открытые вопросы.

Ключ остаётся на стороне Python-клиента, запрос уходит в Messages API, текст и usage проверяются отдельно
Секрет нужен для запроса, а не для браузерного интерфейса или опубликованного репозитория.

1. Подготовь доступ

Войди в Claude Console, создай API-ключ в нужном рабочем пространстве и проверь условия оплаты и лимиты. Не считай подписку на чат подтверждением оплаченного доступа к API: ориентируйся на настройки именно API-аккаунта. Порядок начала работы описан в официальном quickstart.

Ключ разрешает приложению обращаться к сервису от имени твоего аккаунта. Для локального запуска в нашем клиенте он вводится через getpass: символы не отображаются и не сохраняются скриптом в файл. Если переменная ANTHROPIC_API_KEY уже задана в окружении, клиент использует её.

Мой подход. Я бы проверял API на короткой заметке без клиентских данных. Так стоимость первого опыта ограничена маленьким запросом, а результат можно оценить глазами. Большой архив документов на этом этапе только затруднит поиск ошибки.

2. Запусти клиент без установки библиотек

Скачай Python-клиент, распакуй и выполни:

python3 claude_client.py

Скрипт запросит ключ, покажет доступные модели и предложит выбрать номер. Он получает список через GET /v1/models, а не предполагает, что модель из старой статьи ещё доступна твоему аккаунту. После выбора отправляется один платный запрос генерации. Параметры списка описаны в Models API.

Для демонстрации используется заметка:

Анна подготовит список интервью до пятницы.
Борис предложил добавить оплату в пилот; решение отложили.
Дату следующей встречи не назначили.

Скрипт печатает текст ответа, причину остановки и счётчики токенов. Точное количество токенов и формулировки зависят от выбранной модели; одинаковый текст ответа между запусками не требуется.

3. Разбери тело запроса

После выбора модели клиент формирует такой объект Python:

payload = {
    "model": model,
    "max_tokens": 500,
    "system": "Разбирай заметки встреч. Отделяй решения от предложений. "
              "Не придумывай сроки и ответственных.",
    "messages": [{
        "role": "user",
        "content": "Выдели решения, задачи и открытые вопросы. "
                   "Анна подготовит список интервью до пятницы. "
                   "Борис предложил добавить оплату в пилот; решение отложили. "
                   "Дату следующей встречи не назначили."
    }]
}

В запрос к https://api.anthropic.com/v1/messages входят заголовки x-api-key, anthropic-version: 2023-06-01 и Content-Type: application/json. Значение model берётся из выбора пользователя. max_tokens ограничивает длину генерации, а не задаёт точную цену запроса. Формат определён в Messages API.

Ответ содержит массив content. Для обычного текстового сценария клиент собирает блоки с type == "text", а не предполагает, что любой блок можно напечатать как строку:

text = "\n".join(
    block["text"] for block in result.get("content", [])
    if block.get("type") == "text"
)
print(text)
print("Причина остановки:", result.get("stop_reason"))
print("Токены:", result.get("usage"))

Если причина остановки — max_tokens, ответ может быть обрезан. Не выдавай его пользователю как завершённый протокол без дополнительной обработки. Для многошагового диалога отдельно управляй историей: разовый вызов этого скрипта не создаёт память о предыдущих запусках.

4. Проверь смысл, а не оформление

В заметке есть задача Анны, но нет принятого решения об оплате. Относительный срок «до пятницы» нельзя надёжно превратить в дату без даты встречи. Дата следующей встречи неизвестна.

Проверка Что должно быть в результате
Задача Анны Подготовить список интервью
Срок Сохранён как «до пятницы» или отмечена необходимость уточнения даты
Предложение Бориса Не превращено в утверждённое решение или поручение
Следующая встреча Дата не придумана

Попробуй вторую заметку: «Обсудили запуск. Решения не принимали». Допустимый результат — отсутствие решений и задач. Если модель всегда заполняет таблицу, даже когда данных нет, нужно уточнить инструкцию и повторить оба примера.

Моя оценка. Протокол с честным «не указано» полезнее красивой таблицы с выдуманными сроками. Я бы принимал интеграцию только после проверки пустого и неоднозначного входа: именно там заметно, умеет ли она сохранять границы исходных данных.

5. Обработай ошибки и контролируй расходы

Код Что проверить
400 Формат тела, обязательные параметры, ограничения запроса
401 Ключ и способ авторизации
403 Права на запрошенную операцию
404 Адрес ресурса и выбранную модель
429 Лимиты и скорость отправки запросов
529 Перегрузку сервиса; повторить позднее с ограничением числа попыток

Полный список и рекомендации есть в справке по ошибкам. Клиент из архива не повторяет платные запросы бесконечно. Если ответ потерялся из-за сетевого сбоя, автоматический повтор может означать ещё одно выполнение — такую политику нужно выбирать осознанно.

Для приложения добавь лимит размера входа, ограничение параллельных запросов и журнал технических событий без ключей. Считай расходы по фактическому usage и действующей цене выбранной модели, а не по количеству нажатий кнопки.

В веб-приложении запрос с секретом выполняй на backend. Не помещай ключ в публичный JavaScript или переменную, которую сборщик отдаёт браузеру. Когда одиночный вызов устойчиво работает, можно вынести процедуру протоколирования в отдельный модуль, а для ручной работы — в skill Claude.

Todo: попробуй на своей задачеПрогресс сохраняется в этом браузере.
ПРАКТИКА НА КУРСЕ / AI PRODUCT CLUB

Собери своего ИИ-агента и проверь результат

«AI Agents: от vibe coding к AI-команде»: desktop agents, MCP, skills, evals и harness. Отдельные воркшопы — от подключения инструментов до контроля качества.

7 практических воркшопов · записи · вопросы автору в чате

Посмотреть программу курса ↗

Автор: — практик автоматизации и автор курсов AI Product Club.