import{s as kt,n as xt,o as Bt}from"../chunks/scheduler.4048030c.js";import{S as Ht,i as Vt,e as a,s as e,c as $,h as St,a as o,d as n,b as i,f as Et,g as _,j as M,k as Lt,l as Nt,m as s,n as k,t as x,o as B,p as H}from"../chunks/index.491908f3.js";import{C as Qt}from"../chunks/CopyLLMTxtMenu.40dbc672.js";import{C as $t}from"../chunks/CodeBlock.99f15ca8.js";import{H as _t}from"../chunks/Heading.16eaa7b8.js";import{E as Wt}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.48edbe27.js";function zt(pt){let u,N,V,Q,c,W,T,z,h,Jt='Function-calling là <strong>cách để LLM thực hiện hành động trên môi trường của nó</strong>. Tính năng này được <a href="https://openai.com/index/function-calling-and-other-api-updates/" rel="nofollow">giới thiệu lần đầu trong GPT-4</a>, sau đó được áp dụng ở các model khác.',G,p,jt="Giống như Tools của Agent, function-calling cho phép model <strong>tương tác với môi trường</strong>. Tuy nhiên, khả năng gọi hàm <strong>được model học</strong> và ít phụ thuộc vào prompting hơn các kỹ thuật Agent khác.",P,J,rt="Trong chương 1, Agent <strong>không học cách sử dụng Tools</strong> mà chỉ được cung cấp danh sách Tools, dựa trên khả năng tổng quát hóa của model để lập kế hoạch sử dụng chúng.",Z,j,gt="Còn với function-calling, <strong>Agent được fine-tuning (tinh chỉnh) để sử dụng Tools</strong>.",Y,r,R,g,It="Ở chương 1, ta đã tìm hiểu workflow tổng quan của Agent. Khi người dùng cung cấp Tools và đưa ra truy vấn, model sẽ lặp qua các bước:",F,I,mt="<li><em>Suy nghĩ</em>: Xác định hành động cần thực hiện để đạt mục tiêu</li> <li><em>Hành động</em>: Định dạng hành động với tham số chính xác và dừng generation</li> <li><em>Quan sát</em>: Nhận kết quả từ việc thực thi</li>",O,m,yt="Trong hội thoại thông thường qua API, cuộc trò chuyện sẽ luân phiên giữa user và assistant:",D,y,X,w,wt="Function-calling mang đến <strong>vai trò mới trong hội thoại</strong>:",K,A,At="<li>Vai trò mới cho <strong>Hành động</strong></li> <li>Vai trò mới cho <strong>Quan sát</strong></li>",tt,f,ft='Ví dụ từ <a href="https://docs.mistral.ai/capabilities/function_calling/" rel="nofollow">Mistral API</a>:',lt,U,nt,q,Ut="<p>…Nhưng bạn nói có vai trò mới cho function calls?</p>",st,d,qt="<strong>Vừa đúng vừa sai</strong>. Trong trường hợp này và nhiều API khác, model định dạng hành động dưới dạng message “assistant”. Chat template sẽ biểu diễn điều này qua <strong>Special Token</strong> (Token đặc biệt):",et,C,dt="<li><code>[AVAILABLE_TOOLS]</code> – Bắt đầu danh sách Tools</li> <li><code>[/AVAILABLE_TOOLS]</code> – Kết thúc danh sách Tools</li> <li><code>[TOOL_CALLS]</code> – Gọi Tool (thực hiện “Hành động”)</li> <li><code>[TOOL_RESULTS]</code> – “Quan sát” kết quả</li> <li><code>[/TOOL_RESULTS]</code> – Kết thúc quan sát (model có thể tiếp tục decode)</li>",it,v,Ct='Chúng ta sẽ tìm hiểu thêm về function-calling trong khóa học. Bạn có thể xem <a href="https://docs.mistral.ai/capabilities/function_calling/" rel="nofollow">tài liệu chi tiết</a> để hiểu sâu hơn.',at,ot,Mt,b,vt='Sau khi hiểu function-calling là gì và cách hoạt động, hãy <strong>thêm khả năng function-calling cho model chưa hỗ trợ</strong>: <a href="https://huggingface.co/google/gemma-2-2b-it" rel="nofollow">google/gemma-2-2b-it</a> bằng cách thêm Special Token mới.',ut,E,bt="<strong>Trước tiên cần hiểu về fine-tuning và LoRA</strong>.",ct,L,Tt,S,ht;return c=new Qt({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),T=new _t({props:{title:"Function Calling là gì?",local:"function-calling-là-gì",headingTag:"h1"}}),r=new _t({props:{title:"Model “học” cách thực hiện hành động như thế nào?",local:"model-học-cách-thực-hiện-hành-động-như-thế-nào",headingTag:"h2"}}),y=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}}),U=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}}),L=new Wt({props:{source:"https://github.com/huggingface/agents-course/blob/main/units/vi/bonus-unit1/what-is-function-calling.mdx"}}),{c(){u=a("meta"),N=e(),V=a("p"),Q=e(),$(c.$$.fragment),W=e(),$(T.$$.fragment),z=e(),h=a("p"),h.innerHTML=Jt,G=e(),p=a("p"),p.innerHTML=jt,P=e(),J=a("p"),J.innerHTML=rt,Z=e(),j=a("p"),j.innerHTML=gt,Y=e(),$(r.$$.fragment),R=e(),g=a("p"),g.textContent=It,F=e(),I=a("ol"),I.innerHTML=mt,O=e(),m=a("p"),m.textContent=yt,D=e(),$(y.$$.fragment),X=e(),w=a("p"),w.innerHTML=wt,K=e(),A=a("ol"),A.innerHTML=At,tt=e(),f=a("p"),f.innerHTML=ft,lt=e(),$(U.$$.fragment),nt=e(),q=a("blockquote"),q.innerHTML=Ut,st=e(),d=a("p"),d.innerHTML=qt,et=e(),C=a("ul"),C.innerHTML=dt,it=e(),v=a("p"),v.innerHTML=Ct,at=e(),ot=a("hr"),Mt=e(),b=a("p"),b.innerHTML=vt,ut=e(),E=a("p"),E.innerHTML=bt,ct=e(),$(L.$$.fragment),Tt=e(),S=a("p"),this.h()},l(t){const l=St("svelte-u9bgzb",document.head);u=o(l,"META",{name:!0,content:!0}),l.forEach(n),N=i(t),V=o(t,"P",{}),Et(V).forEach(n),Q=i(t),_(c.$$.fragment,t),W=i(t),_(T.$$.fragment,t),z=i(t),h=o(t,"P",{"data-svelte-h":!0}),M(h)!=="svelte-1jvh7zc"&&(h.innerHTML=Jt),G=i(t),p=o(t,"P",{"data-svelte-h":!0}),M(p)!=="svelte-1gtkelx"&&(p.innerHTML=jt),P=i(t),J=o(t,"P",{"data-svelte-h":!0}),M(J)!=="svelte-1ckz7wb"&&(J.innerHTML=rt),Z=i(t),j=o(t,"P",{"data-svelte-h":!0}),M(j)!=="svelte-1kwwxzg"&&(j.innerHTML=gt),Y=i(t),_(r.$$.fragment,t),R=i(t),g=o(t,"P",{"data-svelte-h":!0}),M(g)!=="svelte-1b8tyma"&&(g.textContent=It),F=i(t),I=o(t,"OL",{"data-svelte-h":!0}),M(I)!=="svelte-1hdsccg"&&(I.innerHTML=mt),O=i(t),m=o(t,"P",{"data-svelte-h":!0}),M(m)!=="svelte-14jc72u"&&(m.textContent=yt),D=i(t),_(y.$$.fragment,t),X=i(t),w=o(t,"P",{"data-svelte-h":!0}),M(w)!=="svelte-1mk18t5"&&(w.innerHTML=wt),K=i(t),A=o(t,"OL",{"data-svelte-h":!0}),M(A)!=="svelte-17g5qj6"&&(A.innerHTML=At),tt=i(t),f=o(t,"P",{"data-svelte-h":!0}),M(f)!=="svelte-1200hty"&&(f.innerHTML=ft),lt=i(t),_(U.$$.fragment,t),nt=i(t),q=o(t,"BLOCKQUOTE",{"data-svelte-h":!0}),M(q)!=="svelte-1fanzbq"&&(q.innerHTML=Ut),st=i(t),d=o(t,"P",{"data-svelte-h":!0}),M(d)!=="svelte-sotvol"&&(d.innerHTML=qt),et=i(t),C=o(t,"UL",{"data-svelte-h":!0}),M(C)!=="svelte-1n8dsrk"&&(C.innerHTML=dt),it=i(t),v=o(t,"P",{"data-svelte-h":!0}),M(v)!=="svelte-pc88k"&&(v.innerHTML=Ct),at=i(t),ot=o(t,"HR",{}),Mt=i(t),b=o(t,"P",{"data-svelte-h":!0}),M(b)!=="svelte-ef6g18"&&(b.innerHTML=vt),ut=i(t),E=o(t,"P",{"data-svelte-h":!0}),M(E)!=="svelte-hk8tni"&&(E.innerHTML=bt),ct=i(t),_(L.$$.fragment,t),Tt=i(t),S=o(t,"P",{}),Et(S).forEach(n),this.h()},h(){Lt(u,"name","hf:doc:metadata"),Lt(u,"content",Gt)},m(t,l){Nt(document.head,u),s(t,N,l),s(t,V,l),s(t,Q,l),k(c,t,l),s(t,W,l),k(T,t,l),s(t,z,l),s(t,h,l),s(t,G,l),s(t,p,l),s(t,P,l),s(t,J,l),s(t,Z,l),s(t,j,l),s(t,Y,l),k(r,t,l),s(t,R,l),s(t,g,l),s(t,F,l),s(t,I,l),s(t,O,l),s(t,m,l),s(t,D,l),k(y,t,l),s(t,X,l),s(t,w,l),s(t,K,l),s(t,A,l),s(t,tt,l),s(t,f,l),s(t,lt,l),k(U,t,l),s(t,nt,l),s(t,q,l),s(t,st,l),s(t,d,l),s(t,et,l),s(t,C,l),s(t,it,l),s(t,v,l),s(t,at,l),s(t,ot,l),s(t,Mt,l),s(t,b,l),s(t,ut,l),s(t,E,l),s(t,ct,l),k(L,t,l),s(t,Tt,l),s(t,S,l),ht=!0},p:xt,i(t){ht||(x(c.$$.fragment,t),x(T.$$.fragment,t),x(r.$$.fragment,t),x(y.$$.fragment,t),x(U.$$.fragment,t),x(L.$$.fragment,t),ht=!0)},o(t){B(c.$$.fragment,t),B(T.$$.fragment,t),B(r.$$.fragment,t),B(y.$$.fragment,t),B(U.$$.fragment,t),B(L.$$.fragment,t),ht=!1},d(t){t&&(n(N),n(V),n(Q),n(W),n(z),n(h),n(G),n(p),n(P),n(J),n(Z),n(j),n(Y),n(R),n(g),n(F),n(I),n(O),n(m),n(D),n(X),n(w),n(K),n(A),n(tt),n(f),n(lt),n(nt),n(q),n(st),n(d),n(et),n(C),n(it),n(v),n(at),n(ot),n(Mt),n(b),n(ut),n(E),n(ct),n(Tt),n(S)),n(u),H(c,t),H(T,t),H(r,t),H(y,t),H(U,t),H(L,t)}}}const Gt='{"title":"Function Calling là gì?","local":"function-calling-là-gì","sections":[{"title":"Model “học” cách thực hiện hành động như thế nào?","local":"model-học-cách-thực-hiện-hành-động-như-thế-nào","sections":[],"depth":2}],"depth":1}';function Pt(pt){return Bt(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Xt extends Ht{constructor(u){super(),Vt(this,u,Pt,zt,kt,{})}}export{Xt as component};
