Перейти к статье
API429 / Практика

Парсинг резюме через API: навыки и опыт в JSON для ATS

Как извлечь профессиональные сведения из резюме, сохранить основания полей и проверить данные до записи в ATS. Синтетический пример и код подключения.

Схема клиентского извлечения данных: Парсинг резюме через API: навыки и опыт в JSON для ATS
Редакционная схема обработки данных в приложении клиента. Не является результатом теста модели.

Задача интеграции

Парсинг резюме через API превращает перечисленные в документе профессиональные сведения в поля ATS. Это задача извлечения фактов: должность, названные навыки, периоды работы и образование. Ниже — синтетический пример через API429 с цитатой для каждого непустого значения. Он не оценивает пригодность человека к работе и не формирует рейтинг кандидатов.

Подготовка исходного текста

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

Схема полей

Поле Допустимый результат Отдельная проверка
role Указанная должность Не заменять её предположенным seniority
skills Навыки из текста Не считать упоминание доказанным владением
experience Период и описание из резюме Не суммировать пересекающиеся периоды автоматически
education Сведения либо null Не выводить образование из должности

Учебный документ и эталон JSON

Все данные ниже вымышлены. JSON подготовлен как эталон для проверки: он не является результатом замера или гарантией ответа модели.

Код: DEMO-CV-42.
Должность: Python-разработчик.
Навыки: Python, SQL.
Опыт: Компания DEMO, 2022–2024.
{
  "role": {
    "value": "Python-разработчик",
    "quote": "Должность: Python-разработчик."
  },
  "skills": {
    "value": "Python, SQL",
    "quote": "Навыки: Python, SQL."
  },
  "experience": {
    "value": "Компания DEMO, 2022–2024",
    "quote": "Опыт: Компания DEMO, 2022–2024."
  },
  "education": {
    "value": null,
    "quote": null
  }
}

Подключение к API429

Выберите точный ID модели в каталоге, затем проверьте доступ своего ключа по GET /v1/models. Используйте тот же ключ и базовый URL, что и при генерации. Само наличие модели на сайте не подтверждает доступ конкретного ключа.

curl https://gateway.api429.com/v1/models \
  -H "Authorization: Bearer $API429_API_KEY"

Ключ храните в переменной окружения API429_API_KEY, выбранный ID — в API429_MODEL. Не записывайте секрет в исходник или журнал. Контракт запроса и примеры авторизации — в документации API429.

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

Возьмите полный пример Python с валидатором и замените в нём только эти две строки:

FIELDS = ('role', 'skills', 'experience', 'education')
SOURCE = 'Код: DEMO-CV-42.\nДолжность: Python-разработчик.\nНавыки: Python, SQL.\nОпыт: Компания DEMO, 2022–2024.\n'

Запрос использует POST /v1/chat/completions с полями model, messages, max_tokens, stream. Пример выводит результат, прошедший структурные и текстовые проверки, и сам не создаёт записей в рабочей системе. Параметры специальных JSON-режимов выбранной модели проверяйте отдельно; код не предполагает их поддержку по одному имени модели.

Проверка отклоняет пропущенные и лишние ключи, неверные типы и значения без цитаты. Пара null/null допустима только как обозначение отсутствующих сведений. Даже дословная цитата не доказывает, что она относится к нужному полю: это проверяется на контрольных документах.

Проверка перед передачей в систему

Записывайте извлечённые факты в черновик профиля с идентификатором резюме и версией источника. Обновление ATS должно сохранять различие между исходным текстом, выводом парсера и проверенным значением. Отсутствие поля не является отрицательной характеристикой кандидата.

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

Какие ошибки включить в тестовую выборку

Проверьте резюме без образования, с несколькими одновременными работами и с навыком только в описании проекта. Строка «знаком с SQL» должна остаться исходной формулировкой, а не превратиться в «эксперт SQL». Отдельно проверьте, что результат не содержит незапрошенный score или решение о следующем этапе.

Повторы и стоимость обработки

Храните идентификатор и версию исходного документа, а также состояние обработки в своём приложении. После перезапуска не создавайте вторую запись для уже принятого результата. При 429 сначала изучите сообщение и баланс; повторяйте только временные ошибки с ограничением попыток. Неудачный разбор JSON и HTTP-ошибка требуют разных действий.

Выбирайте модель по своему набору документов, а не по названию семейства. Считайте цену принятого результата вместе с повторами и проверкой; текущие тарифы API429 и сравнение Gemini отделены от проверки качества. Сначала запустите небольшую размеченную выборку, затем расширяйте поток.

Частые вопросы

Можно ли считать годы опыта прямо этим примером?

Код сохраняет текст периода и не вычисляет стаж. Для подсчёта нужны отдельные правила пересечения периодов, неполной занятости и незавершённых дат. Не подменяйте ими отсутствующие сведения.

Можно ли сразу отклонять резюме без нужного поля?

Этот пример не предназначен для отбора или отказов. Пустое поле может означать отсутствие сведений в документе или ошибку извлечения; такие случаи проверяют отдельно.

Источники и документация

  1. API429 — клиентский OpenAPI
  2. API429 — подключение и примеры
  3. Python — JSON
  4. Python — HTTP-запрос

Следующий шаг — на практике.

Перед интеграцией проверьте ID модели, актуальную цену и формат запроса. Доступность зависит от модели и маршрута провайдера.

Telegram