[{"data":1,"prerenderedAt":1247},["ShallowReactive",2],{"article-alternates":3,"article-\u002Fru\u002Fai\u002Fmulti-agent-orkestratsiya":13},{"i18nKey":4,"paths":5},"ai-008-2026-07",{"de":6,"en":7,"es":8,"fr":9,"it":10,"ru":11,"tr":12},"\u002Fde\u002Fai\u002Fmulti-agent-orchestrierung-llm-aufrufe-systeme","\u002Fen\u002Fai\u002Fmulti-agent-orchestration-single-llm-call","\u002Fes\u002Fai\u002Forquestacion-multi-agente-llm","\u002Ffr\u002Fai\u002Forchestration-multi-agent-llm","\u002Fit\u002Fai\u002Forchestrazione-multi-agent-da-una-singola-chiamata-llm","\u002Fru\u002Fai\u002Fmulti-agent-orkestratsiya","\u002Ftr\u002Fai\u002Fmulti-agent-orchestration-tek-llm-cagrisindan-sistemlere",{"_path":11,"_dir":14,"_draft":15,"_partial":15,"_locale":16,"title":17,"description":18,"publishedAt":19,"modifiedAt":19,"category":14,"i18nKey":4,"tags":20,"readingTime":26,"author":27,"body":28,"_type":1241,"_id":1242,"_source":1243,"_file":1244,"_stem":1245,"_extension":1246},"ai",false,"","Многоагентная Оркестрация: От Единого Вызова LLM к Системам","Agent SDK'и, tool use и параллельные\u002Fпоследовательные топологии: как интегрировать LLM в production процессы. Трейдоффы оркестрации и архитектурные паттерны.","2026-07-02",[21,22,23,24,25],"многоагентность","llm-оркестрация","agent-sdk","tool-use","ai-инфраструктура",9,"Roibase",{"type":29,"children":30,"toc":1228},"root",[31,39,46,51,64,76,88,94,106,143,178,197,204,587,620,626,645,662,686,705,711,837,843,855,865,875,885,902,908,919,924,969,981,993,999,1004,1014,1024,1034,1044,1049,1169,1175,1180,1190,1200,1210,1222],{"type":32,"tag":33,"props":34,"children":35},"element","p",{},[36],{"type":37,"value":38},"text","Эпоха простого proof-of-concept'а — один вызов API, один ответ — закончилась в 2023-м. К 2026-му компании, переносящие LLM в production, сталкиваются с тем, что мы называем \"многоагентной оркестрацией\": несколько моделей одновременно, каждая имеет доступ к своим инструментам, работают параллельно или последовательно, полностью наблюдаемы и воспроизводимы. В этой статье мы разберём, какие решения вы принимаете при построении многоагентной архитектуры, что действительно обещают SDK-и и какие трейдоффы скрывают разные топологии оркестрации.",{"type":32,"tag":40,"props":41,"children":43},"h2",{"id":42},"что-обещают-agent-sdkи-и-что-они-дают",[44],{"type":37,"value":45},"Что Обещают Agent SDK'и и Что Они Дают",{"type":32,"tag":33,"props":47,"children":48},{},[49],{"type":37,"value":50},"LangChain, CrewAI, Semantic Kernel, LlamaIndex — все позиционируют себя как \"agent SDK\". Общее обещание: дайте LLM право использовать инструменты, установите иерархию принятия решений, управляйте цепочками. Но работает ли это на практике в production?",{"type":32,"tag":33,"props":52,"children":53},{},[54,56,62],{"type":37,"value":55},"Первая проблема: ",{"type":32,"tag":57,"props":58,"children":59},"strong",{},[60],{"type":37,"value":61},"abstraction overhead",{"type":37,"value":63},". Высокоуровневые библиотеки типа LangChain упрощают binding инструментов, но усложняют отладку. Когда в production вызов инструмента падает, непонятно — это ошибка внутреннего состояния LangChain или ответ API? Приходится парсить trace'и. Если у вас есть нативная поддержка инструментов, как в Anthropic Computer Use API, использование SDK напрямую обычно даёт лучшую видимость.",{"type":32,"tag":33,"props":65,"children":66},{},[67,69,74],{"type":37,"value":68},"Вторая проблема: ",{"type":32,"tag":57,"props":70,"children":71},{},[72],{"type":37,"value":73},"versioning",{"type":37,"value":75},". Agent SDK'и быстро эволюционируют, breaking changes выходят часто. LangChain 0.1 → 0.2 deprecate'ил целые структуры цепочек. Вместо того чтобы ждать патчей с пиненной версией, иногда проще реализовать tool use логику самостоятельно. Особенно если ваша оркестрация содержит специфичную business логику — SDK'и слишком opinionated для таких случаев.",{"type":32,"tag":33,"props":77,"children":78},{},[79,81,86],{"type":37,"value":80},"Третья выгода: ",{"type":32,"tag":57,"props":82,"children":83},{},[84],{"type":37,"value":85},"встроенная наблюдаемость",{"type":37,"value":87},". LangSmith, eval suite LlamaIndex визуализируют цепочку вызовов. Это критично для production отладки — какой агент вызвал какой инструмент, где произошла задержка, сколько token'ов потратила каждая prompt. Если вы пишете оркестрацию с нуля, эту телеметрию нужно реализовать самостоятельно. SDK'и здесь экономят время, но несут risk lock-in'а.",{"type":32,"tag":40,"props":89,"children":91},{"id":90},"tool-use-выше-function-calling",[92],{"type":37,"value":93},"Tool Use: Выше Function Calling",{"type":32,"tag":33,"props":95,"children":96},{},[97,99,104],{"type":37,"value":98},"Tool use — это когда LLM генерирует структурированный output для запроса к внешним API. OpenAI function calling, Anthropic tool use, Google function calling — одна идея, разные форматы. Интересная часть — ",{"type":32,"tag":57,"props":100,"children":101},{},[102],{"type":37,"value":103},"зависимости между инструментами",{"type":37,"value":105},".",{"type":32,"tag":33,"props":107,"children":108},{},[109,111,118,120,126,128,134,136,141],{"type":37,"value":110},"Простой пример: автоматизация email-кампаний. Инструмент 1: ",{"type":32,"tag":112,"props":113,"children":115},"code",{"className":114},[],[116],{"type":37,"value":117},"list_segments",{"type":37,"value":119}," (список сегментов из CRM). Инструмент 2: ",{"type":32,"tag":112,"props":121,"children":123},{"className":122},[],[124],{"type":37,"value":125},"get_segment_stats",{"type":37,"value":127}," (метрики по сегменту). Инструмент 3: ",{"type":32,"tag":112,"props":129,"children":131},{"className":130},[],[132],{"type":37,"value":133},"create_campaign",{"type":37,"value":135}," (создание кампании). Эти три ",{"type":32,"tag":57,"props":137,"children":138},{},[139],{"type":37,"value":140},"нужно вызывать последовательно",{"type":37,"value":142},", потому что output каждого — input для следующего.",{"type":32,"tag":33,"props":144,"children":145},{},[146,148,154,156,162,163,169,171,176],{"type":37,"value":147},"Сложный пример: агент аналитики. ",{"type":32,"tag":112,"props":149,"children":151},{"className":150},[],[152],{"type":37,"value":153},"query_bigquery",{"type":37,"value":155},", ",{"type":32,"tag":112,"props":157,"children":159},{"className":158},[],[160],{"type":37,"value":161},"fetch_gsc_data",{"type":37,"value":155},{"type":32,"tag":112,"props":164,"children":166},{"className":165},[],[167],{"type":37,"value":168},"fetch_ga4_events",{"type":37,"value":170}," можно вызвать ",{"type":32,"tag":57,"props":172,"children":173},{},[174],{"type":37,"value":175},"параллельно",{"type":37,"value":177}," — они независимы. Параллельное выполнение снижает latency в production, но оркестратор должен управлять concurrency limit'ом и rate limit'ом. Anthropic SDK поддерживает параллельные tool call'и, а OpenAI function calling последователен (по состоянию на Q2 2026). Значит, вы пишете оркестратор сами.",{"type":32,"tag":33,"props":179,"children":180},{},[181,183,188,190,195],{"type":37,"value":182},"Критический трейдофф в tool use: ",{"type":32,"tag":57,"props":184,"children":185},{},[186],{"type":37,"value":187},"детерминизм vs. гибкость",{"type":37,"value":189},". Если вы скажете LLM \"выбери один из этих трёх инструментов\", каждый run может выбрать по-разному. Если жёстко закодировать последовательность, теряется гибкость, но выигрываете воспроизводимость. В production обычно ",{"type":32,"tag":57,"props":191,"children":192},{},[193],{"type":37,"value":194},"гибридный подход",{"type":37,"value":196},": критичный путь hard-code, опциональные решения оставляете LLM.",{"type":32,"tag":198,"props":199,"children":201},"h3",{"id":200},"пример-цепочки-tool-вызовов",[202],{"type":37,"value":203},"Пример Цепочки Tool Вызовов",{"type":32,"tag":205,"props":206,"children":210},"pre",{"className":207,"code":208,"language":209,"meta":16,"style":16},"language-python shiki shiki-themes github-dark","# Последовательная цепочка (output одного = input другого)\ndef orchestrate_campaign(prompt: str, client: AnthropicClient):\n    # 1. Получить список сегментов\n    segments = client.tool_use(\"list_segments\", {})\n    \n    # 2. Стат для каждого сегмента (параллельный batch)\n    stats_calls = [\n        client.tool_use(\"get_segment_stats\", {\"segment_id\": s})\n        for s in segments[\"ids\"]\n    ]\n    stats = asyncio.gather(*stats_calls)\n    \n    # 3. Кампания для сегмента с лучшей engagement\n    best_segment = max(stats, key=lambda x: x[\"engagement\"])\n    campaign = client.tool_use(\"create_campaign\", {\n        \"segment_id\": best_segment[\"id\"],\n        \"message\": prompt\n    })\n    return campaign\n","python",[211],{"type":32,"tag":112,"props":212,"children":213},{"__ignoreMap":16},[214,226,259,268,298,307,316,334,363,396,405,433,441,450,499,526,550,564,573],{"type":32,"tag":215,"props":216,"children":219},"span",{"class":217,"line":218},"line",1,[220],{"type":32,"tag":215,"props":221,"children":223},{"style":222},"--shiki-default:#6A737D",[224],{"type":37,"value":225},"# Последовательная цепочка (output одного = input другого)\n",{"type":32,"tag":215,"props":227,"children":229},{"class":217,"line":228},2,[230,236,242,248,254],{"type":32,"tag":215,"props":231,"children":233},{"style":232},"--shiki-default:#F97583",[234],{"type":37,"value":235},"def",{"type":32,"tag":215,"props":237,"children":239},{"style":238},"--shiki-default:#B392F0",[240],{"type":37,"value":241}," orchestrate_campaign",{"type":32,"tag":215,"props":243,"children":245},{"style":244},"--shiki-default:#E1E4E8",[246],{"type":37,"value":247},"(prompt: ",{"type":32,"tag":215,"props":249,"children":251},{"style":250},"--shiki-default:#79B8FF",[252],{"type":37,"value":253},"str",{"type":32,"tag":215,"props":255,"children":256},{"style":244},[257],{"type":37,"value":258},", client: AnthropicClient):\n",{"type":32,"tag":215,"props":260,"children":262},{"class":217,"line":261},3,[263],{"type":32,"tag":215,"props":264,"children":265},{"style":222},[266],{"type":37,"value":267},"    # 1. Получить список сегментов\n",{"type":32,"tag":215,"props":269,"children":271},{"class":217,"line":270},4,[272,277,282,287,293],{"type":32,"tag":215,"props":273,"children":274},{"style":244},[275],{"type":37,"value":276},"    segments ",{"type":32,"tag":215,"props":278,"children":279},{"style":232},[280],{"type":37,"value":281},"=",{"type":32,"tag":215,"props":283,"children":284},{"style":244},[285],{"type":37,"value":286}," client.tool_use(",{"type":32,"tag":215,"props":288,"children":290},{"style":289},"--shiki-default:#9ECBFF",[291],{"type":37,"value":292},"\"list_segments\"",{"type":32,"tag":215,"props":294,"children":295},{"style":244},[296],{"type":37,"value":297},", {})\n",{"type":32,"tag":215,"props":299,"children":301},{"class":217,"line":300},5,[302],{"type":32,"tag":215,"props":303,"children":304},{"style":244},[305],{"type":37,"value":306},"    \n",{"type":32,"tag":215,"props":308,"children":310},{"class":217,"line":309},6,[311],{"type":32,"tag":215,"props":312,"children":313},{"style":222},[314],{"type":37,"value":315},"    # 2. Стат для каждого сегмента (параллельный batch)\n",{"type":32,"tag":215,"props":317,"children":319},{"class":217,"line":318},7,[320,325,329],{"type":32,"tag":215,"props":321,"children":322},{"style":244},[323],{"type":37,"value":324},"    stats_calls ",{"type":32,"tag":215,"props":326,"children":327},{"style":232},[328],{"type":37,"value":281},{"type":32,"tag":215,"props":330,"children":331},{"style":244},[332],{"type":37,"value":333}," [\n",{"type":32,"tag":215,"props":335,"children":337},{"class":217,"line":336},8,[338,343,348,353,358],{"type":32,"tag":215,"props":339,"children":340},{"style":244},[341],{"type":37,"value":342},"        client.tool_use(",{"type":32,"tag":215,"props":344,"children":345},{"style":289},[346],{"type":37,"value":347},"\"get_segment_stats\"",{"type":32,"tag":215,"props":349,"children":350},{"style":244},[351],{"type":37,"value":352},", {",{"type":32,"tag":215,"props":354,"children":355},{"style":289},[356],{"type":37,"value":357},"\"segment_id\"",{"type":32,"tag":215,"props":359,"children":360},{"style":244},[361],{"type":37,"value":362},": s})\n",{"type":32,"tag":215,"props":364,"children":365},{"class":217,"line":26},[366,371,376,381,386,391],{"type":32,"tag":215,"props":367,"children":368},{"style":232},[369],{"type":37,"value":370},"        for",{"type":32,"tag":215,"props":372,"children":373},{"style":244},[374],{"type":37,"value":375}," s ",{"type":32,"tag":215,"props":377,"children":378},{"style":232},[379],{"type":37,"value":380},"in",{"type":32,"tag":215,"props":382,"children":383},{"style":244},[384],{"type":37,"value":385}," segments[",{"type":32,"tag":215,"props":387,"children":388},{"style":289},[389],{"type":37,"value":390},"\"ids\"",{"type":32,"tag":215,"props":392,"children":393},{"style":244},[394],{"type":37,"value":395},"]\n",{"type":32,"tag":215,"props":397,"children":399},{"class":217,"line":398},10,[400],{"type":32,"tag":215,"props":401,"children":402},{"style":244},[403],{"type":37,"value":404},"    ]\n",{"type":32,"tag":215,"props":406,"children":408},{"class":217,"line":407},11,[409,414,418,423,428],{"type":32,"tag":215,"props":410,"children":411},{"style":244},[412],{"type":37,"value":413},"    stats ",{"type":32,"tag":215,"props":415,"children":416},{"style":232},[417],{"type":37,"value":281},{"type":32,"tag":215,"props":419,"children":420},{"style":244},[421],{"type":37,"value":422}," asyncio.gather(",{"type":32,"tag":215,"props":424,"children":425},{"style":232},[426],{"type":37,"value":427},"*",{"type":32,"tag":215,"props":429,"children":430},{"style":244},[431],{"type":37,"value":432},"stats_calls)\n",{"type":32,"tag":215,"props":434,"children":436},{"class":217,"line":435},12,[437],{"type":32,"tag":215,"props":438,"children":439},{"style":244},[440],{"type":37,"value":306},{"type":32,"tag":215,"props":442,"children":444},{"class":217,"line":443},13,[445],{"type":32,"tag":215,"props":446,"children":447},{"style":222},[448],{"type":37,"value":449},"    # 3. Кампания для сегмента с лучшей engagement\n",{"type":32,"tag":215,"props":451,"children":453},{"class":217,"line":452},14,[454,459,463,468,473,479,484,489,494],{"type":32,"tag":215,"props":455,"children":456},{"style":244},[457],{"type":37,"value":458},"    best_segment ",{"type":32,"tag":215,"props":460,"children":461},{"style":232},[462],{"type":37,"value":281},{"type":32,"tag":215,"props":464,"children":465},{"style":250},[466],{"type":37,"value":467}," max",{"type":32,"tag":215,"props":469,"children":470},{"style":244},[471],{"type":37,"value":472},"(stats, ",{"type":32,"tag":215,"props":474,"children":476},{"style":475},"--shiki-default:#FFAB70",[477],{"type":37,"value":478},"key",{"type":32,"tag":215,"props":480,"children":481},{"style":232},[482],{"type":37,"value":483},"=lambda",{"type":32,"tag":215,"props":485,"children":486},{"style":244},[487],{"type":37,"value":488}," x: x[",{"type":32,"tag":215,"props":490,"children":491},{"style":289},[492],{"type":37,"value":493},"\"engagement\"",{"type":32,"tag":215,"props":495,"children":496},{"style":244},[497],{"type":37,"value":498},"])\n",{"type":32,"tag":215,"props":500,"children":502},{"class":217,"line":501},15,[503,508,512,516,521],{"type":32,"tag":215,"props":504,"children":505},{"style":244},[506],{"type":37,"value":507},"    campaign ",{"type":32,"tag":215,"props":509,"children":510},{"style":232},[511],{"type":37,"value":281},{"type":32,"tag":215,"props":513,"children":514},{"style":244},[515],{"type":37,"value":286},{"type":32,"tag":215,"props":517,"children":518},{"style":289},[519],{"type":37,"value":520},"\"create_campaign\"",{"type":32,"tag":215,"props":522,"children":523},{"style":244},[524],{"type":37,"value":525},", {\n",{"type":32,"tag":215,"props":527,"children":529},{"class":217,"line":528},16,[530,535,540,545],{"type":32,"tag":215,"props":531,"children":532},{"style":289},[533],{"type":37,"value":534},"        \"segment_id\"",{"type":32,"tag":215,"props":536,"children":537},{"style":244},[538],{"type":37,"value":539},": best_segment[",{"type":32,"tag":215,"props":541,"children":542},{"style":289},[543],{"type":37,"value":544},"\"id\"",{"type":32,"tag":215,"props":546,"children":547},{"style":244},[548],{"type":37,"value":549},"],\n",{"type":32,"tag":215,"props":551,"children":553},{"class":217,"line":552},17,[554,559],{"type":32,"tag":215,"props":555,"children":556},{"style":289},[557],{"type":37,"value":558},"        \"message\"",{"type":32,"tag":215,"props":560,"children":561},{"style":244},[562],{"type":37,"value":563},": prompt\n",{"type":32,"tag":215,"props":565,"children":567},{"class":217,"line":566},18,[568],{"type":32,"tag":215,"props":569,"children":570},{"style":244},[571],{"type":37,"value":572},"    })\n",{"type":32,"tag":215,"props":574,"children":576},{"class":217,"line":575},19,[577,582],{"type":32,"tag":215,"props":578,"children":579},{"style":232},[580],{"type":37,"value":581},"    return",{"type":32,"tag":215,"props":583,"children":584},{"style":244},[585],{"type":37,"value":586}," campaign\n",{"type":32,"tag":33,"props":588,"children":589},{},[590,592,597,599,604,606,611,613,618],{"type":37,"value":591},"Здесь структура: ",{"type":32,"tag":112,"props":593,"children":595},{"className":594},[],[596],{"type":37,"value":117},{"type":37,"value":598}," → ",{"type":32,"tag":112,"props":600,"children":602},{"className":601},[],[603],{"type":37,"value":125},{"type":37,"value":605}," (параллельно) → ",{"type":32,"tag":112,"props":607,"children":609},{"className":608},[],[610],{"type":37,"value":133},{"type":37,"value":612}," (последовательно). LLM участвует только в финальной генерации сообщения — это ",{"type":32,"tag":57,"props":614,"children":615},{},[616],{"type":37,"value":617},"полу-автономная",{"type":37,"value":619}," архитектура. Логикой tool вызовов управляет оркестратор.",{"type":32,"tag":40,"props":621,"children":623},{"id":622},"параллельная-vs-последовательная-топология",[624],{"type":37,"value":625},"Параллельная vs. Последовательная Топология",{"type":32,"tag":33,"props":627,"children":628},{},[629,631,636,638,643],{"type":37,"value":630},"В многоагентных системах две основные топологии: ",{"type":32,"tag":57,"props":632,"children":633},{},[634],{"type":37,"value":635},"параллельная",{"type":37,"value":637}," (множество агентов работают одновременно, output'ы объединяются) и ",{"type":32,"tag":57,"props":639,"children":640},{},[641],{"type":37,"value":642},"последовательная",{"type":37,"value":644}," (каждый агент создаёт input для следующего).",{"type":32,"tag":33,"props":646,"children":647},{},[648,653,655,660],{"type":32,"tag":57,"props":649,"children":650},{},[651],{"type":37,"value":652},"Параллельная топология",{"type":37,"value":654}," обычно используется для ",{"type":32,"tag":57,"props":656,"children":657},{},[658],{"type":37,"value":659},"специализации",{"type":37,"value":661},". Пример: pipeline создания контента. Агент A пишет заголовок, Агент B создаёт параграфы тела, Агент C оптимизирует SEO-описание. Все три получают один и тот же brief, output'ы объединяются. Преимущество: каждый агент специализируется в своей области, prompt'ы короче, token'ов дешевле (контекст не раздувается). Недостаток: координационный overhead. Merge logic ваша ответственность — если output'ы противоречивы, нужна ручная согласованность.",{"type":32,"tag":33,"props":663,"children":664},{},[665,670,672,677,679,684],{"type":32,"tag":57,"props":666,"children":667},{},[668],{"type":37,"value":669},"Последовательная топология",{"type":37,"value":671}," для ",{"type":32,"tag":57,"props":673,"children":674},{},[675],{"type":37,"value":676},"уточнения",{"type":37,"value":678}," и ",{"type":32,"tag":57,"props":680,"children":681},{},[682],{"type":37,"value":683},"валидации",{"type":37,"value":685},". Агент A генерирует черновик, Агент B fact-check'ит, Агент C корректирует тон. Каждый получает output предыдущего. Преимущество: каждый этап улучшает предыдущий, reasoning'е логичен, easy to debug. Недостаток: latency — каждый агент ждёт своей очереди. Общее время = N × средняя latency агента.",{"type":32,"tag":33,"props":687,"children":688},{},[689,691,703],{"type":37,"value":690},"В Roibase мы используем гибридный паттерн для ",{"type":32,"tag":57,"props":692,"children":693},{},[694],{"type":32,"tag":695,"props":696,"children":700},"a",{"href":697,"rel":698},"https:\u002F\u002Fwww.roibase.com.tr\u002Fru\u002Fgeo",[699],"nofollow",[701],{"type":37,"value":702},"Geo-оптимизации контента",{"type":37,"value":704},": параллельные агенты скраппят citation'ы из разных search engine'ов (ChatGPT, Perplexity, Gemini), последовательная цепочка агентов согласовывает эти citation'ы с brand mention pattern'ами. Параллельная часть ускоряет сбор данных, последовательная обеспечивает глубину анализа.",{"type":32,"tag":198,"props":706,"children":708},{"id":707},"сравнение-топологий",[709],{"type":37,"value":710},"Сравнение Топологий",{"type":32,"tag":712,"props":713,"children":714},"table",{},[715,749],{"type":32,"tag":716,"props":717,"children":718},"thead",{},[719],{"type":32,"tag":720,"props":721,"children":722},"tr",{},[723,729,734,739,744],{"type":32,"tag":724,"props":725,"children":726},"th",{},[727],{"type":37,"value":728},"Архитектура",{"type":32,"tag":724,"props":730,"children":731},{},[732],{"type":37,"value":733},"Latency",{"type":32,"tag":724,"props":735,"children":736},{},[737],{"type":37,"value":738},"Специализация",{"type":32,"tag":724,"props":740,"children":741},{},[742],{"type":37,"value":743},"Отладка",{"type":32,"tag":724,"props":745,"children":746},{},[747],{"type":37,"value":748},"Use Case",{"type":32,"tag":750,"props":751,"children":752},"tbody",{},[753,782,810],{"type":32,"tag":720,"props":754,"children":755},{},[756,762,767,772,777],{"type":32,"tag":757,"props":758,"children":759},"td",{},[760],{"type":37,"value":761},"Параллельная",{"type":32,"tag":757,"props":763,"children":764},{},[765],{"type":37,"value":766},"Низкая (макс длит агента)",{"type":32,"tag":757,"props":768,"children":769},{},[770],{"type":37,"value":771},"Высокая",{"type":32,"tag":757,"props":773,"children":774},{},[775],{"type":37,"value":776},"Merge logic сложен",{"type":32,"tag":757,"props":778,"children":779},{},[780],{"type":37,"value":781},"Сбор данных, анализ из множества источников",{"type":32,"tag":720,"props":783,"children":784},{},[785,790,795,800,805],{"type":32,"tag":757,"props":786,"children":787},{},[788],{"type":37,"value":789},"Последовательная",{"type":32,"tag":757,"props":791,"children":792},{},[793],{"type":37,"value":794},"Высокая (сумма latency'ей)",{"type":32,"tag":757,"props":796,"children":797},{},[798],{"type":37,"value":799},"Низкая",{"type":32,"tag":757,"props":801,"children":802},{},[803],{"type":37,"value":804},"Linear trace",{"type":32,"tag":757,"props":806,"children":807},{},[808],{"type":37,"value":809},"Уточнение, валидация, multi-step reasoning",{"type":32,"tag":720,"props":811,"children":812},{},[813,818,823,827,832],{"type":32,"tag":757,"props":814,"children":815},{},[816],{"type":37,"value":817},"Гибридная",{"type":32,"tag":757,"props":819,"children":820},{},[821],{"type":37,"value":822},"Средняя",{"type":32,"tag":757,"props":824,"children":825},{},[826],{"type":37,"value":771},{"type":32,"tag":757,"props":828,"children":829},{},[830],{"type":37,"value":831},"Сложная",{"type":32,"tag":757,"props":833,"children":834},{},[835],{"type":37,"value":836},"Production pipeline'ы",{"type":32,"tag":40,"props":838,"children":840},{"id":839},"orchestration-state-и-воспроизводимость",[841],{"type":37,"value":842},"Orchestration State и Воспроизводимость",{"type":32,"tag":33,"props":844,"children":845},{},[846,848,853],{"type":37,"value":847},"Построив многоагентную систему, главное решение: ",{"type":32,"tag":57,"props":849,"children":850},{},[851],{"type":37,"value":852},"где хранить state?",{"type":37,"value":854}," Три варианта.",{"type":32,"tag":33,"props":856,"children":857},{},[858,863],{"type":32,"tag":57,"props":859,"children":860},{},[861],{"type":37,"value":862},"Stateless оркестрация:",{"type":37,"value":864}," Каждый агент независим, промежуточные output'ы оркестратор держит в памяти. Преимущество: replay просто, горизонтальное масштабирование возможно. Недостаток: memory pressure — в длинной цепочке потратите ГБ на conversation history.",{"type":32,"tag":33,"props":866,"children":867},{},[868,873],{"type":32,"tag":57,"props":869,"children":870},{},[871],{"type":37,"value":872},"Stateful оркестрация:",{"type":37,"value":874}," Промежуточный state сохраняется во внешнее хранилище (Redis, PostgreSQL). Преимущество: низкий memory usage, crash recovery. Недостаток: I\u002FO overhead, нужны гарантии консистентности.",{"type":32,"tag":33,"props":876,"children":877},{},[878,883],{"type":32,"tag":57,"props":879,"children":880},{},[881],{"type":37,"value":882},"Гибридный (checkpointing):",{"type":37,"value":884}," State сохраняется на ключевых milestone'ах. Например, каждые 5 вызовов агента — checkpoint. При crash восстанавливаетесь с последнего checkpoint. Преимущество: баланс между performance и reliability. Недостаток: complex implementation.",{"type":32,"tag":33,"props":886,"children":887},{},[888,890,900],{"type":37,"value":889},"В production паттерн, который мы используем в ",{"type":32,"tag":57,"props":891,"children":892},{},[893],{"type":32,"tag":695,"props":894,"children":897},{"href":895,"rel":896},"https:\u002F\u002Fwww.roibase.com.tr\u002Fru\u002Ffirstparty",[699],[898],{"type":37,"value":899},"First-Party Data & Измерение",{"type":37,"value":901},": писать orchestration state в log stream. Каждый вызов агента — structured log в BigQuery, для replay используется event sourcing. Так можно ретроспективно анализировать attribution chain — какой output агента повлиял на какую downstream метрику.",{"type":32,"tag":40,"props":903,"children":905},{"id":904},"eval-и-observability-отладка-оркестрации",[906],{"type":37,"value":907},"Eval и Observability: Отладка Оркестрации",{"type":32,"tag":33,"props":909,"children":910},{},[911,913,918],{"type":37,"value":912},"В многоагентной системе отладка сложная — точек отказа много. Агент A выбрал неправильный инструмент? Агент B неправильно спарсил input? Оркестратор неверно объединил output'ы? ",{"type":32,"tag":57,"props":914,"children":915},{},[916],{"type":37,"value":917},"Observability stack обязателен",{"type":37,"value":105},{"type":32,"tag":33,"props":920,"children":921},{},[922],{"type":37,"value":923},"Метрики, которые нужны:",{"type":32,"tag":925,"props":926,"children":927},"ul",{},[928,939,949,959],{"type":32,"tag":929,"props":930,"children":931},"li",{},[932,937],{"type":32,"tag":57,"props":933,"children":934},{},[935],{"type":37,"value":936},"Agent-level latency",{"type":37,"value":938}," (p50, p95, p99) — какой агент bottleneck?",{"type":32,"tag":929,"props":940,"children":941},{},[942,947],{"type":32,"tag":57,"props":943,"children":944},{},[945],{"type":37,"value":946},"Tool success rate",{"type":37,"value":948}," — какой API call часто падает?",{"type":32,"tag":929,"props":950,"children":951},{},[952,957],{"type":32,"tag":57,"props":953,"children":954},{},[955],{"type":37,"value":956},"Token usage per agent",{"type":37,"value":958}," — cost attribution",{"type":32,"tag":929,"props":960,"children":961},{},[962,967],{"type":32,"tag":57,"props":963,"children":964},{},[965],{"type":37,"value":966},"Eval score",{"type":37,"value":968}," — используя LLM-as-judge, оценивайте каждый output агента 0–1",{"type":32,"tag":33,"props":970,"children":971},{},[972,974,979],{"type":37,"value":973},"Паттерн eval'а, который мы используем: ",{"type":32,"tag":57,"props":975,"children":976},{},[977],{"type":37,"value":978},"reference-free scoring",{"type":37,"value":980},". Supervisor LLM (например, GPT-4) оценивает каждый output агента по скорам \"task completion\" и \"hallucination\". Эти скоры сохраняются как time series, детектируется регрессия. Если hallucination score Агента A вырос с 0.1 до 0.3, откатываете версию prompt'а.",{"type":32,"tag":33,"props":982,"children":983},{},[984,986,991],{"type":37,"value":985},"Другой паттерн от Anthropic: ",{"type":32,"tag":57,"props":987,"children":988},{},[989],{"type":37,"value":990},"Claude как evaluator",{"type":37,"value":992},". Большой context window позволяет передать всю цепочку агентов в одном prompt'е и спросить: \"есть ли логические ошибки в цепочке?\" Эта мета-evaluation используется перед production deploy'ом в процессе QA.",{"type":32,"tag":40,"props":994,"children":996},{"id":995},"tradeoffы-оркестрации-и-матрица-решений",[997],{"type":37,"value":998},"Tradeoff'ы Оркестрации и Матрица Решений",{"type":32,"tag":33,"props":1000,"children":1001},{},[1002],{"type":37,"value":1003},"Выбирая многоагентную архитектуру, смотрите на эти трейдоффы:",{"type":32,"tag":33,"props":1005,"children":1006},{},[1007,1012],{"type":32,"tag":57,"props":1008,"children":1009},{},[1010],{"type":37,"value":1011},"1. Complexity vs. control:",{"type":37,"value":1013}," SDK ускоряет implementation, но obscure'ит отладку. Custom оркестратор даёт control, но требует maintenance.",{"type":32,"tag":33,"props":1015,"children":1016},{},[1017,1022],{"type":32,"tag":57,"props":1018,"children":1019},{},[1020],{"type":37,"value":1021},"2. Latency vs. specialization:",{"type":37,"value":1023}," Параллельные агенты быстры, но усложняют координацию. Последовательные глубже reasoning, но медленнее.",{"type":32,"tag":33,"props":1025,"children":1026},{},[1027,1032],{"type":32,"tag":57,"props":1028,"children":1029},{},[1030],{"type":37,"value":1031},"3. Cost vs. quality:",{"type":37,"value":1033}," Каждый вызов агента — token cost. Больше агентов = лучше качество, но cost растёт линейно. В production нужно найти \"minimum viable agent count\".",{"type":32,"tag":33,"props":1035,"children":1036},{},[1037,1042],{"type":32,"tag":57,"props":1038,"children":1039},{},[1040],{"type":37,"value":1041},"4. Determinism vs. adaptability:",{"type":37,"value":1043}," Hard-coded tool sequence'ы reproducible, но не handle edge case'ы. LLM выбирает инструменты — адаптивно, но non-deterministic.",{"type":32,"tag":33,"props":1045,"children":1046},{},[1047],{"type":37,"value":1048},"Матрица решений, которую мы используем в Roibase:",{"type":32,"tag":712,"props":1050,"children":1051},{},[1052,1078],{"type":32,"tag":716,"props":1053,"children":1054},{},[1055],{"type":32,"tag":720,"props":1056,"children":1057},{},[1058,1063,1068,1073],{"type":32,"tag":724,"props":1059,"children":1060},{},[1061],{"type":37,"value":1062},"Usecase",{"type":32,"tag":724,"props":1064,"children":1065},{},[1066],{"type":37,"value":1067},"Топология",{"type":32,"tag":724,"props":1069,"children":1070},{},[1071],{"type":37,"value":1072},"SDK",{"type":32,"tag":724,"props":1074,"children":1075},{},[1076],{"type":37,"value":1077},"State Management",{"type":32,"tag":750,"props":1079,"children":1080},{},[1081,1103,1125,1147],{"type":32,"tag":720,"props":1082,"children":1083},{},[1084,1089,1093,1098],{"type":32,"tag":757,"props":1085,"children":1086},{},[1087],{"type":37,"value":1088},"Сбор данных",{"type":32,"tag":757,"props":1090,"children":1091},{},[1092],{"type":37,"value":761},{"type":32,"tag":757,"props":1094,"children":1095},{},[1096],{"type":37,"value":1097},"LlamaIndex",{"type":32,"tag":757,"props":1099,"children":1100},{},[1101],{"type":37,"value":1102},"Stateless",{"type":32,"tag":720,"props":1104,"children":1105},{},[1106,1111,1115,1120],{"type":32,"tag":757,"props":1107,"children":1108},{},[1109],{"type":37,"value":1110},"Уточнение контента",{"type":32,"tag":757,"props":1112,"children":1113},{},[1114],{"type":37,"value":789},{"type":32,"tag":757,"props":1116,"children":1117},{},[1118],{"type":37,"value":1119},"Custom",{"type":32,"tag":757,"props":1121,"children":1122},{},[1123],{"type":37,"value":1124},"Checkpointing",{"type":32,"tag":720,"props":1126,"children":1127},{},[1128,1133,1137,1142],{"type":32,"tag":757,"props":1129,"children":1130},{},[1131],{"type":37,"value":1132},"Real-time inference",{"type":32,"tag":757,"props":1134,"children":1135},{},[1136],{"type":37,"value":817},{"type":32,"tag":757,"props":1138,"children":1139},{},[1140],{"type":37,"value":1141},"Anthropic SDK",{"type":32,"tag":757,"props":1143,"children":1144},{},[1145],{"type":37,"value":1146},"Redis cache",{"type":32,"tag":720,"props":1148,"children":1149},{},[1150,1155,1159,1164],{"type":32,"tag":757,"props":1151,"children":1152},{},[1153],{"type":37,"value":1154},"Batch processing",{"type":32,"tag":757,"props":1156,"children":1157},{},[1158],{"type":37,"value":761},{"type":32,"tag":757,"props":1160,"children":1161},{},[1162],{"type":37,"value":1163},"LangChain",{"type":32,"tag":757,"props":1165,"children":1166},{},[1167],{"type":37,"value":1168},"PostgreSQL",{"type":32,"tag":40,"props":1170,"children":1172},{"id":1171},"перенос-оркестрации-в-production",[1173],{"type":37,"value":1174},"Перенос Оркестрации в Production",{"type":32,"tag":33,"props":1176,"children":1177},{},[1178],{"type":37,"value":1179},"Когда многоагентная система идёт в production, три вещи критичны.",{"type":32,"tag":33,"props":1181,"children":1182},{},[1183,1188],{"type":32,"tag":57,"props":1184,"children":1185},{},[1186],{"type":37,"value":1187},"Rate limiting:",{"type":37,"value":1189}," Параллельные агенты превышают rate limit API. В оркестраторе используйте token bucket или semaphore pattern. Если у Anthropic API лимит 50 req\u002Fmin, число параллельных агентов throttle по этому.",{"type":32,"tag":33,"props":1191,"children":1192},{},[1193,1198],{"type":32,"tag":57,"props":1194,"children":1195},{},[1196],{"type":37,"value":1197},"Fallback strategy:",{"type":37,"value":1199}," Что если агент упадёт? Простой retry с exponential backoff + jitter. Если агент не критичен (например, опциональный SEO tag generator), используйте circuit breaker и переходите в fail-safe mode.",{"type":32,"tag":33,"props":1201,"children":1202},{},[1203,1208],{"type":32,"tag":57,"props":1204,"children":1205},{},[1206],{"type":37,"value":1207},"Cost monitoring:",{"type":37,"value":1209}," Логируйте token cost для каждого вызова агента. В production отслеживайте метрику $\u002Frequest по агентам. Если какой-то агент создаёт cost spike, оптимизируйте его prompt или отключите.",{"type":32,"tag":33,"props":1211,"children":1212},{},[1213,1215,1220],{"type":37,"value":1214},"Сила многоагентной оркестрации не в том, чтобы \"делать больше, чем один LLM\", а в том, чтобы ",{"type":32,"tag":57,"props":1216,"children":1217},{},[1218],{"type":37,"value":1219},"сделать бизнес-процессы модульными, наблюдаемыми и масштабируемыми",{"type":37,"value":1221},". Для долг",{"type":32,"tag":1223,"props":1224,"children":1225},"style",{},[1226],{"type":37,"value":1227},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":16,"searchDepth":261,"depth":261,"links":1229},[1230,1231,1234,1237,1238,1239,1240],{"id":42,"depth":228,"text":45},{"id":90,"depth":228,"text":93,"children":1232},[1233],{"id":200,"depth":261,"text":203},{"id":622,"depth":228,"text":625,"children":1235},[1236],{"id":707,"depth":261,"text":710},{"id":839,"depth":228,"text":842},{"id":904,"depth":228,"text":907},{"id":995,"depth":228,"text":998},{"id":1171,"depth":228,"text":1174},"markdown","content:ru:ai:multi-agent-orkestratsiya.md","content","ru\u002Fai\u002Fmulti-agent-orkestratsiya.md","ru\u002Fai\u002Fmulti-agent-orkestratsiya","md",1785132269273]