import{s as _t,n as xt,o as Ht}from"../chunks/scheduler.4048030c.js";import{S as ct,i as ht,e as r,s as i,c as X,h as Ct,a as o,d as n,b as s,f as vt,g as Y,j as p,k as Tt,l as bt,m as l,n as Z,t as tt,o as et,p as nt}from"../chunks/index.b7616466.js";import{C as Pt}from"../chunks/CopyLLMTxtMenu.123c0cc8.js";import{H as Mt,E as wt}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.3e96386d.js";function Ut(lt){let u,U,P,y,a,d,m,z,f,it='<img src="https://huggingface.co/datasets/agents-course/course-images/resolve/main/en/bonus-unit1/thumbnail.jpg" alt="Bonus Unit 1 Thumbnail"/>',A,g,st="첫 번째 <strong>Bonus Unit</strong>에 오신 것을 환영합니다. 여기에서 <strong>함수 호출을 위한 대형 언어 모델(LLM)을 미세 조정하는 방법</strong>을 배우게 됩니다.",B,L,rt="대형 언어 모델(LLM)에서 함수 호출은 <em>필수 학습</em> 기술이 되어 가고 있습니다.",E,$,ot="여기서 핵심은 Unit 1에서 했던 것처럼 프롬프트 기반 접근 방식에만 의존하는 대신, 함수 호출을 통해 <strong>학습 과정에서 직접 행동을 수행하고 관찰된 정보를 해석하도록</strong> 모델을 훈련시켜 AI의 견고성을 높인다는 점입니다.",R,v,pt="<p><strong>Bonus Unit을 언제 진행해야 하나요?</strong></p> <p>이 섹션은 <strong>선택 사항</strong>이며 Unit 1보다 <strong>심화된 내용</strong>을 다루므로, 지금 바로 진행하거나 이 과정을 통해 지식이 더 쌓인 후에 다시 살펴보셔도 좋습니다.</p> <p>하지만 걱정하지 마세요. 이 Bonus Unit은 필요한 모든 정보를 담고 있어, 미세 조정의 내부 작동 방식을 아직 배우지 않으셨더라도 함수 호출을 위한 핵심 개념을 하나하나 안내해 드립니다.</p>",k,T,ut="Bonus Unit을 가장 효과적으로 따라가려면:",O,M,at='<li><p>아직 Transformers로 대형 언어 모델(LLM)을 미세 조정하는 방법을 모른다면 <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>',S,q,I,_,j,x,mt=`<li><p><strong>함수 호출</strong><br/>
최신 LLM이 대화를 구조화하여 <strong>도구</strong>를 호출할 수 있게 하는 방법을 배웁니다.</p></li> <li><p><strong>LoRA (저차원 적응)</strong><br/>
계산 및 저장 오버헤드를 줄여주는 <strong>경량화되고 효율적인</strong> 미세 조정 방법입니다. LoRA는 대형 모델을 <em>더 빠르고 저렴하게 훈련하고, 쉽게 배포할 수 있게 합니다.</em></p></li> <li><p>함수 호출 모델에서의 <strong>사고 → 행동 → 관찰 사이클</strong><br/>
간단하지만 강력한 접근 방식으로, 모델이 언제(그리고 어떻게) 함수를 호출할지 결정하고, 중간 단계를 추적하며, 외부 도구나 API로부터 받은 결과를 해석하는 과정을 구조화합니다.</p></li> <li><p><strong>새로운 특수 토큰</strong><br/>
모델이 다음 항목들을 구별할 수 있도록 특수한 마커를 도입합니다.</p> <ul><li>내부 “사고 과정” 추론</li> <li>함수 호출 요청</li> <li>외부 도구로부터 돌아오는 응답</li></ul></li>`,F,G,K,H,ft="Bonus Unit을 마치면 다음을 할 수 있습니다.",Q,c,gt="<li><strong>도구</strong> 관련 API의 내부 작동 방식을 <strong>이해</strong>합니다.</li> <li>LoRA 기법을 사용하여 모델을 <strong>미세 조정</strong>합니다.</li> <li>사고 → 행동 → 관찰 사이클을 <strong>구현</strong>하고 <strong>수정</strong>하여 견고하고 유지보수 가능한 함수 호출 워크플로를 만듭니다.</li> <li>모델의 내부 추론과 외부 행동을 원활하게 구분할 수 있도록 <strong>특수 토큰을 설계 및 활용</strong>합니다.</li>",D,h,Lt="그리고 <strong>함수를 호출하기 위해 직접 모델을 미세 조정</strong>하게 됩니다. 🔥",J,C,$t="이제 <strong>함수 호출</strong>에 대해 본격적으로 살펴보겠습니다!",N,b,V,w,W;return a=new Pt({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),m=new Mt({props:{title:"소개",local:"introduction",headingTag:"h1"}}),_=new Mt({props:{title:"학습 내용",local:"what-you’ll-learn",headingTag:"h2"}}),b=new wt({props:{source:"https://github.com/huggingface/agents-course/blob/main/units/ko/bonus-unit1/introduction.mdx"}}),{c(){u=r("meta"),U=i(),P=r("p"),y=i(),X(a.$$.fragment),d=i(),X(m.$$.fragment),z=i(),f=r("p"),f.innerHTML=it,A=i(),g=r("p"),g.innerHTML=st,B=i(),L=r("p"),L.innerHTML=rt,E=i(),$=r("p"),$.innerHTML=ot,R=i(),v=r("blockquote"),v.innerHTML=pt,k=i(),T=r("p"),T.textContent=ut,O=i(),M=r("ol"),M.innerHTML=at,S=i(),q=r("hr"),I=i(),X(_.$$.fragment),j=i(),x=r("ol"),x.innerHTML=mt,F=i(),G=r("hr"),K=i(),H=r("p"),H.textContent=ft,Q=i(),c=r("ul"),c.innerHTML=gt,D=i(),h=r("p"),h.innerHTML=Lt,J=i(),C=r("p"),C.innerHTML=$t,N=i(),X(b.$$.fragment),V=i(),w=r("p"),this.h()},l(t){const e=Ct("svelte-u9bgzb",document.head);u=o(e,"META",{name:!0,content:!0}),e.forEach(n),U=s(t),P=o(t,"P",{}),vt(P).forEach(n),y=s(t),Y(a.$$.fragment,t),d=s(t),Y(m.$$.fragment,t),z=s(t),f=o(t,"P",{"data-svelte-h":!0}),p(f)!=="svelte-1lr1l38"&&(f.innerHTML=it),A=s(t),g=o(t,"P",{"data-svelte-h":!0}),p(g)!=="svelte-19e3z86"&&(g.innerHTML=st),B=s(t),L=o(t,"P",{"data-svelte-h":!0}),p(L)!=="svelte-tw0mit"&&(L.innerHTML=rt),E=s(t),$=o(t,"P",{"data-svelte-h":!0}),p($)!=="svelte-1hn0gkl"&&($.innerHTML=ot),R=s(t),v=o(t,"BLOCKQUOTE",{"data-svelte-h":!0}),p(v)!=="svelte-10i7onz"&&(v.innerHTML=pt),k=s(t),T=o(t,"P",{"data-svelte-h":!0}),p(T)!=="svelte-1enz9rz"&&(T.textContent=ut),O=s(t),M=o(t,"OL",{"data-svelte-h":!0}),p(M)!=="svelte-165gq95"&&(M.innerHTML=at),S=s(t),q=o(t,"HR",{}),I=s(t),Y(_.$$.fragment,t),j=s(t),x=o(t,"OL",{"data-svelte-h":!0}),p(x)!=="svelte-1mnunic"&&(x.innerHTML=mt),F=s(t),G=o(t,"HR",{}),K=s(t),H=o(t,"P",{"data-svelte-h":!0}),p(H)!=="svelte-iitvbi"&&(H.textContent=ft),Q=s(t),c=o(t,"UL",{"data-svelte-h":!0}),p(c)!=="svelte-1ulg8t1"&&(c.innerHTML=gt),D=s(t),h=o(t,"P",{"data-svelte-h":!0}),p(h)!=="svelte-1v3erz9"&&(h.innerHTML=Lt),J=s(t),C=o(t,"P",{"data-svelte-h":!0}),p(C)!=="svelte-2wv9t3"&&(C.innerHTML=$t),N=s(t),Y(b.$$.fragment,t),V=s(t),w=o(t,"P",{}),vt(w).forEach(n),this.h()},h(){Tt(u,"name","hf:doc:metadata"),Tt(u,"content",yt)},m(t,e){bt(document.head,u),l(t,U,e),l(t,P,e),l(t,y,e),Z(a,t,e),l(t,d,e),Z(m,t,e),l(t,z,e),l(t,f,e),l(t,A,e),l(t,g,e),l(t,B,e),l(t,L,e),l(t,E,e),l(t,$,e),l(t,R,e),l(t,v,e),l(t,k,e),l(t,T,e),l(t,O,e),l(t,M,e),l(t,S,e),l(t,q,e),l(t,I,e),Z(_,t,e),l(t,j,e),l(t,x,e),l(t,F,e),l(t,G,e),l(t,K,e),l(t,H,e),l(t,Q,e),l(t,c,e),l(t,D,e),l(t,h,e),l(t,J,e),l(t,C,e),l(t,N,e),Z(b,t,e),l(t,V,e),l(t,w,e),W=!0},p:xt,i(t){W||(tt(a.$$.fragment,t),tt(m.$$.fragment,t),tt(_.$$.fragment,t),tt(b.$$.fragment,t),W=!0)},o(t){et(a.$$.fragment,t),et(m.$$.fragment,t),et(_.$$.fragment,t),et(b.$$.fragment,t),W=!1},d(t){t&&(n(U),n(P),n(y),n(d),n(z),n(f),n(A),n(g),n(B),n(L),n(E),n($),n(R),n(v),n(k),n(T),n(O),n(M),n(S),n(q),n(I),n(j),n(x),n(F),n(G),n(K),n(H),n(Q),n(c),n(D),n(h),n(J),n(C),n(N),n(V),n(w)),n(u),nt(a,t),nt(m,t),nt(_,t),nt(b,t)}}}const yt='{"title":"소개","local":"introduction","sections":[{"title":"학습 내용","local":"what-you’ll-learn","sections":[],"depth":2}],"depth":1}';function dt(lt){return Ht(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Rt extends ct{constructor(u){super(),ht(this,u,dt,Ut,_t,{})}}export{Rt as component};
