Перейти к содержимому

GPT Filter - Обработка данных через OpenAI GPT

Процессор GPT Filter (внутренне использует GPT Filter V2) — универсальный инструмент для обработки данных через модели OpenAI GPT. Позволяет анализировать, фильтровать, трансформировать и классифицировать данные из входных пакетов с помощью настраиваемых промптов.

Ключевые возможности:

  • Структурированный вывод — определение JSON-схемы для получения строго типизированного ответа от GPT (через Zod ResponseFormat).
  • Текстовый вывод — свободный текстовый ответ для задач анализа и генерации.
  • Подстановка переменных — использование данных из цепочки процессоров прямо в промпте через синтаксис {{processorName.field}}.
  • Правила фильтрации — автоматическая фильтрация результатов по числовым порогам или условиям на полях ответа GPT.
  • Cost tracking — точный учет расходов с разбивкой по input/output токенам для каждой модели.

Процессор поддерживает все актуальные модели OpenAI: gpt-4o, gpt-4o-mini, gpt-4-turbo, gpt-3.5-turbo и другие.

  • Фильтрация компаний — отбор компаний по критериям (ОКВЭД, регион, размер) с помощью промпта и структурированного вывода.
  • Извлечение данных — парсинг неструктурированного текста (описания с сайтов, поисковые результаты) в структурированные поля.
  • Классификация — присвоение категорий, тегов или рейтингов каждому входному пакету.
  • Обогащение данных — генерация дополнительной информации на основе имеющихся данных (описание компании, рекомендации).
  • Оценка качества — scoring данных по заданным критериям (релевантность, полнота, соответствие).
  • Трансформация формата — преобразование данных из одной структуры в другую с помощью GPT.
ПараметрТипОбязательныйПо умолчаниюОписание
modelstringДаМодель OpenAI: gpt-4o, gpt-4o-mini, gpt-4-turbo, gpt-3.5-turbo и др.
promptstringДаПромпт для GPT. Поддерживает переменные {{processorName.field}} для подстановки данных из цепочки.
temperaturenumberНет0.7Температура генерации (0-2). Низкие значения (0-0.3) для точных задач, высокие (0.7-1.5) для креативных.
maxPacketsnumberНет50Максимальное количество входных пакетов для обработки за один запуск.
outputFormatobjectНетНастройки формата вывода (см. раздел ниже).
filterRulesobjectНетПравила фильтрации результатов (см. раздел ниже).
debugModebooleanНетfalseПодробное логирование промптов, ответов GPT и токенов.
ПолеТипОписание
typestring"structured" — JSON по схеме, "text" — свободный текст.
namestringИмя схемы для структурированного вывода (используется в zodResponseFormat).
schemaobjectJSON Schema для structured output. Определяет поля, типы и обязательные свойства.

Пример outputFormat для структурированного вывода:

{
"type": "structured",
"name": "company_analysis",
"schema": {
"type": "object",
"properties": {
"relevant": { "type": "boolean", "description": "Компания соответствует критериям" },
"score": { "type": "number", "description": "Оценка релевантности 0-100" },
"reason": { "type": "string", "description": "Обоснование оценки" }
},
"required": ["relevant", "score", "reason"]
}
}
ПолеТипОписание
modestring"include" — оставить подходящие, "exclude" — убрать подходящие.
conditionsarrayМассив условий фильтрации (см. ниже).
scoreThresholdnumberПороговое значение для числовых полей (упрощенный вариант).

Каждое условие (conditions) содержит:

ПолеТипОписание
fieldstringПоле в ответе GPT для проверки.
operatorstringОператор: equals, contains, gt, lt, regex.
valueanyЗначение для сравнения.

Процессор получает DataPackets от родительских процессоров. Данные из пакетов доступны в промпте через переменные {{processorName.field}}.

Поддерживается доступ к данным из всей цепочки процессоров (chainData), не только от прямого родителя. Например, если pipeline содержит yandex-search -> registry-search -> gpt-filter, в промпте GPT Filter доступны поля и из yandex-search, и из registry-search.

Типичные источники:

  • registry-search — данные из реестров для анализа и классификации.
  • yandex-search — результаты веб-поиска для фильтрации и извлечения данных.
  • site-crawl — содержимое веб-страниц для анализа.
  • contact-search — контактные данные для верификации или обогащения.

Формат выходного DataPacket зависит от настройки outputFormat:

DataPacket содержит поля, определенные в schema. Структура полностью соответствует указанной JSON Schema.

DataPacket содержит текстовый ответ GPT.

Каждый выходной пакет содержит метаданные:

  • model: использованная модель GPT
  • promptTokens: количество входных токенов
  • completionTokens: количество выходных токенов
  • totalTokens: общее количество токенов
  • processedAt: ISO-дата обработки

Стоимость определяется количеством использованных токенов OpenAI API. Тарификация зависит от выбранной модели:

МодельInput (за 1M токенов)Output (за 1M токенов)
gpt-4oОпределяется bg_pricesОпределяется bg_prices
gpt-4o-miniОпределяется bg_pricesОпределяется bg_prices
gpt-4-turboОпределяется bg_pricesОпределяется bg_prices
gpt-3.5-turboОпределяется bg_pricesОпределяется bg_prices

Точные цены загружаются из таблицы bg_prices при инициализации процессора. Процессор автоматически рассчитывает стоимость каждого вызова на основе количества input и output токенов.

При ошибках content policy или timeout создается error-пакет, токены за неуспешный вызов не списываются.

Промпт:

Проанализируй компанию и определи, подходит ли она для B2B-продаж IT-решений.
Данные компании:
- Название: {{registry-search.shortName}}
- ОКВЭД: {{registry-search.mainOkvedCode}} - {{registry-search.mainOkvedName}}
- Регион: {{registry-search.regionCode}}
- Количество сотрудников: {{registry-search.workersCount}}
Оцени релевантность от 0 до 100.

outputFormat:

{
"type": "structured",
"name": "relevance_check",
"schema": {
"type": "object",
"properties": {
"relevant": { "type": "boolean" },
"score": { "type": "number" },
"reason": { "type": "string" },
"segment": { "type": "string" }
},
"required": ["relevant", "score", "reason", "segment"]
}
}

Промпт:

Из следующего текста веб-страницы извлеки контактную информацию:
{{site-crawl.content}}
Найди все телефоны, email-адреса и имена сотрудников.

Конфигурация:

model: gpt-4o-mini
temperature: 0.2
maxPackets: 100
filterRules:
mode: include
scoreThreshold: 70

Только пакеты с оценкой >= 70 будут переданы дальше по pipeline.

ПроцессорСвязьОписание
registry-searchВходнойДанные из реестров для анализа и классификации
yandex-searchВходнойРезультаты поиска для фильтрации и извлечения данных
site-crawlВходнойСодержимое веб-страниц для текстового анализа
ai-searchАльтернативаAI-поиск с встроенным анализом (без отдельного промпта)
contact-searchВходнойКонтактные данные для верификации через GPT