Buckets:

hf-doc-build/doc-dev / agents-course /pr_545 /es /unit2 /langgraph /when_to_use_langgraph.html
rtrm's picture
download
raw
17.3 kB
<meta charset="utf-8" /><meta name="hf:doc:metadata" content="{&quot;title&quot;:&quot;¿Qué es LangGraph ?&quot;,&quot;local&quot;:&quot;qué-es-langgraph-&quot;,&quot;sections&quot;:[{&quot;title&quot;:&quot;¿Es LangGraph diferente de LangChain ?&quot;,&quot;local&quot;:&quot;es-langgraph-diferente-de-langchain-&quot;,&quot;sections&quot;:[],&quot;depth&quot;:2},{&quot;title&quot;:&quot;¿Cuándo debería usar LangGraph ?&quot;,&quot;local&quot;:&quot;cuándo-debería-usar-langgraph-&quot;,&quot;sections&quot;:[{&quot;title&quot;:&quot;Control vs libertad&quot;,&quot;local&quot;:&quot;control-vs-libertad&quot;,&quot;sections&quot;:[],&quot;depth&quot;:3}],&quot;depth&quot;:2},{&quot;title&quot;:&quot;¿Cómo funciona LangGraph?&quot;,&quot;local&quot;:&quot;cómo-funciona-langgraph&quot;,&quot;sections&quot;:[],&quot;depth&quot;:2},{&quot;title&quot;:&quot;¿En qué se diferencia de Python regular? ¿Por qué necesito LangGraph?&quot;,&quot;local&quot;:&quot;en-qué-se-diferencia-de-python-regular-por-qué-necesito-langgraph&quot;,&quot;sections&quot;:[],&quot;depth&quot;:2}],&quot;depth&quot;:1}">
<link href="/docs/agents-course/pr_545/es/_app/immutable/assets/0.e3b0c442.css" rel="modulepreload">
<link rel="modulepreload" href="/docs/agents-course/pr_545/es/_app/immutable/entry/start.63ebcd5b.js">
<link rel="modulepreload" href="/docs/agents-course/pr_545/es/_app/immutable/chunks/scheduler.37c15a92.js">
<link rel="modulepreload" href="/docs/agents-course/pr_545/es/_app/immutable/chunks/singletons.4b25defb.js">
<link rel="modulepreload" href="/docs/agents-course/pr_545/es/_app/immutable/chunks/index.18351ede.js">
<link rel="modulepreload" href="/docs/agents-course/pr_545/es/_app/immutable/chunks/paths.6deaf1b7.js">
<link rel="modulepreload" href="/docs/agents-course/pr_545/es/_app/immutable/entry/app.b37467ae.js">
<link rel="modulepreload" href="/docs/agents-course/pr_545/es/_app/immutable/chunks/index.2bf4358c.js">
<link rel="modulepreload" href="/docs/agents-course/pr_545/es/_app/immutable/nodes/0.147ec314.js">
<link rel="modulepreload" href="/docs/agents-course/pr_545/es/_app/immutable/chunks/each.e59479a4.js">
<link rel="modulepreload" href="/docs/agents-course/pr_545/es/_app/immutable/nodes/43.81e5e8bd.js">
<link rel="modulepreload" href="/docs/agents-course/pr_545/es/_app/immutable/chunks/Heading.8ada512a.js">
<link rel="modulepreload" href="/docs/agents-course/pr_545/es/_app/immutable/chunks/getInferenceSnippets.031140c2.js"><!-- HEAD_svelte-u9bgzb_START --><meta name="hf:doc:metadata" content="{&quot;title&quot;:&quot;¿Qué es LangGraph ?&quot;,&quot;local&quot;:&quot;qué-es-langgraph-&quot;,&quot;sections&quot;:[{&quot;title&quot;:&quot;¿Es LangGraph diferente de LangChain ?&quot;,&quot;local&quot;:&quot;es-langgraph-diferente-de-langchain-&quot;,&quot;sections&quot;:[],&quot;depth&quot;:2},{&quot;title&quot;:&quot;¿Cuándo debería usar LangGraph ?&quot;,&quot;local&quot;:&quot;cuándo-debería-usar-langgraph-&quot;,&quot;sections&quot;:[{&quot;title&quot;:&quot;Control vs libertad&quot;,&quot;local&quot;:&quot;control-vs-libertad&quot;,&quot;sections&quot;:[],&quot;depth&quot;:3}],&quot;depth&quot;:2},{&quot;title&quot;:&quot;¿Cómo funciona LangGraph?&quot;,&quot;local&quot;:&quot;cómo-funciona-langgraph&quot;,&quot;sections&quot;:[],&quot;depth&quot;:2},{&quot;title&quot;:&quot;¿En qué se diferencia de Python regular? ¿Por qué necesito LangGraph?&quot;,&quot;local&quot;:&quot;en-qué-se-diferencia-de-python-regular-por-qué-necesito-langgraph&quot;,&quot;sections&quot;:[],&quot;depth&quot;:2}],&quot;depth&quot;:1}"><!-- HEAD_svelte-u9bgzb_END --> <p></p> <h1 class="relative group"><a id="qué-es-langgraph-" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#qué-es-langgraph-"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>¿Qué es LangGraph ?</span></h1> <p data-svelte-h="svelte-k0sjnw"><code>LangGraph</code> s un marco de trabajo desarrollado por <a href="https://www.langchain.com/" rel="nofollow">LangChain</a> <strong>para gestionar el flujo de control de aplicaciones que integran un LLM.</strong>.</p> <h2 class="relative group"><a id="es-langgraph-diferente-de-langchain-" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#es-langgraph-diferente-de-langchain-"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>¿Es LangGraph diferente de LangChain ?</span></h2> <p data-svelte-h="svelte-k4t4oa">LangChain proporciona una interfaz estándar para interactuar con modelos y otros componentes, útil para recuperación, llamadas a LLM y llamadas a herramientas.
Las clases de LangChain pueden utilizarse en LangGraph, pero NO TIENEN que ser utilizadas.</p> <p data-svelte-h="svelte-1mu4j4v">Los paquetes son diferentes y pueden usarse de forma aislada, pero, al final, todos los recursos que encontrarás en línea utilizan ambos paquetes de la mano.</p> <h2 class="relative group"><a id="cuándo-debería-usar-langgraph-" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#cuándo-debería-usar-langgraph-"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>¿Cuándo debería usar LangGraph ?</span></h2> <h3 class="relative group"><a id="control-vs-libertad" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#control-vs-libertad"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>Control vs libertad</span></h3> <p data-svelte-h="svelte-1o6vi2c">Al diseñar aplicaciones de IA, te enfrentas a un equilibrio fundamental entre <strong>control</strong> y <strong>libertad</strong>:</p> <ul data-svelte-h="svelte-khwrs8"><li><strong>libertad</strong> da a tu LLM más espacio para ser creativo y abordar problemas inesperados.</li> <li><strong>Control</strong> te permite asegurar un comportamiento predecible y mantener barreras de protección.</li></ul> <p data-svelte-h="svelte-10d0yky">Los Agentes de Código, como los que puedes encontrar en <em>smolagents</em>,son muy libres. Pueden llamar a múltiples herramientas en un solo paso de acción, crear sus propias herramientas, etc. Sin embargo, este comportamiento puede hacerlos menos predecibles y menos controlables que un Agente regular trabajando con JSON.</p> <p data-svelte-h="svelte-1uzkx4f"><code>LangGraph</code> está en el otro extremo del espectro, brilla cuando necesitas <strong>“Control”</strong> sobre la ejecución de tu agente.</p> <p data-svelte-h="svelte-1mnd89h">LangGraph es particularmente valioso cuando necesitas <strong>Control sobre tus aplicaciones</strong>. Te da las herramientas para construir una aplicación que siga un proceso predecible mientras aprovecha el poder de los LLMs.</p> <p data-svelte-h="svelte-1f2cc7a">En términos simples, si tu aplicación involucra una serie de pasos que necesitan ser orquestados de una manera específica, con decisiones siendo tomadas en cada punto de unión, <strong>LangGraph proporciona la estructura que necesitas</strong>.</p> <p data-svelte-h="svelte-1b9sjgc">Como ejemplo, digamos que queremos construir un asistente LLM que pueda responder algunas preguntas sobre algunos documentos.</p> <p data-svelte-h="svelte-1y96klp">Como los LLMs entienden mejor el texto, antes de poder responder a la pregunta, necesitarás convertir otras modalidades complejas (gráficos, tablas) en texto. Sin embargo, ¡esa elección depende del tipo de documento que tengas!</p> <p data-svelte-h="svelte-19syr5b">Esta es una ramificación que elegí representar de la siguiente manera:</p> <img src="https://huggingface.co/datasets/agents-course/course-images/resolve/main/en/unit2/LangGraph/flow.png" alt="Control flow"> <blockquote data-svelte-h="svelte-134y1xy"><p>💡 <strong>Tip:</strong> La parte izquierda no es un agente, ya que aquí no está involucrada ninguna llamada a herramientas. Pero la parte derecha necesitará escribir algo de código para consultar el xls (convertir a pandas y manipularlo).</p></blockquote> <p data-svelte-h="svelte-6rlm5l">Si bien esta ramificación es determinista, también puedes diseñar ramificaciones que estén condicionadas por la salida de un LLM, haciéndolas indeterministas.</p> <p data-svelte-h="svelte-4o7h3m">Los escenarios clave donde LangGraph sobresale incluyen:</p> <ul data-svelte-h="svelte-5ee70r"><li><strong>Procesos de razonamiento en múltiples pasos</strong> que necesitan control explícito sobre el flujo</li> <li><strong>Aplicaciones que requieren persistencia de estado</strong> entre pasos</li> <li><strong>Sistemas que combinan lógica determinista con capacidades de IA</strong></li> <li><strong>Flujos de trabajo que necesitan intervenciones humanas en el ciclo</strong></li> <li><strong>Arquitecturas de agentes complejas</strong> con múltiples componentes trabajando juntos</li></ul> <p data-svelte-h="svelte-dprhw">En esencia, siempre que sea posible, <strong>como humano</strong>, diseña un flujo de acciones basado en la salida de cada acción, y decide qué ejecutar a continuación en consecuencia. En este caso, ¡LangGraph es el marco de trabajo correcto para ti!</p> <p data-svelte-h="svelte-18i2a64"><code>LangGraph</code> es, en mi opinión, el marco de trabajo de agentes más listo para producción en el mercado.</p> <h2 class="relative group"><a id="cómo-funciona-langgraph" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#cómo-funciona-langgraph"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>¿Cómo funciona LangGraph?</span></h2> <p data-svelte-h="svelte-15yp2qs">En su esencia, <code>LangGraph</code> utiliza una estructura de grafo dirigido para definir el flujo de tu aplicación:</p> <ul data-svelte-h="svelte-jw83a5"><li><strong>Nodos</strong> representan pasos de procesamiento individuales (como llamar a un LLM, usar una herramienta o tomar una decisión).</li> <li><strong>Aristas(Edges)</strong> definen las posibles transiciones entre pasos.</li> <li><strong>Estado</strong> es definido por el usuario, se mantiene y se pasa entre nodos durante la ejecución. Al decidir qué nodo dirigir a continuación, este es el estado actual que observamos.</li></ul> <p data-svelte-h="svelte-3hfztr">¡Exploraremos estos bloques fundamentales más en el próximo capítulo!</p> <h2 class="relative group"><a id="en-qué-se-diferencia-de-python-regular-por-qué-necesito-langgraph" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#en-qué-se-diferencia-de-python-regular-por-qué-necesito-langgraph"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>¿En qué se diferencia de Python regular? ¿Por qué necesito LangGraph?</span></h2> <p data-svelte-h="svelte-1ovltig">Te preguntaras : “Podría simplemente escribir código Python regular con declaraciones if-else para manejar todos estos flujos, ¿verdad?”</p> <p data-svelte-h="svelte-16kyrxp">Aunque técnicamente es cierto, LangGraph ofrece <strong>algunas ventajas</strong> osobre Python puro para construir sistemas complejos. Podrías construir la misma aplicación sin LangGraph, pero proporciona herramientas y abstracciones más fáciles para ti.</p> <p data-svelte-h="svelte-reprnz">Incluye estados, visualización, registro (trazas), integración de humanos en el ciclo incorporada, y más.</p> <a class="!text-gray-400 !no-underline text-sm flex items-center not-prose mt-4" href="https://github.com/huggingface/agents-course/blob/main/units/es/unit2/langgraph/when_to_use_langgraph.mdx" target="_blank"><span data-svelte-h="svelte-1kd6by1">&lt;</span> <span data-svelte-h="svelte-x0xyl0">&gt;</span> <span data-svelte-h="svelte-1dajgef"><span class="underline ml-1.5">Update</span> on GitHub</span></a> <p></p>
<script>
{
__sveltekit_1k0olmh = {
assets: "/docs/agents-course/pr_545/es",
base: "/docs/agents-course/pr_545/es",
env: {}
};
const element = document.currentScript.parentElement;
const data = [null,null];
Promise.all([
import("/docs/agents-course/pr_545/es/_app/immutable/entry/start.63ebcd5b.js"),
import("/docs/agents-course/pr_545/es/_app/immutable/entry/app.b37467ae.js")
]).then(([kit, app]) => {
kit.start(app, element, {
node_ids: [0, 43],
data,
form: null,
error: null
});
});
}
</script>

Xet Storage Details

Size:
17.3 kB
·
Xet hash:
3eb8396574612a818a6086be42e7b8d8a34f51d082e23f09a5bfb386f57c57a3

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.