import{s as it,o as ot,n as Ee}from"../chunks/scheduler.37c15a92.js";import{S as ut,i as rt,g as u,s as a,r as j,A as pt,h as r,f as s,c as i,j as at,u as U,x as c,k as ne,y as ct,a as l,v as w,d as f,t as g,w as v,m as G,n as W}from"../chunks/index.2bf4358c.js";import{T as qe}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 Mt}from"../chunks/getInferenceSnippets.54ddb825.js";function mt(I){let p,o,y="<i>BaseWorkflowAgent</i>",m;return{c(){p=G("Trouvez plus d'informations sur les agents avancés sur "),o=u("a"),o.innerHTML=y,m=G("."),this.h()},l(n){p=W(n,"Trouvez plus d'informations sur les agents avancés sur "),o=r(n,"A",{href:!0,"data-svelte-h":!0}),c(o)!=="svelte-1ixmc8t"&&(o.innerHTML=y),m=W(n,"."),this.h()},h(){ne(o,"href","https://github.com/run-llama/llama_index/blob/main/llama-index-core/llama_index/core/agent/workflow/base_agent.py")},m(n,d){l(n,p,d),l(n,o,d),l(n,m,d)},p:Ee,d(n){n&&(s(p),s(o),s(m))}}}function dt(I){let p,o,y="ce <i>notebook</i>",m;return{c(){p=G("Vous pouvez suivre le code dans "),o=u("a"),o.innerHTML=y,m=G(" que vous pouvez exécuter avec Google Colab."),this.h()},l(n){p=W(n,"Vous pouvez suivre le code dans "),o=r(n,"A",{href:!0,target:!0,"data-svelte-h":!0}),c(o)!=="svelte-rvoxze"&&(o.innerHTML=y),m=W(n," que vous pouvez exécuter avec Google Colab."),this.h()},h(){ne(o,"href","https://huggingface.co/agents-course/notebooks/blob/main/fr/unit2/llama-index/agents.ipynb"),ne(o,"target","_blank")},m(n,d){l(n,p,d),l(n,o,d),l(n,m,d)},p:Ee,d(n){n&&(s(p),s(o),s(m))}}}function yt(I){let p,o,y="Introduction de base à <i>AgentWorkflow</i>",m,n,d="Guide d'apprentissage sur les agents",b,h,Z="streaming",T;return{c(){p=G("Vous n'avez pas encore assez appris ? Il y a beaucoup plus à découvrir sur les agents et les outils dans LlamaIndex dans l'"),o=u("a"),o.innerHTML=y,m=G(" ou le "),n=u("a"),n.textContent=d,b=G(", où vous pouvez lire plus sur le "),h=u("i"),h.textContent=Z,T=G(", la sérialisation de contexte, et l'humain dans la boucle !"),this.h()},l(M){p=W(M,"Vous n'avez pas encore assez appris ? Il y a beaucoup plus à découvrir sur les agents et les outils dans LlamaIndex dans l'"),o=r(M,"A",{href:!0,"data-svelte-h":!0}),c(o)!=="svelte-1f2bgk4"&&(o.innerHTML=y),m=W(M," ou le "),n=r(M,"A",{href:!0,"data-svelte-h":!0}),c(n)!=="svelte-365wn2"&&(n.textContent=d),b=W(M,", où vous pouvez lire plus sur le "),h=r(M,"I",{"data-svelte-h":!0}),c(h)!=="svelte-fu8wv2"&&(h.textContent=Z),T=W(M,", la sérialisation de contexte, et l'humain dans la boucle !"),this.h()},h(){ne(o,"href","https://docs.llamaindex.ai/en/stable/examples/agent/agent_workflow_basic/"),ne(n,"href","https://docs.llamaindex.ai/en/stable/understanding/agent/")},m(M,J){l(M,p,J),l(M,o,J),l(M,m,J),l(M,n,J),l(M,b,J),l(M,h,J),l(M,T,J)},p:Ee,d(M){M&&(s(p),s(o),s(m),s(n),s(b),s(h),s(T))}}}function bt(I){let p,o,y,m,n,d,b,h=`Vous vous souvenez d’Alfred, notre agent majordome serviable d’avant ? Eh bien, il va recevoir une mise à niveau !
Maintenant que nous comprenons les outils disponibles dans LlamaIndex, nous pouvons lui donner de nouvelles capacités pour mieux nous servir.`,Z,T,M=`Mais avant de continuer, rappelons-nous ce qui fait fonctionner un agent comme Alfred.
Dans l’Unité 1, nous avons appris que :`,J,V,Ae="<p>Un agent est un système qui exploite un modèle d’IA 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 outils externes) pour accomplir des tâches.</p>",ie,$,Re="LlamaIndex prend en charge <strong>trois types principaux d’agents avec raisonnement</strong> :",oe,Q,ke='<img src="https://huggingface.co/datasets/agents-course/course-images/resolve/main/en/unit2/llama-index/agents.png" alt="Agents"/>',ue,_,ze="<li><code>Function Calling Agents</code> : Ceux-ci fonctionnent avec des modèles qui peuvent appeler des fonctions spécifiques.</li> <li><code>ReAct Agents</code> : Ceux-ci peuvent fonctionner avec n’importe quel modèle 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>",re,B,pe,q,ce,C,Me,E,He=`Pour créer un agent, nous commençons par lui fournir un <strong>ensemble de fonctions/outils qui définissent ses capacités</strong>.
Regardons comment créer un agent avec quelques outils 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 ReAct standard.`,me,A,Le="Les LLM prennant en charge une API outils/fonctions sont relativement nouveaux, mais ils fournissent un moyen puissant d’appeler des outils en évitant de devoir utiliser un <em>prompt</em> spécifique et permettant au LLM de créer des appels d’outils basés sur des schémas fournis.",de,R,Xe="Les agents ReAct sont également bons pour les tâches de raisonnement complexes et peuvent fonctionner avec n’importe quel LLM qui a des capacités de chat ou de complétion de texte. Ils sont plus verbeux et montrent le raisonnement derrière certaines actions qu’ils prennent.",ye,k,be,z,Ye=`<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.`,Te,H,Je,L,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 débuté avec le code asynchrone en Python, ou avez besoin d’un rappel, LlamaIndex dispose d’un <a href="https://docs.llamaindex.ai/en/stable/getting_started/async_python/" rel="nofollow">excellent guide sur le sujet</a>.',je,X,Se="Maintenant que nous avons les bases, jetons un coup d’œil à comment nous pouvons utiliser des outils plus complexes dans nos agents.",Ue,Y,we,F,Ne=`<strong>Le RAG agentique est un moyen puissant d’utiliser des agents pour répondre à des questions sur vos données.</strong> Nous pouvons passer divers outils à 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 outil ou flux pour répondre à la question.`,fe,S,Pe='<img src="https://huggingface.co/datasets/agents-course/course-images/resolve/main/en/unit2/llama-index/agentic-rag.png" alt="Agentic RAG"/>',ge,N,De=`Il est facile d’<strong>envelopper <code>QueryEngine</code> comme un outil</strong> pour un agent.
Ce faisant, nous devons <strong>définir un nom et une description</strong>. Le LLM utilisera ces informations pour utiliser correctement l’outil.
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>.`,ve,P,he,D,Ie,O,Oe="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 orateur actif, chaque agent ayant la capacité de passer le relais à un autre agent.",Be,K,Ke="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,ee,et="<strong>Les agents dans LlamaIndex peuvent également être directement utilisés comme outils</strong> pour d’autres agents, pour des scénarios plus complexes et personnalisés.",xe,te,Ge,x,We,se,tt="Maintenant que nous comprenons les bases des agents et des outils dans LlamaIndex, voyons comment nous pouvons utiliser LlamaIndex pour <strong>créer des <em>workflows</em> configurables et gérables !</strong>",Ze,le,Ve,ae,$e;return n=new _e({props:{title:"Utiliser les agents dans LlamaIndex",local:"utiliser-les-agents-dans-llamaindex",headingTag:"h1"}}),B=new qe({props:{$$slots:{default:[mt]},$$scope:{ctx:I}}}),q=new _e({props:{title:"Initialiser les agents",local:"initialiser-les-agents",headingTag:"h2"}}),C=new qe({props:{$$slots:{default:[dt]},$$scope:{ctx:I}}}),k=new Qe({props:{code:"ZnJvbSUyMGxsYW1hX2luZGV4LmxsbXMuaHVnZ2luZ2ZhY2VfYXBpJTIwaW1wb3J0JTIwSHVnZ2luZ0ZhY2VJbmZlcmVuY2VBUEklMEFmcm9tJTIwbGxhbWFfaW5kZXguY29yZS5hZ2VudC53b3JrZmxvdyUyMGltcG9ydCUyMEFnZW50V29ya2Zsb3clMEFmcm9tJTIwbGxhbWFfaW5kZXguY29yZS50b29scyUyMGltcG9ydCUyMEZ1bmN0aW9uVG9vbCUwQSUwQSUyMyUyMGRlZmluZSUyMGV4YW1wbGUlMjBkZSUyMFRvb2wlMjAtLSUyMHR5cGUlMjBhbm5vdGF0aW9ucyUyQyUyMG5vbXMlMjBkZSUyMGZvbmN0aW9ucyUyQyUyMGV0JTIwZG9jc3RyaW5ncyUyQyUyMHNvbnQlMjB0b3VzJTIwaW5jbHVzJTIwZGFucyUyMGxlcyUyMHNjaCVDMyVBOW1hcyUyMGFuYWx5cyVDMyVBOXMlMjAhJTBBZGVmJTIwbXVsdGlwbHkoYSUzQSUyMGludCUyQyUyMGIlM0ElMjBpbnQpJTIwLSUzRSUyMGludCUzQSUwQSUyMCUyMCUyMCUyMCUyMiUyMiUyMk11bHRpcGxpZXMlMjB0d28lMjBpbnRlZ2VycyUyMGFuZCUyMHJldHVybnMlMjB0aGUlMjByZXN1bHRpbmclMjBpbnRlZ2VyJTIyJTIyJTIyJTBBJTIwJTIwJTIwJTIwcmV0dXJuJTIwYSUyMColMjBiJTBBJTBBJTIzJTIwaW5pdGlhbGlzYXRpb24lMjBkdSUyMGxsbSUwQWxsbSUyMCUzRCUyMEh1Z2dpbmdGYWNlSW5mZXJlbmNlQVBJKG1vZGVsX25hbWUlM0QlMjJRd2VuJTJGUXdlbjIuNS1Db2Rlci0zMkItSW5zdHJ1Y3QlMjIpJTBBJTBBJTIzJTIwaW5pdGlhbGlzYXRpb24lMjBkZSUyMGwnYWdlbnQlMEFhZ2VudCUyMCUzRCUyMEFnZW50V29ya2Zsb3cuZnJvbV90b29sc19vcl9mdW5jdGlvbnMoJTBBJTIwJTIwJTIwJTIwJTVCRnVuY3Rpb25Ub29sLmZyb21fZGVmYXVsdHMobXVsdGlwbHkpJTVEJTJDJTBBJTIwJTIwJTIwJTIwbGxtJTNEbGxtJTBBKQ==",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 example de Tool -- type annotations, noms de fonctions, et docstrings, sont tous inclus dans les schémas analysés !</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"># initialisation du llm</span>
llm = HuggingFaceInferenceAPI(model_name=<span class="hljs-string">&quot;Qwen/Qwen2.5-Coder-32B-Instruct&quot;</span>)

<span class="hljs-comment"># initialisation de l&#x27;agent</span>
agent = AgentWorkflow.from_tools_or_functions(
    [FunctionTool.from_defaults(multiply)],
    llm=llm
)`,wrap:!1}}),H=new Qe({props:{code:"JTIzJTIwc2FucyUyMCVDMyVBOXRhdCUwQXJlc3BvbnNlJTIwJTNEJTIwYXdhaXQlMjBhZ2VudC5ydW4oJTIyV2hhdCUyMGlzJTIwMiUyMHRpbWVzJTIwMiUzRiUyMiklMEElMEElMjMlMjBzZSUyMHNvdXZlbmlyJTIwZGUlMjBsJyVDMyVBOXRhdCUwQWZyb20lMjBsbGFtYV9pbmRleC5jb3JlLndvcmtmbG93JTIwaW1wb3J0JTIwQ29udGV4dCUwQSUwQWN0eCUyMCUzRCUyMENvbnRleHQoYWdlbnQpJTBBJTBBcmVzcG9uc2UlMjAlM0QlMjBhd2FpdCUyMGFnZW50LnJ1biglMjJNeSUyMG5hbWUlMjBpcyUyMEJvYi4lMjIlMkMlMjBjdHglM0RjdHgpJTBBcmVzcG9uc2UlMjAlM0QlMjBhd2FpdCUyMGFnZW50LnJ1biglMjJXaGF0JTIwd2FzJTIwbXklMjBuYW1lJTIwYWdhaW4lM0YlMjIlMkMlMjBjdHglM0RjdHgp",highlighted:`<span class="hljs-comment"># sans état</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"># se souvenir de l&#x27;état</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}}),Y=new _e({props:{title:"Créer des agents de RAG avec des QueryEngineTools",local:"créer-des-agents-de-rag-avec-des-queryenginetools",headingTag:"h2"}}),P=new Qe({props:{code:"ZnJvbSUyMGxsYW1hX2luZGV4LmNvcmUudG9vbHMlMjBpbXBvcnQlMjBRdWVyeUVuZ2luZVRvb2wlMEElMEFxdWVyeV9lbmdpbmUlMjAlM0QlMjBpbmRleC5hc19xdWVyeV9lbmdpbmUobGxtJTNEbGxtJTJDJTIwc2ltaWxhcml0eV90b3BfayUzRDMpJTIwJTIzJTIwY29tbWUlMjBpbmRpcXUlQzMlQTklMjBkYW5zJTIwbGElMjBzZWN0aW9uJTIwQ29tcG9zYW50cyUyMGRlJTIwTGxhbWFJbmRleCUwQSUwQXF1ZXJ5X2VuZ2luZV90b29sJTIwJTNEJTIwUXVlcnlFbmdpbmVUb29sLmZyb21fZGVmYXVsdHMoJTBBJTIwJTIwJTIwJTIwcXVlcnlfZW5naW5lJTNEcXVlcnlfZW5naW5lJTJDJTBBJTIwJTIwJTIwJTIwbmFtZSUzRCUyMm5hbWUlMjIlMkMlMEElMjAlMjAlMjAlMjBkZXNjcmlwdGlvbiUzRCUyMmElMjBzcGVjaWZpYyUyMGRlc2NyaXB0aW9uJTIyJTJDJTBBJTIwJTIwJTIwJTIwcmV0dXJuX2RpcmVjdCUzREZhbHNlJTJDJTBBKSUwQXF1ZXJ5X2VuZ2luZV9hZ2VudCUyMCUzRCUyMEFnZW50V29ya2Zsb3cuZnJvbV90b29sc19vcl9mdW5jdGlvbnMoJTBBJTIwJTIwJTIwJTIwJTVCcXVlcnlfZW5naW5lX3Rvb2wlNUQlMkMlMEElMjAlMjAlMjAlMjBsbG0lM0RsbG0lMkMlMEElMjAlMjAlMjAlMjBzeXN0ZW1fcHJvbXB0JTNEJTIyWW91JTIwYXJlJTIwYSUyMGhlbHBmdWwlMjBhc3Npc3RhbnQlMjB0aGF0JTIwaGFzJTIwYWNjZXNzJTIwdG8lMjBhJTIwZGF0YWJhc2UlMjBjb250YWluaW5nJTIwcGVyc29uYSUyMGRlc2NyaXB0aW9ucy4lMjIlMEEp",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"># comme indiqué dans la section Composants de LlamaIndex</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}}),D=new _e({props:{title:"Créer des systèmes multi-agents",local:"créer-des-systèmes-multi-agents",headingTag:"h2"}}),te=new Qe({props:{code:"ZnJvbSUyMGxsYW1hX2luZGV4LmNvcmUuYWdlbnQud29ya2Zsb3clMjBpbXBvcnQlMjAoJTBBJTIwJTIwJTIwJTIwQWdlbnRXb3JrZmxvdyUyQyUwQSUyMCUyMCUyMCUyMEZ1bmN0aW9uQWdlbnQlMkMlMEElMjAlMjAlMjAlMjBSZUFjdEFnZW50JTJDJTBBKSUwQSUwQSUyMyUyMEQlQzMlQTlmaW5pciUyMHF1ZWxxdWVzJTIwb3V0aWxzJTBBZGVmJTIwYWRkKGElM0ElMjBpbnQlMkMlMjBiJTNBJTIwaW50KSUyMC0lM0UlMjBpbnQlM0ElMEElMjAlMjAlMjAlMjAlMjIlMjIlMjJBZGQlMjB0d28lMjBudW1iZXJzLiUyMiUyMiUyMiUwQSUyMCUyMCUyMCUyMHJldHVybiUyMGElMjAlMkIlMjBiJTBBJTBBJTBBZGVmJTIwc3VidHJhY3QoYSUzQSUyMGludCUyQyUyMGIlM0ElMjBpbnQpJTIwLSUzRSUyMGludCUzQSUwQSUyMCUyMCUyMCUyMCUyMiUyMiUyMlN1YnRyYWN0JTIwdHdvJTIwbnVtYmVycy4lMjIlMjIlMjIlMEElMjAlMjAlMjAlMjByZXR1cm4lMjBhJTIwLSUyMGIlMEElMEElMEElMjMlMjBDciVDMyVBOWVyJTIwbGVzJTIwY29uZmlndXJhdGlvbnMlMjBkZSUyMGwnYWdlbnQlMEElMjMlMjBOT1RFJTIwJTNBJTIwbm91cyUyMHBvdXZvbnMlMjB1dGlsaXNlciUyMEZ1bmN0aW9uQWdlbnQlMjBvdSUyMFJlQWN0QWdlbnQlMjBpY2kuJTBBJTIzJTIwRnVuY3Rpb25BZ2VudCUyMGZvbmN0aW9ubmUlMjBwb3VyJTIwbGVzJTIwTExNJTIwYXZlYyUyMHVuZSUyMEFQSSUyMGQnYXBwZWwlMjBkZSUyMGZvbmN0aW9uLiUwQSUyMyUyMFJlQWN0QWdlbnQlMjBmb25jdGlvbm5lJTIwcG91ciUyMG4naW1wb3J0ZSUyMHF1ZWwlMjBMTE0uJTBBY2FsY3VsYXRvcl9hZ2VudCUyMCUzRCUyMFJlQWN0QWdlbnQoJTBBJTIwJTIwJTIwJTIwbmFtZSUzRCUyMmNhbGN1bGF0b3IlMjIlMkMlMEElMjAlMjAlMjAlMjBkZXNjcmlwdGlvbiUzRCUyMlBlcmZvcm1zJTIwYmFzaWMlMjBhcml0aG1ldGljJTIwb3BlcmF0aW9ucyUyMiUyQyUwQSUyMCUyMCUyMCUyMHN5c3RlbV9wcm9tcHQlM0QlMjJZb3UlMjBhcmUlMjBhJTIwY2FsY3VsYXRvciUyMGFzc2lzdGFudC4lMjBVc2UlMjB5b3VyJTIwdG9vbHMlMjBmb3IlMjBhbnklMjBtYXRoJTIwb3BlcmF0aW9uLiUyMiUyQyUwQSUyMCUyMCUyMCUyMHRvb2xzJTNEJTVCYWRkJTJDJTIwc3VidHJhY3QlNUQlMkMlMEElMjAlMjAlMjAlMjBsbG0lM0RsbG0lMkMlMEEpJTBBJTBBcXVlcnlfYWdlbnQlMjAlM0QlMjBSZUFjdEFnZW50KCUwQSUyMCUyMCUyMCUyMG5hbWUlM0QlMjJpbmZvX2xvb2t1cCUyMiUyQyUwQSUyMCUyMCUyMCUyMGRlc2NyaXB0aW9uJTNEJTIyTG9va3MlMjB1cCUyMGluZm9ybWF0aW9uJTIwYWJvdXQlMjBYWVolMjIlMkMlMEElMjAlMjAlMjAlMjBzeXN0ZW1fcHJvbXB0JTNEJTIyVXNlJTIweW91ciUyMHRvb2wlMjB0byUyMHF1ZXJ5JTIwYSUyMFJBRyUyMHN5c3RlbSUyMHRvJTIwYW5zd2VyJTIwaW5mb3JtYXRpb24lMjBhYm91dCUyMFhZWiUyMiUyQyUwQSUyMCUyMCUyMCUyMHRvb2xzJTNEJTVCcXVlcnlfZW5naW5lX3Rvb2wlNUQlMkMlMEElMjAlMjAlMjAlMjBsbG0lM0RsbG0lMEEpJTBBJTBBJTIzJTIwQ3IlQzMlQTllciUyMGV0JTIwZXglQzMlQTljdXRlciUyMGxlJTIwd29ya2Zsb3clMEFhZ2VudCUyMCUzRCUyMEFnZW50V29ya2Zsb3coJTBBJTIwJTIwJTIwJTIwYWdlbnRzJTNEJTVCY2FsY3VsYXRvcl9hZ2VudCUyQyUyMHF1ZXJ5X2FnZW50JTVEJTJDJTIwcm9vdF9hZ2VudCUzRCUyMmNhbGN1bGF0b3IlMjIlMEEpJTBBJTBBJTIzJTIwRXglQzMlQTljdXRlciUyMGxlJTIwc3lzdCVDMyVBOG1lJTBBcmVzcG9uc2UlMjAlM0QlMjBhd2FpdCUyMGFnZW50LnJ1bih1c2VyX21zZyUzRCUyMkNhbiUyMHlvdSUyMGFkZCUyMDUlMjBhbmQlMjAzJTNGJTIyKQ==",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"># Définir quelques outils</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"># Créer les configurations de l&#x27;agent</span>
<span class="hljs-comment"># NOTE : nous pouvons utiliser FunctionAgent ou ReActAgent ici.</span>
<span class="hljs-comment"># FunctionAgent fonctionne pour les LLM avec une API d&#x27;appel de fonction.</span>
<span class="hljs-comment"># ReActAgent fonctionne pour n&#x27;importe quel 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"># Créer et exécuter le workflow</span>
agent = AgentWorkflow(
    agents=[calculator_agent, query_agent], root_agent=<span class="hljs-string">&quot;calculator&quot;</span>
)

<span class="hljs-comment"># Exécuter le système</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}}),x=new qe({props:{$$slots:{default:[yt]},$$scope:{ctx:I}}}),le=new Mt({props:{source:"https://github.com/huggingface/agents-course/blob/main/units/fr/unit2/llama-index/agents.mdx"}}),{c(){p=u("meta"),o=a(),y=u("p"),m=a(),j(n.$$.fragment),d=a(),b=u("p"),b.textContent=h,Z=a(),T=u("p"),T.textContent=M,J=a(),V=u("blockquote"),V.innerHTML=Ae,ie=a(),$=u("p"),$.innerHTML=Re,oe=a(),Q=u("p"),Q.innerHTML=ke,ue=a(),_=u("ol"),_.innerHTML=ze,re=a(),j(B.$$.fragment),pe=a(),j(q.$$.fragment),ce=a(),j(C.$$.fragment),Me=a(),E=u("p"),E.innerHTML=He,me=a(),A=u("p"),A.innerHTML=Le,de=a(),R=u("p"),R.textContent=Xe,ye=a(),j(k.$$.fragment),be=a(),z=u("p"),z.innerHTML=Ye,Te=a(),j(H.$$.fragment),Je=a(),L=u("p"),L.innerHTML=Fe,je=a(),X=u("p"),X.textContent=Se,Ue=a(),j(Y.$$.fragment),we=a(),F=u("p"),F.innerHTML=Ne,fe=a(),S=u("p"),S.innerHTML=Pe,ge=a(),N=u("p"),N.innerHTML=De,ve=a(),j(P.$$.fragment),he=a(),j(D.$$.fragment),Ie=a(),O=u("p"),O.innerHTML=Oe,Be=a(),K=u("p"),K.textContent=Ke,Ce=a(),ee=u("p"),ee.innerHTML=et,xe=a(),j(te.$$.fragment),Ge=a(),j(x.$$.fragment),We=a(),se=u("p"),se.innerHTML=tt,Ze=a(),j(le.$$.fragment),Ve=a(),ae=u("p"),this.h()},l(e){const t=pt("svelte-u9bgzb",document.head);p=r(t,"META",{name:!0,content:!0}),t.forEach(s),o=i(e),y=r(e,"P",{}),at(y).forEach(s),m=i(e),U(n.$$.fragment,e),d=i(e),b=r(e,"P",{"data-svelte-h":!0}),c(b)!=="svelte-11qihab"&&(b.textContent=h),Z=i(e),T=r(e,"P",{"data-svelte-h":!0}),c(T)!=="svelte-1fd5mom"&&(T.textContent=M),J=i(e),V=r(e,"BLOCKQUOTE",{"data-svelte-h":!0}),c(V)!=="svelte-ebtttt"&&(V.innerHTML=Ae),ie=i(e),$=r(e,"P",{"data-svelte-h":!0}),c($)!=="svelte-umvlp8"&&($.innerHTML=Re),oe=i(e),Q=r(e,"P",{"data-svelte-h":!0}),c(Q)!=="svelte-14dee9q"&&(Q.innerHTML=ke),ue=i(e),_=r(e,"OL",{"data-svelte-h":!0}),c(_)!=="svelte-18vqmqp"&&(_.innerHTML=ze),re=i(e),U(B.$$.fragment,e),pe=i(e),U(q.$$.fragment,e),ce=i(e),U(C.$$.fragment,e),Me=i(e),E=r(e,"P",{"data-svelte-h":!0}),c(E)!=="svelte-1cstjwa"&&(E.innerHTML=He),me=i(e),A=r(e,"P",{"data-svelte-h":!0}),c(A)!=="svelte-1jdt518"&&(A.innerHTML=Le),de=i(e),R=r(e,"P",{"data-svelte-h":!0}),c(R)!=="svelte-1ev6vi1"&&(R.textContent=Xe),ye=i(e),U(k.$$.fragment,e),be=i(e),z=r(e,"P",{"data-svelte-h":!0}),c(z)!=="svelte-tuogcf"&&(z.innerHTML=Ye),Te=i(e),U(H.$$.fragment,e),Je=i(e),L=r(e,"P",{"data-svelte-h":!0}),c(L)!=="svelte-1oj3r8l"&&(L.innerHTML=Fe),je=i(e),X=r(e,"P",{"data-svelte-h":!0}),c(X)!=="svelte-1rdpl5j"&&(X.textContent=Se),Ue=i(e),U(Y.$$.fragment,e),we=i(e),F=r(e,"P",{"data-svelte-h":!0}),c(F)!=="svelte-pd5sff"&&(F.innerHTML=Ne),fe=i(e),S=r(e,"P",{"data-svelte-h":!0}),c(S)!=="svelte-1srircl"&&(S.innerHTML=Pe),ge=i(e),N=r(e,"P",{"data-svelte-h":!0}),c(N)!=="svelte-18nzsz2"&&(N.innerHTML=De),ve=i(e),U(P.$$.fragment,e),he=i(e),U(D.$$.fragment,e),Ie=i(e),O=r(e,"P",{"data-svelte-h":!0}),c(O)!=="svelte-5804j3"&&(O.innerHTML=Oe),Be=i(e),K=r(e,"P",{"data-svelte-h":!0}),c(K)!=="svelte-simftk"&&(K.textContent=Ke),Ce=i(e),ee=r(e,"P",{"data-svelte-h":!0}),c(ee)!=="svelte-103rpxm"&&(ee.innerHTML=et),xe=i(e),U(te.$$.fragment,e),Ge=i(e),U(x.$$.fragment,e),We=i(e),se=r(e,"P",{"data-svelte-h":!0}),c(se)!=="svelte-ao6ri5"&&(se.innerHTML=tt),Ze=i(e),U(le.$$.fragment,e),Ve=i(e),ae=r(e,"P",{}),at(ae).forEach(s),this.h()},h(){ne(p,"name","hf:doc:metadata"),ne(p,"content",Tt)},m(e,t){ct(document.head,p),l(e,o,t),l(e,y,t),l(e,m,t),w(n,e,t),l(e,d,t),l(e,b,t),l(e,Z,t),l(e,T,t),l(e,J,t),l(e,V,t),l(e,ie,t),l(e,$,t),l(e,oe,t),l(e,Q,t),l(e,ue,t),l(e,_,t),l(e,re,t),w(B,e,t),l(e,pe,t),w(q,e,t),l(e,ce,t),w(C,e,t),l(e,Me,t),l(e,E,t),l(e,me,t),l(e,A,t),l(e,de,t),l(e,R,t),l(e,ye,t),w(k,e,t),l(e,be,t),l(e,z,t),l(e,Te,t),w(H,e,t),l(e,Je,t),l(e,L,t),l(e,je,t),l(e,X,t),l(e,Ue,t),w(Y,e,t),l(e,we,t),l(e,F,t),l(e,fe,t),l(e,S,t),l(e,ge,t),l(e,N,t),l(e,ve,t),w(P,e,t),l(e,he,t),w(D,e,t),l(e,Ie,t),l(e,O,t),l(e,Be,t),l(e,K,t),l(e,Ce,t),l(e,ee,t),l(e,xe,t),w(te,e,t),l(e,Ge,t),w(x,e,t),l(e,We,t),l(e,se,t),l(e,Ze,t),w(le,e,t),l(e,Ve,t),l(e,ae,t),$e=!0},p(e,[t]){const st={};t&2&&(st.$$scope={dirty:t,ctx:e}),B.$set(st);const lt={};t&2&&(lt.$$scope={dirty:t,ctx:e}),C.$set(lt);const nt={};t&2&&(nt.$$scope={dirty:t,ctx:e}),x.$set(nt)},i(e){$e||(f(n.$$.fragment,e),f(B.$$.fragment,e),f(q.$$.fragment,e),f(C.$$.fragment,e),f(k.$$.fragment,e),f(H.$$.fragment,e),f(Y.$$.fragment,e),f(P.$$.fragment,e),f(D.$$.fragment,e),f(te.$$.fragment,e),f(x.$$.fragment,e),f(le.$$.fragment,e),$e=!0)},o(e){g(n.$$.fragment,e),g(B.$$.fragment,e),g(q.$$.fragment,e),g(C.$$.fragment,e),g(k.$$.fragment,e),g(H.$$.fragment,e),g(Y.$$.fragment,e),g(P.$$.fragment,e),g(D.$$.fragment,e),g(te.$$.fragment,e),g(x.$$.fragment,e),g(le.$$.fragment,e),$e=!1},d(e){e&&(s(o),s(y),s(m),s(d),s(b),s(Z),s(T),s(J),s(V),s(ie),s($),s(oe),s(Q),s(ue),s(_),s(re),s(pe),s(ce),s(Me),s(E),s(me),s(A),s(de),s(R),s(ye),s(be),s(z),s(Te),s(Je),s(L),s(je),s(X),s(Ue),s(we),s(F),s(fe),s(S),s(ge),s(N),s(ve),s(he),s(Ie),s(O),s(Be),s(K),s(Ce),s(ee),s(xe),s(Ge),s(We),s(se),s(Ze),s(Ve),s(ae)),s(p),v(n,e),v(B,e),v(q,e),v(C,e),v(k,e),v(H,e),v(Y,e),v(P,e),v(D,e),v(te,e),v(x,e),v(le,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 de RAG avec des QueryEngineTools","local":"créer-des-agents-de-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 Jt(I){return ot(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class ht extends ut{constructor(p){super(),rt(this,p,Jt,bt,it,{})}}export{ht as component};
