[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"doc-\u002Fru\u002Fdocs\u002Fpipelines\u002Fcontrole-flux":3,"docs-nav-ru":539},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"body":10,"_type":533,"_id":534,"_source":535,"_file":536,"_stem":537,"_extension":538},"\u002Fru\u002Fdocs\u002Fpipelines\u002Fcontrole-flux","pipelines",false,"","Управление потоком","Фильтры, маршрутизация, циклы, параллелизм — для управления путями выполнения.",{"type":11,"children":12,"toc":525},"root",[13,29,36,50,55,238,259,265,284,288,321,333,339,351,432,437,454,460,479,485],{"type":14,"tag":15,"props":16,"children":17},"element","p",{},[18,21,27],{"type":19,"value":20},"text","Помимо агентов и операторов, betool предоставляет ",{"type":14,"tag":22,"props":23,"children":24},"strong",{},[25],{"type":19,"value":26},"узлы управления",{"type":19,"value":28}," для структурирования логики pipeline.",{"type":14,"tag":30,"props":31,"children":33},"h2",{"id":32},"фильтр",[34],{"type":19,"value":35},"Фильтр",{"type":14,"tag":15,"props":37,"children":38},{},[39,41,48],{"type":19,"value":40},"Узел ",{"type":14,"tag":42,"props":43,"children":45},"code",{"className":44},[],[46],{"type":19,"value":47},"filter",{"type":19,"value":49}," — это детерминированный шлюз: выполнение продолжается к нижестоящим узлам, если его условия выполнены, иначе ветвь на этом останавливается.",{"type":14,"tag":15,"props":51,"children":52},{},[53],{"type":19,"value":54},"Конфигурация:",{"type":14,"tag":56,"props":57,"children":58},"ul",{},[59,94,120],{"type":14,"tag":60,"props":61,"children":62},"li",{},[63,68,70,76,78,84,86,92],{"type":14,"tag":22,"props":64,"children":65},{},[66],{"type":19,"value":67},"Условия",{"type":19,"value":69}," — каждое в форме ",{"type":14,"tag":42,"props":71,"children":73},{"className":72},[],[74],{"type":19,"value":75},"{поле, оператор, значение}",{"type":19,"value":77},". Поле — это селектор в потоке (",{"type":14,"tag":42,"props":79,"children":81},{"className":80},[],[82],{"type":19,"value":83},"exchange.intent",{"type":19,"value":85},", ",{"type":14,"tag":42,"props":87,"children":89},{"className":88},[],[90],{"type":19,"value":91},"webhook.payload.type",{"type":19,"value":93},"…); значение — строка, поддерживающая шаблоны.",{"type":14,"tag":60,"props":95,"children":96},{},[97,102,104,110,112,118],{"type":14,"tag":22,"props":98,"children":99},{},[100],{"type":19,"value":101},"Комбинатор",{"type":19,"value":103}," — ",{"type":14,"tag":42,"props":105,"children":107},{"className":106},[],[108],{"type":19,"value":109},"AND",{"type":19,"value":111}," (по умолчанию) или ",{"type":14,"tag":42,"props":113,"children":115},{"className":114},[],[116],{"type":19,"value":117},"OR",{"type":19,"value":119}," между условиями.",{"type":14,"tag":60,"props":121,"children":122},{},[123,128,129,135,137,143,144,150,151,157,158,164,165,171,172,178,179,185,186,192,194,200,201,207,208,214,215,221,223,229,230,236],{"type":14,"tag":22,"props":124,"children":125},{},[126],{"type":19,"value":127},"Операторы",{"type":19,"value":103},{"type":14,"tag":42,"props":130,"children":132},{"className":131},[],[133],{"type":19,"value":134},"equals",{"type":19,"value":136}," \u002F ",{"type":14,"tag":42,"props":138,"children":140},{"className":139},[],[141],{"type":19,"value":142},"not_equals",{"type":19,"value":85},{"type":14,"tag":42,"props":145,"children":147},{"className":146},[],[148],{"type":19,"value":149},"contains",{"type":19,"value":136},{"type":14,"tag":42,"props":152,"children":154},{"className":153},[],[155],{"type":19,"value":156},"not_contains",{"type":19,"value":85},{"type":14,"tag":42,"props":159,"children":161},{"className":160},[],[162],{"type":19,"value":163},"starts_with",{"type":19,"value":85},{"type":14,"tag":42,"props":166,"children":168},{"className":167},[],[169],{"type":19,"value":170},"ends_with",{"type":19,"value":85},{"type":14,"tag":42,"props":173,"children":175},{"className":174},[],[176],{"type":19,"value":177},"regex",{"type":19,"value":85},{"type":14,"tag":42,"props":180,"children":182},{"className":181},[],[183],{"type":19,"value":184},"is_empty",{"type":19,"value":136},{"type":14,"tag":42,"props":187,"children":189},{"className":188},[],[190],{"type":19,"value":191},"is_not_empty",{"type":19,"value":193},", числовые сравнения ",{"type":14,"tag":42,"props":195,"children":197},{"className":196},[],[198],{"type":19,"value":199},"gt",{"type":19,"value":136},{"type":14,"tag":42,"props":202,"children":204},{"className":203},[],[205],{"type":19,"value":206},"gte",{"type":19,"value":136},{"type":14,"tag":42,"props":209,"children":211},{"className":210},[],[212],{"type":19,"value":213},"lt",{"type":19,"value":136},{"type":14,"tag":42,"props":216,"children":218},{"className":217},[],[219],{"type":19,"value":220},"lte",{"type":19,"value":222},", принадлежность списку ",{"type":14,"tag":42,"props":224,"children":226},{"className":225},[],[227],{"type":19,"value":228},"in",{"type":19,"value":136},{"type":14,"tag":42,"props":231,"children":233},{"className":232},[],[234],{"type":19,"value":235},"not_in",{"type":19,"value":237}," (значения через запятую). Неизвестный оператор отклоняется при сохранении.",{"type":14,"tag":15,"props":239,"children":240},{},[241,243,249,251,257],{"type":19,"value":242},"Типичное применение: устранить шум до нижестоящих затрат на LLM — игнорировать письма, чей ",{"type":14,"tag":42,"props":244,"children":246},{"className":245},[],[247],{"type":19,"value":248},"from",{"type":19,"value":250}," находится в чёрном списке, или webhook, у которых ",{"type":14,"tag":42,"props":252,"children":254},{"className":253},[],[255],{"type":19,"value":256},"type != \"order.created\"",{"type":19,"value":258},".",{"type":14,"tag":30,"props":260,"children":262},{"id":261},"маршрутизатор",[263],{"type":19,"value":264},"Маршрутизатор",{"type":14,"tag":15,"props":266,"children":267},{},[268,269,275,277,282],{"type":19,"value":40},{"type":14,"tag":42,"props":270,"children":272},{"className":271},[],[273],{"type":19,"value":274},"router",{"type":19,"value":276}," направляет выполнение по одному из своих ",{"type":14,"tag":22,"props":278,"children":279},{},[280],{"type":19,"value":281},"именованных маршрутов",{"type":19,"value":283},". Решение принимает LLM на основе промпта маршрутизации и контекста, который вы составляете, — чтобы маршрутизировать по намерению, категории, тону.",{"type":14,"tag":15,"props":285,"children":286},{},[287],{"type":19,"value":54},{"type":14,"tag":56,"props":289,"children":290},{},[291,301,311],{"type":14,"tag":60,"props":292,"children":293},{},[294,299],{"type":14,"tag":22,"props":295,"children":296},{},[297],{"type":19,"value":298},"Промпт",{"type":19,"value":300}," — инструкция по классификации.",{"type":14,"tag":60,"props":302,"children":303},{},[304,309],{"type":14,"tag":22,"props":305,"children":306},{},[307],{"type":19,"value":308},"Маршруты",{"type":19,"value":310}," — для каждого имени маршрута подграф, который нужно выполнить. Каждый объявленный маршрут должен быть подключён, иначе публикация отклоняется.",{"type":14,"tag":60,"props":312,"children":313},{},[314,319],{"type":14,"tag":22,"props":315,"children":316},{},[317],{"type":19,"value":318},"Модель",{"type":19,"value":320}," — возможность выделить для маршрутизации лёгкую LLM (tiering), чтобы контролировать стоимость и задержку.",{"type":14,"tag":15,"props":322,"children":323},{},[324,326,331],{"type":19,"value":325},"Для строго детерминированной маршрутизации (точное значение поля, HTTP-статус) предпочитайте узлы ",{"type":14,"tag":42,"props":327,"children":329},{"className":328},[],[330],{"type":19,"value":47},{"type":19,"value":332},", расположенные параллельно: тогда предикат механический, а не интерпретируемый.",{"type":14,"tag":30,"props":334,"children":336},{"id":335},"цикл-foreach",[337],{"type":19,"value":338},"Цикл (foreach)",{"type":14,"tag":15,"props":340,"children":341},{},[342,343,349],{"type":19,"value":40},{"type":14,"tag":42,"props":344,"children":346},{"className":345},[],[347],{"type":19,"value":348},"foreach",{"type":19,"value":350}," итерирует по коллекции. Конфигурация:",{"type":14,"tag":56,"props":352,"children":353},{},[354,368,382,396,410],{"type":14,"tag":60,"props":355,"children":356},{},[357,366],{"type":14,"tag":22,"props":358,"children":359},{},[360],{"type":14,"tag":42,"props":361,"children":363},{"className":362},[],[364],{"type":19,"value":365},"items",{"type":19,"value":367}," — селектор списка, по которому выполняется итерация.",{"type":14,"tag":60,"props":369,"children":370},{},[371,380],{"type":14,"tag":22,"props":372,"children":373},{},[374],{"type":14,"tag":42,"props":375,"children":377},{"className":376},[],[378],{"type":19,"value":379},"as",{"type":19,"value":381}," — локальное имя текущего элемента.",{"type":14,"tag":60,"props":383,"children":384},{},[385,394],{"type":14,"tag":22,"props":386,"children":387},{},[388],{"type":14,"tag":42,"props":389,"children":391},{"className":390},[],[392],{"type":19,"value":393},"max",{"type":19,"value":395}," — предел числа итераций (по умолчанию 10): сверх него список усекается, а событие журналируется.",{"type":14,"tag":60,"props":397,"children":398},{},[399,408],{"type":14,"tag":22,"props":400,"children":401},{},[402],{"type":14,"tag":42,"props":403,"children":405},{"className":404},[],[406],{"type":19,"value":407},"collect",{"type":19,"value":409}," — (необязательно) ключ, в котором накапливаются результаты каждой итерации.",{"type":14,"tag":60,"props":411,"children":412},{},[413,422,424,430],{"type":14,"tag":22,"props":414,"children":415},{},[416],{"type":14,"tag":42,"props":417,"children":419},{"className":418},[],[420],{"type":19,"value":421},"max_per_minute",{"type":19,"value":423}," — (необязательно) максимальный темп, чтобы разносить итерации во времени, когда тело цикла вызывает API с ограничением частоты. ",{"type":14,"tag":42,"props":425,"children":427},{"className":426},[],[428],{"type":19,"value":429},"0",{"type":19,"value":431}," (по умолчанию) = без ограничения.",{"type":14,"tag":15,"props":433,"children":434},{},[435],{"type":19,"value":436},"На каждой итерации внутренний подграф выполняется для текущего элемента.",{"type":14,"tag":438,"props":439,"children":441},"alert",{"type":440},"warning",[442],{"type":14,"tag":15,"props":443,"children":444},{},[445,447,452],{"type":19,"value":446},"Предел ",{"type":14,"tag":42,"props":448,"children":450},{"className":449},[],[451],{"type":19,"value":393},{"type":19,"value":453}," — ваша защита от затрат: неожиданный список из 10 000 элементов никогда не запустит 10 000 выполнений.",{"type":14,"tag":30,"props":455,"children":457},{"id":456},"параллельное-выполнение",[458],{"type":19,"value":459},"Параллельное выполнение",{"type":14,"tag":15,"props":461,"children":462},{},[463,464,470,472,477],{"type":19,"value":40},{"type":14,"tag":42,"props":465,"children":467},{"className":466},[],[468],{"type":19,"value":469},"parallel",{"type":19,"value":471}," выполняет несколько подграфов ",{"type":14,"tag":22,"props":473,"children":474},{},[475],{"type":19,"value":476},"конкурентно",{"type":19,"value":478}," и ждёт, пока все они завершатся, прежде чем продолжить. Полезно для опроса нескольких независимых источников (поиск в CRM + чтение календаря) без суммирования задержек.",{"type":14,"tag":30,"props":480,"children":482},{"id":481},"лучшие-практики",[483],{"type":19,"value":484},"Лучшие практики",{"type":14,"tag":56,"props":486,"children":487},{},[488,505,515],{"type":14,"tag":60,"props":489,"children":490},{},[491,496,498,503],{"type":14,"tag":22,"props":492,"children":493},{},[494],{"type":19,"value":495},"Фильтруйте рано.",{"type":19,"value":497}," Каждый exchange, проходящий через агента, стоит токенов; ",{"type":14,"tag":42,"props":499,"children":501},{"className":500},[],[502],{"type":19,"value":47},{"type":19,"value":504}," выше по потоку не стоит ничего.",{"type":14,"tag":60,"props":506,"children":507},{},[508,513],{"type":14,"tag":22,"props":509,"children":510},{},[511],{"type":19,"value":512},"Сохраняйте маршрутизацию читаемой.",{"type":19,"value":514}," Маршрутизатор с 12 маршрутами — сигнал, что нужны два уровня классификации, а не сжатая логика.",{"type":14,"tag":60,"props":516,"children":517},{},[518,523],{"type":14,"tag":22,"props":519,"children":520},{},[521],{"type":19,"value":522},"Ограничивайте вложенные циклы.",{"type":19,"value":524}," Цикл внутри цикла умножает затраты. Предпочитайте преобразовывать коллекцию выше по потоку.",{"title":7,"searchDepth":526,"depth":526,"links":527},2,[528,529,530,531,532],{"id":32,"depth":526,"text":35},{"id":261,"depth":526,"text":264},{"id":335,"depth":526,"text":338},{"id":456,"depth":526,"text":459},{"id":481,"depth":526,"text":484},"markdown","content:ru:docs:3.pipelines:4.controle-flux.md","content","ru\u002Fdocs\u002F3.pipelines\u002F4.controle-flux.md","ru\u002Fdocs\u002F3.pipelines\u002F4.controle-flux","md",[540],{"title":541,"_path":542,"children":543},"Ru","\u002Fru",[544],{"title":545,"_path":546,"children":547},"Docs","\u002Fru\u002Fdocs",[548,561,589,615,628,644,657,718],{"title":549,"_path":550,"children":551},"Начало работы","\u002Fru\u002Fdocs\u002Fdemarrer",[552,555,558],{"title":553,"_path":554},"Добро пожаловать","\u002Fru\u002Fdocs\u002Fdemarrer\u002Fbienvenue",{"title":556,"_path":557},"Создание учётной записи","\u002Fru\u002Fdocs\u002Fdemarrer\u002Fcreer-un-compte",{"title":559,"_path":560},"Подключение ключа LLM","\u002Fru\u002Fdocs\u002Fdemarrer\u002Fbrancher-llm",{"title":562,"_path":563,"children":564},"Каналы","\u002Fru\u002Fdocs\u002Fcanaux",[565,568,571,574,577,580,583,586],{"title":566,"_path":567},"Обзор каналов","\u002Fru\u002Fdocs\u002Fcanaux\u002Fvue-densemble",{"title":569,"_path":570},"Телефония в реальном времени","\u002Fru\u002Fdocs\u002Fcanaux\u002Ftelephone",{"title":572,"_path":573},"Электронная почта","\u002Fru\u002Fdocs\u002Fcanaux\u002Femail",{"title":575,"_path":576},"Веб-чат-виджет","\u002Fru\u002Fdocs\u002Fcanaux\u002Fchat-widget",{"title":578,"_path":579},"HTTP Webhook","\u002Fru\u002Fdocs\u002Fcanaux\u002Fwebhook",{"title":581,"_path":582},"Мессенджеры (WhatsApp, Messenger, Telegram, Mattermost)","\u002Fru\u002Fdocs\u002Fcanaux\u002Fmessageries",{"title":584,"_path":585},"Meta Lead Ads","\u002Fru\u002Fdocs\u002Fcanaux\u002Ffacebook-leads",{"title":587,"_path":588},"Расписание (cron)","\u002Fru\u002Fdocs\u002Fcanaux\u002Fschedule",{"title":590,"_path":591,"children":592},"Пайплайны","\u002Fru\u002Fdocs\u002Fpipelines",[593,596,599,602,603,606,609,612],{"title":594,"_path":595},"Визуальный редактор","\u002Fru\u002Fdocs\u002Fpipelines\u002Fediteur-visuel",{"title":597,"_path":598},"AI-агенты","\u002Fru\u002Fdocs\u002Fpipelines\u002Fagents",{"title":600,"_path":601},"Детерминированные операторы","\u002Fru\u002Fdocs\u002Fpipelines\u002Foperateurs",{"title":8,"_path":4},{"title":604,"_path":605},"Шаги с кодом","\u002Fru\u002Fdocs\u002Fpipelines\u002Fcode-step",{"title":607,"_path":608},"Суб-пайплайны","\u002Fru\u002Fdocs\u002Fpipelines\u002Fsous-pipelines",{"title":610,"_path":611},"No-code действия","\u002Fru\u002Fdocs\u002Fpipelines\u002Factions-no-code",{"title":613,"_path":614},"База знаний","\u002Fru\u002Fdocs\u002Fpipelines\u002Fbase-de-connaissances",{"title":616,"_path":617,"children":618},"Супервизия","\u002Fru\u002Fdocs\u002Fsupervision",[619,622,625],{"title":620,"_path":621},"История выполнений","\u002Fru\u002Fdocs\u002Fsupervision\u002Fexecutions",{"title":623,"_path":624},"Кредиты и тарификация","\u002Fru\u002Fdocs\u002Fsupervision\u002Fcredits-metering",{"title":626,"_path":627},"Бенчмарки","\u002Fru\u002Fdocs\u002Fsupervision\u002Fbenchmarks",{"title":629,"_path":630,"children":631},"Безопасность","\u002Fru\u002Fdocs\u002Fsecurite",[632,635,638,641],{"title":633,"_path":634},"Принципы безопасности","\u002Fru\u002Fdocs\u002Fsecurite\u002Fprincipes",{"title":636,"_path":637},"Строгая мультитенантность","\u002Fru\u002Fdocs\u002Fsecurite\u002Fmulti-tenant",{"title":639,"_path":640},"Аудит и журнал доступа GDPR","\u002Fru\u002Fdocs\u002Fsecurite\u002Faudit-rgpd",{"title":642,"_path":643},"Суверенное развёртывание","\u002Fru\u002Fdocs\u002Fsecurite\u002Fdeploiement-souverain",{"title":645,"_path":646,"children":647},"Разработчикам","\u002Fru\u002Fdocs\u002Fdeveloppeurs",[648,651,654],{"title":649,"_path":650},"Административный API","\u002Fru\u002Fdocs\u002Fdeveloppeurs\u002Fapi-admin",{"title":652,"_path":653},"Исходящие webhook","\u002Fru\u002Fdocs\u002Fdeveloppeurs\u002Fwebhooks-sortants",{"title":655,"_path":656},"Управление betool из Claude (MCP)","\u002Fru\u002Fdocs\u002Fdeveloppeurs\u002Fmcp",{"title":658,"_path":659,"children":660},"Интеграции","\u002Fru\u002Fdocs\u002Fintegrations",[661,664,667,670,673,676,679,682,685,688,691,694,697,700,703,706,709,712,715],{"title":662,"_path":663},"Обзор интеграций","\u002Fru\u002Fdocs\u002Fintegrations\u002Fvue-densemble",{"title":665,"_path":666},"Stripe","\u002Fru\u002Fdocs\u002Fintegrations\u002Fstripe",{"title":668,"_path":669},"GitHub","\u002Fru\u002Fdocs\u002Fintegrations\u002Fgithub",{"title":671,"_path":672},"Google","\u002Fru\u002Fdocs\u002Fintegrations\u002Fgoogle",{"title":674,"_path":675},"LinkedIn Ads","\u002Fru\u002Fdocs\u002Fintegrations\u002Flinkedin-ads",{"title":677,"_path":678},"Kavkom","\u002Fru\u002Fdocs\u002Fintegrations\u002Fkavkom",{"title":680,"_path":681},"Jira","\u002Fru\u002Fdocs\u002Fintegrations\u002Fjira",{"title":683,"_path":684},"Slack","\u002Fru\u002Fdocs\u002Fintegrations\u002Fslack",{"title":686,"_path":687},"SMS","\u002Fru\u002Fdocs\u002Fintegrations\u002Fsms",{"title":689,"_path":690},"Enable Banking (open banking)","\u002Fru\u002Fdocs\u002Fintegrations\u002Fenable-banking",{"title":692,"_path":693},"CRM, маркетинг и продуктивность","\u002Fru\u002Fdocs\u002Fintegrations\u002Fcrm-marketing",{"title":695,"_path":696},"HeyGen (видео)","\u002Fru\u002Fdocs\u002Fintegrations\u002Fheygen",{"title":698,"_path":699},"La Poste","\u002Fru\u002Fdocs\u002Fintegrations\u002Fla-poste",{"title":701,"_path":702},"Отраслевые CRM (beTool Application, Qhare)","\u002Fru\u002Fdocs\u002Fintegrations\u002Fcrm-metier",{"title":704,"_path":705},"Mitti (полевые инспекции)","\u002Fru\u002Fdocs\u002Fintegrations\u002Fmitti",{"title":707,"_path":708},"Meta (Messenger, Pages, Meta Ads)","\u002Fru\u002Fdocs\u002Fintegrations\u002Fmeta",{"title":710,"_path":711},"Onoff Business (Beta)","\u002Fru\u002Fdocs\u002Fintegrations\u002Fonoff",{"title":713,"_path":714},"Smart Life \u002F Tuya (умные устройства)","\u002Fru\u002Fdocs\u002Fintegrations\u002Fsmart-life",{"title":716,"_path":717},"Продукты beTool (Desktop, Kiosk, Terminal)","\u002Fru\u002Fdocs\u002Fintegrations\u002Fproduits-betool",{"title":719,"_path":720,"children":721},"Сценарии использования","\u002Fru\u002Fdocs\u002Fcas-usage",[722,725,728,731,734,737],{"title":723,"_path":724},"Типовые бизнес-агенты","\u002Fru\u002Fdocs\u002Fcas-usage\u002Fvue-densemble",{"title":726,"_path":727},"CFO ИИ","\u002Fru\u002Fdocs\u002Fcas-usage\u002Fcfo-ia",{"title":729,"_path":730},"COO ИИ","\u002Fru\u002Fdocs\u002Fcas-usage\u002Fcoo-ia",{"title":732,"_path":733},"CTO ИИ","\u002Fru\u002Fdocs\u002Fcas-usage\u002Fcto-ia",{"title":735,"_path":736},"Product Manager ИИ","\u002Fru\u002Fdocs\u002Fcas-usage\u002Fproduct-manager-ia",{"title":738,"_path":739},"Персональный ассистент","\u002Fru\u002Fdocs\u002Fcas-usage\u002Fassistant-personnel"]