import{s as Ke,o as De,n as Ve}from"../chunks/scheduler.889ebb13.js";import{S as Oe,i as et,g as p,s as a,r as M,m as G,A as tt,h as c,f as l,c as i,j as We,u as h,x as u,n as x,k as ee,y as Ie,a as n,v as y,d as $,t as T,w as g}from"../chunks/index.ca18042b.js";import{T as Re}from"../chunks/Tip.b8116e3c.js";import{C as ne}from"../chunks/CodeBlock.1db71023.js";import{H as se,E as lt}from"../chunks/EditOnGithub.b0b59db6.js";function nt(j){let m,o,b="这个 Notebook",r;return{c(){m=G("您可以通过"),o=p("a"),o.textContent=b,r=G("中的代码进行实践（支持 Google Colab 运行）。"),this.h()},l(s){m=x(s,"您可以通过"),o=c(s,"A",{href:!0,target:!0,"data-svelte-h":!0}),u(o)!=="svelte-1gibsv0"&&(o.textContent=b),r=x(s,"中的代码进行实践（支持 Google Colab 运行）。"),this.h()},h(){ee(o,"href","https://huggingface.co/agents-course/notebooks/blob/main/unit2/llama-index/tools.ipynb"),ee(o,"target","_blank")},m(s,f){n(s,m,f),n(s,o,f),n(s,r,f)},p:Ve,d(s){s&&(l(m),l(o),l(r))}}}function st(j){let m,o,b="函数调用指南",r,s,f="函数调用学习指南",w;return{c(){m=G("使用带有函数调用的智能体或 LLM 时，所选工具（以及为该工具编写的参数）在很大程度上取决于工具名称以及工具用途和参数的描述。在"),o=p("a"),o.textContent=b,r=G("和"),s=p("a"),s.textContent=f,w=G("中了解有关函数调用的更多信息。"),this.h()},l(d){m=x(d,"使用带有函数调用的智能体或 LLM 时，所选工具（以及为该工具编写的参数）在很大程度上取决于工具名称以及工具用途和参数的描述。在"),o=c(d,"A",{href:!0,"data-svelte-h":!0}),u(o)!=="svelte-xru48"&&(o.textContent=b),r=x(d,"和"),s=c(d,"A",{href:!0,"data-svelte-h":!0}),u(s)!=="svelte-nqnr79"&&(s.textContent=f),w=x(d,"中了解有关函数调用的更多信息。"),this.h()},h(){ee(o,"href","https://docs.llamaindex.ai/en/stable/module_guides/deploying/agents/modules/function_calling.html"),ee(s,"href","https://docs.llamaindex.ai/en/stable/understanding/agent/function_calling.html")},m(d,Z){n(d,m,Z),n(d,o,Z),n(d,r,Z),n(d,s,Z),n(d,w,Z)},p:Ve,d(d){d&&(l(m),l(o),l(r),l(s),l(w))}}}function ot(j){let m,o,b="LlamaHub",r;return{c(){m=G("您可以在"),o=p("a"),o.textContent=b,r=G("找到各种工具规范和实用工具"),this.h()},l(s){m=x(s,"您可以在"),o=c(s,"A",{href:!0,"data-svelte-h":!0}),u(o)!=="svelte-b92hie"&&(o.textContent=b),r=x(s,"找到各种工具规范和实用工具"),this.h()},h(){ee(o,"href","https://llamahub.ai/")},m(s,f){n(s,m,f),n(s,o,f),n(s,r,f)},p:Ve,d(s){s&&(l(m),l(o),l(r))}}}function at(j){let m,o,b,r,s,f,w,d=`<strong>定义清晰明确的工具集对性能至关重要。</strong> 正如我们在<a href="../../unit1/tools">第一单元</a>中讨论的，清晰的工具接口更便于 LLM 使用。
就像人类工程师使用的软件API接口一样，如果工具的工作原理容易理解，LLM就能更好地利用它。`,Z,C,Le="LlamaIndex 中主要包含<strong>四种工具类型</strong>：",oe,W,Be='<img src="https://huggingface.co/datasets/agents-course/course-images/resolve/main/en/unit2/llama-index/tools.png" alt="工具"/>',ae,I,ke="<li><code>FunctionTool</code>：将任意 Python 函数转换为智能体可以使用的工具。它能自动识别函数的工作原理。</li> <li><code>QueryEngineTool</code>：让智能体能够使用查询引擎的工具。由于智能体本身基于查询引擎构建，因此它们也可以将其他智能体作为工具使用。</li> <li><code>Toolspecs</code>：由社区创建的预设工具集，通常包含针对特定服务（如 Gmail）的工具。</li> <li><code>Utility Tools</code>：帮助处理来自其他工具的大量数据的特殊工具。</li>",ie,R,Ee="下面我们将详细讲解每种工具的使用方法。",me,V,pe,J,ce,L,Ne=`FunctionTool 提供了一种简单的方式，可以将任意 Python 函数封装成智能体可用的工具。
你可以传递同步或异步函数给这个工具，并可选地指定<code>name</code>和<code>description</code>参数。
工具名称和描述尤为重要，它们能帮助智能体理解何时以及如何有效地使用该工具。
以下示例演示了如何创建并调用 FunctionTool。`,re,B,ue,v,de,k,fe,E,He=`我们在上一单元中定义的 <code>QueryEngine</code> 可以使用 <code>QueryEngineTool</code> 类轻松转换为工具。
让我们看看如何在下面的示例中从 <code>QueryEngine</code> 创建 <code>QueryEngineTool</code>。`,be,N,Me,H,he,X,Xe=`将 <code>ToolSpecs</code> 视为可以和谐协作的工具集合 - 就像一个组织良好的专业工具包。
就像机械师的工具包包含用于车辆维修的互补工具一样，<code>ToolSpec</code> 会将相关工具组合起来用于特定目的。
例如，会计智能体的 <code>ToolSpec</code> 可以优雅地集成电子表格功能、电子邮件功能和计算工具，以精确高效地处理财务任务。`,ye,_,te,Se="安装 Google Toolspec",Ce,S,$e,F,Fe="现在我们可以加载工具规范并将其转换为工具列表。",Te,Q,ge,Y,Qe="为了更详细地了解这些工具，我们可以查看每个工具的<code>元数据</code>。",we,q,Ze,z,je,A,Ye=`很多时候，直接查询 API <strong>可能会返回过量数据</strong>，其中部分可能无关紧要、超出 LLM 的上下文窗口容量，或导致不必要的 token 消耗。
让我们详细了解以下两个主要实用工具：`,Je,P,qe="<li><code>OnDemandToolLoader</code>：该工具可将任何现有的 LlamaIndex 数据加载器（BaseReader 类）转化为智能体可使用的工具。该工具可通过调用数据加载器<code>load_data</code>所需的所有参数以及自然语言查询字符串来触发。在执行过程中，我们首先从数据加载器加载数据，建立索引（例如使用向量存储），然后进行”按需”查询。这三个步骤都在单个工具调用中完成。</li> <li><code>LoadAndSearchToolSpec</code>：该工具规范接受任何现有工具作为输入。作为工具规范，它实现了<code>to_tool_list</code>方法，调用该方法时会返回两个工具：加载工具和搜索工具。加载工具的执行会调用底层工具并对输出建立索引（默认使用向量索引）。搜索工具的执行会接受查询字符串作为输入并调用底层索引。</li>",ve,U,_e,K,ze="现在我们已经理解了 LlamaIndex 中智能体和工具的基础知识，接下来让我们看看如何<strong>使用 LlamaIndex 创建可配置且易管理的工作流程！</strong>",Ue,D,Ge,le,xe;return s=new se({props:{title:"在 LlamaIndex 中使用工具",local:"在-llamaindex-中使用工具",headingTag:"h1"}}),V=new se({props:{title:"创建FunctionTool",local:"创建functiontool",headingTag:"h2"}}),J=new Re({props:{$$slots:{default:[nt]},$$scope:{ctx:j}}}),B=new ne({props:{code:"ZnJvbSUyMGxsYW1hX2luZGV4LmNvcmUudG9vbHMlMjBpbXBvcnQlMjBGdW5jdGlvblRvb2wlMEElMEFkZWYlMjBnZXRfd2VhdGhlcihsb2NhdGlvbiUzQSUyMHN0ciklMjAtJTNFJTIwc3RyJTNBJTBBJTIwJTIwJTIwJTIwJTIyJTIyJTIyVXNlZnVsJTIwZm9yJTIwZ2V0dGluZyUyMHRoZSUyMHdlYXRoZXIlMjBmb3IlMjBhJTIwZ2l2ZW4lMjBsb2NhdGlvbi4lMjIlMjIlMjIlMEElMjAlMjAlMjAlMjBwcmludChmJTIyR2V0dGluZyUyMHdlYXRoZXIlMjBmb3IlMjAlN0Jsb2NhdGlvbiU3RCUyMiklMEElMjAlMjAlMjAlMjByZXR1cm4lMjBmJTIyVGhlJTIwd2VhdGhlciUyMGluJTIwJTdCbG9jYXRpb24lN0QlMjBpcyUyMHN1bm55JTIyJTBBJTBBdG9vbCUyMCUzRCUyMEZ1bmN0aW9uVG9vbC5mcm9tX2RlZmF1bHRzKCUwQSUyMCUyMCUyMCUyMGdldF93ZWF0aGVyJTJDJTBBJTIwJTIwJTIwJTIwbmFtZSUzRCUyMm15X3dlYXRoZXJfdG9vbCUyMiUyQyUwQSUyMCUyMCUyMCUyMGRlc2NyaXB0aW9uJTNEJTIyVXNlZnVsJTIwZm9yJTIwZ2V0dGluZyUyMHRoZSUyMHdlYXRoZXIlMjBmb3IlMjBhJTIwZ2l2ZW4lMjBsb2NhdGlvbi4lMjIlMkMlMEEpJTBBdG9vbC5jYWxsKCUyMk5ldyUyMFlvcmslMjIp",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;Useful for getting the weather for a given location.&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}}),v=new Re({props:{$$slots:{default:[st]},$$scope:{ctx:j}}}),k=new se({props:{title:"创建 QueryEngineTool",local:"创建-queryenginetool",headingTag:"h2"}}),N=new ne({props:{code:"ZnJvbSUyMGxsYW1hX2luZGV4LmNvcmUlMjBpbXBvcnQlMjBWZWN0b3JTdG9yZUluZGV4JTBBZnJvbSUyMGxsYW1hX2luZGV4LmNvcmUudG9vbHMlMjBpbXBvcnQlMjBRdWVyeUVuZ2luZVRvb2wlMEFmcm9tJTIwbGxhbWFfaW5kZXgubGxtcy5odWdnaW5nZmFjZV9hcGklMjBpbXBvcnQlMjBIdWdnaW5nRmFjZUluZmVyZW5jZUFQSSUwQWZyb20lMjBsbGFtYV9pbmRleC5lbWJlZGRpbmdzLmh1Z2dpbmdmYWNlX2FwaSUyMGltcG9ydCUyMEh1Z2dpbmdGYWNlSW5mZXJlbmNlQVBJRW1iZWRkaW5nJTBBZnJvbSUyMGxsYW1hX2luZGV4LnZlY3Rvcl9zdG9yZXMuY2hyb21hJTIwaW1wb3J0JTIwQ2hyb21hVmVjdG9yU3RvcmUlMEElMEFlbWJlZF9tb2RlbCUyMCUzRCUyMEh1Z2dpbmdGYWNlSW5mZXJlbmNlQVBJRW1iZWRkaW5nKCUyMkJBQUklMkZiZ2Utc21hbGwtZW4tdjEuNSUyMiklMEElMEFkYiUyMCUzRCUyMGNocm9tYWRiLlBlcnNpc3RlbnRDbGllbnQocGF0aCUzRCUyMi4lMkZhbGZyZWRfY2hyb21hX2RiJTIyKSUwQWNocm9tYV9jb2xsZWN0aW9uJTIwJTNEJTIwZGIuZ2V0X29yX2NyZWF0ZV9jb2xsZWN0aW9uKCUyMmFsZnJlZCUyMiklMEF2ZWN0b3Jfc3RvcmUlMjAlM0QlMjBDaHJvbWFWZWN0b3JTdG9yZShjaHJvbWFfY29sbGVjdGlvbiUzRGNocm9tYV9jb2xsZWN0aW9uKSUwQSUwQWluZGV4JTIwJTNEJTIwVmVjdG9yU3RvcmVJbmRleC5mcm9tX3ZlY3Rvcl9zdG9yZSh2ZWN0b3Jfc3RvcmUlMkMlMjBlbWJlZF9tb2RlbCUzRGVtYmVkX21vZGVsKSUwQSUwQWxsbSUyMCUzRCUyMEh1Z2dpbmdGYWNlSW5mZXJlbmNlQVBJKG1vZGVsX25hbWUlM0QlMjJRd2VuJTJGUXdlbjIuNS1Db2Rlci0zMkItSW5zdHJ1Y3QlMjIpJTBBcXVlcnlfZW5naW5lJTIwJTNEJTIwaW5kZXguYXNfcXVlcnlfZW5naW5lKGxsbSUzRGxsbSklMEF0b29sJTIwJTNEJTIwUXVlcnlFbmdpbmVUb29sLmZyb21fZGVmYXVsdHMocXVlcnlfZW5naW5lJTJDJTIwbmFtZSUzRCUyMnNvbWUlMjB1c2VmdWwlMjBuYW1lJTIyJTJDJTIwZGVzY3JpcHRpb24lM0QlMjJzb21lJTIwdXNlZnVsJTIwZGVzY3JpcHRpb24lMjIp",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_api <span class="hljs-keyword">import</span> HuggingFaceInferenceAPIEmbedding
<span class="hljs-keyword">from</span> llama_index.vector_stores.chroma <span class="hljs-keyword">import</span> ChromaVectorStore

embed_model = HuggingFaceInferenceAPIEmbedding(<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}}),H=new se({props:{title:"创建 Toolspecs",local:"创建-toolspecs",headingTag:"h2"}}),S=new ne({props:{code:"cGlwJTIwaW5zdGFsbCUyMGxsYW1hLWluZGV4LXRvb2xzLWdvb2dsZQ==",highlighted:"pip install llama-index-tools-google",wrap:!1}}),Q=new ne({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}}),q=new ne({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}}),z=new se({props:{title:"实用工具",local:"实用工具",headingTag:"h2"}}),U=new Re({props:{$$slots:{default:[ot]},$$scope:{ctx:j}}}),D=new lt({props:{source:"https://github.com/huggingface/agents-course/blob/main/units/zh-CN/unit2/llama-index/tools.mdx"}}),{c(){m=p("meta"),o=a(),b=p("p"),r=a(),M(s.$$.fragment),f=a(),w=p("p"),w.innerHTML=d,Z=a(),C=p("p"),C.innerHTML=Le,oe=a(),W=p("p"),W.innerHTML=Be,ae=a(),I=p("ol"),I.innerHTML=ke,ie=a(),R=p("p"),R.textContent=Ee,me=a(),M(V.$$.fragment),pe=a(),M(J.$$.fragment),ce=a(),L=p("p"),L.innerHTML=Ne,re=a(),M(B.$$.fragment),ue=a(),M(v.$$.fragment),de=a(),M(k.$$.fragment),fe=a(),E=p("p"),E.innerHTML=He,be=a(),M(N.$$.fragment),Me=a(),M(H.$$.fragment),he=a(),X=p("p"),X.innerHTML=Xe,ye=a(),_=p("details"),te=p("summary"),te.textContent=Se,Ce=G(`
正如 [LlamaHub 部分](llama-hub) 中介绍的那样，我们可以使用以下命令安装 Google toolspec：

	`),M(S.$$.fragment),$e=a(),F=p("p"),F.textContent=Fe,Te=a(),M(Q.$$.fragment),ge=a(),Y=p("p"),Y.innerHTML=Qe,we=a(),M(q.$$.fragment),Ze=a(),M(z.$$.fragment),je=a(),A=p("p"),A.innerHTML=Ye,Je=a(),P=p("ol"),P.innerHTML=qe,ve=a(),M(U.$$.fragment),_e=a(),K=p("p"),K.innerHTML=ze,Ue=a(),M(D.$$.fragment),Ge=a(),le=p("p"),this.h()},l(e){const t=tt("svelte-u9bgzb",document.head);m=c(t,"META",{name:!0,content:!0}),t.forEach(l),o=i(e),b=c(e,"P",{}),We(b).forEach(l),r=i(e),h(s.$$.fragment,e),f=i(e),w=c(e,"P",{"data-svelte-h":!0}),u(w)!=="svelte-2m2wye"&&(w.innerHTML=d),Z=i(e),C=c(e,"P",{"data-svelte-h":!0}),u(C)!=="svelte-3o10ap"&&(C.innerHTML=Le),oe=i(e),W=c(e,"P",{"data-svelte-h":!0}),u(W)!=="svelte-1puooe3"&&(W.innerHTML=Be),ae=i(e),I=c(e,"OL",{"data-svelte-h":!0}),u(I)!=="svelte-au1cjc"&&(I.innerHTML=ke),ie=i(e),R=c(e,"P",{"data-svelte-h":!0}),u(R)!=="svelte-1jlj8k4"&&(R.textContent=Ee),me=i(e),h(V.$$.fragment,e),pe=i(e),h(J.$$.fragment,e),ce=i(e),L=c(e,"P",{"data-svelte-h":!0}),u(L)!=="svelte-c86ggq"&&(L.innerHTML=Ne),re=i(e),h(B.$$.fragment,e),ue=i(e),h(v.$$.fragment,e),de=i(e),h(k.$$.fragment,e),fe=i(e),E=c(e,"P",{"data-svelte-h":!0}),u(E)!=="svelte-19fn29r"&&(E.innerHTML=He),be=i(e),h(N.$$.fragment,e),Me=i(e),h(H.$$.fragment,e),he=i(e),X=c(e,"P",{"data-svelte-h":!0}),u(X)!=="svelte-4ryh0b"&&(X.innerHTML=Xe),ye=i(e),_=c(e,"DETAILS",{});var O=We(_);te=c(O,"SUMMARY",{"data-svelte-h":!0}),u(te)!=="svelte-jh6hbu"&&(te.textContent=Se),Ce=x(O,`
正如 [LlamaHub 部分](llama-hub) 中介绍的那样，我们可以使用以下命令安装 Google toolspec：

	`),h(S.$$.fragment,O),O.forEach(l),$e=i(e),F=c(e,"P",{"data-svelte-h":!0}),u(F)!=="svelte-1fx0kig"&&(F.textContent=Fe),Te=i(e),h(Q.$$.fragment,e),ge=i(e),Y=c(e,"P",{"data-svelte-h":!0}),u(Y)!=="svelte-io2nl"&&(Y.innerHTML=Qe),we=i(e),h(q.$$.fragment,e),Ze=i(e),h(z.$$.fragment,e),je=i(e),A=c(e,"P",{"data-svelte-h":!0}),u(A)!=="svelte-1w2i7nx"&&(A.innerHTML=Ye),Je=i(e),P=c(e,"OL",{"data-svelte-h":!0}),u(P)!=="svelte-1aywyxf"&&(P.innerHTML=qe),ve=i(e),h(U.$$.fragment,e),_e=i(e),K=c(e,"P",{"data-svelte-h":!0}),u(K)!=="svelte-drrdj6"&&(K.innerHTML=ze),Ue=i(e),h(D.$$.fragment,e),Ge=i(e),le=c(e,"P",{}),We(le).forEach(l),this.h()},h(){ee(m,"name","hf:doc:metadata"),ee(m,"content",it)},m(e,t){Ie(document.head,m),n(e,o,t),n(e,b,t),n(e,r,t),y(s,e,t),n(e,f,t),n(e,w,t),n(e,Z,t),n(e,C,t),n(e,oe,t),n(e,W,t),n(e,ae,t),n(e,I,t),n(e,ie,t),n(e,R,t),n(e,me,t),y(V,e,t),n(e,pe,t),y(J,e,t),n(e,ce,t),n(e,L,t),n(e,re,t),y(B,e,t),n(e,ue,t),y(v,e,t),n(e,de,t),y(k,e,t),n(e,fe,t),n(e,E,t),n(e,be,t),y(N,e,t),n(e,Me,t),y(H,e,t),n(e,he,t),n(e,X,t),n(e,ye,t),n(e,_,t),Ie(_,te),Ie(_,Ce),y(S,_,null),n(e,$e,t),n(e,F,t),n(e,Te,t),y(Q,e,t),n(e,ge,t),n(e,Y,t),n(e,we,t),y(q,e,t),n(e,Ze,t),y(z,e,t),n(e,je,t),n(e,A,t),n(e,Je,t),n(e,P,t),n(e,ve,t),y(U,e,t),n(e,_e,t),n(e,K,t),n(e,Ue,t),y(D,e,t),n(e,Ge,t),n(e,le,t),xe=!0},p(e,[t]){const O={};t&2&&(O.$$scope={dirty:t,ctx:e}),J.$set(O);const Ae={};t&2&&(Ae.$$scope={dirty:t,ctx:e}),v.$set(Ae);const Pe={};t&2&&(Pe.$$scope={dirty:t,ctx:e}),U.$set(Pe)},i(e){xe||($(s.$$.fragment,e),$(V.$$.fragment,e),$(J.$$.fragment,e),$(B.$$.fragment,e),$(v.$$.fragment,e),$(k.$$.fragment,e),$(N.$$.fragment,e),$(H.$$.fragment,e),$(S.$$.fragment,e),$(Q.$$.fragment,e),$(q.$$.fragment,e),$(z.$$.fragment,e),$(U.$$.fragment,e),$(D.$$.fragment,e),xe=!0)},o(e){T(s.$$.fragment,e),T(V.$$.fragment,e),T(J.$$.fragment,e),T(B.$$.fragment,e),T(v.$$.fragment,e),T(k.$$.fragment,e),T(N.$$.fragment,e),T(H.$$.fragment,e),T(S.$$.fragment,e),T(Q.$$.fragment,e),T(q.$$.fragment,e),T(z.$$.fragment,e),T(U.$$.fragment,e),T(D.$$.fragment,e),xe=!1},d(e){e&&(l(o),l(b),l(r),l(f),l(w),l(Z),l(C),l(oe),l(W),l(ae),l(I),l(ie),l(R),l(me),l(pe),l(ce),l(L),l(re),l(ue),l(de),l(fe),l(E),l(be),l(Me),l(he),l(X),l(ye),l(_),l($e),l(F),l(Te),l(ge),l(Y),l(we),l(Ze),l(je),l(A),l(Je),l(P),l(ve),l(_e),l(K),l(Ue),l(Ge),l(le)),l(m),g(s,e),g(V,e),g(J,e),g(B,e),g(v,e),g(k,e),g(N,e),g(H,e),g(S),g(Q,e),g(q,e),g(z,e),g(U,e),g(D,e)}}}const it='{"title":"在 LlamaIndex 中使用工具","local":"在-llamaindex-中使用工具","sections":[{"title":"创建FunctionTool","local":"创建functiontool","sections":[],"depth":2},{"title":"创建 QueryEngineTool","local":"创建-queryenginetool","sections":[],"depth":2},{"title":"创建 Toolspecs","local":"创建-toolspecs","sections":[],"depth":2},{"title":"实用工具","local":"实用工具","sections":[],"depth":2}],"depth":1}';function mt(j){return De(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class ft extends Oe{constructor(m){super(),et(this,m,mt,at,Ke,{})}}export{ft as component};
