Buckets:

HuggingFaceDocBuilder's picture
download
raw
13.5 kB
import{s as xt,n as Bt,o as Ht}from"../chunks/scheduler.cc52f4b9.js";import{S as Vt,i as St,e as a,s as n,c as $,h as Nt,a as i,d as s,b as M,f as Lt,g as _,j as o,k as vt,l as Qt,m as e,n as x,t as B,o as H,p as V}from"../chunks/index.1e918bfb.js";import{C as Wt}from"../chunks/CopyLLMTxtMenu.b63a2943.js";import{C as $t}from"../chunks/CodeBlock.81901540.js";import{H as _t,E as kt}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.0a16bc89.js";function zt(jt){let T,Q,S,W,u,k,J,z,p,rt='함수 호출은 <strong>LLM이 환경과 상호작용하여 동작을 수행하는 방법</strong>입니다. 처음에는 <a href="https://openai.com/index/function-calling-and-other-api-updates/" rel="nofollow">GPT-4에서 도입되었으며</a>, 이후 다른 모델에서도 구현되었습니다.',G,j,It="에이전트의 도구처럼, 함수 호출은 모델에게 <strong>주어진 환경에서 동작을 수행할 수 있는 능력</strong>을 제공합니다. 다만 함수 호출 능력은 <strong>모델 스스로 학습을 통해 체득한 것</strong>이므로, 다른 에이전트 기법들보다 <strong>프롬프트에 덜 의존</strong>한다는 점입니다.",P,r,yt="Unit 1에서는 에이전트가 <strong>도구를 사용하는 법을 학습한 것이 아니며</strong>, 우리는 그저 도구 목록을 모델에게 제공했고, 모델이 <strong>이 도구들을 활용해 계획을 생성할 것이라는 일반화 능력</strong>에 의존했습니다.",Z,I,wt="여기서는 <strong>함수 호출을 통해 에이전트가 도구를 사용할 수 있도록 미세 조정(학습)</strong>합니다.",Y,y,O,w,mt="Unit 1에서는 에이전트의 일반적인 워크플로우를 살펴보았습니다. 사용자가 에이전트에 도구를 제공하고 질의를 전달하면, 모델은 다음 과정을 반복합니다.",R,m,ct="<li><em>사고(Think)</em> : 목표를 달성하기 위해 어떤 동작을 수행해야 할지 고민합니다.</li> <li><em>행동(Act)</em> : 정해진 형식에 맞춰 행동을 수행하고, 일단 자신의 텍스트 응답 생성은 멈춥니다.</li> <li><em>관찰(Observe)</em> : 행동의 실행 결과를 외부로부터 받아옵니다.</li>",D,c,At="API를 통한 “일반적인” 대화는 아래처럼 사용자(“user”)와 어시스턴트(“assistant”)가 메시지를 주고받는 형태로 구성됩니다.",F,A,X,U,Ut="함수 호출은 이 대화의 흐름에 <strong>새로운 역할(“role”)</strong>을 추가합니다!",K,f,ft="<li><strong>행동(Action)</strong>을 위한 새로운 역할</li> <li><strong>관찰(Observation)</strong>을 위한 새로운 역할</li>",tt,q,qt='<a href="https://docs.mistral.ai/capabilities/function_calling/" rel="nofollow">Mistral API</a>를 예로 들면, 대화 구조가 이렇게 바뀌게 됩니다.',lt,g,st,C,gt="<p>…하지만 방금 함수 호출에 ‘새로운 역할’이 추가된다고 하지 않았나요?</p>",et,h,Ct="<strong>그렇기도 하고 아니기도 합니다.</strong> 이 경우를 비롯해 많은 API에서, 모델은 수행할 동작을 “assistant” 메시지로 출력합니다. 그러면 이후 채팅 템플릿이 이 메시지를 함수 호출을 위한 <strong>특수 토큰</strong>으로 변환하여 처리합니다.",nt,d,ht="<li><code>[AVAILABLE_TOOLS]</code> – 사용 가능한 도구 목록 시작</li> <li><code>[/AVAILABLE_TOOLS]</code> – 사용 가능한 도구 목록 종료</li> <li><code>[TOOL_CALLS]</code> – 도구를 호출(즉, <strong>Action</strong> 수행)</li> <li><code>[TOOL_RESULTS]</code> – 동작 결과(“Observe”)</li> <li><code>[/TOOL_RESULTS]</code> – 관찰 종료(이제 모델이 이어서 응답을 생성할 수 있음)</li>",Mt,b,dt='강의에서 함수 호출을 다시 다룰 예정이지만, 더 깊이 살펴보고 싶다면 <a href="https://docs.mistral.ai/capabilities/function_calling/" rel="nofollow">Mistral의 공식 문서</a>를 참고하세요.',at,it,ot,E,bt='이제 함수 호출이 무엇이고 어떻게 작동하는지 배웠으니, 아직 해당 기능이 없는 모델인 [google/gemma-2-2b-it](<a href="https://huggingface.co/google/gemma-2-2b-it" rel="nofollow">google/gemma-2-2b-it</a>에 새로운 특수 토큰을 덧붙이는 방식으로 함수 호출 기능을 직접 추가해보겠습니다.',Tt,L,Et="이를 위해서는 <strong>먼저 미세 조정과 LoRA</strong>를 이해해야 합니다.",ut,v,Jt,N,pt;return u=new Wt({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),J=new _t({props:{title:"함수 호출이란 무엇인가",local:"what-is-function-calling",headingTag:"h1"}}),y=new _t({props:{title:"모델은 동작 수행을 어떻게 “학습”할까요?",local:"how-does-the-model-learn-to-take-an-action",headingTag:"h2"}}),A=new $t({props:{code:"Y29udmVyc2F0aW9uJTIwJTNEJTIwJTVCJTBBJTIwJTIwJTIwJTIwJTdCJTIycm9sZSUyMiUzQSUyMCUyMnVzZXIlMjIlMkMlMjAlMjJjb250ZW50JTIyJTNBJTIwJTIySSUyMG5lZWQlMjBoZWxwJTIwd2l0aCUyMG15JTIwb3JkZXIlMjIlN0QlMkMlMEElMjAlMjAlMjAlMjAlN0IlMjJyb2xlJTIyJTNBJTIwJTIyYXNzaXN0YW50JTIyJTJDJTIwJTIyY29udGVudCUyMiUzQSUyMCUyMkknZCUyMGJlJTIwaGFwcHklMjB0byUyMGhlbHAuJTIwQ291bGQlMjB5b3UlMjBwcm92aWRlJTIweW91ciUyMG9yZGVyJTIwbnVtYmVyJTNGJTIyJTdEJTJDJTBBJTIwJTIwJTIwJTIwJTdCJTIycm9sZSUyMiUzQSUyMCUyMnVzZXIlMjIlMkMlMjAlMjJjb250ZW50JTIyJTNBJTIwJTIySXQncyUyME9SREVSLTEyMyUyMiU3RCUyQyUwQSU1RA==",highlighted:`conversation = [
{<span class="hljs-string">&quot;role&quot;</span>: <span class="hljs-string">&quot;user&quot;</span>, <span class="hljs-string">&quot;content&quot;</span>: <span class="hljs-string">&quot;I need help with my order&quot;</span>},
{<span class="hljs-string">&quot;role&quot;</span>: <span class="hljs-string">&quot;assistant&quot;</span>, <span class="hljs-string">&quot;content&quot;</span>: <span class="hljs-string">&quot;I&#x27;d be happy to help. Could you provide your order number?&quot;</span>},
{<span class="hljs-string">&quot;role&quot;</span>: <span class="hljs-string">&quot;user&quot;</span>, <span class="hljs-string">&quot;content&quot;</span>: <span class="hljs-string">&quot;It&#x27;s ORDER-123&quot;</span>},
]`,wrap:!1}}),g=new $t({props:{code:"Y29udmVyc2F0aW9uJTIwJTNEJTIwJTVCJTBBJTIwJTIwJTIwJTIwJTdCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIycm9sZSUyMiUzQSUyMCUyMnVzZXIlMjIlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJjb250ZW50JTIyJTNBJTIwJTIyV2hhdCdzJTIwdGhlJTIwc3RhdHVzJTIwb2YlMjBteSUyMHRyYW5zYWN0aW9uJTIwVDEwMDElM0YlMjIlMEElMjAlMjAlMjAlMjAlN0QlMkMlMEElMjAlMjAlMjAlMjAlN0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJyb2xlJTIyJTNBJTIwJTIyYXNzaXN0YW50JTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIyY29udGVudCUyMiUzQSUyMCUyMiUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMmZ1bmN0aW9uX2NhbGwlMjIlM0ElMjAlN0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJuYW1lJTIyJTNBJTIwJTIycmV0cmlldmVfcGF5bWVudF9zdGF0dXMlMjIlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJhcmd1bWVudHMlMjIlM0ElMjAlMjIlN0IlNUMlMjJ0cmFuc2FjdGlvbl9pZCU1QyUyMiUzQSUyMCU1QyUyMlQxMDAxJTVDJTIyJTdEJTIyJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdEJTBBJTIwJTIwJTIwJTIwJTdEJTJDJTBBJTIwJTIwJTIwJTIwJTdCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIycm9sZSUyMiUzQSUyMCUyMnRvb2wlMjIlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJuYW1lJTIyJTNBJTIwJTIycmV0cmlldmVfcGF5bWVudF9zdGF0dXMlMjIlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJjb250ZW50JTIyJTNBJTIwJTIyJTdCJTVDJTIyc3RhdHVzJTVDJTIyJTNBJTIwJTVDJTIyUGFpZCU1QyUyMiU3RCUyMiUwQSUyMCUyMCUyMCUyMCU3RCUyQyUwQSUyMCUyMCUyMCUyMCU3QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMnJvbGUlMjIlM0ElMjAlMjJhc3Npc3RhbnQlMjIlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJjb250ZW50JTIyJTNBJTIwJTIyWW91ciUyMHRyYW5zYWN0aW9uJTIwVDEwMDElMjBoYXMlMjBiZWVuJTIwc3VjY2Vzc2Z1bGx5JTIwcGFpZC4lMjIlMEElMjAlMjAlMjAlMjAlN0QlMEElNUQ=",highlighted:`conversation = [
{
<span class="hljs-string">&quot;role&quot;</span>: <span class="hljs-string">&quot;user&quot;</span>,
<span class="hljs-string">&quot;content&quot;</span>: <span class="hljs-string">&quot;What&#x27;s the status of my transaction T1001?&quot;</span>
},
{
<span class="hljs-string">&quot;role&quot;</span>: <span class="hljs-string">&quot;assistant&quot;</span>,
<span class="hljs-string">&quot;content&quot;</span>: <span class="hljs-string">&quot;&quot;</span>,
<span class="hljs-string">&quot;function_call&quot;</span>: {
<span class="hljs-string">&quot;name&quot;</span>: <span class="hljs-string">&quot;retrieve_payment_status&quot;</span>,
<span class="hljs-string">&quot;arguments&quot;</span>: <span class="hljs-string">&quot;{\\&quot;transaction_id\\&quot;: \\&quot;T1001\\&quot;}&quot;</span>
}
},
{
<span class="hljs-string">&quot;role&quot;</span>: <span class="hljs-string">&quot;tool&quot;</span>,
<span class="hljs-string">&quot;name&quot;</span>: <span class="hljs-string">&quot;retrieve_payment_status&quot;</span>,
<span class="hljs-string">&quot;content&quot;</span>: <span class="hljs-string">&quot;{\\&quot;status\\&quot;: \\&quot;Paid\\&quot;}&quot;</span>
},
{
<span class="hljs-string">&quot;role&quot;</span>: <span class="hljs-string">&quot;assistant&quot;</span>,
<span class="hljs-string">&quot;content&quot;</span>: <span class="hljs-string">&quot;Your transaction T1001 has been successfully paid.&quot;</span>
}
]`,wrap:!1}}),v=new kt({props:{source:"https://github.com/huggingface/agents-course/blob/main/units/ko/bonus-unit1/what-is-function-calling.mdx"}}),{c(){T=a("meta"),Q=n(),S=a("p"),W=n(),$(u.$$.fragment),k=n(),$(J.$$.fragment),z=n(),p=a("p"),p.innerHTML=rt,G=n(),j=a("p"),j.innerHTML=It,P=n(),r=a("p"),r.innerHTML=yt,Z=n(),I=a("p"),I.innerHTML=wt,Y=n(),$(y.$$.fragment),O=n(),w=a("p"),w.textContent=mt,R=n(),m=a("ol"),m.innerHTML=ct,D=n(),c=a("p"),c.textContent=At,F=n(),$(A.$$.fragment),X=n(),U=a("p"),U.innerHTML=Ut,K=n(),f=a("ol"),f.innerHTML=ft,tt=n(),q=a("p"),q.innerHTML=qt,lt=n(),$(g.$$.fragment),st=n(),C=a("blockquote"),C.innerHTML=gt,et=n(),h=a("p"),h.innerHTML=Ct,nt=n(),d=a("ul"),d.innerHTML=ht,Mt=n(),b=a("p"),b.innerHTML=dt,at=n(),it=a("hr"),ot=n(),E=a("p"),E.innerHTML=bt,Tt=n(),L=a("p"),L.innerHTML=Et,ut=n(),$(v.$$.fragment),Jt=n(),N=a("p"),this.h()},l(t){const l=Nt("svelte-u9bgzb",document.head);T=i(l,"META",{name:!0,content:!0}),l.forEach(s),Q=M(t),S=i(t,"P",{}),Lt(S).forEach(s),W=M(t),_(u.$$.fragment,t),k=M(t),_(J.$$.fragment,t),z=M(t),p=i(t,"P",{"data-svelte-h":!0}),o(p)!=="svelte-vu1rra"&&(p.innerHTML=rt),G=M(t),j=i(t,"P",{"data-svelte-h":!0}),o(j)!=="svelte-11we16m"&&(j.innerHTML=It),P=M(t),r=i(t,"P",{"data-svelte-h":!0}),o(r)!=="svelte-wmizw5"&&(r.innerHTML=yt),Z=M(t),I=i(t,"P",{"data-svelte-h":!0}),o(I)!=="svelte-z7ldkr"&&(I.innerHTML=wt),Y=M(t),_(y.$$.fragment,t),O=M(t),w=i(t,"P",{"data-svelte-h":!0}),o(w)!=="svelte-y32mlq"&&(w.textContent=mt),R=M(t),m=i(t,"OL",{"data-svelte-h":!0}),o(m)!=="svelte-ak88y6"&&(m.innerHTML=ct),D=M(t),c=i(t,"P",{"data-svelte-h":!0}),o(c)!=="svelte-r0v9bv"&&(c.textContent=At),F=M(t),_(A.$$.fragment,t),X=M(t),U=i(t,"P",{"data-svelte-h":!0}),o(U)!=="svelte-iub1bm"&&(U.innerHTML=Ut),K=M(t),f=i(t,"OL",{"data-svelte-h":!0}),o(f)!=="svelte-1sjli8g"&&(f.innerHTML=ft),tt=M(t),q=i(t,"P",{"data-svelte-h":!0}),o(q)!=="svelte-1slgxq7"&&(q.innerHTML=qt),lt=M(t),_(g.$$.fragment,t),st=M(t),C=i(t,"BLOCKQUOTE",{"data-svelte-h":!0}),o(C)!=="svelte-obpfff"&&(C.innerHTML=gt),et=M(t),h=i(t,"P",{"data-svelte-h":!0}),o(h)!=="svelte-13mrp38"&&(h.innerHTML=Ct),nt=M(t),d=i(t,"UL",{"data-svelte-h":!0}),o(d)!=="svelte-1g7ygzj"&&(d.innerHTML=ht),Mt=M(t),b=i(t,"P",{"data-svelte-h":!0}),o(b)!=="svelte-1ta5k4x"&&(b.innerHTML=dt),at=M(t),it=i(t,"HR",{}),ot=M(t),E=i(t,"P",{"data-svelte-h":!0}),o(E)!=="svelte-8q59hk"&&(E.innerHTML=bt),Tt=M(t),L=i(t,"P",{"data-svelte-h":!0}),o(L)!=="svelte-1eguzm5"&&(L.innerHTML=Et),ut=M(t),_(v.$$.fragment,t),Jt=M(t),N=i(t,"P",{}),Lt(N).forEach(s),this.h()},h(){vt(T,"name","hf:doc:metadata"),vt(T,"content",Gt)},m(t,l){Qt(document.head,T),e(t,Q,l),e(t,S,l),e(t,W,l),x(u,t,l),e(t,k,l),x(J,t,l),e(t,z,l),e(t,p,l),e(t,G,l),e(t,j,l),e(t,P,l),e(t,r,l),e(t,Z,l),e(t,I,l),e(t,Y,l),x(y,t,l),e(t,O,l),e(t,w,l),e(t,R,l),e(t,m,l),e(t,D,l),e(t,c,l),e(t,F,l),x(A,t,l),e(t,X,l),e(t,U,l),e(t,K,l),e(t,f,l),e(t,tt,l),e(t,q,l),e(t,lt,l),x(g,t,l),e(t,st,l),e(t,C,l),e(t,et,l),e(t,h,l),e(t,nt,l),e(t,d,l),e(t,Mt,l),e(t,b,l),e(t,at,l),e(t,it,l),e(t,ot,l),e(t,E,l),e(t,Tt,l),e(t,L,l),e(t,ut,l),x(v,t,l),e(t,Jt,l),e(t,N,l),pt=!0},p:Bt,i(t){pt||(B(u.$$.fragment,t),B(J.$$.fragment,t),B(y.$$.fragment,t),B(A.$$.fragment,t),B(g.$$.fragment,t),B(v.$$.fragment,t),pt=!0)},o(t){H(u.$$.fragment,t),H(J.$$.fragment,t),H(y.$$.fragment,t),H(A.$$.fragment,t),H(g.$$.fragment,t),H(v.$$.fragment,t),pt=!1},d(t){t&&(s(Q),s(S),s(W),s(k),s(z),s(p),s(G),s(j),s(P),s(r),s(Z),s(I),s(Y),s(O),s(w),s(R),s(m),s(D),s(c),s(F),s(X),s(U),s(K),s(f),s(tt),s(q),s(lt),s(st),s(C),s(et),s(h),s(nt),s(d),s(Mt),s(b),s(at),s(it),s(ot),s(E),s(Tt),s(L),s(ut),s(Jt),s(N)),s(T),V(u,t),V(J,t),V(y,t),V(A,t),V(g,t),V(v,t)}}}const Gt='{"title":"함수 호출이란 무엇인가","local":"what-is-function-calling","sections":[{"title":"모델은 동작 수행을 어떻게 “학습”할까요?","local":"how-does-the-model-learn-to-take-an-action","sections":[],"depth":2}],"depth":1}';function Pt(jt){return Ht(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Ft extends Vt{constructor(T){super(),St(this,T,Pt,zt,xt,{})}}export{Ft as component};

Xet Storage Details

Size:
13.5 kB
·
Xet hash:
7d2e28cc7460a0b557bb89c05e78e0be1af74c0d439ba0251e1b38a9b8613f7d

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.