[{"data":1,"prerenderedAt":1248},["ShallowReactive",2],{"article-alternates":3,"article-\u002Fes\u002Fai\u002Forquestacion-multi-agente":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":14,"_dir":15,"_draft":16,"_partial":16,"_locale":17,"title":18,"description":19,"publishedAt":20,"modifiedAt":20,"category":15,"i18nKey":4,"tags":21,"readingTime":27,"author":28,"body":29,"_type":1242,"_id":1243,"_source":1244,"_file":1245,"_stem":1246,"_extension":1247},"\u002Fes\u002Fai\u002Forquestacion-multi-agente","ai",false,"","Orquestación Multi-Agente: De una Llamada LLM a Sistemas","Cómo integrar LLMs en procesos empresariales con SDK de agentes, tool use y topologías paralelas\u002Fseriales. Trade-offs de producción y arquitecturas de orquestación.","2026-07-02",[22,23,24,25,26],"multi-agente","orquestacion-llm","agent-sdk","tool-use","infraestructura-ia",9,"Roibase",{"type":30,"children":31,"toc":1229},"root",[32,40,47,52,65,77,89,95,107,144,179,198,205,588,621,627,646,664,688,707,713,839,845,857,867,877,887,892,898,909,914,959,971,983,989,994,1004,1014,1024,1034,1039,1158,1164,1169,1179,1189,1199,1223],{"type":33,"tag":34,"props":35,"children":36},"element","p",{},[37],{"type":38,"value":39},"text","La fase proof-of-concept de hacer una sola llamada a la API de LLM y recibir una respuesta terminó en 2023. En 2026, las empresas que llevan LLMs a producción se enfrentan a lo que llamamos \"orquestación de agentes\": sistemas con múltiples modelos, cada uno con acceso a diferentes herramientas, que pueden ejecutarse en paralelo o en serie, observables y reproducibles. En este artículo veremos qué decisiones tomar al construir una arquitectura multi-agente, qué prometen realmente los SDK y qué trade-offs tienen las topologías de orquestación.",{"type":33,"tag":41,"props":42,"children":44},"h2",{"id":43},"lo-que-prometen-los-sdk-de-agentes-y-lo-que-entregan",[45],{"type":38,"value":46},"Lo que Prometen los SDK de Agentes (y lo que Entregan)",{"type":33,"tag":34,"props":48,"children":49},{},[50],{"type":38,"value":51},"Frameworks como LangChain, CrewAI, Semantic Kernel y LlamaIndex se comercializan como \"SDK de agentes\". Su promesa común: autoriza al LLM a usar herramientas, establece jerarquías de decisión, gestiona cadenas. ¿Son suficientes estas herramientas en la práctica?",{"type":33,"tag":34,"props":53,"children":54},{},[55,57,63],{"type":38,"value":56},"El primer problema: ",{"type":33,"tag":58,"props":59,"children":60},"strong",{},[61],{"type":38,"value":62},"overhead de abstracción",{"type":38,"value":64},". Librerías de alto nivel como LangChain facilitan el binding de herramientas, pero complican el debugging. En producción, cuando una llamada a herramienta falla, necesitas decodificar si fue el estado interno de LangChain o la respuesta de la API. Si tienes soporte nativo de herramientas como la API Computer Use de Anthropic, usar el SDK directamente generalmente ofrece mejor visibilidad.",{"type":33,"tag":34,"props":66,"children":67},{},[68,70,75],{"type":38,"value":69},"El segundo problema: ",{"type":33,"tag":58,"props":71,"children":72},{},[73],{"type":38,"value":74},"versionado",{"type":38,"value":76},". Los SDK de agentes iteran rápido; los cambios disruptivos aparecen frecuentemente. Por ejemplo, la transición de LangChain 0.1 → 0.2 deprecó algunas estructuras de cadenas. En lugar de esperar parches usando una versión fija en producción, a veces es más mantenible escribir tu propia lógica de tool use, especialmente si tu capa de orquestación tiene lógica empresarial personalizada que no encaja en la estructura opinada del SDK.",{"type":33,"tag":34,"props":78,"children":79},{},[80,82,87],{"type":38,"value":81},"El tercer beneficio: ",{"type":33,"tag":58,"props":83,"children":84},{},[85],{"type":38,"value":86},"observabilidad integrada",{"type":38,"value":88},". Complementos como LangSmith y la suite de evaluación de LlamaIndex visualizan la cadena de llamadas. Esto es crítico para debugging en producción — qué agente llamó a qué herramienta, dónde se concentró la latencia, qué token gastó cada prompt. Si escribiste tu propia orquestación, también debes construir esta telemetría. Los SDK ahorran tiempo aquí, pero conllevan riesgo de bloqueo.",{"type":33,"tag":41,"props":90,"children":92},{"id":91},"tool-use-más-allá-del-function-calling",[93],{"type":38,"value":94},"Tool Use: Más Allá del Function Calling",{"type":33,"tag":34,"props":96,"children":97},{},[98,100,105],{"type":38,"value":99},"Lo que llamamos tool use es que el LLM produzca salida estructurada para hacer solicitudes a APIs externas. OpenAI function calling, tool use de Anthropic, function calling de Google — todos implementan el mismo principio con formatos de esquema diferentes. La parte interesante es cuando las herramientas son ",{"type":33,"tag":58,"props":101,"children":102},{},[103],{"type":38,"value":104},"interdependientes",{"type":38,"value":106},".",{"type":33,"tag":34,"props":108,"children":109},{},[110,112,119,121,127,129,135,137,142],{"type":38,"value":111},"Ejemplo simple: un agente de automatización de campañas de email. Primera herramienta: ",{"type":33,"tag":113,"props":114,"children":116},"code",{"className":115},[],[117],{"type":38,"value":118},"list_segments",{"type":38,"value":120}," (obtiene lista de segmentos de CRM). Segunda: ",{"type":33,"tag":113,"props":122,"children":124},{"className":123},[],[125],{"type":38,"value":126},"get_segment_stats",{"type":38,"value":128}," (devuelve métricas para un segmento). Tercera: ",{"type":33,"tag":113,"props":130,"children":132},{"className":131},[],[133],{"type":38,"value":134},"create_campaign",{"type":38,"value":136}," (crea objeto de campaña). Debes ejecutar estas tres herramientas ",{"type":33,"tag":58,"props":138,"children":139},{},[140],{"type":38,"value":141},"en serie",{"type":38,"value":143}," porque la salida de cada una es entrada para la siguiente.",{"type":33,"tag":34,"props":145,"children":146},{},[147,149,155,157,163,164,170,172,177],{"type":38,"value":148},"Ejemplo complejo: un agente de análisis de datos. Las herramientas ",{"type":33,"tag":113,"props":150,"children":152},{"className":151},[],[153],{"type":38,"value":154},"query_bigquery",{"type":38,"value":156},", ",{"type":33,"tag":113,"props":158,"children":160},{"className":159},[],[161],{"type":38,"value":162},"fetch_gsc_data",{"type":38,"value":156},{"type":33,"tag":113,"props":165,"children":167},{"className":166},[],[168],{"type":38,"value":169},"fetch_ga4_events",{"type":38,"value":171}," pueden ejecutarse ",{"type":33,"tag":58,"props":173,"children":174},{},[175],{"type":38,"value":176},"en paralelo",{"type":38,"value":178}," porque son independientes entre sí. La ejecución paralela reduce la latencia de producción, pero el orquestador debe gestionar límites de concurrencia y rate limits. El SDK de Anthropic puede hacer llamadas a herramientas en paralelo, pero el function calling de OpenAI es secuencial (a partir de Q2 2026). En ese caso, escribes el orquestador tú mismo.",{"type":33,"tag":34,"props":180,"children":181},{},[182,184,189,191,196],{"type":38,"value":183},"Un trade-off crítico en tool use: ",{"type":33,"tag":58,"props":185,"children":186},{},[187],{"type":38,"value":188},"determinismo vs. flexibilidad",{"type":38,"value":190},". Si le dices al LLM \"elige una de estas tres herramientas\", puede elegir una diferente en cada ejecución. Si codificas la secuencia de herramientas, pierdes flexibilidad pero ganas reproducibilidad. En producción, generalmente es ",{"type":33,"tag":58,"props":192,"children":193},{},[194],{"type":38,"value":195},"híbrido",{"type":38,"value":197},": codifica el camino crítico, deja las decisiones opcionales para el LLM.",{"type":33,"tag":199,"props":200,"children":202},"h3",{"id":201},"ejemplo-de-cadena-de-llamadas-de-herramientas",[203],{"type":38,"value":204},"Ejemplo de Cadena de Llamadas de Herramientas",{"type":33,"tag":206,"props":207,"children":211},"pre",{"className":208,"code":209,"language":210,"meta":17,"style":17},"language-python shiki shiki-themes github-dark","# Cadena de herramientas en serie (cada paso es entrada para el siguiente)\ndef orchestrate_campaign(prompt: str, client: AnthropicClient):\n    # 1. Listar segmentos\n    segments = client.tool_use(\"list_segments\", {})\n    \n    # 2. Stats para cada segmento (lote paralelo)\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. Campaña para segmento con mayor 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",[212],{"type":33,"tag":113,"props":213,"children":214},{"__ignoreMap":17},[215,227,260,269,299,308,317,335,364,397,406,434,442,451,500,527,551,565,574],{"type":33,"tag":216,"props":217,"children":220},"span",{"class":218,"line":219},"line",1,[221],{"type":33,"tag":216,"props":222,"children":224},{"style":223},"--shiki-default:#6A737D",[225],{"type":38,"value":226},"# Cadena de herramientas en serie (cada paso es entrada para el siguiente)\n",{"type":33,"tag":216,"props":228,"children":230},{"class":218,"line":229},2,[231,237,243,249,255],{"type":33,"tag":216,"props":232,"children":234},{"style":233},"--shiki-default:#F97583",[235],{"type":38,"value":236},"def",{"type":33,"tag":216,"props":238,"children":240},{"style":239},"--shiki-default:#B392F0",[241],{"type":38,"value":242}," orchestrate_campaign",{"type":33,"tag":216,"props":244,"children":246},{"style":245},"--shiki-default:#E1E4E8",[247],{"type":38,"value":248},"(prompt: ",{"type":33,"tag":216,"props":250,"children":252},{"style":251},"--shiki-default:#79B8FF",[253],{"type":38,"value":254},"str",{"type":33,"tag":216,"props":256,"children":257},{"style":245},[258],{"type":38,"value":259},", client: AnthropicClient):\n",{"type":33,"tag":216,"props":261,"children":263},{"class":218,"line":262},3,[264],{"type":33,"tag":216,"props":265,"children":266},{"style":223},[267],{"type":38,"value":268},"    # 1. Listar segmentos\n",{"type":33,"tag":216,"props":270,"children":272},{"class":218,"line":271},4,[273,278,283,288,294],{"type":33,"tag":216,"props":274,"children":275},{"style":245},[276],{"type":38,"value":277},"    segments ",{"type":33,"tag":216,"props":279,"children":280},{"style":233},[281],{"type":38,"value":282},"=",{"type":33,"tag":216,"props":284,"children":285},{"style":245},[286],{"type":38,"value":287}," client.tool_use(",{"type":33,"tag":216,"props":289,"children":291},{"style":290},"--shiki-default:#9ECBFF",[292],{"type":38,"value":293},"\"list_segments\"",{"type":33,"tag":216,"props":295,"children":296},{"style":245},[297],{"type":38,"value":298},", {})\n",{"type":33,"tag":216,"props":300,"children":302},{"class":218,"line":301},5,[303],{"type":33,"tag":216,"props":304,"children":305},{"style":245},[306],{"type":38,"value":307},"    \n",{"type":33,"tag":216,"props":309,"children":311},{"class":218,"line":310},6,[312],{"type":33,"tag":216,"props":313,"children":314},{"style":223},[315],{"type":38,"value":316},"    # 2. Stats para cada segmento (lote paralelo)\n",{"type":33,"tag":216,"props":318,"children":320},{"class":218,"line":319},7,[321,326,330],{"type":33,"tag":216,"props":322,"children":323},{"style":245},[324],{"type":38,"value":325},"    stats_calls ",{"type":33,"tag":216,"props":327,"children":328},{"style":233},[329],{"type":38,"value":282},{"type":33,"tag":216,"props":331,"children":332},{"style":245},[333],{"type":38,"value":334}," [\n",{"type":33,"tag":216,"props":336,"children":338},{"class":218,"line":337},8,[339,344,349,354,359],{"type":33,"tag":216,"props":340,"children":341},{"style":245},[342],{"type":38,"value":343},"        client.tool_use(",{"type":33,"tag":216,"props":345,"children":346},{"style":290},[347],{"type":38,"value":348},"\"get_segment_stats\"",{"type":33,"tag":216,"props":350,"children":351},{"style":245},[352],{"type":38,"value":353},", {",{"type":33,"tag":216,"props":355,"children":356},{"style":290},[357],{"type":38,"value":358},"\"segment_id\"",{"type":33,"tag":216,"props":360,"children":361},{"style":245},[362],{"type":38,"value":363},": s})\n",{"type":33,"tag":216,"props":365,"children":366},{"class":218,"line":27},[367,372,377,382,387,392],{"type":33,"tag":216,"props":368,"children":369},{"style":233},[370],{"type":38,"value":371},"        for",{"type":33,"tag":216,"props":373,"children":374},{"style":245},[375],{"type":38,"value":376}," s ",{"type":33,"tag":216,"props":378,"children":379},{"style":233},[380],{"type":38,"value":381},"in",{"type":33,"tag":216,"props":383,"children":384},{"style":245},[385],{"type":38,"value":386}," segments[",{"type":33,"tag":216,"props":388,"children":389},{"style":290},[390],{"type":38,"value":391},"\"ids\"",{"type":33,"tag":216,"props":393,"children":394},{"style":245},[395],{"type":38,"value":396},"]\n",{"type":33,"tag":216,"props":398,"children":400},{"class":218,"line":399},10,[401],{"type":33,"tag":216,"props":402,"children":403},{"style":245},[404],{"type":38,"value":405},"    ]\n",{"type":33,"tag":216,"props":407,"children":409},{"class":218,"line":408},11,[410,415,419,424,429],{"type":33,"tag":216,"props":411,"children":412},{"style":245},[413],{"type":38,"value":414},"    stats ",{"type":33,"tag":216,"props":416,"children":417},{"style":233},[418],{"type":38,"value":282},{"type":33,"tag":216,"props":420,"children":421},{"style":245},[422],{"type":38,"value":423}," asyncio.gather(",{"type":33,"tag":216,"props":425,"children":426},{"style":233},[427],{"type":38,"value":428},"*",{"type":33,"tag":216,"props":430,"children":431},{"style":245},[432],{"type":38,"value":433},"stats_calls)\n",{"type":33,"tag":216,"props":435,"children":437},{"class":218,"line":436},12,[438],{"type":33,"tag":216,"props":439,"children":440},{"style":245},[441],{"type":38,"value":307},{"type":33,"tag":216,"props":443,"children":445},{"class":218,"line":444},13,[446],{"type":33,"tag":216,"props":447,"children":448},{"style":223},[449],{"type":38,"value":450},"    # 3. Campaña para segmento con mayor engagement\n",{"type":33,"tag":216,"props":452,"children":454},{"class":218,"line":453},14,[455,460,464,469,474,480,485,490,495],{"type":33,"tag":216,"props":456,"children":457},{"style":245},[458],{"type":38,"value":459},"    best_segment ",{"type":33,"tag":216,"props":461,"children":462},{"style":233},[463],{"type":38,"value":282},{"type":33,"tag":216,"props":465,"children":466},{"style":251},[467],{"type":38,"value":468}," max",{"type":33,"tag":216,"props":470,"children":471},{"style":245},[472],{"type":38,"value":473},"(stats, ",{"type":33,"tag":216,"props":475,"children":477},{"style":476},"--shiki-default:#FFAB70",[478],{"type":38,"value":479},"key",{"type":33,"tag":216,"props":481,"children":482},{"style":233},[483],{"type":38,"value":484},"=lambda",{"type":33,"tag":216,"props":486,"children":487},{"style":245},[488],{"type":38,"value":489}," x: x[",{"type":33,"tag":216,"props":491,"children":492},{"style":290},[493],{"type":38,"value":494},"\"engagement\"",{"type":33,"tag":216,"props":496,"children":497},{"style":245},[498],{"type":38,"value":499},"])\n",{"type":33,"tag":216,"props":501,"children":503},{"class":218,"line":502},15,[504,509,513,517,522],{"type":33,"tag":216,"props":505,"children":506},{"style":245},[507],{"type":38,"value":508},"    campaign ",{"type":33,"tag":216,"props":510,"children":511},{"style":233},[512],{"type":38,"value":282},{"type":33,"tag":216,"props":514,"children":515},{"style":245},[516],{"type":38,"value":287},{"type":33,"tag":216,"props":518,"children":519},{"style":290},[520],{"type":38,"value":521},"\"create_campaign\"",{"type":33,"tag":216,"props":523,"children":524},{"style":245},[525],{"type":38,"value":526},", {\n",{"type":33,"tag":216,"props":528,"children":530},{"class":218,"line":529},16,[531,536,541,546],{"type":33,"tag":216,"props":532,"children":533},{"style":290},[534],{"type":38,"value":535},"        \"segment_id\"",{"type":33,"tag":216,"props":537,"children":538},{"style":245},[539],{"type":38,"value":540},": best_segment[",{"type":33,"tag":216,"props":542,"children":543},{"style":290},[544],{"type":38,"value":545},"\"id\"",{"type":33,"tag":216,"props":547,"children":548},{"style":245},[549],{"type":38,"value":550},"],\n",{"type":33,"tag":216,"props":552,"children":554},{"class":218,"line":553},17,[555,560],{"type":33,"tag":216,"props":556,"children":557},{"style":290},[558],{"type":38,"value":559},"        \"message\"",{"type":33,"tag":216,"props":561,"children":562},{"style":245},[563],{"type":38,"value":564},": prompt\n",{"type":33,"tag":216,"props":566,"children":568},{"class":218,"line":567},18,[569],{"type":33,"tag":216,"props":570,"children":571},{"style":245},[572],{"type":38,"value":573},"    })\n",{"type":33,"tag":216,"props":575,"children":577},{"class":218,"line":576},19,[578,583],{"type":33,"tag":216,"props":579,"children":580},{"style":233},[581],{"type":38,"value":582},"    return",{"type":33,"tag":216,"props":584,"children":585},{"style":245},[586],{"type":38,"value":587}," campaign\n",{"type":33,"tag":34,"props":589,"children":590},{},[591,593,598,600,605,607,612,614,619],{"type":38,"value":592},"En este ejemplo hay una estructura ",{"type":33,"tag":113,"props":594,"children":596},{"className":595},[],[597],{"type":38,"value":118},{"type":38,"value":599}," → ",{"type":33,"tag":113,"props":601,"children":603},{"className":602},[],[604],{"type":38,"value":126},{"type":38,"value":606}," (paralelo) → ",{"type":33,"tag":113,"props":608,"children":610},{"className":609},[],[611],{"type":38,"value":134},{"type":38,"value":613}," (serie). El LLM solo entra en juego en la generación de mensaje final. Esta es una arquitectura ",{"type":33,"tag":58,"props":615,"children":616},{},[617],{"type":38,"value":618},"semi-autónoma",{"type":38,"value":620}," donde el orquestador gestiona la lógica de las llamadas a herramientas.",{"type":33,"tag":41,"props":622,"children":624},{"id":623},"topología-de-agentes-paralela-vs-serie",[625],{"type":38,"value":626},"Topología de Agentes: Paralela vs. Serie",{"type":33,"tag":34,"props":628,"children":629},{},[630,632,637,639,644],{"type":38,"value":631},"En sistemas multi-agente, hay dos topologías fundamentales: ",{"type":33,"tag":58,"props":633,"children":634},{},[635],{"type":38,"value":636},"paralela",{"type":38,"value":638}," (múltiples agentes se ejecutan simultáneamente, sus salidas se combinan) y ",{"type":33,"tag":58,"props":640,"children":641},{},[642],{"type":38,"value":643},"serie",{"type":38,"value":645}," (cada agente produce la entrada del siguiente).",{"type":33,"tag":34,"props":647,"children":648},{},[649,651,655,657,662],{"type":38,"value":650},"La topología ",{"type":33,"tag":58,"props":652,"children":653},{},[654],{"type":38,"value":636},{"type":38,"value":656}," generalmente se usa para ",{"type":33,"tag":58,"props":658,"children":659},{},[660],{"type":38,"value":661},"especialización",{"type":38,"value":663},". Ejemplo: un pipeline de generación de contenido. El Agente A escribe el titular, el Agente B genera párrafos de cuerpo, el Agente C optimiza la meta descripción SEO. Los tres reciben el mismo brief como entrada, sus salidas se fusionan. La ventaja: cada agente se especializa en su dominio, los prompts son cortos, el costo de tokens baja (no se comparte ventana de contexto). La desventaja: overhead de coordinación. La lógica de fusión es tu responsabilidad — si las salidas son incompatibles, necesitas reconciliación manual.",{"type":33,"tag":34,"props":665,"children":666},{},[667,668,672,674,679,681,686],{"type":38,"value":650},{"type":33,"tag":58,"props":669,"children":670},{},[671],{"type":38,"value":643},{"type":38,"value":673}," se usa para ",{"type":33,"tag":58,"props":675,"children":676},{},[677],{"type":38,"value":678},"refinamiento",{"type":38,"value":680}," o ",{"type":33,"tag":58,"props":682,"children":683},{},[684],{"type":38,"value":685},"validación",{"type":38,"value":687},". El Agente A produce un borrador, el Agente B verifica hechos, el Agente C ajusta el tono. Cada agente toma la salida del anterior. La ventaja: cada etapa mejora la anterior, la estructura de razonamiento lineal es fácil de depurar. La desventaja: latencia — cada agente debe esperar en la secuencia. El tiempo total es N × latencia promedio del agente.",{"type":33,"tag":34,"props":689,"children":690},{},[691,693,705],{"type":38,"value":692},"En Roibase, en operaciones de marketing usamos un modelo híbrido: en procesos de ",{"type":33,"tag":58,"props":694,"children":695},{},[696],{"type":33,"tag":697,"props":698,"children":702},"a",{"href":699,"rel":700},"https:\u002F\u002Fwww.roibase.com.tr\u002Fes\u002Fgeo",[701],"nofollow",[703],{"type":38,"value":704},"Optimización de Contenido Generado",{"type":38,"value":706},", agentes en paralelo extraen citaciones de diferentes motores de búsqueda (ChatGPT, Perplexity, Gemini), y una cadena de agentes en serie coincide estas citaciones con patrones de mención de marca. La parte paralela acelera la recopilación de datos, la parte serie proporciona profundidad analítica.",{"type":33,"tag":199,"props":708,"children":710},{"id":709},"comparación-de-topologías",[711],{"type":38,"value":712},"Comparación de Topologías",{"type":33,"tag":714,"props":715,"children":716},"table",{},[717,751],{"type":33,"tag":718,"props":719,"children":720},"thead",{},[721],{"type":33,"tag":722,"props":723,"children":724},"tr",{},[725,731,736,741,746],{"type":33,"tag":726,"props":727,"children":728},"th",{},[729],{"type":38,"value":730},"Arquitectura",{"type":33,"tag":726,"props":732,"children":733},{},[734],{"type":38,"value":735},"Latencia",{"type":33,"tag":726,"props":737,"children":738},{},[739],{"type":38,"value":740},"Especialización",{"type":33,"tag":726,"props":742,"children":743},{},[744],{"type":38,"value":745},"Debugging",{"type":33,"tag":726,"props":747,"children":748},{},[749],{"type":38,"value":750},"Caso de Uso",{"type":33,"tag":752,"props":753,"children":754},"tbody",{},[755,784,812],{"type":33,"tag":722,"props":756,"children":757},{},[758,764,769,774,779],{"type":33,"tag":759,"props":760,"children":761},"td",{},[762],{"type":38,"value":763},"Paralela",{"type":33,"tag":759,"props":765,"children":766},{},[767],{"type":38,"value":768},"Baja (max de agente)",{"type":33,"tag":759,"props":770,"children":771},{},[772],{"type":38,"value":773},"Alta",{"type":33,"tag":759,"props":775,"children":776},{},[777],{"type":38,"value":778},"Lógica de fusión compleja",{"type":33,"tag":759,"props":780,"children":781},{},[782],{"type":38,"value":783},"Recopilación de datos, análisis multi-fuente",{"type":33,"tag":722,"props":785,"children":786},{},[787,792,797,802,807],{"type":33,"tag":759,"props":788,"children":789},{},[790],{"type":38,"value":791},"Serie",{"type":33,"tag":759,"props":793,"children":794},{},[795],{"type":38,"value":796},"Alta (suma de agentes)",{"type":33,"tag":759,"props":798,"children":799},{},[800],{"type":38,"value":801},"Baja",{"type":33,"tag":759,"props":803,"children":804},{},[805],{"type":38,"value":806},"Traza lineal",{"type":33,"tag":759,"props":808,"children":809},{},[810],{"type":38,"value":811},"Refinamiento, validación, razonamiento multi-paso",{"type":33,"tag":722,"props":813,"children":814},{},[815,820,825,829,834],{"type":33,"tag":759,"props":816,"children":817},{},[818],{"type":38,"value":819},"Híbrida",{"type":33,"tag":759,"props":821,"children":822},{},[823],{"type":38,"value":824},"Media",{"type":33,"tag":759,"props":826,"children":827},{},[828],{"type":38,"value":773},{"type":33,"tag":759,"props":830,"children":831},{},[832],{"type":38,"value":833},"Compleja",{"type":33,"tag":759,"props":835,"children":836},{},[837],{"type":38,"value":838},"Pipelines de producción",{"type":33,"tag":41,"props":840,"children":842},{"id":841},"estado-de-orquestación-y-reproducibilidad",[843],{"type":38,"value":844},"Estado de Orquestación y Reproducibilidad",{"type":33,"tag":34,"props":846,"children":847},{},[848,850,855],{"type":38,"value":849},"Cuando construyes un sistema multi-agente, la decisión más crítica es: ",{"type":33,"tag":58,"props":851,"children":852},{},[853],{"type":38,"value":854},"¿dónde mantendrás el estado?",{"type":38,"value":856}," Hay tres opciones.",{"type":33,"tag":34,"props":858,"children":859},{},[860,865],{"type":33,"tag":58,"props":861,"children":862},{},[863],{"type":38,"value":864},"Orquestación sin estado (Stateless):",{"type":38,"value":866}," Cada agente es independiente; el orquestador mantiene salidas intermedias en memoria. Ventaja: fácil de reproducir, escalado horizontal posible. Desventaja: presión de memoria — en cadenas largas mantienes GBs de historial de conversación.",{"type":33,"tag":34,"props":868,"children":869},{},[870,875],{"type":33,"tag":58,"props":871,"children":872},{},[873],{"type":38,"value":874},"Orquestación con estado (Stateful):",{"type":38,"value":876}," Almacenas el estado intermedio en un store externo (Redis, PostgreSQL). Ventaja: bajo uso de memoria, recuperación ante fallos posible. Desventaja: overhead de I\u002FO, se requieren garantías de consistencia.",{"type":33,"tag":34,"props":878,"children":879},{},[880,885],{"type":33,"tag":58,"props":881,"children":882},{},[883],{"type":38,"value":884},"Híbrida (Checkpointing):",{"type":38,"value":886}," Persistes el estado en milestones específicos. Por ejemplo, cada 5 llamadas de agentes haces un checkpoint. Si hay un fallo, reanudas desde el último checkpoint. Ventaja: equilibrio entre rendimiento y confiabilidad. Desventaja: implementación compleja.",{"type":33,"tag":34,"props":888,"children":889},{},[890],{"type":38,"value":891},"En producción, un patrón común es escribir el estado de orquestación a un stream de logs. Cada llamada de agente se registra como log estructurado en BigQuery; para reproducir, usas event sourcing. Así puedes analizar retrospectivamente la cadena de atribución — qué salida de agente afectó qué métrica downstream.",{"type":33,"tag":41,"props":893,"children":895},{"id":894},"eval-y-observabilidad-depuración-de-orquestación",[896],{"type":38,"value":897},"Eval y Observabilidad: Depuración de Orquestación",{"type":33,"tag":34,"props":899,"children":900},{},[901,903,908],{"type":38,"value":902},"En un sistema multi-agente, el debugging es difícil porque hay muchos puntos de fallo. ¿Eligió el Agente A la herramienta incorrecta? ¿Parseó mal el Agente B la entrada? ¿La lógica de fusión del orquestador es defectuosa? Se requiere una ",{"type":33,"tag":58,"props":904,"children":905},{},[906],{"type":38,"value":907},"stack de observabilidad",{"type":38,"value":106},{"type":33,"tag":34,"props":910,"children":911},{},[912],{"type":38,"value":913},"Las métricas que necesitas:",{"type":33,"tag":915,"props":916,"children":917},"ul",{},[918,929,939,949],{"type":33,"tag":919,"props":920,"children":921},"li",{},[922,927],{"type":33,"tag":58,"props":923,"children":924},{},[925],{"type":38,"value":926},"Latencia a nivel de agente",{"type":38,"value":928}," (p50, p95, p99) — ¿qué agente es el cuello de botella?",{"type":33,"tag":919,"props":930,"children":931},{},[932,937],{"type":33,"tag":58,"props":933,"children":934},{},[935],{"type":38,"value":936},"Tasa de éxito de herramientas",{"type":38,"value":938}," — ¿qué llamada a API falla frecuentemente?",{"type":33,"tag":919,"props":940,"children":941},{},[942,947],{"type":33,"tag":58,"props":943,"children":944},{},[945],{"type":38,"value":946},"Uso de tokens por agente",{"type":38,"value":948}," — atribución de costos",{"type":33,"tag":919,"props":950,"children":951},{},[952,957],{"type":33,"tag":58,"props":953,"children":954},{},[955],{"type":38,"value":956},"Puntuación de evaluación",{"type":38,"value":958}," — usa LLM-as-judge para calificar cada salida de agente de 0-1",{"type":33,"tag":34,"props":960,"children":961},{},[962,964,969],{"type":38,"value":963},"Para la evaluación, usamos un patrón: ",{"type":33,"tag":58,"props":965,"children":966},{},[967],{"type":38,"value":968},"puntuación sin referencia",{"type":38,"value":970},". Un LLM \"supervisor\" (ej. GPT-4) evalúa cada salida de agente con puntuaciones de \"finalización de tarea\" y \"alucinación\". Estas puntuaciones se almacenan como series de tiempo; se detectan regresiones. Por ejemplo, si la puntuación de alucinación del Agente A sube de 0.1 a 0.3, reviertse la versión del prompt.",{"type":33,"tag":34,"props":972,"children":973},{},[974,976,981],{"type":38,"value":975},"Otra técnica que Anthropic recomienda: ",{"type":33,"tag":58,"props":977,"children":978},{},[979],{"type":38,"value":980},"Claude como evaluador",{"type":38,"value":982},". Gracias a su larga ventana de contexto, alimenta toda la cadena de agentes a Claude en un único prompt, pregunta \"¿hay errores de lógica en esta cadena?\" Este meta-eval se usa en procesos de QA previos a producción.",{"type":33,"tag":41,"props":984,"children":986},{"id":985},"trade-offs-de-orquestación-y-matriz-de-decisión",[987],{"type":38,"value":988},"Trade-offs de Orquestación y Matriz de Decisión",{"type":33,"tag":34,"props":990,"children":991},{},[992],{"type":38,"value":993},"Al elegir tu arquitectura multi-agente, consideras estos trade-offs:",{"type":33,"tag":34,"props":995,"children":996},{},[997,1002],{"type":33,"tag":58,"props":998,"children":999},{},[1000],{"type":38,"value":1001},"1. Complejidad vs. control:",{"type":38,"value":1003}," Usar un SDK acelera la implementación pero opacan el debugging. Escribir un orquestador personalizado da control pero aumenta la carga de mantenimiento.",{"type":33,"tag":34,"props":1005,"children":1006},{},[1007,1012],{"type":33,"tag":58,"props":1008,"children":1009},{},[1010],{"type":38,"value":1011},"2. Latencia vs. especialización:",{"type":38,"value":1013}," Los agentes paralelos son rápidos pero tienen overhead de coordinación. Los agentes en serie tienen razonamiento más profundo pero son lentos.",{"type":33,"tag":34,"props":1015,"children":1016},{},[1017,1022],{"type":33,"tag":58,"props":1018,"children":1019},{},[1020],{"type":38,"value":1021},"3. Costo vs. calidad:",{"type":38,"value":1023}," Cada llamada de agente gasta tokens. Aumentar el número de agentes puede mejorar la calidad pero el costo crece linealmente. En producción, debes encontrar el \"minimum viable agent count\".",{"type":33,"tag":34,"props":1025,"children":1026},{},[1027,1032],{"type":33,"tag":58,"props":1028,"children":1029},{},[1030],{"type":38,"value":1031},"4. Determinismo vs. adaptabilidad:",{"type":38,"value":1033}," Las secuencias de herramientas codificadas son reproducibles pero no manejan edge cases. Dejar que el LLM elija herramientas es adaptativo pero no determinista.",{"type":33,"tag":34,"props":1035,"children":1036},{},[1037],{"type":38,"value":1038},"La matriz de decisión que usamos en Roibase:",{"type":33,"tag":714,"props":1040,"children":1041},{},[1042,1067],{"type":33,"tag":718,"props":1043,"children":1044},{},[1045],{"type":33,"tag":722,"props":1046,"children":1047},{},[1048,1052,1057,1062],{"type":33,"tag":726,"props":1049,"children":1050},{},[1051],{"type":38,"value":750},{"type":33,"tag":726,"props":1053,"children":1054},{},[1055],{"type":38,"value":1056},"Topología",{"type":33,"tag":726,"props":1058,"children":1059},{},[1060],{"type":38,"value":1061},"SDK",{"type":33,"tag":726,"props":1063,"children":1064},{},[1065],{"type":38,"value":1066},"Gestión de Estado",{"type":33,"tag":752,"props":1068,"children":1069},{},[1070,1092,1114,1136],{"type":33,"tag":722,"props":1071,"children":1072},{},[1073,1078,1082,1087],{"type":33,"tag":759,"props":1074,"children":1075},{},[1076],{"type":38,"value":1077},"Recopilación de datos",{"type":33,"tag":759,"props":1079,"children":1080},{},[1081],{"type":38,"value":763},{"type":33,"tag":759,"props":1083,"children":1084},{},[1085],{"type":38,"value":1086},"LlamaIndex",{"type":33,"tag":759,"props":1088,"children":1089},{},[1090],{"type":38,"value":1091},"Sin estado",{"type":33,"tag":722,"props":1093,"children":1094},{},[1095,1100,1104,1109],{"type":33,"tag":759,"props":1096,"children":1097},{},[1098],{"type":38,"value":1099},"Refinamiento de contenido",{"type":33,"tag":759,"props":1101,"children":1102},{},[1103],{"type":38,"value":791},{"type":33,"tag":759,"props":1105,"children":1106},{},[1107],{"type":38,"value":1108},"Personalizado",{"type":33,"tag":759,"props":1110,"children":1111},{},[1112],{"type":38,"value":1113},"Checkpointing",{"type":33,"tag":722,"props":1115,"children":1116},{},[1117,1122,1126,1131],{"type":33,"tag":759,"props":1118,"children":1119},{},[1120],{"type":38,"value":1121},"Inferencia en tiempo real",{"type":33,"tag":759,"props":1123,"children":1124},{},[1125],{"type":38,"value":819},{"type":33,"tag":759,"props":1127,"children":1128},{},[1129],{"type":38,"value":1130},"SDK de Anthropic",{"type":33,"tag":759,"props":1132,"children":1133},{},[1134],{"type":38,"value":1135},"Cache Redis",{"type":33,"tag":722,"props":1137,"children":1138},{},[1139,1144,1148,1153],{"type":33,"tag":759,"props":1140,"children":1141},{},[1142],{"type":38,"value":1143},"Procesamiento por lotes",{"type":33,"tag":759,"props":1145,"children":1146},{},[1147],{"type":38,"value":763},{"type":33,"tag":759,"props":1149,"children":1150},{},[1151],{"type":38,"value":1152},"LangChain",{"type":33,"tag":759,"props":1154,"children":1155},{},[1156],{"type":38,"value":1157},"PostgreSQL",{"type":33,"tag":41,"props":1159,"children":1161},{"id":1160},"trasladando-la-orquestación-a-producción",[1162],{"type":38,"value":1163},"Trasladando la Orquestación a Producción",{"type":33,"tag":34,"props":1165,"children":1166},{},[1167],{"type":38,"value":1168},"Cuando llevas un sistema multi-agente a producción, presta atención a tres cosas.",{"type":33,"tag":34,"props":1170,"children":1171},{},[1172,1177],{"type":33,"tag":58,"props":1173,"children":1174},{},[1175],{"type":38,"value":1176},"Rate limiting:",{"type":38,"value":1178}," Los agentes paralelos pueden exceder el límite de rate de la API. En el orquestador, usa patrón token bucket o semáforo. Si la API de Anthropic tiene límite de 50 req\u002Fmin, acelera el número de agentes paralelos en consecuencia.",{"type":33,"tag":34,"props":1180,"children":1181},{},[1182,1187],{"type":33,"tag":58,"props":1183,"children":1184},{},[1185],{"type":38,"value":1186},"Estrategia de fallback:",{"type":38,"value":1188}," ¿Qué haces si un agente falla? La lógica de reintentos es simple pero añade exponential backoff + jitter. Si un agente no es crítico (ej. generador opcional de meta tags SEO), usa circuit breaker y pasa a modo fail-safe.",{"type":33,"tag":34,"props":1190,"children":1191},{},[1192,1197],{"type":33,"tag":58,"props":1193,"children":1194},{},[1195],{"type":38,"value":1196},"Monitoreo de costos:",{"type":38,"value":1198}," Registra el costo de tokens de cada llamada de agente. En producción, rastrea métrica de $\u002Frequest por agente. Si un agente genera un spike de costos, optimiza el prompt o desactívalo.",{"type":33,"tag":34,"props":1200,"children":1201},{},[1202,1204,1209,1211,1221],{"type":38,"value":1203},"La potencia de la orquestación multi-agente no es \"hacer más que un único LLM\", sino ",{"type":33,"tag":58,"props":1205,"children":1206},{},[1207],{"type":38,"value":1208},"hacer que los procesos empresariales sean modulares, observables y escalables",{"type":38,"value":1210},". Para mantener estas arquitecturas en producción, debes pensar conjuntamente en topología de herramientas, gestión de estado y pipeline de evaluación. Al construir estos sistemas, la capacidad de ",{"type":33,"tag":58,"props":1212,"children":1213},{},[1214],{"type":33,"tag":697,"props":1215,"children":1218},{"href":1216,"rel":1217},"https:\u002F\u002Fwww.roibase.com.tr\u002Fes\u002Fverianalizi",[701],[1219],{"type":38,"value":1220},"Análisis de Datos e Ingeniería de Insights",{"type":38,"value":1222}," es crítica para vincular las métricas de orquestación con las métricas empresariales — necesitas medir retrospectivamente qué configuración de agente incrementó qué KPI downstream.",{"type":33,"tag":1224,"props":1225,"children":1226},"style",{},[1227],{"type":38,"value":1228},"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":17,"searchDepth":262,"depth":262,"links":1230},[1231,1232,1235,1238,1239,1240,1241],{"id":43,"depth":229,"text":46},{"id":91,"depth":229,"text":94,"children":1233},[1234],{"id":201,"depth":262,"text":204},{"id":623,"depth":229,"text":626,"children":1236},[1237],{"id":709,"depth":262,"text":712},{"id":841,"depth":229,"text":844},{"id":894,"depth":229,"text":897},{"id":985,"depth":229,"text":988},{"id":1160,"depth":229,"text":1163},"markdown","content:es:ai:orquestacion-multi-agente.md","content","es\u002Fai\u002Forquestacion-multi-agente.md","es\u002Fai\u002Forquestacion-multi-agente","md",1785247482880]