import{s as Tt,n as _t,o as ht}from"../chunks/scheduler.37c15a92.js";import{S as $t,i as Ht,g as r,s as i,r as V,A as Mt,h as o,f as n,c as s,j as ct,u as W,x as p,k as Lt,y as xt,a as l,v as X,d as Y,t as Z,w as tt}from"../chunks/index.2bf4358c.js";import{H as vt}from"../chunks/Heading.8ada512a.js";import{E as Ct}from"../chunks/index.e71982be.js";function bt(et){let a,P,b,w,u,A,m,nt='<img src="https://huggingface.co/datasets/agents-course/course-images/resolve/main/en/bonus-unit1/thumbnail.jpg" alt="附加单元1缩略图"/>',k,f,lt="欢迎来到第一个<strong>附加单元</strong>，在这里你将学习如何<strong>为函数调用 (function calling) 微调大语言模型 (Large Language Model, LLM)</strong>。",E,g,it="在大语言模型领域，函数调用正在迅速成为一项<em>必须掌握</em>的技术。",R,c,st="这个想法是，不同于我们在第1单元中仅依赖基于提示的方法，函数调用在训练阶段就训练你的模型<strong>采取行动和解释观察结果</strong>，使你的人工智能更加健壮。",y,L,rt="<p><strong>我应该什么时候学习这个附加单元？</strong></p> <p>这个部分是<strong>可选的</strong>，比第1单元更高级，所以不要犹豫，你可以现在就学习这个单元，或者在通过本课程提高了知识水平后再回来学习。</p> <p>但不用担心，这个附加单元设计时包含了你需要的所有信息，所以即使你还没有学习微调的内部工作原理，我们也会带你了解为函数调用微调模型的每个核心概念。</p>",O,v,ot="让你能够跟上这个附加单元的最佳方式是：",j,T,pt='<li><p>了解如何使用 Transformers 微调大语言模型，如果你还不了解，<a href="https://huggingface.co/learn/nlp-course/chapter3/1?fw=pt" rel="nofollow">请查看这里</a></p></li> <li><p>了解如何使用 <code>SFTTrainer</code> 来微调我们的模型，要了解更多信息，<a href="https://huggingface.co/learn/nlp-course/en/chapter11/1" rel="nofollow">请查看这份文档</a></p></li>',z,S,q,_,I,h,at=`<li><p><strong>函数调用 (Function Calling)</strong><br/>
现代大语言模型如何有效地构建对话，使它们能够触发<strong>工具 (Tools)</strong>。</p></li> <li><p><strong>LoRA（低秩适应，Low-Rank Adaptation）</strong><br/>
一种<strong>轻量级且高效</strong>的微调方法，减少计算和存储开销。LoRA 使大型模型的训练变得<em>更快、更便宜、更容易</em>部署。</p></li> <li><p><strong>函数调用模型中的思考 → 行动 → 观察循环(Thought → Act → Observe Cycle)</strong><br/>
一种简单但强大的方法，用于构建模型如何决定何时（以及如何）调用函数、跟踪中间步骤以及解释来自外部工具或API的结果。</p></li> <li><p><strong>新的特殊词元 (Special Tokens)</strong><br/>
我们将介绍<strong>特殊标记</strong>，帮助模型区分：</p> <ul><li>内部”思维链”推理</li> <li>外部函数调用</li> <li>来自外部工具的响应</li></ul></li>`,U,F,B,$,ut="在完成这个附加单元后，你将能够：",G,H,mt="<li><strong>理解</strong>工具相关的 API 内部工作原理。</li> <li>使用 LoRA 技术<strong>微调</strong>模型。</li> <li><strong>实现</strong>和<strong>修改</strong>思考 → 行动 → 观察循环，以创建健壮和可维护的函数调用工作流。</li> <li><strong>设计和使用</strong>特殊词元，无缝分离模型的内部推理和外部行动。</li>",K,M,ft="而且你将<strong>拥有自己微调的模型来进行函数调用。</strong> 🔥",N,x,gt="让我们深入了解<strong>函数调用</strong>吧！",Q,C,D,d,J;return u=new vt({props:{title:"简介 (Introduction)",local:"简介-introduction",headingTag:"h1"}}),_=new vt({props:{title:"你将学到什么",local:"你将学到什么",headingTag:"h2"}}),C=new Ct({props:{source:"https://github.com/huggingface/agents-course/blob/main/units/zh-CN/bonus-unit1/introduction.mdx"}}),{c(){a=r("meta"),P=i(),b=r("p"),w=i(),V(u.$$.fragment),A=i(),m=r("p"),m.innerHTML=nt,k=i(),f=r("p"),f.innerHTML=lt,E=i(),g=r("p"),g.innerHTML=it,R=i(),c=r("p"),c.innerHTML=st,y=i(),L=r("blockquote"),L.innerHTML=rt,O=i(),v=r("p"),v.textContent=ot,j=i(),T=r("ol"),T.innerHTML=pt,z=i(),S=r("hr"),q=i(),V(_.$$.fragment),I=i(),h=r("ol"),h.innerHTML=at,U=i(),F=r("hr"),B=i(),$=r("p"),$.textContent=ut,G=i(),H=r("ul"),H.innerHTML=mt,K=i(),M=r("p"),M.innerHTML=ft,N=i(),x=r("p"),x.innerHTML=gt,Q=i(),V(C.$$.fragment),D=i(),d=r("p"),this.h()},l(t){const e=Mt("svelte-u9bgzb",document.head);a=o(e,"META",{name:!0,content:!0}),e.forEach(n),P=s(t),b=o(t,"P",{}),ct(b).forEach(n),w=s(t),W(u.$$.fragment,t),A=s(t),m=o(t,"P",{"data-svelte-h":!0}),p(m)!=="svelte-eemj1f"&&(m.innerHTML=nt),k=s(t),f=o(t,"P",{"data-svelte-h":!0}),p(f)!=="svelte-1wgkx6z"&&(f.innerHTML=lt),E=s(t),g=o(t,"P",{"data-svelte-h":!0}),p(g)!=="svelte-1ez96r4"&&(g.innerHTML=it),R=s(t),c=o(t,"P",{"data-svelte-h":!0}),p(c)!=="svelte-1lt4bwf"&&(c.innerHTML=st),y=s(t),L=o(t,"BLOCKQUOTE",{"data-svelte-h":!0}),p(L)!=="svelte-1fds36h"&&(L.innerHTML=rt),O=s(t),v=o(t,"P",{"data-svelte-h":!0}),p(v)!=="svelte-14192pp"&&(v.textContent=ot),j=s(t),T=o(t,"OL",{"data-svelte-h":!0}),p(T)!=="svelte-1hzjwim"&&(T.innerHTML=pt),z=s(t),S=o(t,"HR",{}),q=s(t),W(_.$$.fragment,t),I=s(t),h=o(t,"OL",{"data-svelte-h":!0}),p(h)!=="svelte-16eie1l"&&(h.innerHTML=at),U=s(t),F=o(t,"HR",{}),B=s(t),$=o(t,"P",{"data-svelte-h":!0}),p($)!=="svelte-1gdrjf1"&&($.textContent=ut),G=s(t),H=o(t,"UL",{"data-svelte-h":!0}),p(H)!=="svelte-o3qlna"&&(H.innerHTML=mt),K=s(t),M=o(t,"P",{"data-svelte-h":!0}),p(M)!=="svelte-ec9y99"&&(M.innerHTML=ft),N=s(t),x=o(t,"P",{"data-svelte-h":!0}),p(x)!=="svelte-1lkd5hm"&&(x.innerHTML=gt),Q=s(t),W(C.$$.fragment,t),D=s(t),d=o(t,"P",{}),ct(d).forEach(n),this.h()},h(){Lt(a,"name","hf:doc:metadata"),Lt(a,"content",dt)},m(t,e){xt(document.head,a),l(t,P,e),l(t,b,e),l(t,w,e),X(u,t,e),l(t,A,e),l(t,m,e),l(t,k,e),l(t,f,e),l(t,E,e),l(t,g,e),l(t,R,e),l(t,c,e),l(t,y,e),l(t,L,e),l(t,O,e),l(t,v,e),l(t,j,e),l(t,T,e),l(t,z,e),l(t,S,e),l(t,q,e),X(_,t,e),l(t,I,e),l(t,h,e),l(t,U,e),l(t,F,e),l(t,B,e),l(t,$,e),l(t,G,e),l(t,H,e),l(t,K,e),l(t,M,e),l(t,N,e),l(t,x,e),l(t,Q,e),X(C,t,e),l(t,D,e),l(t,d,e),J=!0},p:_t,i(t){J||(Y(u.$$.fragment,t),Y(_.$$.fragment,t),Y(C.$$.fragment,t),J=!0)},o(t){Z(u.$$.fragment,t),Z(_.$$.fragment,t),Z(C.$$.fragment,t),J=!1},d(t){t&&(n(P),n(b),n(w),n(A),n(m),n(k),n(f),n(E),n(g),n(R),n(c),n(y),n(L),n(O),n(v),n(j),n(T),n(z),n(S),n(q),n(I),n(h),n(U),n(F),n(B),n($),n(G),n(H),n(K),n(M),n(N),n(x),n(Q),n(D),n(d)),n(a),tt(u,t),tt(_,t),tt(C,t)}}}const dt='{"title":"简介 (Introduction)","local":"简介-introduction","sections":[{"title":"你将学到什么","local":"你将学到什么","sections":[],"depth":2}],"depth":1}';function Pt(et){return ht(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Rt extends $t{constructor(a){super(),Ht(this,a,Pt,bt,Tt,{})}}export{Rt as component};
