import{s as jt,o as Ut,n as st}from"../chunks/scheduler.37c15a92.js";import{S as Jt,i as Zt,g as u,s as o,r as f,m as w,A as Gt,h as r,f as l,c as i,j as Ae,u as M,x as p,n as x,k as H,y as $,a as n,v as b,d as v,t as y,w as h}from"../chunks/index.2bf4358c.js";import{T as nt}from"../chunks/Tip.363c041f.js";import{C as de}from"../chunks/CodeBlock.4e987730.js";import{H as ye}from"../chunks/Heading.8ada512a.js";import{E as Ct}from"../chunks/getInferenceSnippets.54ddb825.js";function _t(W){let m,a,g="ce <i>notebook</i>",d;return{c(){m=w("Vous pouvez suivre le code dans "),a=u("a"),a.innerHTML=g,d=w(" que vous pouvez exécuter avec Google Colab."),this.h()},l(s){m=x(s,"Vous pouvez suivre le code dans "),a=r(s,"A",{href:!0,target:!0,"data-svelte-h":!0}),p(a)!=="svelte-1hcr2fz"&&(a.innerHTML=g),d=x(s," que vous pouvez exécuter avec Google Colab."),this.h()},h(){H(a,"href","https://huggingface.co/agents-course/notebooks/blob/main/fr/unit2/llama-index/tools.ipynb"),H(a,"target","_blank")},m(s,T){n(s,m,T),n(s,a,T),n(s,d,T)},p:st,d(s){s&&(l(m),l(a),l(d))}}}function It(W){let m,a,g="Guide sur l'appel de fonctions",d;return{c(){m=w("Lors de l'utilisation d'un agent ou d'un LLM avec l'appel de fonctions, l'outil sélectionné (et les arguments écrits pour celui-ci) dépendent fortement de son nom, t de la description du but et des arguments. Apprenez-en plus sur l'appel de fonctions dans le "),a=u("a"),a.textContent=g,d=w("."),this.h()},l(s){m=x(s,"Lors de l'utilisation d'un agent ou d'un LLM avec l'appel de fonctions, l'outil sélectionné (et les arguments écrits pour celui-ci) dépendent fortement de son nom, t de la description du but et des arguments. Apprenez-en plus sur l'appel de fonctions dans le "),a=r(s,"A",{href:!0,"data-svelte-h":!0}),p(a)!=="svelte-oevahf"&&(a.textContent=g),d=x(s,"."),this.h()},h(){H(a,"href","https://docs.llamaindex.ai/en/stable/examples/workflow/function_calling_agent/")},m(s,T){n(s,m,T),n(s,a,T),n(s,d,T)},p:st,d(s){s&&(l(m),l(a),l(d))}}}function Wt(W){let m,a,g="toolspecs",d,s,T="utility tools",j,C,k="LlamaHub",U;return{c(){m=w("Vous pouvez trouver des "),a=u("i"),a.textContent=g,d=w(" et des "),s=u("i"),s.textContent=T,j=w(" sur le "),C=u("a"),C.textContent=k,U=w("."),this.h()},l(c){m=x(c,"Vous pouvez trouver des "),a=r(c,"I",{"data-svelte-h":!0}),p(a)!=="svelte-1jjjkjk"&&(a.textContent=g),d=x(c," et des "),s=r(c,"I",{"data-svelte-h":!0}),p(s)!=="svelte-ntdbl"&&(s.textContent=T),j=x(c," sur le "),C=r(c,"A",{href:!0,"data-svelte-h":!0}),p(C)!=="svelte-b92hie"&&(C.textContent=k),U=x(c,"."),this.h()},h(){H(C,"href","https://llamahub.ai/")},m(c,J){n(c,m,J),n(c,a,J),n(c,d,J),n(c,s,J),n(c,j,J),n(c,C,J),n(c,U,J)},p:st,d(c){c&&(l(m),l(a),l(d),l(s),l(j),l(C),l(U))}}}function Vt(W){let m,a,g,d,s,T,j,C=`<strong>Définir un ensemble clair d’outils est crucial pour la performance.</strong> Comme nous l’avons discuté dans l’<a href="../../unit1/tools">Unité 1</a>, des interfaces claires sont plus faciles à utiliser pour les LLM.
Tout comme une interface API logicielle pour les ingénieurs humains, ils peuvent tirer profit de l’outil s’il est facile de comprendre comment il fonctionne.`,k,U,c="Il y a <strong>quatre types principaux d’outils dans LlamaIndex</strong> :",J,E,ot='<img src="https://huggingface.co/datasets/agents-course/course-images/resolve/main/en/unit2/llama-index/tools.png" alt="Tools"/>',Te,q,it="<li><code>FunctionTool</code> : Convertit n’importe quelle fonction Python en un outil qu’un agent peut utiliser. Il comprend automatiquement comment la fonction fonctionne.</li> <li><code>QueryEngineTool</code> : Un outil qui permet aux agents d’utiliser des <em>query engines</em>. Puisque les agents sont construits sur des <em>query engines</em>, ils peuvent également utiliser d’autres agents comme outil.</li> <li><code>Toolspecs</code> : Ensembles d’outils créés par la communauté, en incluant souvent pour des services spécifiques comme Gmail.</li> <li><code>Utility Tools</code> : Outils spéciaux qui aident à gérer de grandes quantités de données d’autres outils.</li>",ge,Q,at="Nous passerons en revue chacun d’eux plus en détail ci-dessous.",we,S,xe,V,$e,R,ut=`<em>FunctionTool</em> fournit un moyen simple d’envelopper n’importe quelle fonction Python et de la rendre disponible à un agent.
Vous pouvez passer soit une fonction synchrone soit asynchrone à l’outil, avec des paramètres optionnels <code>name</code> et <code>description</code>.
Le nom et la description sont particulièrement importants car ils aident l’agent à comprendre quand et comment utiliser l’outil efficacement.
Regardons comment créer un <em>FunctionTool</em> ci-dessous puis l’appeler.`,je,N,Ue,L,Je,Y,Ze,X,rt=`Le <code>QueryEngine</code> que nous avons défini dans l’unité précédente peut être facilement transformé en un outil en utilisant la classe <code>QueryEngineTool</code>.
Voyons comment créer un <code>QueryEngineTool</code> à partir d’un <code>QueryEngine</code> dans l’exemple ci-dessous.`,Ge,F,Ce,z,_e,P,pt=`Pensez au <code>ToolSpecs</code> comme des collections d’outils qui fonctionnent ensemble harmonieusement à l’instar d’une boîte à outils professionnelle bien organisée.
Tout comme la boîte à outils d’un mécanicien contient des outils complémentaires qui fonctionnent ensemble pour les réparations de véhicules, un <code>ToolSpec</code> combine des outils apparentés pour des objectifs spécifiques.
Par exemple, le <code>ToolSpec</code> d’un agent comptable pourrait intégrer élégamment des capacités de tableur, des fonctionnalités email et des outils de calcul pour gérer les tâches financières avec précision et efficacité.`,Ie,Z,fe,mt="Installer le <i>Toolspec</i> Google",De,A,ct="section sur le <i>LlamaHub</i>",Ke,Me,dt="toolspec",Oe,D,We,K,ft="Et maintenant nous pouvons charger le <em>toolspec</em> et le convertir en une liste d’outils.",Ve,O,Le,ee,Mt="Pour obtenir une vue plus détaillée des outils, nous pouvons examiner les <code>metadata</code> de chacun d’eux.",Be,te,He,le,ke,ne,bt=`LlamaIndex permet également d’utiliser les outils <em>MCP</em> grâce à un <a href="https://llamahub.ai/l/tools/llama-index-tools-mcp?from=" rel="nofollow"><em>ToolSpec</em> sur le LlamaHub</a>.
Vous pouvez simplement lancer un serveur MCP et commencer à l’utiliser grâce à l’implémentation suivante.`,Ee,se,vt='Si vous voulez approfondir MCP, vous pouvez consulter notre <a href="https://huggingface.co/learn/mcp-course/" rel="nofollow">cours gratuit</a>.',qe,G,be,yt="Installer le <i>Toolspec</i> MCP",et,oe,ht="section sur le LlamaHub",tt,ve,Tt="toolspec",lt,ie,Qe,ae,Se,ue,Re,re,gt=`Souvent, interroger directement une API <strong>peut retourner une quantité excessive de données</strong>, dont certaines peuvent être non pertinentes, déborder la fenêtre de contexte du LLM, ou augmenter inutilement le nombre de <em>tokens</em> que vous utilisez.
Passons en revue nos deux <em>utility tools</em> principaux ci-dessous.`,Ne,pe,wt="<li><code>OnDemandToolLoader</code> : Cet outil transforme n’importe quel chargeur de données LlamaIndex existant (classe <em>BaseReader</em>) en un outil qu’un agent peut utiliser. Il peut être appelé avec tous les paramètres nécessaires pour déclencher <code>load_data</code> du chargeur de données, ainsi qu’une chaîne de requête en langage naturel. Pendant l’exécution, nous chargeons d’abord les données du chargeur de données, les indexons (par exemple avec un <em>vector store</em>), puis les interrogeons à la demande. Ces trois étapes se produisent dans un seul appel de l’outil.</li> <li><code>LoadAndSearchToolSpec</code> : Le <em>LoadAndSearchToolSpec</em> prend n’importe quel outil existant en entrée. En tant que <em>tool spec</em>, il implémente <code>to_tool_list</code>, et quand cette fonction est appelée, deux outils sont retournés : un outil de chargement puis un outil de recherche. L’exécution du premier appellerait l’outil sous-jacent, puis indexerait la sortie (par défaut avec un <em>vector index</em>). L’exécution du second prendrait une chaîne de requête en entrée et appellerait l’index sous-jacent.</li>",Ye,B,Xe,me,xt="Maintenant que nous comprenons les bases des agents et des outils dans LlamaIndex, voyons comment nous pouvons <strong>utiliser LlamaIndex pour créer des <em>workflows</em> configurables et gérables !</strong>",Fe,ce,ze,he,Pe;return s=new ye({props:{title:"Utiliser les outils dans LlamaIndex",local:"utiliser-les-outils-dans-llamaindex",headingTag:"h1"}}),S=new ye({props:{title:"Créer un FunctionTool",local:"créer-un-functiontool",headingTag:"h2"}}),V=new nt({props:{$$slots:{default:[_t]},$$scope:{ctx:W}}}),N=new de({props:{code:"ZnJvbSUyMGxsYW1hX2luZGV4LmNvcmUudG9vbHMlMjBpbXBvcnQlMjBGdW5jdGlvblRvb2wlMEElMEFkZWYlMjBnZXRfd2VhdGhlcihsb2NhdGlvbiUzQSUyMHN0ciklMjAtJTNFJTIwc3RyJTNBJTBBJTIwJTIwJTIwJTIwJTIyJTIyJTIyVXRpbGUlMjBwb3VyJTIwb2J0ZW5pciUyMGxlJTIwdGVtcHMlMjBxdSdpbCUyMGZhaXQlMjAlQzMlQTAlMjB1biUyMGVuZHJvaXQlMjBkb25uJUMzJUE5LiUyMiUyMiUyMiUwQSUyMCUyMCUyMCUyMHByaW50KGYlMjJHZXR0aW5nJTIwd2VhdGhlciUyMGZvciUyMCU3QmxvY2F0aW9uJTdEJTIyKSUwQSUyMCUyMCUyMCUyMHJldHVybiUyMGYlMjJUaGUlMjB3ZWF0aGVyJTIwaW4lMjAlN0Jsb2NhdGlvbiU3RCUyMGlzJTIwc3VubnklMjIlMEElMEF0b29sJTIwJTNEJTIwRnVuY3Rpb25Ub29sLmZyb21fZGVmYXVsdHMoJTBBJTIwJTIwJTIwJTIwZ2V0X3dlYXRoZXIlMkMlMEElMjAlMjAlMjAlMjBuYW1lJTNEJTIybXlfd2VhdGhlcl90b29sJTIyJTJDJTBBJTIwJTIwJTIwJTIwZGVzY3JpcHRpb24lM0QlMjJVc2VmdWwlMjBmb3IlMjBnZXR0aW5nJTIwdGhlJTIwd2VhdGhlciUyMGZvciUyMGElMjBnaXZlbiUyMGxvY2F0aW9uLiUyMiUyQyUwQSklMEF0b29sLmNhbGwoJTIyTmV3JTIwWW9yayUyMik=",highlighted:`<span class="hljs-keyword">from</span> llama_index.core.tools <span class="hljs-keyword">import</span> FunctionTool

<span class="hljs-keyword">def</span> <span class="hljs-title function_">get_weather</span>(<span class="hljs-params">location: <span class="hljs-built_in">str</span></span>) -&gt; <span class="hljs-built_in">str</span>:
    <span class="hljs-string">&quot;&quot;&quot;Utile pour obtenir le temps qu&#x27;il fait à un endroit donné.&quot;&quot;&quot;</span>
    <span class="hljs-built_in">print</span>(<span class="hljs-string">f&quot;Getting weather for <span class="hljs-subst">{location}</span>&quot;</span>)
    <span class="hljs-keyword">return</span> <span class="hljs-string">f&quot;The weather in <span class="hljs-subst">{location}</span> is sunny&quot;</span>

tool = FunctionTool.from_defaults(
    get_weather,
    name=<span class="hljs-string">&quot;my_weather_tool&quot;</span>,
    description=<span class="hljs-string">&quot;Useful for getting the weather for a given location.&quot;</span>,
)
tool.call(<span class="hljs-string">&quot;New York&quot;</span>)`,wrap:!1}}),L=new nt({props:{$$slots:{default:[It]},$$scope:{ctx:W}}}),Y=new ye({props:{title:"Créer un QueryEngineTool",local:"créer-un-queryenginetool",headingTag:"h2"}}),F=new de({props:{code:"ZnJvbSUyMGxsYW1hX2luZGV4LmNvcmUlMjBpbXBvcnQlMjBWZWN0b3JTdG9yZUluZGV4JTBBZnJvbSUyMGxsYW1hX2luZGV4LmNvcmUudG9vbHMlMjBpbXBvcnQlMjBRdWVyeUVuZ2luZVRvb2wlMEFmcm9tJTIwbGxhbWFfaW5kZXgubGxtcy5odWdnaW5nZmFjZV9hcGklMjBpbXBvcnQlMjBIdWdnaW5nRmFjZUluZmVyZW5jZUFQSSUwQWZyb20lMjBsbGFtYV9pbmRleC5lbWJlZGRpbmdzLmh1Z2dpbmdmYWNlJTIwaW1wb3J0JTIwSHVnZ2luZ0ZhY2VFbWJlZGRpbmclMEFmcm9tJTIwbGxhbWFfaW5kZXgudmVjdG9yX3N0b3Jlcy5jaHJvbWElMjBpbXBvcnQlMjBDaHJvbWFWZWN0b3JTdG9yZSUwQSUwQWVtYmVkX21vZGVsJTIwJTNEJTIwSHVnZ2luZ0ZhY2VFbWJlZGRpbmcoJTIyQkFBSSUyRmJnZS1zbWFsbC1lbi12MS41JTIyKSUwQSUwQWRiJTIwJTNEJTIwY2hyb21hZGIuUGVyc2lzdGVudENsaWVudChwYXRoJTNEJTIyLiUyRmFsZnJlZF9jaHJvbWFfZGIlMjIpJTBBY2hyb21hX2NvbGxlY3Rpb24lMjAlM0QlMjBkYi5nZXRfb3JfY3JlYXRlX2NvbGxlY3Rpb24oJTIyYWxmcmVkJTIyKSUwQXZlY3Rvcl9zdG9yZSUyMCUzRCUyMENocm9tYVZlY3RvclN0b3JlKGNocm9tYV9jb2xsZWN0aW9uJTNEY2hyb21hX2NvbGxlY3Rpb24pJTBBJTBBaW5kZXglMjAlM0QlMjBWZWN0b3JTdG9yZUluZGV4LmZyb21fdmVjdG9yX3N0b3JlKHZlY3Rvcl9zdG9yZSUyQyUyMGVtYmVkX21vZGVsJTNEZW1iZWRfbW9kZWwpJTBBJTBBbGxtJTIwJTNEJTIwSHVnZ2luZ0ZhY2VJbmZlcmVuY2VBUEkobW9kZWxfbmFtZSUzRCUyMlF3ZW4lMkZRd2VuMi41LUNvZGVyLTMyQi1JbnN0cnVjdCUyMiklMEFxdWVyeV9lbmdpbmUlMjAlM0QlMjBpbmRleC5hc19xdWVyeV9lbmdpbmUobGxtJTNEbGxtKSUwQXRvb2wlMjAlM0QlMjBRdWVyeUVuZ2luZVRvb2wuZnJvbV9kZWZhdWx0cyhxdWVyeV9lbmdpbmUlMkMlMjBuYW1lJTNEJTIyc29tZSUyMHVzZWZ1bCUyMG5hbWUlMjIlMkMlMjBkZXNjcmlwdGlvbiUzRCUyMnNvbWUlMjB1c2VmdWwlMjBkZXNjcmlwdGlvbiUyMik=",highlighted:`<span class="hljs-keyword">from</span> llama_index.core <span class="hljs-keyword">import</span> VectorStoreIndex
<span class="hljs-keyword">from</span> llama_index.core.tools <span class="hljs-keyword">import</span> QueryEngineTool
<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.embeddings.huggingface <span class="hljs-keyword">import</span> HuggingFaceEmbedding
<span class="hljs-keyword">from</span> llama_index.vector_stores.chroma <span class="hljs-keyword">import</span> ChromaVectorStore

embed_model = HuggingFaceEmbedding(<span class="hljs-string">&quot;BAAI/bge-small-en-v1.5&quot;</span>)

db = chromadb.PersistentClient(path=<span class="hljs-string">&quot;./alfred_chroma_db&quot;</span>)
chroma_collection = db.get_or_create_collection(<span class="hljs-string">&quot;alfred&quot;</span>)
vector_store = ChromaVectorStore(chroma_collection=chroma_collection)

index = VectorStoreIndex.from_vector_store(vector_store, embed_model=embed_model)

llm = HuggingFaceInferenceAPI(model_name=<span class="hljs-string">&quot;Qwen/Qwen2.5-Coder-32B-Instruct&quot;</span>)
query_engine = index.as_query_engine(llm=llm)
tool = QueryEngineTool.from_defaults(query_engine, name=<span class="hljs-string">&quot;some useful name&quot;</span>, description=<span class="hljs-string">&quot;some useful description&quot;</span>)`,wrap:!1}}),z=new ye({props:{title:"Créer un Toolspecs",local:"créer-un-toolspecs",headingTag:"h2"}}),D=new de({props:{code:"cGlwJTIwaW5zdGFsbCUyMGxsYW1hLWluZGV4LXRvb2xzLWdvb2dsZQ==",highlighted:"pip install llama-index-tools-google",wrap:!1}}),O=new de({props:{code:"ZnJvbSUyMGxsYW1hX2luZGV4LnRvb2xzLmdvb2dsZSUyMGltcG9ydCUyMEdtYWlsVG9vbFNwZWMlMEElMEF0b29sX3NwZWMlMjAlM0QlMjBHbWFpbFRvb2xTcGVjKCklMEF0b29sX3NwZWNfbGlzdCUyMCUzRCUyMHRvb2xfc3BlYy50b190b29sX2xpc3QoKQ==",highlighted:`<span class="hljs-keyword">from</span> llama_index.tools.google <span class="hljs-keyword">import</span> GmailToolSpec

tool_spec = GmailToolSpec()
tool_spec_list = tool_spec.to_tool_list()`,wrap:!1}}),te=new de({props:{code:"JTVCKHRvb2wubWV0YWRhdGEubmFtZSUyQyUyMHRvb2wubWV0YWRhdGEuZGVzY3JpcHRpb24pJTIwZm9yJTIwdG9vbCUyMGluJTIwdG9vbF9zcGVjX2xpc3QlNUQ=",highlighted:'[(tool.metadata.name, tool.metadata.description) <span class="hljs-keyword">for</span> tool <span class="hljs-keyword">in</span> tool_spec_list]',wrap:!1}}),le=new ye({props:{title:"Model Context Protocol (MCP) dans LlamaIndex",local:"model-context-protocol-mcp-dans-llamaindex",headingTag:"h3"}}),ie=new de({props:{code:"cGlwJTIwaW5zdGFsbCUyMGxsYW1hLWluZGV4LXRvb2xzLW1jcA==",highlighted:"pip install llama-index-tools-mcp",wrap:!1}}),ae=new de({props:{code:"ZnJvbSUyMGxsYW1hX2luZGV4LnRvb2xzLm1jcCUyMGltcG9ydCUyMEJhc2ljTUNQQ2xpZW50JTJDJTIwTWNwVG9vbFNwZWMlMEElMEElMjMlMjBOb3VzJTIwY29uc2lkJUMzJUE5cm9ucyUyMHF1J3VuJTIwc2VydmV1ciUyMG1jcCUyMHRvdXJuZSUyMHN1ciUyMDEyNy4wLjAuMSUzQTgwMDAlMkMlMjBvdSUyMHZvdXMlMjBwb3V2ZXolMjB1dGlsaXNlciUyMGxlJTIwY2xpZW50JTIwbWNwJTIwcG91ciUyMHZvdXMlMjBjb25uZWN0ZXIlMjAlQzMlQTAlMjB2b3RyZSUyMHByb3ByZSUyMHNlcnZldXIlMEFtY3BfY2xpZW50JTIwJTNEJTIwQmFzaWNNQ1BDbGllbnQoJTIyaHR0cCUzQSUyRiUyRjEyNy4wLjAuMSUzQTgwMDAlMkZzc2UlMjIpJTBBbWNwX3Rvb2wlMjAlM0QlMjBNY3BUb29sU3BlYyhjbGllbnQlM0RtY3BfY2xpZW50KSUwQSUwQSUyMyUyMG9idGVuaXIlMjBsJ2FnZW50JTBBYWdlbnQlMjAlM0QlMjBhd2FpdCUyMGdldF9hZ2VudChtY3BfdG9vbCklMEElMEElMjMlMjBjciVDMyVBOWVyJTIwbGUlMjBjb250ZXh0ZSUyMGRlJTIwbCdhZ2VudCUwQWFnZW50X2NvbnRleHQlMjAlM0QlMjBDb250ZXh0KGFnZW50KQ==",highlighted:`<span class="hljs-keyword">from</span> llama_index.tools.mcp <span class="hljs-keyword">import</span> BasicMCPClient, McpToolSpec

<span class="hljs-comment"># Nous considérons qu&#x27;un serveur mcp tourne sur 127.0.0.1:8000, ou vous pouvez utiliser le client mcp pour vous connecter à votre propre serveur</span>
mcp_client = BasicMCPClient(<span class="hljs-string">&quot;http://127.0.0.1:8000/sse&quot;</span>)
mcp_tool = McpToolSpec(client=mcp_client)

<span class="hljs-comment"># obtenir l&#x27;agent</span>
agent = <span class="hljs-keyword">await</span> get_agent(mcp_tool)

<span class="hljs-comment"># créer le contexte de l&#x27;agent</span>
agent_context = Context(agent)`,wrap:!1}}),ue=new ye({props:{title:"Utility Tools",local:"utility-tools",headingTag:"h2"}}),B=new nt({props:{$$slots:{default:[Wt]},$$scope:{ctx:W}}}),ce=new Ct({props:{source:"https://github.com/huggingface/agents-course/blob/main/units/fr/unit2/llama-index/tools.mdx"}}),{c(){m=u("meta"),a=o(),g=u("p"),d=o(),f(s.$$.fragment),T=o(),j=u("p"),j.innerHTML=C,k=o(),U=u("p"),U.innerHTML=c,J=o(),E=u("p"),E.innerHTML=ot,Te=o(),q=u("ol"),q.innerHTML=it,ge=o(),Q=u("p"),Q.textContent=at,we=o(),f(S.$$.fragment),xe=o(),f(V.$$.fragment),$e=o(),R=u("p"),R.innerHTML=ut,je=o(),f(N.$$.fragment),Ue=o(),f(L.$$.fragment),Je=o(),f(Y.$$.fragment),Ze=o(),X=u("p"),X.innerHTML=rt,Ge=o(),f(F.$$.fragment),Ce=o(),f(z.$$.fragment),_e=o(),P=u("p"),P.innerHTML=pt,Ie=o(),Z=u("details"),fe=u("summary"),fe.innerHTML=mt,De=w(`
Comme introduit dans la `),A=u("a"),A.innerHTML=ct,Ke=w(", nous pouvons installer le "),Me=u("i"),Me.textContent=dt,Oe=w(` Google avec la commande suivante :

	`),f(D.$$.fragment),We=o(),K=u("p"),K.innerHTML=ft,Ve=o(),f(O.$$.fragment),Le=o(),ee=u("p"),ee.innerHTML=Mt,Be=o(),f(te.$$.fragment),He=o(),f(le.$$.fragment),ke=o(),ne=u("p"),ne.innerHTML=bt,Ee=o(),se=u("p"),se.innerHTML=vt,qe=o(),G=u("details"),be=u("summary"),be.innerHTML=yt,et=w(`
Comme introduit dans la `),oe=u("a"),oe.textContent=ht,tt=w(", nous pouvons installer le "),ve=u("i"),ve.textContent=Tt,lt=w(` MCP avec la commande suivante :

	`),f(ie.$$.fragment),Qe=o(),f(ae.$$.fragment),Se=o(),f(ue.$$.fragment),Re=o(),re=u("p"),re.innerHTML=gt,Ne=o(),pe=u("ol"),pe.innerHTML=wt,Ye=o(),f(B.$$.fragment),Xe=o(),me=u("p"),me.innerHTML=xt,Fe=o(),f(ce.$$.fragment),ze=o(),he=u("p"),this.h()},l(e){const t=Gt("svelte-u9bgzb",document.head);m=r(t,"META",{name:!0,content:!0}),t.forEach(l),a=i(e),g=r(e,"P",{}),Ae(g).forEach(l),d=i(e),M(s.$$.fragment,e),T=i(e),j=r(e,"P",{"data-svelte-h":!0}),p(j)!=="svelte-15xnf4h"&&(j.innerHTML=C),k=i(e),U=r(e,"P",{"data-svelte-h":!0}),p(U)!=="svelte-1wwim52"&&(U.innerHTML=c),J=i(e),E=r(e,"P",{"data-svelte-h":!0}),p(E)!=="svelte-ir2ii4"&&(E.innerHTML=ot),Te=i(e),q=r(e,"OL",{"data-svelte-h":!0}),p(q)!=="svelte-rue757"&&(q.innerHTML=it),ge=i(e),Q=r(e,"P",{"data-svelte-h":!0}),p(Q)!=="svelte-se2hf"&&(Q.textContent=at),we=i(e),M(S.$$.fragment,e),xe=i(e),M(V.$$.fragment,e),$e=i(e),R=r(e,"P",{"data-svelte-h":!0}),p(R)!=="svelte-cm71ui"&&(R.innerHTML=ut),je=i(e),M(N.$$.fragment,e),Ue=i(e),M(L.$$.fragment,e),Je=i(e),M(Y.$$.fragment,e),Ze=i(e),X=r(e,"P",{"data-svelte-h":!0}),p(X)!=="svelte-4ddxlo"&&(X.innerHTML=rt),Ge=i(e),M(F.$$.fragment,e),Ce=i(e),M(z.$$.fragment,e),_e=i(e),P=r(e,"P",{"data-svelte-h":!0}),p(P)!=="svelte-17051kk"&&(P.innerHTML=pt),Ie=i(e),Z=r(e,"DETAILS",{});var _=Ae(Z);fe=r(_,"SUMMARY",{"data-svelte-h":!0}),p(fe)!=="svelte-17se9ce"&&(fe.innerHTML=mt),De=x(_,`
Comme introduit dans la `),A=r(_,"A",{href:!0,"data-svelte-h":!0}),p(A)!=="svelte-12hnzv1"&&(A.innerHTML=ct),Ke=x(_,", nous pouvons installer le "),Me=r(_,"I",{"data-svelte-h":!0}),p(Me)!=="svelte-x626tz"&&(Me.textContent=dt),Oe=x(_,` Google avec la commande suivante :

	`),M(D.$$.fragment,_),_.forEach(l),We=i(e),K=r(e,"P",{"data-svelte-h":!0}),p(K)!=="svelte-hwh0jr"&&(K.innerHTML=ft),Ve=i(e),M(O.$$.fragment,e),Le=i(e),ee=r(e,"P",{"data-svelte-h":!0}),p(ee)!=="svelte-w2dupu"&&(ee.innerHTML=Mt),Be=i(e),M(te.$$.fragment,e),He=i(e),M(le.$$.fragment,e),ke=i(e),ne=r(e,"P",{"data-svelte-h":!0}),p(ne)!=="svelte-143kyx2"&&(ne.innerHTML=bt),Ee=i(e),se=r(e,"P",{"data-svelte-h":!0}),p(se)!=="svelte-1yipqfs"&&(se.innerHTML=vt),qe=i(e),G=r(e,"DETAILS",{});var I=Ae(G);be=r(I,"SUMMARY",{"data-svelte-h":!0}),p(be)!=="svelte-wxegrp"&&(be.innerHTML=yt),et=x(I,`
Comme introduit dans la `),oe=r(I,"A",{href:!0,"data-svelte-h":!0}),p(oe)!=="svelte-1pl43ly"&&(oe.textContent=ht),tt=x(I,", nous pouvons installer le "),ve=r(I,"I",{"data-svelte-h":!0}),p(ve)!=="svelte-x626tz"&&(ve.textContent=Tt),lt=x(I,` MCP avec la commande suivante :

	`),M(ie.$$.fragment,I),I.forEach(l),Qe=i(e),M(ae.$$.fragment,e),Se=i(e),M(ue.$$.fragment,e),Re=i(e),re=r(e,"P",{"data-svelte-h":!0}),p(re)!=="svelte-ionwur"&&(re.innerHTML=gt),Ne=i(e),pe=r(e,"OL",{"data-svelte-h":!0}),p(pe)!=="svelte-l1aj58"&&(pe.innerHTML=wt),Ye=i(e),M(B.$$.fragment,e),Xe=i(e),me=r(e,"P",{"data-svelte-h":!0}),p(me)!=="svelte-pi31wf"&&(me.innerHTML=xt),Fe=i(e),M(ce.$$.fragment,e),ze=i(e),he=r(e,"P",{}),Ae(he).forEach(l),this.h()},h(){H(m,"name","hf:doc:metadata"),H(m,"content",Lt),H(A,"href","./llama-hub"),H(oe,"href","./llama-hub")},m(e,t){$(document.head,m),n(e,a,t),n(e,g,t),n(e,d,t),b(s,e,t),n(e,T,t),n(e,j,t),n(e,k,t),n(e,U,t),n(e,J,t),n(e,E,t),n(e,Te,t),n(e,q,t),n(e,ge,t),n(e,Q,t),n(e,we,t),b(S,e,t),n(e,xe,t),b(V,e,t),n(e,$e,t),n(e,R,t),n(e,je,t),b(N,e,t),n(e,Ue,t),b(L,e,t),n(e,Je,t),b(Y,e,t),n(e,Ze,t),n(e,X,t),n(e,Ge,t),b(F,e,t),n(e,Ce,t),b(z,e,t),n(e,_e,t),n(e,P,t),n(e,Ie,t),n(e,Z,t),$(Z,fe),$(Z,De),$(Z,A),$(Z,Ke),$(Z,Me),$(Z,Oe),b(D,Z,null),n(e,We,t),n(e,K,t),n(e,Ve,t),b(O,e,t),n(e,Le,t),n(e,ee,t),n(e,Be,t),b(te,e,t),n(e,He,t),b(le,e,t),n(e,ke,t),n(e,ne,t),n(e,Ee,t),n(e,se,t),n(e,qe,t),n(e,G,t),$(G,be),$(G,et),$(G,oe),$(G,tt),$(G,ve),$(G,lt),b(ie,G,null),n(e,Qe,t),b(ae,e,t),n(e,Se,t),b(ue,e,t),n(e,Re,t),n(e,re,t),n(e,Ne,t),n(e,pe,t),n(e,Ye,t),b(B,e,t),n(e,Xe,t),n(e,me,t),n(e,Fe,t),b(ce,e,t),n(e,ze,t),n(e,he,t),Pe=!0},p(e,[t]){const _={};t&2&&(_.$$scope={dirty:t,ctx:e}),V.$set(_);const I={};t&2&&(I.$$scope={dirty:t,ctx:e}),L.$set(I);const $t={};t&2&&($t.$$scope={dirty:t,ctx:e}),B.$set($t)},i(e){Pe||(v(s.$$.fragment,e),v(S.$$.fragment,e),v(V.$$.fragment,e),v(N.$$.fragment,e),v(L.$$.fragment,e),v(Y.$$.fragment,e),v(F.$$.fragment,e),v(z.$$.fragment,e),v(D.$$.fragment,e),v(O.$$.fragment,e),v(te.$$.fragment,e),v(le.$$.fragment,e),v(ie.$$.fragment,e),v(ae.$$.fragment,e),v(ue.$$.fragment,e),v(B.$$.fragment,e),v(ce.$$.fragment,e),Pe=!0)},o(e){y(s.$$.fragment,e),y(S.$$.fragment,e),y(V.$$.fragment,e),y(N.$$.fragment,e),y(L.$$.fragment,e),y(Y.$$.fragment,e),y(F.$$.fragment,e),y(z.$$.fragment,e),y(D.$$.fragment,e),y(O.$$.fragment,e),y(te.$$.fragment,e),y(le.$$.fragment,e),y(ie.$$.fragment,e),y(ae.$$.fragment,e),y(ue.$$.fragment,e),y(B.$$.fragment,e),y(ce.$$.fragment,e),Pe=!1},d(e){e&&(l(a),l(g),l(d),l(T),l(j),l(k),l(U),l(J),l(E),l(Te),l(q),l(ge),l(Q),l(we),l(xe),l($e),l(R),l(je),l(Ue),l(Je),l(Ze),l(X),l(Ge),l(Ce),l(_e),l(P),l(Ie),l(Z),l(We),l(K),l(Ve),l(Le),l(ee),l(Be),l(He),l(ke),l(ne),l(Ee),l(se),l(qe),l(G),l(Qe),l(Se),l(Re),l(re),l(Ne),l(pe),l(Ye),l(Xe),l(me),l(Fe),l(ze),l(he)),l(m),h(s,e),h(S,e),h(V,e),h(N,e),h(L,e),h(Y,e),h(F,e),h(z,e),h(D),h(O,e),h(te,e),h(le,e),h(ie),h(ae,e),h(ue,e),h(B,e),h(ce,e)}}}const Lt='{"title":"Utiliser les outils dans LlamaIndex","local":"utiliser-les-outils-dans-llamaindex","sections":[{"title":"Créer un FunctionTool","local":"créer-un-functiontool","sections":[],"depth":2},{"title":"Créer un QueryEngineTool","local":"créer-un-queryenginetool","sections":[],"depth":2},{"title":"Créer un Toolspecs","local":"créer-un-toolspecs","sections":[{"title":"Model Context Protocol (MCP) dans LlamaIndex","local":"model-context-protocol-mcp-dans-llamaindex","sections":[],"depth":3}],"depth":2},{"title":"Utility Tools","local":"utility-tools","sections":[],"depth":2}],"depth":1}';function Bt(W){return Ut(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Rt extends Jt{constructor(m){super(),Zt(this,m,Bt,Vt,jt,{})}}export{Rt as component};
