Связывание процессоров
Принцип связывания
Заголовок раздела «Принцип связывания»Процессоры в воронке работают не изолированно — они соединяются между собой, образуя цепочку обработки данных. Каждое соединение определяет, что выходные DataPackets одного процессора станут входными для другого.
Связывание создается в визуальном редакторе: вы проводите линию от выхода одного процессора ко входу другого. Направление линии показывает направление потока данных.
Поток данных
Заголовок раздела «Поток данных»Данные в воронке передаются строго по направлению соединений:
Процессор A (источник) --> Процессор B (приёмник)Когда процессор A завершает работу и создаёт DataPackets, эти пакеты становятся доступны для процессора B. При запуске процессор B берёт необработанные пакеты от A и выполняет свою задачу, создавая собственные выходные пакеты.
Каждый выходной пакет хранит ссылку на входной пакет (parent_packet_id), что позволяет отследить всю историю обработки.
Цепочечные данные (Chain Data)
Заголовок раздела «Цепочечные данные (Chain Data)»Одно из ключевых преимуществ связывания — доступ к данным любого предка через механизм цепочечных данных (chain data).
Рассмотрим цепочку:
search --> enrichment --> gptFilter --> crmUpdateПри обработке пакета в процессоре crmUpdate система автоматически собирает данные от всех предков:
- Данные из
search(исходный поиск) - Данные из
enrichment(обогащение) - Данные из
gptFilter(результат фильтрации ИИ)
Это означает, что crmUpdate может использовать поля из любого предшествующего процессора через переменные:
{{search.companyName}}{{enrichment.revenue}}{{gptFilter.isRelevant}}Система строит цепочечные данные автоматически, поднимаясь по ссылкам parent_packet_id от текущего пакета до самого начала цепочки.
Порядок выполнения
Заголовок раздела «Порядок выполнения»Процессоры выполняются последовательно, в порядке их зависимостей:
- Сначала запускаются процессоры без входящих соединений (корневые). Обычно это поисковые процессоры.
- После завершения корневого процессора становятся доступны для запуска все процессоры, подключённые к нему.
- Каждый последующий процессор запускается только после того, как его источники завершили работу.
Процессоры можно запускать по одному вручную или запустить всю воронку целиком — тогда система сама определит правильный порядок выполнения.
Типы связей
Заголовок раздела «Типы связей»Один ко многим (один источник — несколько приёмников)
Заголовок раздела «Один ко многим (один источник — несколько приёмников)»Один процессор может передавать данные сразу нескольким процессорам:
search --> enrichmentsearch --> gptAnalysissearch --> crmUpdateВ этом случае все три процессора получат одни и те же DataPackets от search и будут обрабатывать их независимо друг от друга.
Это полезно, когда нужно выполнить параллельную обработку: одновременно обогатить данные, проанализировать их через ИИ и записать в CRM.
Много к одному (несколько источников — один приёмник)
Заголовок раздела «Много к одному (несколько источников — один приёмник)»Один процессор может принимать данные от нескольких источников:
searchByInn --> mergesearchByName --> mergeПроцессор merge получит DataPackets от обоих процессоров поиска. Это позволяет объединять результаты из разных источников в одном месте.
Цепочка (последовательное соединение)
Заголовок раздела «Цепочка (последовательное соединение)»Самый распространённый паттерн — последовательная цепочка:
search --> enrichment --> filter --> crmUpdateКаждый процессор обрабатывает результаты предыдущего и передаёт свои результаты дальше.
Ограничения
Заголовок раздела «Ограничения»- Циклы запрещены: нельзя создать соединение, которое образует замкнутый цикл. Система автоматически проверяет это при попытке создания связи и блокирует циклические зависимости.
- Направление фиксировано: данные всегда идут в одном направлении — от источника к приёмнику. Обратная передача данных невозможна.
Рекомендации по построению цепочек
Заголовок раздела «Рекомендации по построению цепочек»Разделяйте обогащение и фильтрацию
Заголовок раздела «Разделяйте обогащение и фильтрацию»Не пытайтесь делать всё в одном процессоре. Лучше создать цепочку из нескольких небольших шагов: сначала обогатить данные, затем отфильтровать, затем проанализировать.
Фильтруйте как можно раньше
Заголовок раздела «Фильтруйте как можно раньше»Чем раньше в цепочке вы отсеиваете нерелевантные данные, тем меньше токенов тратится на последующую обработку. Если из 500 найденных компаний вам нужны только 50, поставьте фильтр сразу после поиска.
Используйте понятные имена
Заголовок раздела «Используйте понятные имена»Давайте процессорам понятные имена (alias), чтобы переменные были читаемыми. {{companySearch.inn}} намного понятнее, чем {{proc1.inn}}.
Проверяйте на малых объёмах
Заголовок раздела «Проверяйте на малых объёмах»Перед запуском на полном объёме данных протестируйте цепочку с ограничением maxPackets на каждом процессоре. Это позволит убедиться, что все связи работают корректно, прежде чем тратить токены на обработку всего набора данных.
Следующие шаги
Заголовок раздела «Следующие шаги»- Система DataPackets — как устроены пакеты данных в системе
- Переменные шаблонов — как ссылаться на данные из связанных процессоров
- Фильтрация входных данных — как отсеивать ненужные пакеты при передаче между процессорами