[{"data":1,"prerenderedAt":1734},["ShallowReactive",2],{"article-alternates":3,"article-\u002Fes\u002Fai\u002Forquestacion-multi-agente-llm":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":8,"_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":1728,"_id":1729,"_source":1730,"_file":1731,"_stem":1732,"_extension":1733},"ai",false,"","Orquestación Multi-Agente: De Una Llamada LLM a Sistemas","De SDK de agentes a topologías paralelas\u002Fseriales: cómo construir sistemas multi-agente de nivel producción con LangGraph, CrewAI y AutoGen","2026-07-20",[21,22,23,24,25],"multi-agente","orquestacion-llm","langgraph","crewai","topologia-agentes",8,"Roibase",{"type":29,"children":30,"toc":1718},"root",[31,39,46,51,62,80,97,113,119,129,322,346,356,561,576,586,752,767,773,937,954,960,965,990,1008,1124,1157,1182,1188,1193,1201,1268,1429,1435,1440,1450,1460,1477,1483,1488,1496,1536,1642,1648,1707,1712],{"type":32,"tag":33,"props":34,"children":35},"element","p",{},[36],{"type":37,"value":38},"text","En 2023, los LLM \"podían invocar herramientas\". En 2024, surgió el concepto de \"agente\". En 2025, todos construyeron su propio agente. En 2026, la pregunta cambió: ¿un agente no es suficiente, pero debo ejecutar 5 agentes en paralelo o en serie? ¿Cuál debe usar cada herramienta? ¿Dónde debería vivir la lógica de coordinación? La orquestación multi-agente es el primer problema de ingeniería serio en la transición de aplicaciones LLM desde \"Hello World\" a sistemas en producción.",{"type":32,"tag":40,"props":41,"children":43},"h2",{"id":42},"de-un-agente-a-topología-por-qué-la-orquestación",[44],{"type":37,"value":45},"De un Agente a Topología: ¿Por Qué la Orquestación?",{"type":32,"tag":33,"props":47,"children":48},{},[49],{"type":37,"value":50},"Un agente único —por ejemplo, Claude Sonnet 3.5 + 5 herramientas— resuelve muchos escenarios de uso. Pero cuando llegan estas situaciones, te atasca:",{"type":32,"tag":33,"props":52,"children":53},{},[54,60],{"type":32,"tag":55,"props":56,"children":57},"strong",{},[58],{"type":37,"value":59},"Necesidad de ejecución paralela:",{"type":37,"value":61}," Estás analizando una campaña de marketing. Al mismo tiempo, extrae datos de Google Ads API, calcula tendencias históricas en BigQuery, obtiene datos de conversión de Shopify. Un agente único hace estas tareas secuencialmente —12 segundos totales. Tres agentes en paralelo terminan en 4.5 segundos. Si la latencia es crítica, la orquestación es obligatoria.",{"type":32,"tag":33,"props":63,"children":64},{},[65,70,72,78],{"type":32,"tag":55,"props":66,"children":67},{},[68],{"type":37,"value":69},"Necesidad de especialización:",{"type":37,"value":71}," Un agente redacta SQL, otro limpia datos, otro genera código de visualización. A cada agente le asignas un ",{"type":32,"tag":73,"props":74,"children":75},"em",{},[76],{"type":37,"value":77},"system prompt",{"type":37,"value":79}," diferente, un modelo diferente (Sonnet para SQL, Opus para código), contexto de recuperación diferente. Si le dices a un agente único \"domina tanto SQL como diseño visual\", la ventana de contexto se hincha y el rendimiento cae.",{"type":32,"tag":33,"props":81,"children":82},{},[83,88,90,95],{"type":32,"tag":55,"props":84,"children":85},{},[86],{"type":37,"value":87},"Capas de seguridad:",{"type":37,"value":89}," Un agente limpia el ",{"type":32,"tag":73,"props":91,"children":92},{},[93],{"type":37,"value":94},"prompt",{"type":37,"value":96}," entrante, otro ejecuta la lógica empresarial, otro valida la salida. Esta estructura de \"línea de montaje\" es crítica en producción: usar herramientas con mitigación de riesgo por parámetros incorrectos requiere orquestación obligatoria.",{"type":32,"tag":33,"props":98,"children":99},{},[100,102,111],{"type":37,"value":101},"En los proyectos de ",{"type":32,"tag":103,"props":104,"children":108},"a",{"href":105,"rel":106},"https:\u002F\u002Fwww.roibase.com.tr\u002Fes\u002Fverianalizi",[107],"nofollow",[109],{"type":37,"value":110},"Análisis de Datos e Ingeniería de Insights",{"type":37,"value":112}," de Roibase, con una estructura de agentes paralelos redujimos tiempos de consulta BigQuery en un 60% —porque tres fuentes de datos diferentes se pueden consultar simultáneamente.",{"type":32,"tag":40,"props":114,"children":116},{"id":115},"sdk-de-agentes-langgraph-crewai-autogen",[117],{"type":37,"value":118},"SDK de Agentes: LangGraph, CrewAI, AutoGen",{"type":32,"tag":33,"props":120,"children":121},{},[122,127],{"type":32,"tag":55,"props":123,"children":124},{},[125],{"type":37,"value":126},"LangGraph (ecosistema LangChain):",{"type":37,"value":128}," Defines agentes como nodos en una estructura de grafo dirigido. Cada nodo mantiene un \"estado\", los bordes determinan la lógica de transición. El enrutamiento condicional es posible: si el agente A dice \"falta datos\", ve al agente B; si está completo, ve a C.",{"type":32,"tag":130,"props":131,"children":135},"pre",{"className":132,"code":133,"language":134,"meta":16,"style":16},"language-python shiki shiki-themes github-dark","from langgraph.graph import StateGraph\n\nworkflow = StateGraph(AgentState)\nworkflow.add_node(\"researcher\", research_agent)\nworkflow.add_node(\"writer\", writer_agent)\nworkflow.add_conditional_edges(\n    \"researcher\",\n    lambda state: \"complete\" if state.data_ready else \"retry\"\n)\nworkflow.set_entry_point(\"researcher\")\n","python",[136],{"type":32,"tag":137,"props":138,"children":139},"code",{"__ignoreMap":16},[140,168,178,197,217,235,244,258,296,305],{"type":32,"tag":141,"props":142,"children":145},"span",{"class":143,"line":144},"line",1,[146,152,158,163],{"type":32,"tag":141,"props":147,"children":149},{"style":148},"--shiki-default:#F97583",[150],{"type":37,"value":151},"from",{"type":32,"tag":141,"props":153,"children":155},{"style":154},"--shiki-default:#E1E4E8",[156],{"type":37,"value":157}," langgraph.graph ",{"type":32,"tag":141,"props":159,"children":160},{"style":148},[161],{"type":37,"value":162},"import",{"type":32,"tag":141,"props":164,"children":165},{"style":154},[166],{"type":37,"value":167}," StateGraph\n",{"type":32,"tag":141,"props":169,"children":171},{"class":143,"line":170},2,[172],{"type":32,"tag":141,"props":173,"children":175},{"emptyLinePlaceholder":174},true,[176],{"type":37,"value":177},"\n",{"type":32,"tag":141,"props":179,"children":181},{"class":143,"line":180},3,[182,187,192],{"type":32,"tag":141,"props":183,"children":184},{"style":154},[185],{"type":37,"value":186},"workflow ",{"type":32,"tag":141,"props":188,"children":189},{"style":148},[190],{"type":37,"value":191},"=",{"type":32,"tag":141,"props":193,"children":194},{"style":154},[195],{"type":37,"value":196}," StateGraph(AgentState)\n",{"type":32,"tag":141,"props":198,"children":200},{"class":143,"line":199},4,[201,206,212],{"type":32,"tag":141,"props":202,"children":203},{"style":154},[204],{"type":37,"value":205},"workflow.add_node(",{"type":32,"tag":141,"props":207,"children":209},{"style":208},"--shiki-default:#9ECBFF",[210],{"type":37,"value":211},"\"researcher\"",{"type":32,"tag":141,"props":213,"children":214},{"style":154},[215],{"type":37,"value":216},", research_agent)\n",{"type":32,"tag":141,"props":218,"children":220},{"class":143,"line":219},5,[221,225,230],{"type":32,"tag":141,"props":222,"children":223},{"style":154},[224],{"type":37,"value":205},{"type":32,"tag":141,"props":226,"children":227},{"style":208},[228],{"type":37,"value":229},"\"writer\"",{"type":32,"tag":141,"props":231,"children":232},{"style":154},[233],{"type":37,"value":234},", writer_agent)\n",{"type":32,"tag":141,"props":236,"children":238},{"class":143,"line":237},6,[239],{"type":32,"tag":141,"props":240,"children":241},{"style":154},[242],{"type":37,"value":243},"workflow.add_conditional_edges(\n",{"type":32,"tag":141,"props":245,"children":247},{"class":143,"line":246},7,[248,253],{"type":32,"tag":141,"props":249,"children":250},{"style":208},[251],{"type":37,"value":252},"    \"researcher\"",{"type":32,"tag":141,"props":254,"children":255},{"style":154},[256],{"type":37,"value":257},",\n",{"type":32,"tag":141,"props":259,"children":260},{"class":143,"line":26},[261,266,271,276,281,286,291],{"type":32,"tag":141,"props":262,"children":263},{"style":148},[264],{"type":37,"value":265},"    lambda",{"type":32,"tag":141,"props":267,"children":268},{"style":154},[269],{"type":37,"value":270}," state: ",{"type":32,"tag":141,"props":272,"children":273},{"style":208},[274],{"type":37,"value":275},"\"complete\"",{"type":32,"tag":141,"props":277,"children":278},{"style":148},[279],{"type":37,"value":280}," if",{"type":32,"tag":141,"props":282,"children":283},{"style":154},[284],{"type":37,"value":285}," state.data_ready ",{"type":32,"tag":141,"props":287,"children":288},{"style":148},[289],{"type":37,"value":290},"else",{"type":32,"tag":141,"props":292,"children":293},{"style":208},[294],{"type":37,"value":295}," \"retry\"\n",{"type":32,"tag":141,"props":297,"children":299},{"class":143,"line":298},9,[300],{"type":32,"tag":141,"props":301,"children":302},{"style":154},[303],{"type":37,"value":304},")\n",{"type":32,"tag":141,"props":306,"children":308},{"class":143,"line":307},10,[309,314,318],{"type":32,"tag":141,"props":310,"children":311},{"style":154},[312],{"type":37,"value":313},"workflow.set_entry_point(",{"type":32,"tag":141,"props":315,"children":316},{"style":208},[317],{"type":37,"value":211},{"type":32,"tag":141,"props":319,"children":320},{"style":154},[321],{"type":37,"value":304},{"type":32,"tag":33,"props":323,"children":324},{},[325,330,332,337,339,344],{"type":32,"tag":55,"props":326,"children":327},{},[328],{"type":37,"value":329},"Ventajas:",{"type":37,"value":331}," La gestión de estado es sólida. El rastreo distribuido es fácil —cada nodo tiene logs separados. ",{"type":32,"tag":55,"props":333,"children":334},{},[335],{"type":37,"value":336},"Desventajas:",{"type":37,"value":338}," La sintaxis es compleja, las cadenas de ",{"type":32,"tag":73,"props":340,"children":341},{},[342],{"type":37,"value":343},"callbacks",{"type":37,"value":345}," dificultan la depuración.",{"type":32,"tag":33,"props":347,"children":348},{},[349,354],{"type":32,"tag":55,"props":350,"children":351},{},[352],{"type":37,"value":353},"CrewAI:",{"type":37,"value":355}," Orquestación basada en roles. Asignas a cada agente un \"rol\" (investigador, analista, redactor), le das una lista de \"tareas\". El framework ejecuta automáticamente de forma secuencial o se bifurca en paralelo.",{"type":32,"tag":130,"props":357,"children":359},{"className":132,"code":358,"language":134,"meta":16,"style":16},"from crewai import Crew, Agent, Task\n\nresearcher = Agent(role='Data Researcher', tools=[bigquery_tool])\nanalyst = Agent(role='Analyst', tools=[pandas_tool])\n\ncrew = Crew(agents=[researcher, analyst], process=\"sequential\")\nresult = crew.kickoff()\n",[360],{"type":32,"tag":137,"props":361,"children":362},{"__ignoreMap":16},[363,384,391,442,488,495,544],{"type":32,"tag":141,"props":364,"children":365},{"class":143,"line":144},[366,370,375,379],{"type":32,"tag":141,"props":367,"children":368},{"style":148},[369],{"type":37,"value":151},{"type":32,"tag":141,"props":371,"children":372},{"style":154},[373],{"type":37,"value":374}," crewai ",{"type":32,"tag":141,"props":376,"children":377},{"style":148},[378],{"type":37,"value":162},{"type":32,"tag":141,"props":380,"children":381},{"style":154},[382],{"type":37,"value":383}," Crew, Agent, Task\n",{"type":32,"tag":141,"props":385,"children":386},{"class":143,"line":170},[387],{"type":32,"tag":141,"props":388,"children":389},{"emptyLinePlaceholder":174},[390],{"type":37,"value":177},{"type":32,"tag":141,"props":392,"children":393},{"class":143,"line":180},[394,399,403,408,414,418,423,428,433,437],{"type":32,"tag":141,"props":395,"children":396},{"style":154},[397],{"type":37,"value":398},"researcher ",{"type":32,"tag":141,"props":400,"children":401},{"style":148},[402],{"type":37,"value":191},{"type":32,"tag":141,"props":404,"children":405},{"style":154},[406],{"type":37,"value":407}," Agent(",{"type":32,"tag":141,"props":409,"children":411},{"style":410},"--shiki-default:#FFAB70",[412],{"type":37,"value":413},"role",{"type":32,"tag":141,"props":415,"children":416},{"style":148},[417],{"type":37,"value":191},{"type":32,"tag":141,"props":419,"children":420},{"style":208},[421],{"type":37,"value":422},"'Data Researcher'",{"type":32,"tag":141,"props":424,"children":425},{"style":154},[426],{"type":37,"value":427},", ",{"type":32,"tag":141,"props":429,"children":430},{"style":410},[431],{"type":37,"value":432},"tools",{"type":32,"tag":141,"props":434,"children":435},{"style":148},[436],{"type":37,"value":191},{"type":32,"tag":141,"props":438,"children":439},{"style":154},[440],{"type":37,"value":441},"[bigquery_tool])\n",{"type":32,"tag":141,"props":443,"children":444},{"class":143,"line":199},[445,450,454,458,462,466,471,475,479,483],{"type":32,"tag":141,"props":446,"children":447},{"style":154},[448],{"type":37,"value":449},"analyst ",{"type":32,"tag":141,"props":451,"children":452},{"style":148},[453],{"type":37,"value":191},{"type":32,"tag":141,"props":455,"children":456},{"style":154},[457],{"type":37,"value":407},{"type":32,"tag":141,"props":459,"children":460},{"style":410},[461],{"type":37,"value":413},{"type":32,"tag":141,"props":463,"children":464},{"style":148},[465],{"type":37,"value":191},{"type":32,"tag":141,"props":467,"children":468},{"style":208},[469],{"type":37,"value":470},"'Analyst'",{"type":32,"tag":141,"props":472,"children":473},{"style":154},[474],{"type":37,"value":427},{"type":32,"tag":141,"props":476,"children":477},{"style":410},[478],{"type":37,"value":432},{"type":32,"tag":141,"props":480,"children":481},{"style":148},[482],{"type":37,"value":191},{"type":32,"tag":141,"props":484,"children":485},{"style":154},[486],{"type":37,"value":487},"[pandas_tool])\n",{"type":32,"tag":141,"props":489,"children":490},{"class":143,"line":219},[491],{"type":32,"tag":141,"props":492,"children":493},{"emptyLinePlaceholder":174},[494],{"type":37,"value":177},{"type":32,"tag":141,"props":496,"children":497},{"class":143,"line":237},[498,503,507,512,517,521,526,531,535,540],{"type":32,"tag":141,"props":499,"children":500},{"style":154},[501],{"type":37,"value":502},"crew ",{"type":32,"tag":141,"props":504,"children":505},{"style":148},[506],{"type":37,"value":191},{"type":32,"tag":141,"props":508,"children":509},{"style":154},[510],{"type":37,"value":511}," Crew(",{"type":32,"tag":141,"props":513,"children":514},{"style":410},[515],{"type":37,"value":516},"agents",{"type":32,"tag":141,"props":518,"children":519},{"style":148},[520],{"type":37,"value":191},{"type":32,"tag":141,"props":522,"children":523},{"style":154},[524],{"type":37,"value":525},"[researcher, analyst], ",{"type":32,"tag":141,"props":527,"children":528},{"style":410},[529],{"type":37,"value":530},"process",{"type":32,"tag":141,"props":532,"children":533},{"style":148},[534],{"type":37,"value":191},{"type":32,"tag":141,"props":536,"children":537},{"style":208},[538],{"type":37,"value":539},"\"sequential\"",{"type":32,"tag":141,"props":541,"children":542},{"style":154},[543],{"type":37,"value":304},{"type":32,"tag":141,"props":545,"children":546},{"class":143,"line":246},[547,552,556],{"type":32,"tag":141,"props":548,"children":549},{"style":154},[550],{"type":37,"value":551},"result ",{"type":32,"tag":141,"props":553,"children":554},{"style":148},[555],{"type":37,"value":191},{"type":32,"tag":141,"props":557,"children":558},{"style":154},[559],{"type":37,"value":560}," crew.kickoff()\n",{"type":32,"tag":33,"props":562,"children":563},{},[564,568,570,574],{"type":32,"tag":55,"props":565,"children":566},{},[567],{"type":37,"value":329},{"type":37,"value":569}," Boilerplate mínimo, prototipado rápido. ",{"type":32,"tag":55,"props":571,"children":572},{},[573],{"type":37,"value":336},{"type":37,"value":575}," Flexibilidad baja —necesitas cambiar código para enrutamiento personalizado.",{"type":32,"tag":33,"props":577,"children":578},{},[579,584],{"type":32,"tag":55,"props":580,"children":581},{},[582],{"type":37,"value":583},"AutoGen (Microsoft):",{"type":37,"value":585}," Multi-agente conversacional. Los agentes se \"comunican\" entre sí, un agente envía un mensaje a otro, ese responde. En este patrón, la orquestación es implícita —el flujo de mensajes define la topología.",{"type":32,"tag":130,"props":587,"children":589},{"className":132,"code":588,"language":134,"meta":16,"style":16},"from autogen import AssistantAgent, UserProxyAgent\n\nassistant = AssistantAgent(\"assistant\", llm_config={...})\nuser_proxy = UserProxyAgent(\"user\", code_execution_config={...})\n\nuser_proxy.initiate_chat(assistant, message=\"Analyze Q1 data\")\n",[590],{"type":32,"tag":137,"props":591,"children":592},{"__ignoreMap":16},[593,614,621,672,719,726],{"type":32,"tag":141,"props":594,"children":595},{"class":143,"line":144},[596,600,605,609],{"type":32,"tag":141,"props":597,"children":598},{"style":148},[599],{"type":37,"value":151},{"type":32,"tag":141,"props":601,"children":602},{"style":154},[603],{"type":37,"value":604}," autogen ",{"type":32,"tag":141,"props":606,"children":607},{"style":148},[608],{"type":37,"value":162},{"type":32,"tag":141,"props":610,"children":611},{"style":154},[612],{"type":37,"value":613}," AssistantAgent, UserProxyAgent\n",{"type":32,"tag":141,"props":615,"children":616},{"class":143,"line":170},[617],{"type":32,"tag":141,"props":618,"children":619},{"emptyLinePlaceholder":174},[620],{"type":37,"value":177},{"type":32,"tag":141,"props":622,"children":623},{"class":143,"line":180},[624,629,633,638,643,647,652,656,661,667],{"type":32,"tag":141,"props":625,"children":626},{"style":154},[627],{"type":37,"value":628},"assistant ",{"type":32,"tag":141,"props":630,"children":631},{"style":148},[632],{"type":37,"value":191},{"type":32,"tag":141,"props":634,"children":635},{"style":154},[636],{"type":37,"value":637}," AssistantAgent(",{"type":32,"tag":141,"props":639,"children":640},{"style":208},[641],{"type":37,"value":642},"\"assistant\"",{"type":32,"tag":141,"props":644,"children":645},{"style":154},[646],{"type":37,"value":427},{"type":32,"tag":141,"props":648,"children":649},{"style":410},[650],{"type":37,"value":651},"llm_config",{"type":32,"tag":141,"props":653,"children":654},{"style":148},[655],{"type":37,"value":191},{"type":32,"tag":141,"props":657,"children":658},{"style":154},[659],{"type":37,"value":660},"{",{"type":32,"tag":141,"props":662,"children":664},{"style":663},"--shiki-default:#79B8FF",[665],{"type":37,"value":666},"...",{"type":32,"tag":141,"props":668,"children":669},{"style":154},[670],{"type":37,"value":671},"})\n",{"type":32,"tag":141,"props":673,"children":674},{"class":143,"line":199},[675,680,684,689,694,698,703,707,711,715],{"type":32,"tag":141,"props":676,"children":677},{"style":154},[678],{"type":37,"value":679},"user_proxy ",{"type":32,"tag":141,"props":681,"children":682},{"style":148},[683],{"type":37,"value":191},{"type":32,"tag":141,"props":685,"children":686},{"style":154},[687],{"type":37,"value":688}," UserProxyAgent(",{"type":32,"tag":141,"props":690,"children":691},{"style":208},[692],{"type":37,"value":693},"\"user\"",{"type":32,"tag":141,"props":695,"children":696},{"style":154},[697],{"type":37,"value":427},{"type":32,"tag":141,"props":699,"children":700},{"style":410},[701],{"type":37,"value":702},"code_execution_config",{"type":32,"tag":141,"props":704,"children":705},{"style":148},[706],{"type":37,"value":191},{"type":32,"tag":141,"props":708,"children":709},{"style":154},[710],{"type":37,"value":660},{"type":32,"tag":141,"props":712,"children":713},{"style":663},[714],{"type":37,"value":666},{"type":32,"tag":141,"props":716,"children":717},{"style":154},[718],{"type":37,"value":671},{"type":32,"tag":141,"props":720,"children":721},{"class":143,"line":219},[722],{"type":32,"tag":141,"props":723,"children":724},{"emptyLinePlaceholder":174},[725],{"type":37,"value":177},{"type":32,"tag":141,"props":727,"children":728},{"class":143,"line":237},[729,734,739,743,748],{"type":32,"tag":141,"props":730,"children":731},{"style":154},[732],{"type":37,"value":733},"user_proxy.initiate_chat(assistant, ",{"type":32,"tag":141,"props":735,"children":736},{"style":410},[737],{"type":37,"value":738},"message",{"type":32,"tag":141,"props":740,"children":741},{"style":148},[742],{"type":37,"value":191},{"type":32,"tag":141,"props":744,"children":745},{"style":208},[746],{"type":37,"value":747},"\"Analyze Q1 data\"",{"type":32,"tag":141,"props":749,"children":750},{"style":154},[751],{"type":37,"value":304},{"type":32,"tag":33,"props":753,"children":754},{},[755,759,761,765],{"type":32,"tag":55,"props":756,"children":757},{},[758],{"type":37,"value":329},{"type":37,"value":760}," Natural en escenarios human-in-the-loop. ",{"type":32,"tag":55,"props":762,"children":763},{},[764],{"type":37,"value":336},{"type":37,"value":766}," Los flujos no son determinísticos —es incierto cuándo el agente A responderá al agente B.",{"type":32,"tag":40,"props":768,"children":770},{"id":769},"topología-paralela-vs-serial-matriz-de-tradeoff",[771],{"type":37,"value":772},"Topología Paralela vs Serial: Matriz de Tradeoff",{"type":32,"tag":774,"props":775,"children":776},"table",{},[777,811],{"type":32,"tag":778,"props":779,"children":780},"thead",{},[781],{"type":32,"tag":782,"props":783,"children":784},"tr",{},[785,791,796,801,806],{"type":32,"tag":786,"props":787,"children":788},"th",{},[789],{"type":37,"value":790},"Arquitectura",{"type":32,"tag":786,"props":792,"children":793},{},[794],{"type":37,"value":795},"Latencia",{"type":32,"tag":786,"props":797,"children":798},{},[799],{"type":37,"value":800},"Costo",{"type":32,"tag":786,"props":802,"children":803},{},[804],{"type":37,"value":805},"Complejidad",{"type":32,"tag":786,"props":807,"children":808},{},[809],{"type":37,"value":810},"Caso de Uso",{"type":32,"tag":812,"props":813,"children":814},"tbody",{},[815,847,878,908],{"type":32,"tag":782,"props":816,"children":817},{},[818,827,832,837,842],{"type":32,"tag":819,"props":820,"children":821},"td",{},[822],{"type":32,"tag":55,"props":823,"children":824},{},[825],{"type":37,"value":826},"Serial (Secuencial)",{"type":32,"tag":819,"props":828,"children":829},{},[830],{"type":37,"value":831},"Alta (N×t)",{"type":32,"tag":819,"props":833,"children":834},{},[835],{"type":37,"value":836},"Bajo (1 LLM por ejecución)",{"type":32,"tag":819,"props":838,"children":839},{},[840],{"type":37,"value":841},"Bajo",{"type":32,"tag":819,"props":843,"children":844},{},[845],{"type":37,"value":846},"Pipelines determinísticos (datos → análisis → informe)",{"type":32,"tag":782,"props":848,"children":849},{},[850,858,863,868,873],{"type":32,"tag":819,"props":851,"children":852},{},[853],{"type":32,"tag":55,"props":854,"children":855},{},[856],{"type":37,"value":857},"Paralela (Fork-Join)",{"type":32,"tag":819,"props":859,"children":860},{},[861],{"type":37,"value":862},"Baja (max(t₁, t₂, t₃))",{"type":32,"tag":819,"props":864,"children":865},{},[866],{"type":37,"value":867},"Alto (N agentes simultáneamente)",{"type":32,"tag":819,"props":869,"children":870},{},[871],{"type":37,"value":872},"Media",{"type":32,"tag":819,"props":874,"children":875},{},[876],{"type":37,"value":877},"Trabajos independientes (consulta 3 API simultáneamente)",{"type":32,"tag":782,"props":879,"children":880},{},[881,889,894,898,903],{"type":32,"tag":819,"props":882,"children":883},{},[884],{"type":32,"tag":55,"props":885,"children":886},{},[887],{"type":37,"value":888},"Condicional (DAG)",{"type":32,"tag":819,"props":890,"children":891},{},[892],{"type":37,"value":893},"Variable",{"type":32,"tag":819,"props":895,"children":896},{},[897],{"type":37,"value":872},{"type":32,"tag":819,"props":899,"children":900},{},[901],{"type":37,"value":902},"Alta",{"type":32,"tag":819,"props":904,"children":905},{},[906],{"type":37,"value":907},"Flujo dinámico (si faltan datos → X, si completo → Y)",{"type":32,"tag":782,"props":909,"children":910},{},[911,919,924,928,932],{"type":32,"tag":819,"props":912,"children":913},{},[914],{"type":32,"tag":55,"props":915,"children":916},{},[917],{"type":37,"value":918},"Conversacional",{"type":32,"tag":819,"props":920,"children":921},{},[922],{"type":37,"value":923},"Incierta",{"type":32,"tag":819,"props":925,"children":926},{},[927],{"type":37,"value":872},{"type":32,"tag":819,"props":929,"children":930},{},[931],{"type":37,"value":902},{"type":32,"tag":819,"props":933,"children":934},{},[935],{"type":37,"value":936},"Human-in-the-loop o negociación",{"type":32,"tag":33,"props":938,"children":939},{},[940,945,947,952],{"type":32,"tag":55,"props":941,"children":942},{},[943],{"type":37,"value":944},"Decisión en producción:",{"type":37,"value":946}," Si el procesamiento no está en el ",{"type":32,"tag":73,"props":948,"children":949},{},[950],{"type":37,"value":951},"critical path",{"type":37,"value":953}," (por ejemplo, generación de informes fuera de línea), elige topología serial —la depuración es fácil, el costo bajo. Si hay un SLA de latencia (por ejemplo, dashboard en tiempo real), bifurca en paralelo —pero construye la lógica de reintentos desde el inicio; si no, 1 agente con timeout detiene a los 3 restantes.",{"type":32,"tag":40,"props":955,"children":957},{"id":956},"coordinación-de-uso-de-herramientas-evitar-conflictos",[958],{"type":37,"value":959},"Coordinación de Uso de Herramientas: Evitar Conflictos",{"type":32,"tag":33,"props":961,"children":962},{},[963],{"type":37,"value":964},"En sistemas multi-agente, el bug más frecuente: 2 agentes invocan la misma herramienta al mismo tiempo con parámetros diferentes, uno corrompe el estado del otro.",{"type":32,"tag":33,"props":966,"children":967},{},[968,973,975,981,983,988],{"type":32,"tag":55,"props":969,"children":970},{},[971],{"type":37,"value":972},"Ejemplo:",{"type":37,"value":974}," El agente A crea ",{"type":32,"tag":137,"props":976,"children":978},{"className":977},[],[979],{"type":37,"value":980},"temp_table_x",{"type":37,"value":982}," en BigQuery, el agente B simultáneamente intenta leer ",{"type":32,"tag":137,"props":984,"children":986},{"className":985},[],[987],{"type":37,"value":980},{"type":37,"value":989}," —error de datos no encontrados. Esta \"condición de carrera\" se resuelve en la capa de orquestación:",{"type":32,"tag":33,"props":991,"children":992},{},[993,998,1000,1006],{"type":32,"tag":55,"props":994,"children":995},{},[996],{"type":37,"value":997},"1. Bloqueo de recursos:",{"type":37,"value":999}," Cuando el agente A comienza a usar una herramienta, el orquestador bloquea esa herramienta para otros agentes. Con LangGraph se hace con ",{"type":32,"tag":137,"props":1001,"children":1003},{"className":1002},[],[1004],{"type":37,"value":1005},"shared_state",{"type":37,"value":1007},".",{"type":32,"tag":130,"props":1009,"children":1011},{"className":132,"code":1010,"language":134,"meta":16,"style":16},"if not state.lock_acquired(\"bigquery\"):\n    return {\"status\": \"waiting\"}\nstate.acquire_lock(\"bigquery\")\nresult = bigquery_tool.run()\nstate.release_lock(\"bigquery\")\n",[1012],{"type":32,"tag":137,"props":1013,"children":1014},{"__ignoreMap":16},[1015,1043,1076,1092,1108],{"type":32,"tag":141,"props":1016,"children":1017},{"class":143,"line":144},[1018,1023,1028,1033,1038],{"type":32,"tag":141,"props":1019,"children":1020},{"style":148},[1021],{"type":37,"value":1022},"if",{"type":32,"tag":141,"props":1024,"children":1025},{"style":148},[1026],{"type":37,"value":1027}," not",{"type":32,"tag":141,"props":1029,"children":1030},{"style":154},[1031],{"type":37,"value":1032}," state.lock_acquired(",{"type":32,"tag":141,"props":1034,"children":1035},{"style":208},[1036],{"type":37,"value":1037},"\"bigquery\"",{"type":32,"tag":141,"props":1039,"children":1040},{"style":154},[1041],{"type":37,"value":1042},"):\n",{"type":32,"tag":141,"props":1044,"children":1045},{"class":143,"line":170},[1046,1051,1056,1061,1066,1071],{"type":32,"tag":141,"props":1047,"children":1048},{"style":148},[1049],{"type":37,"value":1050},"    return",{"type":32,"tag":141,"props":1052,"children":1053},{"style":154},[1054],{"type":37,"value":1055}," {",{"type":32,"tag":141,"props":1057,"children":1058},{"style":208},[1059],{"type":37,"value":1060},"\"status\"",{"type":32,"tag":141,"props":1062,"children":1063},{"style":154},[1064],{"type":37,"value":1065},": ",{"type":32,"tag":141,"props":1067,"children":1068},{"style":208},[1069],{"type":37,"value":1070},"\"waiting\"",{"type":32,"tag":141,"props":1072,"children":1073},{"style":154},[1074],{"type":37,"value":1075},"}\n",{"type":32,"tag":141,"props":1077,"children":1078},{"class":143,"line":180},[1079,1084,1088],{"type":32,"tag":141,"props":1080,"children":1081},{"style":154},[1082],{"type":37,"value":1083},"state.acquire_lock(",{"type":32,"tag":141,"props":1085,"children":1086},{"style":208},[1087],{"type":37,"value":1037},{"type":32,"tag":141,"props":1089,"children":1090},{"style":154},[1091],{"type":37,"value":304},{"type":32,"tag":141,"props":1093,"children":1094},{"class":143,"line":199},[1095,1099,1103],{"type":32,"tag":141,"props":1096,"children":1097},{"style":154},[1098],{"type":37,"value":551},{"type":32,"tag":141,"props":1100,"children":1101},{"style":148},[1102],{"type":37,"value":191},{"type":32,"tag":141,"props":1104,"children":1105},{"style":154},[1106],{"type":37,"value":1107}," bigquery_tool.run()\n",{"type":32,"tag":141,"props":1109,"children":1110},{"class":143,"line":219},[1111,1116,1120],{"type":32,"tag":141,"props":1112,"children":1113},{"style":154},[1114],{"type":37,"value":1115},"state.release_lock(",{"type":32,"tag":141,"props":1117,"children":1118},{"style":208},[1119],{"type":37,"value":1037},{"type":32,"tag":141,"props":1121,"children":1122},{"style":154},[1123],{"type":37,"value":304},{"type":32,"tag":33,"props":1125,"children":1126},{},[1127,1132,1134,1140,1142,1148,1150,1156],{"type":32,"tag":55,"props":1128,"children":1129},{},[1130],{"type":37,"value":1131},"2. Aislamiento de espacios de nombres:",{"type":37,"value":1133}," Proporciona a cada agente su propio espacio de trabajo. El agente A usa ",{"type":32,"tag":137,"props":1135,"children":1137},{"className":1136},[],[1138],{"type":37,"value":1139},"workspace_a\u002Ftemp_table",{"type":37,"value":1141},", el agente B usa ",{"type":32,"tag":137,"props":1143,"children":1145},{"className":1144},[],[1146],{"type":37,"value":1147},"workspace_b\u002Ftemp_table",{"type":37,"value":1149},". En CrewAI se hace con prefijos ",{"type":32,"tag":137,"props":1151,"children":1153},{"className":1152},[],[1154],{"type":37,"value":1155},"agent_id",{"type":37,"value":1007},{"type":32,"tag":33,"props":1158,"children":1159},{},[1160,1165,1167,1173,1175,1181],{"type":32,"tag":55,"props":1161,"children":1162},{},[1163],{"type":37,"value":1164},"3. Diseño de herramientas idempotentes:",{"type":37,"value":1166}," Diseña herramientas idempotentes desde el inicio —invocarlas 2 veces con los mismos parámetros no causa conflictos. Por ejemplo, usa ",{"type":32,"tag":137,"props":1168,"children":1170},{"className":1169},[],[1171],{"type":37,"value":1172},"upsert",{"type":37,"value":1174}," en lugar de ",{"type":32,"tag":137,"props":1176,"children":1178},{"className":1177},[],[1179],{"type":37,"value":1180},"create_or_replace",{"type":37,"value":1007},{"type":32,"tag":40,"props":1183,"children":1185},{"id":1184},"observabilidad-cómo-rastrear-agentes",[1186],{"type":37,"value":1187},"Observabilidad: Cómo Rastrear Agentes",{"type":32,"tag":33,"props":1189,"children":1190},{},[1191],{"type":37,"value":1192},"En producción, 5 agentes se ejecutan, uno falla, ¿cuál? Herramientas como LangSmith, Helicone, Arize recopilan rastreos a nivel de agente, pero la instrumentación manual es obligatoria.",{"type":32,"tag":33,"props":1194,"children":1195},{},[1196],{"type":32,"tag":55,"props":1197,"children":1198},{},[1199],{"type":37,"value":1200},"Métricas críticas:",{"type":32,"tag":1202,"props":1203,"children":1204},"ul",{},[1205,1231,1241,1258],{"type":32,"tag":1206,"props":1207,"children":1208},"li",{},[1209,1214,1216,1221,1223,1229],{"type":32,"tag":55,"props":1210,"children":1211},{},[1212],{"type":37,"value":1213},"Latencia de agente por paso:",{"type":37,"value":1215}," ¿Cuánto tardó cada agente? En un ",{"type":32,"tag":73,"props":1217,"children":1218},{},[1219],{"type":37,"value":1220},"fork",{"type":37,"value":1222}," paralelo, ",{"type":32,"tag":137,"props":1224,"children":1226},{"className":1225},[],[1227],{"type":37,"value":1228},"max(latencia)",{"type":37,"value":1230}," muestra el cuello de botella.",{"type":32,"tag":1206,"props":1232,"children":1233},{},[1234,1239],{"type":32,"tag":55,"props":1235,"children":1236},{},[1237],{"type":37,"value":1238},"Tasa de éxito de llamadas de herramientas:",{"type":37,"value":1240}," ¿Cuántas veces cada agente invocó cada herramienta, cuántas tuvieron éxito? Por debajo del 95% es una bandera roja.",{"type":32,"tag":1206,"props":1242,"children":1243},{},[1244,1249,1251,1256],{"type":32,"tag":55,"props":1245,"children":1246},{},[1247],{"type":37,"value":1248},"Contador de reintentos:",{"type":37,"value":1250}," ¿Cuántas veces reinició un agente? Reintentos altos indican ",{"type":32,"tag":73,"props":1252,"children":1253},{},[1254],{"type":37,"value":1255},"prompts",{"type":37,"value":1257}," defectuosos o especificaciones de herramientas incorrectas.",{"type":32,"tag":1206,"props":1259,"children":1260},{},[1261,1266],{"type":32,"tag":55,"props":1262,"children":1263},{},[1264],{"type":37,"value":1265},"Diagrama de transición de estado:",{"type":37,"value":1267}," Para LangGraph, ¿de qué nodo a cuál se transitó cuántas veces? Los bucles infinitos se ven aquí.",{"type":32,"tag":130,"props":1269,"children":1271},{"className":132,"code":1270,"language":134,"meta":16,"style":16},"# Integración de LangSmith\nfrom langsmith import Client\n\nclient = Client()\nwith client.trace(run_name=\"multi_agent_pipeline\") as run:\n    for agent in agents:\n        with run.create_child(name=agent.name):\n            agent.run()\n",[1272],{"type":32,"tag":137,"props":1273,"children":1274},{"__ignoreMap":16},[1275,1284,1305,1312,1329,1371,1394,1421],{"type":32,"tag":141,"props":1276,"children":1277},{"class":143,"line":144},[1278],{"type":32,"tag":141,"props":1279,"children":1281},{"style":1280},"--shiki-default:#6A737D",[1282],{"type":37,"value":1283},"# Integración de LangSmith\n",{"type":32,"tag":141,"props":1285,"children":1286},{"class":143,"line":170},[1287,1291,1296,1300],{"type":32,"tag":141,"props":1288,"children":1289},{"style":148},[1290],{"type":37,"value":151},{"type":32,"tag":141,"props":1292,"children":1293},{"style":154},[1294],{"type":37,"value":1295}," langsmith ",{"type":32,"tag":141,"props":1297,"children":1298},{"style":148},[1299],{"type":37,"value":162},{"type":32,"tag":141,"props":1301,"children":1302},{"style":154},[1303],{"type":37,"value":1304}," Client\n",{"type":32,"tag":141,"props":1306,"children":1307},{"class":143,"line":180},[1308],{"type":32,"tag":141,"props":1309,"children":1310},{"emptyLinePlaceholder":174},[1311],{"type":37,"value":177},{"type":32,"tag":141,"props":1313,"children":1314},{"class":143,"line":199},[1315,1320,1324],{"type":32,"tag":141,"props":1316,"children":1317},{"style":154},[1318],{"type":37,"value":1319},"client ",{"type":32,"tag":141,"props":1321,"children":1322},{"style":148},[1323],{"type":37,"value":191},{"type":32,"tag":141,"props":1325,"children":1326},{"style":154},[1327],{"type":37,"value":1328}," Client()\n",{"type":32,"tag":141,"props":1330,"children":1331},{"class":143,"line":219},[1332,1337,1342,1347,1351,1356,1361,1366],{"type":32,"tag":141,"props":1333,"children":1334},{"style":148},[1335],{"type":37,"value":1336},"with",{"type":32,"tag":141,"props":1338,"children":1339},{"style":154},[1340],{"type":37,"value":1341}," client.trace(",{"type":32,"tag":141,"props":1343,"children":1344},{"style":410},[1345],{"type":37,"value":1346},"run_name",{"type":32,"tag":141,"props":1348,"children":1349},{"style":148},[1350],{"type":37,"value":191},{"type":32,"tag":141,"props":1352,"children":1353},{"style":208},[1354],{"type":37,"value":1355},"\"multi_agent_pipeline\"",{"type":32,"tag":141,"props":1357,"children":1358},{"style":154},[1359],{"type":37,"value":1360},") ",{"type":32,"tag":141,"props":1362,"children":1363},{"style":148},[1364],{"type":37,"value":1365},"as",{"type":32,"tag":141,"props":1367,"children":1368},{"style":154},[1369],{"type":37,"value":1370}," run:\n",{"type":32,"tag":141,"props":1372,"children":1373},{"class":143,"line":237},[1374,1379,1384,1389],{"type":32,"tag":141,"props":1375,"children":1376},{"style":148},[1377],{"type":37,"value":1378},"    for",{"type":32,"tag":141,"props":1380,"children":1381},{"style":154},[1382],{"type":37,"value":1383}," agent ",{"type":32,"tag":141,"props":1385,"children":1386},{"style":148},[1387],{"type":37,"value":1388},"in",{"type":32,"tag":141,"props":1390,"children":1391},{"style":154},[1392],{"type":37,"value":1393}," agents:\n",{"type":32,"tag":141,"props":1395,"children":1396},{"class":143,"line":246},[1397,1402,1407,1412,1416],{"type":32,"tag":141,"props":1398,"children":1399},{"style":148},[1400],{"type":37,"value":1401},"        with",{"type":32,"tag":141,"props":1403,"children":1404},{"style":154},[1405],{"type":37,"value":1406}," run.create_child(",{"type":32,"tag":141,"props":1408,"children":1409},{"style":410},[1410],{"type":37,"value":1411},"name",{"type":32,"tag":141,"props":1413,"children":1414},{"style":148},[1415],{"type":37,"value":191},{"type":32,"tag":141,"props":1417,"children":1418},{"style":154},[1419],{"type":37,"value":1420},"agent.name):\n",{"type":32,"tag":141,"props":1422,"children":1423},{"class":143,"line":26},[1424],{"type":32,"tag":141,"props":1425,"children":1426},{"style":154},[1427],{"type":37,"value":1428},"            agent.run()\n",{"type":32,"tag":40,"props":1430,"children":1432},{"id":1431},"gestión-de-ventana-de-contexto-memoria-compartida-vs-aislada",[1433],{"type":37,"value":1434},"Gestión de Ventana de Contexto: Memoria Compartida vs Aislada",{"type":32,"tag":33,"props":1436,"children":1437},{},[1438],{"type":37,"value":1439},"En multi-agente, el recurso más crítico es la ventana de contexto. ¿Cinco agentes comparten los mismos 128K tokens, o cada uno tiene su propio 128K?",{"type":32,"tag":33,"props":1441,"children":1442},{},[1443,1448],{"type":32,"tag":55,"props":1444,"children":1445},{},[1446],{"type":37,"value":1447},"Memoria compartida (LangGraph por defecto):",{"type":37,"value":1449}," Todos los agentes leen y escriben en el mismo objeto de estado. Ventaja: los hallazgos del agente A pasan automáticamente al agente B. Desventaja: contaminación de contexto —datos que el agente C no necesita hinchan la ventana.",{"type":32,"tag":33,"props":1451,"children":1452},{},[1453,1458],{"type":32,"tag":55,"props":1454,"children":1455},{},[1456],{"type":37,"value":1457},"Memoria aislada + paso de mensajes:",{"type":37,"value":1459}," Cada agente mantiene su propio estado, solo pasa datos necesarios como mensajes. CrewAI usa este patrón. Ventaja: eficiencia de tokens alta. Desventaja: serialización manual de datos requerida.",{"type":32,"tag":33,"props":1461,"children":1462},{},[1463,1468,1470,1476],{"type":32,"tag":55,"props":1464,"children":1465},{},[1466],{"type":37,"value":1467},"Híbrido (recomendado):",{"type":37,"value":1469}," Mantén solo metadatos en estado compartido (qué hizo cada agente, cuándo terminó), almacena datos reales en disco\u002FDB, pasa a los agentes referencias. Por ejemplo, escribe el resultado de BigQuery en GCS, pasa a los agentes la ruta ",{"type":32,"tag":137,"props":1471,"children":1473},{"className":1472},[],[1474],{"type":37,"value":1475},"gs:\u002F\u002Fbucket\u002Fresult.parquet",{"type":37,"value":1007},{"type":32,"tag":40,"props":1478,"children":1480},{"id":1479},"manejo-de-errores-qué-pasa-si-cae-un-agente",[1481],{"type":37,"value":1482},"Manejo de Errores: ¿Qué Pasa si Cae un Agente?",{"type":32,"tag":33,"props":1484,"children":1485},{},[1486],{"type":37,"value":1487},"En topología serial, si cae el agente 2, el pipeline se detiene —simple. En paralelo, si cae el agente B, A y C continúan —pero terminas con datos incompletos. La lógica de \"éxito parcial\" es obligatoria en la capa de orquestación.",{"type":32,"tag":33,"props":1489,"children":1490},{},[1491],{"type":32,"tag":55,"props":1492,"children":1493},{},[1494],{"type":37,"value":1495},"Estrategias:",{"type":32,"tag":1497,"props":1498,"children":1499},"ol",{},[1500,1510,1520],{"type":32,"tag":1206,"props":1501,"children":1502},{},[1503,1508],{"type":32,"tag":55,"props":1504,"children":1505},{},[1506],{"type":37,"value":1507},"Fail-fast (serial):",{"type":37,"value":1509}," El primer error detiene todo el pipeline. Prefiere esto si la latencia no importa.",{"type":32,"tag":1206,"props":1511,"children":1512},{},[1513,1518],{"type":32,"tag":55,"props":1514,"children":1515},{},[1516],{"type":37,"value":1517},"Best-effort (paralelo):",{"type":37,"value":1519}," Ejecuta todos los agentes posibles, genera salida incluso con datos incompletos —pero marca \"incomplete\" en metadatos.",{"type":32,"tag":1206,"props":1521,"children":1522},{},[1523,1528,1530,1534],{"type":32,"tag":55,"props":1524,"children":1525},{},[1526],{"type":37,"value":1527},"Reintentar con fallback:",{"type":37,"value":1529}," El agente A falló 3 veces, pregunta al agente A_backup (modelo diferente o ",{"type":32,"tag":73,"props":1531,"children":1532},{},[1533],{"type":37,"value":94},{"type":37,"value":1535}," diferente).",{"type":32,"tag":130,"props":1537,"children":1539},{"className":132,"code":1538,"language":134,"meta":16,"style":16},"# Reintentos en LangGraph\nworkflow.add_node(\"agent_a\", agent_a, retry_policy={\"max_attempts\": 3})\nworkflow.add_edge(\"agent_a\", \"agent_a_backup\", condition=\"failed\")\n",[1540],{"type":32,"tag":137,"props":1541,"children":1542},{"__ignoreMap":16},[1543,1551,1599],{"type":32,"tag":141,"props":1544,"children":1545},{"class":143,"line":144},[1546],{"type":32,"tag":141,"props":1547,"children":1548},{"style":1280},[1549],{"type":37,"value":1550},"# Reintentos en LangGraph\n",{"type":32,"tag":141,"props":1552,"children":1553},{"class":143,"line":170},[1554,1558,1563,1568,1573,1577,1581,1586,1590,1595],{"type":32,"tag":141,"props":1555,"children":1556},{"style":154},[1557],{"type":37,"value":205},{"type":32,"tag":141,"props":1559,"children":1560},{"style":208},[1561],{"type":37,"value":1562},"\"agent_a\"",{"type":32,"tag":141,"props":1564,"children":1565},{"style":154},[1566],{"type":37,"value":1567},", agent_a, ",{"type":32,"tag":141,"props":1569,"children":1570},{"style":410},[1571],{"type":37,"value":1572},"retry_policy",{"type":32,"tag":141,"props":1574,"children":1575},{"style":148},[1576],{"type":37,"value":191},{"type":32,"tag":141,"props":1578,"children":1579},{"style":154},[1580],{"type":37,"value":660},{"type":32,"tag":141,"props":1582,"children":1583},{"style":208},[1584],{"type":37,"value":1585},"\"max_attempts\"",{"type":32,"tag":141,"props":1587,"children":1588},{"style":154},[1589],{"type":37,"value":1065},{"type":32,"tag":141,"props":1591,"children":1592},{"style":663},[1593],{"type":37,"value":1594},"3",{"type":32,"tag":141,"props":1596,"children":1597},{"style":154},[1598],{"type":37,"value":671},{"type":32,"tag":141,"props":1600,"children":1601},{"class":143,"line":180},[1602,1607,1611,1615,1620,1624,1629,1633,1638],{"type":32,"tag":141,"props":1603,"children":1604},{"style":154},[1605],{"type":37,"value":1606},"workflow.add_edge(",{"type":32,"tag":141,"props":1608,"children":1609},{"style":208},[1610],{"type":37,"value":1562},{"type":32,"tag":141,"props":1612,"children":1613},{"style":154},[1614],{"type":37,"value":427},{"type":32,"tag":141,"props":1616,"children":1617},{"style":208},[1618],{"type":37,"value":1619},"\"agent_a_backup\"",{"type":32,"tag":141,"props":1621,"children":1622},{"style":154},[1623],{"type":37,"value":427},{"type":32,"tag":141,"props":1625,"children":1626},{"style":410},[1627],{"type":37,"value":1628},"condition",{"type":32,"tag":141,"props":1630,"children":1631},{"style":148},[1632],{"type":37,"value":191},{"type":32,"tag":141,"props":1634,"children":1635},{"style":208},[1636],{"type":37,"value":1637},"\"failed\"",{"type":32,"tag":141,"props":1639,"children":1640},{"style":154},[1641],{"type":37,"value":304},{"type":32,"tag":40,"props":1643,"children":1645},{"id":1644},"checklist-de-producción-antes-de-lanzar-sistema-multi-agente",[1646],{"type":37,"value":1647},"Checklist de Producción: Antes de Lanzar Sistema Multi-Agente",{"type":32,"tag":1202,"props":1649,"children":1650},{},[1651,1661,1671,1687,1697],{"type":32,"tag":1206,"props":1652,"children":1653},{},[1654,1659],{"type":32,"tag":55,"props":1655,"children":1656},{},[1657],{"type":37,"value":1658},"Calcula presupuesto de tokens:",{"type":37,"value":1660}," 5 agentes × 10K tokens entrada × 2K salida × precio de API = costo por ejecución. 1000 ejecuciones\u002Fdía = ¿cuánto al final del mes?",{"type":32,"tag":1206,"props":1662,"children":1663},{},[1664,1669],{"type":32,"tag":55,"props":1665,"children":1666},{},[1667],{"type":37,"value":1668},"Define SLA de latencia:",{"type":37,"value":1670}," ¿Cuánto debe tardar cada agente? Si P95 de latencia > 10 segundos, se necesita topología paralela.",{"type":32,"tag":1206,"props":1672,"children":1673},{},[1674,1679,1681,1685],{"type":32,"tag":55,"props":1675,"children":1676},{},[1677],{"type":37,"value":1678},"Plan de reversión:",{"type":37,"value":1680}," Cambiar el ",{"type":32,"tag":73,"props":1682,"children":1683},{},[1684],{"type":37,"value":94},{"type":37,"value":1686}," de un agente puede romper todo el pipeline. Control de versiones + despliegue canario obligatorio.",{"type":32,"tag":1206,"props":1688,"children":1689},{},[1690,1695],{"type":32,"tag":55,"props":1691,"children":1692},{},[1693],{"type":37,"value":1694},"Punto human-in-the-loop:",{"type":37,"value":1696}," En decisiones críticas (por ejemplo, ajuste de presupuesto), muestra la salida del agente final a un humano, requiere aprobación.",{"type":32,"tag":1206,"props":1698,"children":1699},{},[1700,1705],{"type":32,"tag":55,"props":1701,"children":1702},{},[1703],{"type":37,"value":1704},"Auditoría:",{"type":37,"value":1706}," Cada paso de cada agente —qué herramienta se invocó, qué parámetros, qué devolvió— escribe como JSON a S3. Compliance lo requiere.",{"type":32,"tag":33,"props":1708,"children":1709},{},[1710],{"type":37,"value":1711},"La orquestación multi-agente es la \"lección de sistemas\" de la ingeniería LLM. Empiezas con una llamada a un modelo único, en producción necesitas topología, gestión de estado, lógica de reintentos, observabilidad. LangGraph, CrewAI, AutoGen son esqueletos —el trabajo real es decidir, según tu caso de uso, cómo serializar y paralelizar agentes. Ahora toma tu prototipo, mide latencia, simula costos, luego elige topología. No lances sin probar —en sistemas multi-agente hay 10 capas entre \"funciona\" y \"listo para producción\".",{"type":32,"tag":1713,"props":1714,"children":1715},"style",{},[1716],{"type":37,"value":1717},"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":180,"depth":180,"links":1719},[1720,1721,1722,1723,1724,1725,1726,1727],{"id":42,"depth":170,"text":45},{"id":115,"depth":170,"text":118},{"id":769,"depth":170,"text":772},{"id":956,"depth":170,"text":959},{"id":1184,"depth":170,"text":1187},{"id":1431,"depth":170,"text":1434},{"id":1479,"depth":170,"text":1482},{"id":1644,"depth":170,"text":1647},"markdown","content:es:ai:orquestacion-multi-agente-llm.md","content","es\u002Fai\u002Forquestacion-multi-agente-llm.md","es\u002Fai\u002Forquestacion-multi-agente-llm","md",1785132247636]