import{s as ot,o as it,n as qe}from"../chunks/scheduler.37c15a92.js";import{S as ut,i as rt,g as u,s as l,r as J,A as mt,h as r,f as s,c as a,j as at,u as T,x as p,k as ee,y as pt,a as n,v as w,d as b,t as U,w as f,m as te,n as se}from"../chunks/index.2bf4358c.js";import{T as Ve}from"../chunks/Tip.363c041f.js";import{C as Qe}from"../chunks/CodeBlock.4e987730.js";import{H as _e}from"../chunks/Heading.8ada512a.js";import{E as ct}from"../chunks/getInferenceSnippets.d4d07d1e.js";function dt(j){let m,o,M="*BaseWorkflowAgent*";return{c(){m=te("Trouvez plus d'informations sur les agents avancés sur "),o=u("a"),o.textContent=M,this.h()},l(c){m=se(c,"Trouvez plus d'informations sur les agents avancés sur "),o=r(c,"A",{href:!0,"data-svelte-h":!0}),p(o)!=="svelte-1rqeapo"&&(o.textContent=M),this.h()},h(){ee(o,"href","https://github.com/run-llama/llama_index/blob/main/llama-index-core/llama_index/core/agent/workflow/base_agent.py")},m(c,i){n(c,m,i),n(c,o,i)},p:qe,d(c){c&&(s(m),s(o))}}}function Mt(j){let m,o,M="ce *notebook*",c;return{c(){m=te("Vous pouvez suivre le code dans "),o=u("a"),o.textContent=M,c=te(" que vous pouvez exécuter avec Google Colab."),this.h()},l(i){m=se(i,"Vous pouvez suivre le code dans "),o=r(i,"A",{href:!0,target:!0,"data-svelte-h":!0}),p(o)!=="svelte-110zc86"&&(o.textContent=M),c=se(i," que vous pouvez exécuter avec Google Colab."),this.h()},h(){ee(o,"href","https://huggingface.co/agents-course/notebooks/blob/main/unit2/llama-index/agents.ipynb"),ee(o,"target","_blank")},m(i,g){n(i,m,g),n(i,o,g),n(i,c,g)},p:qe,d(i){i&&(s(m),s(o),s(c))}}}function yt(j){let m,o,M="Introduction de base à *AgentWorkflow*",c,i,g="*Guide* d'apprentissage des *Agents*",y;return{c(){m=te("Vous n'avez pas encore assez appris ? Il y a beaucoup plus à découvrir sur les agents et les *tools* dans LlamaIndex dans l'"),o=u("a"),o.textContent=M,c=te(" ou le "),i=u("a"),i.textContent=g,y=te(", où vous pouvez lire plus sur le *streaming*, la sérialisation de contexte, et l'humain dans la boucle !"),this.h()},l(d){m=se(d,"Vous n'avez pas encore assez appris ? Il y a beaucoup plus à découvrir sur les agents et les *tools* dans LlamaIndex dans l'"),o=r(d,"A",{href:!0,"data-svelte-h":!0}),p(o)!=="svelte-10cfcaf"&&(o.textContent=M),c=se(d," ou le "),i=r(d,"A",{href:!0,"data-svelte-h":!0}),p(i)!=="svelte-qf8cdk"&&(i.textContent=g),y=se(d,", où vous pouvez lire plus sur le *streaming*, la sérialisation de contexte, et l'humain dans la boucle !"),this.h()},h(){ee(o,"href","https://docs.llamaindex.ai/en/stable/examples/agent/agent_workflow_basic/"),ee(i,"href","https://docs.llamaindex.ai/en/stable/understanding/agent/")},m(d,h){n(d,m,h),n(d,o,h),n(d,c,h),n(d,i,h),n(d,y,h)},p:qe,d(d){d&&(s(m),s(o),s(c),s(i),s(y))}}}function Jt(j){let m,o,M,c,i,g,y,d=`Vous vous souvenez d’Alfred, notre agent majordome serviable d’avant ? Eh bien, il va recevoir une mise à niveau !
Maintenant que nous comprenons les <em>tools</em> disponibles dans LlamaIndex, nous pouvons donner à Alfred de nouvelles capacités pour mieux nous servir.`,h,x,Re=`Mais avant de continuer, rappelons-nous ce qui fait fonctionner un agent comme Alfred.
Dans l’Unité 1, nous avons appris que :`,le,B,Ae="<p>Un Agent est un système qui exploite un modèle d’<em>IA</em> pour interagir avec son environnement afin d’atteindre un objectif défini par l’utilisateur. Il combine le raisonnement, la planification et l’exécution d’actions (souvent via des <em>tools</em> externes) pour accomplir des tâches.</p>",ae,G,Se="LlamaIndex prend en charge <strong>trois types principaux d’agents de raisonnement</strong> :",oe,Z,ke='<img src="https://huggingface.co/datasets/agents-course/course-images/resolve/main/en/unit2/llama-index/agents.png" alt="Agents"/>',ie,$,He="<li><code>Function Calling Agents</code> - Ceux-ci fonctionnent avec des modèles d’<em>IA</em> qui peuvent appeler des fonctions spécifiques.</li> <li><code>ReAct Agents</code> - Ceux-ci peuvent fonctionner avec n’importe quelle <em>IA</em> qui fait du <em>chat</em> ou des <em>endpoints</em> de texte et traiter des tâches de raisonnement complexes.</li> <li><code>Advanced Custom Agents</code> - Ceux-ci utilisent des méthodes plus complexes pour traiter des tâches et <em>workflows</em> plus complexes.</li>",ue,I,re,W,me,v,pe,Q,Ye=`Pour créer un agent, nous commençons par lui fournir un <strong>ensemble de fonctions/<em>tools</em> qui définissent ses capacités</strong>.
Regardons comment créer un agent avec quelques <em>tools</em> de base. Au moment de la rédaction, l’agent utilisera automatiquement l’API d’appel de fonctions (si disponible), ou une boucle d’agent <em>ReAct</em> standard.`,ce,_,Ee="Les <em>LLMs</em> qui prennent en charge une API <em>tools</em>/fonctions sont relativement nouveaux, mais ils fournissent un moyen puissant d’appeler des <em>tools</em> en évitant le <em>prompting</em> spécifique et permettant au <em>LLM</em> de créer des appels de <em>tools</em> basés sur des schémas fournis.",de,V,Xe="Les agents <em>ReAct</em> sont également bons pour les tâches de raisonnement complexes et peuvent fonctionner avec n’importe quel <em>LLM</em> qui a des capacités de <em>chat</em> ou de complétion de texte. Ils sont plus verbeux et montrent le raisonnement derrière certaines actions qu’ils prennent.",Me,q,ye,R,Le=`<strong>Les agents sont sans état par défaut</strong>, ajouter la mémorisation des interactions passées est optionnel en utilisant un objet <code>Context</code>
Cela pourrait être utile si vous voulez utiliser un agent qui a besoin de se souvenir des interactions précédentes, comme un <em>chatbot</em> qui maintient le contexte à travers plusieurs messages ou un gestionnaire de tâches qui a besoin de suivre les progrès au fil du temps.`,Je,A,Te,S,Fe='Vous remarquerez que les agents dans <code>LlamaIndex</code> sont asynchrones car ils utilisent l’opérateur <code>await</code> de Python. Si vous êtes nouveau au code asynchrone en Python, ou avez besoin d’un rappel, ils ont un <a href="https://docs.llamaindex.ai/en/stable/getting_started/async_python/" rel="nofollow">excellent guide asynchrone</a>.',we,k,ze="Maintenant que nous avons les bases, jetons un coup d’œil à comment nous pouvons utiliser des <em>tools</em> plus complexes dans nos agents.",be,H,Ue,Y,Ne=`<strong>Le <em>RAG</em> agentique est un moyen puissant d’utiliser des agents pour répondre à des questions sur vos données.</strong> Nous pouvons passer divers <em>tools</em> à Alfred pour l’aider à répondre aux questions.
Cependant, au lieu de répondre automatiquement à la question au-dessus des documents, Alfred peut décider d’utiliser n’importe quel autre <em>tool</em> ou flux pour répondre à la question.`,fe,E,Pe='<img src="https://huggingface.co/datasets/agents-course/course-images/resolve/main/en/unit2/llama-index/agentic-rag.png" alt="Agentic RAG"/>',ge,X,De=`Il est facile d’<strong>envelopper <code>QueryEngine</code> comme un <em>tool</em></strong> pour un agent.
Ce faisant, nous devons <strong>définir un nom et une description</strong>. Le <em>LLM</em> utilisera ces informations pour utiliser correctement le <em>tool</em>.
Voyons comment charger un <code>QueryEngineTool</code> en utilisant le <code>QueryEngine</code> que nous avons créé dans la <a href="components">section des <em>components</em></a>.`,he,L,je,F,Ie,z,Ke="La classe <code>AgentWorkflow</code> prend également en charge directement les systèmes multi-agents. En donnant à chaque agent un nom et une description, le système maintient un seul <em>speaker</em> actif, chaque agent ayant la capacité de passer le relais à un autre agent.",ve,N,Oe="En rétrécissant la portée de chaque agent, nous pouvons aider à augmenter leur précision générale lors de la réponse aux messages des utilisateurs.",Ce,P,et="<strong>Les agents dans LlamaIndex peuvent également être directement utilisés comme <em>tools</em></strong> pour d’autres agents, pour des scénarios plus complexes et personnalisés.",xe,D,Be,C,Ge,K,tt="Maintenant que nous comprenons les bases des agents et des <em>tools</em> dans LlamaIndex, voyons comment nous pouvons utiliser LlamaIndex pour <strong>créer des <em>workflows</em> configurables et gérables !</strong>",Ze,O,$e,ne,We;return i=new _e({props:{title:"Utiliser les Agents dans LlamaIndex",local:"utiliser-les-agents-dans-llamaindex",headingTag:"h1"}}),I=new Ve({props:{$$slots:{default:[dt]},$$scope:{ctx:j}}}),W=new _e({props:{title:"Initialiser les Agents",local:"initialiser-les-agents",headingTag:"h2"}}),v=new Ve({props:{$$slots:{default:[Mt]},$$scope:{ctx:j}}}),q=new Qe({props:{code:"ZnJvbSUyMGxsYW1hX2luZGV4LmxsbXMuaHVnZ2luZ2ZhY2VfYXBpJTIwaW1wb3J0JTIwSHVnZ2luZ0ZhY2VJbmZlcmVuY2VBUEklMEFmcm9tJTIwbGxhbWFfaW5kZXguY29yZS5hZ2VudC53b3JrZmxvdyUyMGltcG9ydCUyMEFnZW50V29ya2Zsb3clMEFmcm9tJTIwbGxhbWFfaW5kZXguY29yZS50b29scyUyMGltcG9ydCUyMEZ1bmN0aW9uVG9vbCUwQSUwQSUyMyUyMGRlZmluZSUyMHNhbXBsZSUyMFRvb2wlMjAtLSUyMHR5cGUlMjBhbm5vdGF0aW9ucyUyQyUyMGZ1bmN0aW9uJTIwbmFtZXMlMkMlMjBhbmQlMjBkb2NzdHJpbmdzJTJDJTIwYXJlJTIwYWxsJTIwaW5jbHVkZWQlMjBpbiUyMHBhcnNlZCUyMHNjaGVtYXMhJTBBZGVmJTIwbXVsdGlwbHkoYSUzQSUyMGludCUyQyUyMGIlM0ElMjBpbnQpJTIwLSUzRSUyMGludCUzQSUwQSUyMCUyMCUyMCUyMCUyMiUyMiUyMk11bHRpcGxpZXMlMjB0d28lMjBpbnRlZ2VycyUyMGFuZCUyMHJldHVybnMlMjB0aGUlMjByZXN1bHRpbmclMjBpbnRlZ2VyJTIyJTIyJTIyJTBBJTIwJTIwJTIwJTIwcmV0dXJuJTIwYSUyMColMjBiJTBBJTBBJTIzJTIwaW5pdGlhbGl6ZSUyMGxsbSUwQWxsbSUyMCUzRCUyMEh1Z2dpbmdGYWNlSW5mZXJlbmNlQVBJKG1vZGVsX25hbWUlM0QlMjJRd2VuJTJGUXdlbjIuNS1Db2Rlci0zMkItSW5zdHJ1Y3QlMjIpJTBBJTBBJTIzJTIwaW5pdGlhbGl6ZSUyMGFnZW50JTBBYWdlbnQlMjAlM0QlMjBBZ2VudFdvcmtmbG93LmZyb21fdG9vbHNfb3JfZnVuY3Rpb25zKCUwQSUyMCUyMCUyMCUyMCU1QkZ1bmN0aW9uVG9vbC5mcm9tX2RlZmF1bHRzKG11bHRpcGx5KSU1RCUyQyUwQSUyMCUyMCUyMCUyMGxsbSUzRGxsbSUwQSk=",highlighted:`<span class="hljs-keyword">from</span> llama_index.llms.huggingface_api <span class="hljs-keyword">import</span> HuggingFaceInferenceAPI
<span class="hljs-keyword">from</span> llama_index.core.agent.workflow <span class="hljs-keyword">import</span> AgentWorkflow
<span class="hljs-keyword">from</span> llama_index.core.tools <span class="hljs-keyword">import</span> FunctionTool

<span class="hljs-comment"># define sample Tool -- type annotations, function names, and docstrings, are all included in parsed schemas!</span>
<span class="hljs-keyword">def</span> <span class="hljs-title function_">multiply</span>(<span class="hljs-params">a: <span class="hljs-built_in">int</span>, b: <span class="hljs-built_in">int</span></span>) -&gt; <span class="hljs-built_in">int</span>:
    <span class="hljs-string">&quot;&quot;&quot;Multiplies two integers and returns the resulting integer&quot;&quot;&quot;</span>
    <span class="hljs-keyword">return</span> a * b

<span class="hljs-comment"># initialize llm</span>
llm = HuggingFaceInferenceAPI(model_name=<span class="hljs-string">&quot;Qwen/Qwen2.5-Coder-32B-Instruct&quot;</span>)

<span class="hljs-comment"># initialize agent</span>
agent = AgentWorkflow.from_tools_or_functions(
    [FunctionTool.from_defaults(multiply)],
    llm=llm
)`,wrap:!1}}),A=new Qe({props:{code:"JTIzJTIwc3RhdGVsZXNzJTBBcmVzcG9uc2UlMjAlM0QlMjBhd2FpdCUyMGFnZW50LnJ1biglMjJXaGF0JTIwaXMlMjAyJTIwdGltZXMlMjAyJTNGJTIyKSUwQSUwQSUyMyUyMHJlbWVtYmVyaW5nJTIwc3RhdGUlMEFmcm9tJTIwbGxhbWFfaW5kZXguY29yZS53b3JrZmxvdyUyMGltcG9ydCUyMENvbnRleHQlMEElMEFjdHglMjAlM0QlMjBDb250ZXh0KGFnZW50KSUwQSUwQXJlc3BvbnNlJTIwJTNEJTIwYXdhaXQlMjBhZ2VudC5ydW4oJTIyTXklMjBuYW1lJTIwaXMlMjBCb2IuJTIyJTJDJTIwY3R4JTNEY3R4KSUwQXJlc3BvbnNlJTIwJTNEJTIwYXdhaXQlMjBhZ2VudC5ydW4oJTIyV2hhdCUyMHdhcyUyMG15JTIwbmFtZSUyMGFnYWluJTNGJTIyJTJDJTIwY3R4JTNEY3R4KQ==",highlighted:`<span class="hljs-comment"># stateless</span>
response = <span class="hljs-keyword">await</span> agent.run(<span class="hljs-string">&quot;What is 2 times 2?&quot;</span>)

<span class="hljs-comment"># remembering state</span>
<span class="hljs-keyword">from</span> llama_index.core.workflow <span class="hljs-keyword">import</span> Context

ctx = Context(agent)

response = <span class="hljs-keyword">await</span> agent.run(<span class="hljs-string">&quot;My name is Bob.&quot;</span>, ctx=ctx)
response = <span class="hljs-keyword">await</span> agent.run(<span class="hljs-string">&quot;What was my name again?&quot;</span>, ctx=ctx)`,wrap:!1}}),H=new _e({props:{title:"Créer des Agents  RAG avec des QueryEngineTools",local:"créer-des-agents-rag-avec-des-queryenginetools",headingTag:"h2"}}),L=new Qe({props:{code:"ZnJvbSUyMGxsYW1hX2luZGV4LmNvcmUudG9vbHMlMjBpbXBvcnQlMjBRdWVyeUVuZ2luZVRvb2wlMEElMEFxdWVyeV9lbmdpbmUlMjAlM0QlMjBpbmRleC5hc19xdWVyeV9lbmdpbmUobGxtJTNEbGxtJTJDJTIwc2ltaWxhcml0eV90b3BfayUzRDMpJTIwJTIzJTIwYXMlMjBzaG93biUyMGluJTIwdGhlJTIwQ29tcG9uZW50cyUyMGluJTIwTGxhbWFJbmRleCUyMHNlY3Rpb24lMEElMEFxdWVyeV9lbmdpbmVfdG9vbCUyMCUzRCUyMFF1ZXJ5RW5naW5lVG9vbC5mcm9tX2RlZmF1bHRzKCUwQSUyMCUyMCUyMCUyMHF1ZXJ5X2VuZ2luZSUzRHF1ZXJ5X2VuZ2luZSUyQyUwQSUyMCUyMCUyMCUyMG5hbWUlM0QlMjJuYW1lJTIyJTJDJTBBJTIwJTIwJTIwJTIwZGVzY3JpcHRpb24lM0QlMjJhJTIwc3BlY2lmaWMlMjBkZXNjcmlwdGlvbiUyMiUyQyUwQSUyMCUyMCUyMCUyMHJldHVybl9kaXJlY3QlM0RGYWxzZSUyQyUwQSklMEFxdWVyeV9lbmdpbmVfYWdlbnQlMjAlM0QlMjBBZ2VudFdvcmtmbG93LmZyb21fdG9vbHNfb3JfZnVuY3Rpb25zKCUwQSUyMCUyMCUyMCUyMCU1QnF1ZXJ5X2VuZ2luZV90b29sJTVEJTJDJTBBJTIwJTIwJTIwJTIwbGxtJTNEbGxtJTJDJTBBJTIwJTIwJTIwJTIwc3lzdGVtX3Byb21wdCUzRCUyMllvdSUyMGFyZSUyMGElMjBoZWxwZnVsJTIwYXNzaXN0YW50JTIwdGhhdCUyMGhhcyUyMGFjY2VzcyUyMHRvJTIwYSUyMGRhdGFiYXNlJTIwY29udGFpbmluZyUyMHBlcnNvbmElMjBkZXNjcmlwdGlvbnMuJTIwJTIyJTBBKQ==",highlighted:`<span class="hljs-keyword">from</span> llama_index.core.tools <span class="hljs-keyword">import</span> QueryEngineTool

query_engine = index.as_query_engine(llm=llm, similarity_top_k=<span class="hljs-number">3</span>) <span class="hljs-comment"># as shown in the Components in LlamaIndex section</span>

query_engine_tool = QueryEngineTool.from_defaults(
    query_engine=query_engine,
    name=<span class="hljs-string">&quot;name&quot;</span>,
    description=<span class="hljs-string">&quot;a specific description&quot;</span>,
    return_direct=<span class="hljs-literal">False</span>,
)
query_engine_agent = AgentWorkflow.from_tools_or_functions(
    [query_engine_tool],
    llm=llm,
    system_prompt=<span class="hljs-string">&quot;You are a helpful assistant that has access to a database containing persona descriptions. &quot;</span>
)`,wrap:!1}}),F=new _e({props:{title:"Créer des systèmes multi-agents",local:"créer-des-systèmes-multi-agents",headingTag:"h2"}}),D=new Qe({props:{code:"ZnJvbSUyMGxsYW1hX2luZGV4LmNvcmUuYWdlbnQud29ya2Zsb3clMjBpbXBvcnQlMjAoJTBBJTIwJTIwJTIwJTIwQWdlbnRXb3JrZmxvdyUyQyUwQSUyMCUyMCUyMCUyMEZ1bmN0aW9uQWdlbnQlMkMlMEElMjAlMjAlMjAlMjBSZUFjdEFnZW50JTJDJTBBKSUwQSUwQSUyMyUyMERlZmluZSUyMHNvbWUlMjB0b29scyUwQWRlZiUyMGFkZChhJTNBJTIwaW50JTJDJTIwYiUzQSUyMGludCklMjAtJTNFJTIwaW50JTNBJTBBJTIwJTIwJTIwJTIwJTIyJTIyJTIyQWRkJTIwdHdvJTIwbnVtYmVycy4lMjIlMjIlMjIlMEElMjAlMjAlMjAlMjByZXR1cm4lMjBhJTIwJTJCJTIwYiUwQSUwQSUwQWRlZiUyMHN1YnRyYWN0KGElM0ElMjBpbnQlMkMlMjBiJTNBJTIwaW50KSUyMC0lM0UlMjBpbnQlM0ElMEElMjAlMjAlMjAlMjAlMjIlMjIlMjJTdWJ0cmFjdCUyMHR3byUyMG51bWJlcnMuJTIyJTIyJTIyJTBBJTIwJTIwJTIwJTIwcmV0dXJuJTIwYSUyMC0lMjBiJTBBJTBBJTBBJTIzJTIwQ3JlYXRlJTIwYWdlbnQlMjBjb25maWdzJTBBJTIzJTIwTk9URSUzQSUyMHdlJTIwY2FuJTIwdXNlJTIwRnVuY3Rpb25BZ2VudCUyMG9yJTIwUmVBY3RBZ2VudCUyMGhlcmUuJTBBJTIzJTIwRnVuY3Rpb25BZ2VudCUyMHdvcmtzJTIwZm9yJTIwTExNcyUyMHdpdGglMjBhJTIwZnVuY3Rpb24lMjBjYWxsaW5nJTIwQVBJLiUwQSUyMyUyMFJlQWN0QWdlbnQlMjB3b3JrcyUyMGZvciUyMGFueSUyMExMTS4lMEFjYWxjdWxhdG9yX2FnZW50JTIwJTNEJTIwUmVBY3RBZ2VudCglMEElMjAlMjAlMjAlMjBuYW1lJTNEJTIyY2FsY3VsYXRvciUyMiUyQyUwQSUyMCUyMCUyMCUyMGRlc2NyaXB0aW9uJTNEJTIyUGVyZm9ybXMlMjBiYXNpYyUyMGFyaXRobWV0aWMlMjBvcGVyYXRpb25zJTIyJTJDJTBBJTIwJTIwJTIwJTIwc3lzdGVtX3Byb21wdCUzRCUyMllvdSUyMGFyZSUyMGElMjBjYWxjdWxhdG9yJTIwYXNzaXN0YW50LiUyMFVzZSUyMHlvdXIlMjB0b29scyUyMGZvciUyMGFueSUyMG1hdGglMjBvcGVyYXRpb24uJTIyJTJDJTBBJTIwJTIwJTIwJTIwdG9vbHMlM0QlNUJhZGQlMkMlMjBzdWJ0cmFjdCU1RCUyQyUwQSUyMCUyMCUyMCUyMGxsbSUzRGxsbSUyQyUwQSklMEElMEFxdWVyeV9hZ2VudCUyMCUzRCUyMFJlQWN0QWdlbnQoJTBBJTIwJTIwJTIwJTIwbmFtZSUzRCUyMmluZm9fbG9va3VwJTIyJTJDJTBBJTIwJTIwJTIwJTIwZGVzY3JpcHRpb24lM0QlMjJMb29rcyUyMHVwJTIwaW5mb3JtYXRpb24lMjBhYm91dCUyMFhZWiUyMiUyQyUwQSUyMCUyMCUyMCUyMHN5c3RlbV9wcm9tcHQlM0QlMjJVc2UlMjB5b3VyJTIwdG9vbCUyMHRvJTIwcXVlcnklMjBhJTIwUkFHJTIwc3lzdGVtJTIwdG8lMjBhbnN3ZXIlMjBpbmZvcm1hdGlvbiUyMGFib3V0JTIwWFlaJTIyJTJDJTBBJTIwJTIwJTIwJTIwdG9vbHMlM0QlNUJxdWVyeV9lbmdpbmVfdG9vbCU1RCUyQyUwQSUyMCUyMCUyMCUyMGxsbSUzRGxsbSUwQSklMEElMEElMjMlMjBDcmVhdGUlMjBhbmQlMjBydW4lMjB0aGUlMjB3b3JrZmxvdyUwQWFnZW50JTIwJTNEJTIwQWdlbnRXb3JrZmxvdyglMEElMjAlMjAlMjAlMjBhZ2VudHMlM0QlNUJjYWxjdWxhdG9yX2FnZW50JTJDJTIwcXVlcnlfYWdlbnQlNUQlMkMlMjByb290X2FnZW50JTNEJTIyY2FsY3VsYXRvciUyMiUwQSklMEElMEElMjMlMjBSdW4lMjB0aGUlMjBzeXN0ZW0lMEFyZXNwb25zZSUyMCUzRCUyMGF3YWl0JTIwYWdlbnQucnVuKHVzZXJfbXNnJTNEJTIyQ2FuJTIweW91JTIwYWRkJTIwNSUyMGFuZCUyMDMlM0YlMjIp",highlighted:`<span class="hljs-keyword">from</span> llama_index.core.agent.workflow <span class="hljs-keyword">import</span> (
    AgentWorkflow,
    FunctionAgent,
    ReActAgent,
)

<span class="hljs-comment"># Define some tools</span>
<span class="hljs-keyword">def</span> <span class="hljs-title function_">add</span>(<span class="hljs-params">a: <span class="hljs-built_in">int</span>, b: <span class="hljs-built_in">int</span></span>) -&gt; <span class="hljs-built_in">int</span>:
    <span class="hljs-string">&quot;&quot;&quot;Add two numbers.&quot;&quot;&quot;</span>
    <span class="hljs-keyword">return</span> a + b


<span class="hljs-keyword">def</span> <span class="hljs-title function_">subtract</span>(<span class="hljs-params">a: <span class="hljs-built_in">int</span>, b: <span class="hljs-built_in">int</span></span>) -&gt; <span class="hljs-built_in">int</span>:
    <span class="hljs-string">&quot;&quot;&quot;Subtract two numbers.&quot;&quot;&quot;</span>
    <span class="hljs-keyword">return</span> a - b


<span class="hljs-comment"># Create agent configs</span>
<span class="hljs-comment"># <span class="hljs-doctag">NOTE:</span> we can use FunctionAgent or ReActAgent here.</span>
<span class="hljs-comment"># FunctionAgent works for LLMs with a function calling API.</span>
<span class="hljs-comment"># ReActAgent works for any LLM.</span>
calculator_agent = ReActAgent(
    name=<span class="hljs-string">&quot;calculator&quot;</span>,
    description=<span class="hljs-string">&quot;Performs basic arithmetic operations&quot;</span>,
    system_prompt=<span class="hljs-string">&quot;You are a calculator assistant. Use your tools for any math operation.&quot;</span>,
    tools=[add, subtract],
    llm=llm,
)

query_agent = ReActAgent(
    name=<span class="hljs-string">&quot;info_lookup&quot;</span>,
    description=<span class="hljs-string">&quot;Looks up information about XYZ&quot;</span>,
    system_prompt=<span class="hljs-string">&quot;Use your tool to query a RAG system to answer information about XYZ&quot;</span>,
    tools=[query_engine_tool],
    llm=llm
)

<span class="hljs-comment"># Create and run the workflow</span>
agent = AgentWorkflow(
    agents=[calculator_agent, query_agent], root_agent=<span class="hljs-string">&quot;calculator&quot;</span>
)

<span class="hljs-comment"># Run the system</span>
response = <span class="hljs-keyword">await</span> agent.run(user_msg=<span class="hljs-string">&quot;Can you add 5 and 3?&quot;</span>)`,wrap:!1}}),C=new Ve({props:{$$slots:{default:[yt]},$$scope:{ctx:j}}}),O=new ct({props:{source:"https://github.com/huggingface/agents-course/blob/main/units/fr/unit2/llama-index/agents.mdx"}}),{c(){m=u("meta"),o=l(),M=u("p"),c=l(),J(i.$$.fragment),g=l(),y=u("p"),y.innerHTML=d,h=l(),x=u("p"),x.textContent=Re,le=l(),B=u("blockquote"),B.innerHTML=Ae,ae=l(),G=u("p"),G.innerHTML=Se,oe=l(),Z=u("p"),Z.innerHTML=ke,ie=l(),$=u("ol"),$.innerHTML=He,ue=l(),J(I.$$.fragment),re=l(),J(W.$$.fragment),me=l(),J(v.$$.fragment),pe=l(),Q=u("p"),Q.innerHTML=Ye,ce=l(),_=u("p"),_.innerHTML=Ee,de=l(),V=u("p"),V.innerHTML=Xe,Me=l(),J(q.$$.fragment),ye=l(),R=u("p"),R.innerHTML=Le,Je=l(),J(A.$$.fragment),Te=l(),S=u("p"),S.innerHTML=Fe,we=l(),k=u("p"),k.innerHTML=ze,be=l(),J(H.$$.fragment),Ue=l(),Y=u("p"),Y.innerHTML=Ne,fe=l(),E=u("p"),E.innerHTML=Pe,ge=l(),X=u("p"),X.innerHTML=De,he=l(),J(L.$$.fragment),je=l(),J(F.$$.fragment),Ie=l(),z=u("p"),z.innerHTML=Ke,ve=l(),N=u("p"),N.textContent=Oe,Ce=l(),P=u("p"),P.innerHTML=et,xe=l(),J(D.$$.fragment),Be=l(),J(C.$$.fragment),Ge=l(),K=u("p"),K.innerHTML=tt,Ze=l(),J(O.$$.fragment),$e=l(),ne=u("p"),this.h()},l(e){const t=mt("svelte-u9bgzb",document.head);m=r(t,"META",{name:!0,content:!0}),t.forEach(s),o=a(e),M=r(e,"P",{}),at(M).forEach(s),c=a(e),T(i.$$.fragment,e),g=a(e),y=r(e,"P",{"data-svelte-h":!0}),p(y)!=="svelte-uwx65j"&&(y.innerHTML=d),h=a(e),x=r(e,"P",{"data-svelte-h":!0}),p(x)!=="svelte-1fd5mom"&&(x.textContent=Re),le=a(e),B=r(e,"BLOCKQUOTE",{"data-svelte-h":!0}),p(B)!=="svelte-zozr6"&&(B.innerHTML=Ae),ae=a(e),G=r(e,"P",{"data-svelte-h":!0}),p(G)!=="svelte-1nfteeg"&&(G.innerHTML=Se),oe=a(e),Z=r(e,"P",{"data-svelte-h":!0}),p(Z)!=="svelte-14dee9q"&&(Z.innerHTML=ke),ie=a(e),$=r(e,"OL",{"data-svelte-h":!0}),p($)!=="svelte-1omj1a9"&&($.innerHTML=He),ue=a(e),T(I.$$.fragment,e),re=a(e),T(W.$$.fragment,e),me=a(e),T(v.$$.fragment,e),pe=a(e),Q=r(e,"P",{"data-svelte-h":!0}),p(Q)!=="svelte-1sv4blb"&&(Q.innerHTML=Ye),ce=a(e),_=r(e,"P",{"data-svelte-h":!0}),p(_)!=="svelte-mjf8rl"&&(_.innerHTML=Ee),de=a(e),V=r(e,"P",{"data-svelte-h":!0}),p(V)!=="svelte-es0nc0"&&(V.innerHTML=Xe),Me=a(e),T(q.$$.fragment,e),ye=a(e),R=r(e,"P",{"data-svelte-h":!0}),p(R)!=="svelte-15apya7"&&(R.innerHTML=Le),Je=a(e),T(A.$$.fragment,e),Te=a(e),S=r(e,"P",{"data-svelte-h":!0}),p(S)!=="svelte-159r3wd"&&(S.innerHTML=Fe),we=a(e),k=r(e,"P",{"data-svelte-h":!0}),p(k)!=="svelte-776x7f"&&(k.innerHTML=ze),be=a(e),T(H.$$.fragment,e),Ue=a(e),Y=r(e,"P",{"data-svelte-h":!0}),p(Y)!=="svelte-zd7ayi"&&(Y.innerHTML=Ne),fe=a(e),E=r(e,"P",{"data-svelte-h":!0}),p(E)!=="svelte-1srircl"&&(E.innerHTML=Pe),ge=a(e),X=r(e,"P",{"data-svelte-h":!0}),p(X)!=="svelte-63slch"&&(X.innerHTML=De),he=a(e),T(L.$$.fragment,e),je=a(e),T(F.$$.fragment,e),Ie=a(e),z=r(e,"P",{"data-svelte-h":!0}),p(z)!=="svelte-6ofe03"&&(z.innerHTML=Ke),ve=a(e),N=r(e,"P",{"data-svelte-h":!0}),p(N)!=="svelte-simftk"&&(N.textContent=Oe),Ce=a(e),P=r(e,"P",{"data-svelte-h":!0}),p(P)!=="svelte-1lfix9a"&&(P.innerHTML=et),xe=a(e),T(D.$$.fragment,e),Be=a(e),T(C.$$.fragment,e),Ge=a(e),K=r(e,"P",{"data-svelte-h":!0}),p(K)!=="svelte-1npensp"&&(K.innerHTML=tt),Ze=a(e),T(O.$$.fragment,e),$e=a(e),ne=r(e,"P",{}),at(ne).forEach(s),this.h()},h(){ee(m,"name","hf:doc:metadata"),ee(m,"content",Tt)},m(e,t){pt(document.head,m),n(e,o,t),n(e,M,t),n(e,c,t),w(i,e,t),n(e,g,t),n(e,y,t),n(e,h,t),n(e,x,t),n(e,le,t),n(e,B,t),n(e,ae,t),n(e,G,t),n(e,oe,t),n(e,Z,t),n(e,ie,t),n(e,$,t),n(e,ue,t),w(I,e,t),n(e,re,t),w(W,e,t),n(e,me,t),w(v,e,t),n(e,pe,t),n(e,Q,t),n(e,ce,t),n(e,_,t),n(e,de,t),n(e,V,t),n(e,Me,t),w(q,e,t),n(e,ye,t),n(e,R,t),n(e,Je,t),w(A,e,t),n(e,Te,t),n(e,S,t),n(e,we,t),n(e,k,t),n(e,be,t),w(H,e,t),n(e,Ue,t),n(e,Y,t),n(e,fe,t),n(e,E,t),n(e,ge,t),n(e,X,t),n(e,he,t),w(L,e,t),n(e,je,t),w(F,e,t),n(e,Ie,t),n(e,z,t),n(e,ve,t),n(e,N,t),n(e,Ce,t),n(e,P,t),n(e,xe,t),w(D,e,t),n(e,Be,t),w(C,e,t),n(e,Ge,t),n(e,K,t),n(e,Ze,t),w(O,e,t),n(e,$e,t),n(e,ne,t),We=!0},p(e,[t]){const st={};t&2&&(st.$$scope={dirty:t,ctx:e}),I.$set(st);const nt={};t&2&&(nt.$$scope={dirty:t,ctx:e}),v.$set(nt);const lt={};t&2&&(lt.$$scope={dirty:t,ctx:e}),C.$set(lt)},i(e){We||(b(i.$$.fragment,e),b(I.$$.fragment,e),b(W.$$.fragment,e),b(v.$$.fragment,e),b(q.$$.fragment,e),b(A.$$.fragment,e),b(H.$$.fragment,e),b(L.$$.fragment,e),b(F.$$.fragment,e),b(D.$$.fragment,e),b(C.$$.fragment,e),b(O.$$.fragment,e),We=!0)},o(e){U(i.$$.fragment,e),U(I.$$.fragment,e),U(W.$$.fragment,e),U(v.$$.fragment,e),U(q.$$.fragment,e),U(A.$$.fragment,e),U(H.$$.fragment,e),U(L.$$.fragment,e),U(F.$$.fragment,e),U(D.$$.fragment,e),U(C.$$.fragment,e),U(O.$$.fragment,e),We=!1},d(e){e&&(s(o),s(M),s(c),s(g),s(y),s(h),s(x),s(le),s(B),s(ae),s(G),s(oe),s(Z),s(ie),s($),s(ue),s(re),s(me),s(pe),s(Q),s(ce),s(_),s(de),s(V),s(Me),s(ye),s(R),s(Je),s(Te),s(S),s(we),s(k),s(be),s(Ue),s(Y),s(fe),s(E),s(ge),s(X),s(he),s(je),s(Ie),s(z),s(ve),s(N),s(Ce),s(P),s(xe),s(Be),s(Ge),s(K),s(Ze),s($e),s(ne)),s(m),f(i,e),f(I,e),f(W,e),f(v,e),f(q,e),f(A,e),f(H,e),f(L,e),f(F,e),f(D,e),f(C,e),f(O,e)}}}const Tt='{"title":"Utiliser les Agents dans LlamaIndex","local":"utiliser-les-agents-dans-llamaindex","sections":[{"title":"Initialiser les Agents","local":"initialiser-les-agents","sections":[],"depth":2},{"title":"Créer des Agents  RAG avec des QueryEngineTools","local":"créer-des-agents-rag-avec-des-queryenginetools","sections":[],"depth":2},{"title":"Créer des systèmes multi-agents","local":"créer-des-systèmes-multi-agents","sections":[],"depth":2}],"depth":1}';function wt(j){return it(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class It extends ut{constructor(m){super(),rt(this,m,wt,Jt,ot,{})}}export{It as component};
