Buckets:
| import{s as Ll,n as vl,o as Rl}from"../chunks/scheduler.f6b352c8.js";import{S as _l,i as Bl,g as U,s as e,r as v,A as $l,h as T,f as J,c as n,j as xl,u as R,x as M,k as Dl,y as kl,a as s,v as _,d as B,t as $,w as k}from"../chunks/index.7f38e934.js";import{C as hl}from"../chunks/CodeBlock.3ee8293b.js";import{H as dl,E as Hl}from"../chunks/index.687cf7c1.js";function bl(al){let w,H,d,b,i,S,a,Il='Вызов функций - это <strong>способ, с помощью которого LLM может выполнять действия в своем окружении</strong>. Впервые он был <a href="https://openai.com/index/function-calling-and-other-api-updates/" rel="nofollow">введен в GPT-4</a>, и затем был воспроизведен в других моделях.',F,I,ol="Как и инструменты агента, вызов функций дает модели возможность <strong>осуществлять действия в своем окружении</strong>. Однако способность к вызову функций <strong>приобретается моделью в процессе обучения</strong>, и она <strong>меньше зависит от подсказок, чем другие техники агентов</strong>.",O,o,jl="В разделе 1 Агент <strong>не учился использовать инструменты</strong>, мы просто предоставили список, и мы полагались на то, что модель <strong>способна обобщить определение плана с помощью этих инструментов</strong>.",V,j,ul="В то время как здесь агент <strong>дообучается (тренируется) использовать инструменты с помощью вызова функций</strong>.",z,u,N,Q,Ql="В первом разделе мы рассмотрели общий процесс работы агента. После того как пользователь предоставит агенту некоторые инструменты и сформулирует запрос, модель выполнит следующий цикл:",P,p,pl="<li><em>Рассуждение</em> : Какое действие (действия) мне нужно предпринять, чтобы выполнить поставленную задачу.</li> <li><em>Действие</em> : Сформирует действие с нужным параметром и остановите генерацию.</li> <li><em>Наблюдение</em> : Получить результат выполнения.</li>",Z,A,Al="В “типичном” диалоге с моделью через API, диалог будет чередоваться сообщениями пользователя и ассистента следующим образом:",G,r,W,y,rl="Вызов функций привносит <strong>новые роли в диалог</strong>!",Y,c,yl="<li>Одна новая роль для <strong>Действия</strong></li> <li>Одна новая роль для <strong>Наблюдения</strong></li>",X,m,cl='Если мы возьмем <a href="https://docs.mistral.ai/capabilities/function_calling/" rel="nofollow">Mistral API</a> в качестве примера, это будет выглядеть так:',K,g,ll,q,ml="<p>… Но вы сказали, что есть новая роль для вызова функций?</p>",tl,C,gl="<strong>Да и нет</strong>, в этом случае, как и во многих других API, модель форматирует действие, которое нужно выполнить, как сообщение “ассистенту”. Затем шаблон чата представит это в виде <strong>специальных токенов</strong> для вызова функций.",Jl,f,ql="<li><code>[AVAILABLE_TOOLS]</code> - начать список доступных инструментов</li> <li><code>[/AVAILABLE_TOOLS]</code> - завершить список доступных инструментов</li> <li><code>[TOOL_CALLS]</code> - Сделать вызов инструмента (т.е. выполнить “Действие”)</li> <li><code>[TOOL_RESULTS]</code> - “Наблюдать” результат действия</li> <li><code>[/TOOL_RESULTS]</code> - Завершение наблюдение (т.е. модель может снова декодировать)</li>",sl,E,Cl='Мы еще поговорим о вызовах функций в этом курсе, но если вы хотите погрузиться глубже, то можете ознакомиться с <a href="https://docs.mistral.ai/capabilities/function_calling/" rel="nofollow">этим отличным разделом документации</a>',el,nl,Ul,x,fl="Теперь, когда мы узнали, что такое вызов функций и как он работает, давайте <strong>добавим некоторые возможности вызова функций к модели, которая еще не имеет таких возможностей</strong>: <strong>“google/gemma-2-2b-it”</strong>, добавив в модель несколько новых специальных токенов.",Tl,D,El="Чтобы сделать это, <strong>нам нужно сначала понять, что такое дообучение и LoRA</strong>.",Ml,h,wl,L,il;return i=new dl({props:{title:"Что такое вызов функции?",local:"что-такое-вызов-функции",headingTag:"h1"}}),u=new dl({props:{title:"Как модель “учится” выполнять то или иное действие?",local:"как-модель-учится-выполнять-то-или-иное-действие",headingTag:"h2"}}),r=new hl({props:{code:"Y29udmVyc2F0aW9uJTIwJTNEJTIwJTVCJTBBJTIwJTIwJTIwJTIwJTdCJTIycm9sZSUyMiUzQSUyMCUyMnVzZXIlMjIlMkMlMjAlMjJjb250ZW50JTIyJTNBJTIwJTIyJUQwJTlDJUQwJUJEJUQwJUI1JTIwJUQwJUJEJUQxJTgzJUQwJUI2JUQwJUJEJUQwJUIwJTIwJUQwJUJGJUQwJUJFJUQwJUJDJUQwJUJFJUQxJTg5JUQxJThDJTIwJUQxJTgxJTIwJUQwJUJDJUQwJUJFJUQwJUI4JUQwJUJDJTIwJUQwJUI3JUQwJUIwJUQwJUJBJUQwJUIwJUQwJUI3JUQwJUJFJUQwJUJDJTIyJTdEJTJDJTBBJTIwJTIwJTIwJTIwJTdCJTIycm9sZSUyMiUzQSUyMCUyMmFzc2lzdGFudCUyMiUyQyUyMCUyMmNvbnRlbnQlMjIlM0ElMjAlMjIlRDAlQUYlMjAlRDAlQjElRDElODMlRDAlQjQlRDElODMlMjAlRDElODAlRDAlQjAlRDAlQjQlMjAlRDAlQkYlRDAlQkUlRDAlQkMlRDAlQkUlRDElODclRDElOEMuJTIwJUQwJTlEJUQwJUI1JTIwJUQwJUJDJUQwJUJFJUQwJUIzJUQwJUJCJUQwJUI4JTIwJUQwJUIxJUQxJThCJTIwJUQwJUIyJUQxJThCJTIwJUQxJTgxJUQwJUJFJUQwJUJFJUQwJUIxJUQxJTg5JUQwJUI4JUQxJTgyJUQxJThDJTIwJUQwJUJEJUQwJUJFJUQwJUJDJUQwJUI1JUQxJTgwJTIwJUQwJUIyJUQwJUIwJUQxJTg4JUQwJUI1JUQwJUIzJUQwJUJFJTIwJUQwJUI3JUQwJUIwJUQwJUJBJUQwJUIwJUQwJUI3JUQwJUIwJTNGJTIyJTdEJTJDJTBBJTIwJTIwJTIwJTIwJTdCJTIycm9sZSUyMiUzQSUyMCUyMnVzZXIlMjIlMkMlMjAlMjJjb250ZW50JTIyJTNBJTIwJTIyJUQwJUFEJUQxJTgyJUQwJUJFJTIwJUQwJTk3JUQwJTkwJUQwJTlBJUQwJTkwJUQwJTk3LTEyMyUyMiU3RCUyQyUwQSU1RA==",highlighted:`conversation = [ | |
| {<span class="hljs-string">"role"</span>: <span class="hljs-string">"user"</span>, <span class="hljs-string">"content"</span>: <span class="hljs-string">"Мне нужна помощь с моим заказом"</span>}, | |
| {<span class="hljs-string">"role"</span>: <span class="hljs-string">"assistant"</span>, <span class="hljs-string">"content"</span>: <span class="hljs-string">"Я буду рад помочь. Не могли бы вы сообщить номер вашего заказа?"</span>}, | |
| {<span class="hljs-string">"role"</span>: <span class="hljs-string">"user"</span>, <span class="hljs-string">"content"</span>: <span class="hljs-string">"Это ЗАКАЗ-123"</span>}, | |
| ]`,wrap:!1}}),g=new hl({props:{code:"Y29udmVyc2F0aW9uJTIwJTNEJTIwJTVCJTBBJTIwJTIwJTIwJTIwJTdCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIycm9sZSUyMiUzQSUyMCUyMnVzZXIlMjIlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJjb250ZW50JTIyJTNBJTIwJTIyJUQwJTlBJUQwJUIwJUQwJUJBJUQwJUJFJUQwJUIyJTIwJUQxJTgxJUQxJTgyJUQwJUIwJUQxJTgyJUQxJTgzJUQxJTgxJTIwJUQwJUJDJUQwJUJFJUQwJUI1JUQwJUI5JTIwJUQxJTgyJUQxJTgwJUQwJUIwJUQwJUJEJUQwJUI3JUQwJUIwJUQwJUJBJUQxJTg2JUQwJUI4JUQwJUI4JTIwVDEwMDElM0YlMjIlMEElMjAlMjAlMjAlMjAlN0QlMkMlMEElMjAlMjAlMjAlMjAlN0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJyb2xlJTIyJTNBJTIwJTIyYXNzaXN0YW50JTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIyY29udGVudCUyMiUzQSUyMCUyMiUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMmZ1bmN0aW9uX2NhbGwlMjIlM0ElMjAlN0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJuYW1lJTIyJTNBJTIwJTIycmV0cmlldmVfcGF5bWVudF9zdGF0dXMlMjIlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJhcmd1bWVudHMlMjIlM0ElMjAlMjIlN0IlNUMlMjJ0cmFuc2FjdGlvbl9pZCU1QyUyMiUzQSUyMCU1QyUyMlQxMDAxJTVDJTIyJTdEJTIyJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdEJTBBJTIwJTIwJTIwJTIwJTdEJTJDJTBBJTIwJTIwJTIwJTIwJTdCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIycm9sZSUyMiUzQSUyMCUyMnRvb2wlMjIlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJuYW1lJTIyJTNBJTIwJTIycmV0cmlldmVfcGF5bWVudF9zdGF0dXMlMjIlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJjb250ZW50JTIyJTNBJTIwJTIyJTdCJTVDJTIyc3RhdHVzJTVDJTIyJTNBJTIwJTVDJTIyUGFpZCU1QyUyMiU3RCUyMiUwQSUyMCUyMCUyMCUyMCU3RCUyQyUwQSUyMCUyMCUyMCUyMCU3QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMnJvbGUlMjIlM0ElMjAlMjJhc3Npc3RhbnQlMjIlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJjb250ZW50JTIyJTNBJTIwJTIyJUQwJTkyJUQwJUIwJUQxJTg4JUQwJUIwJTIwJUQxJTgyJUQxJTgwJUQwJUIwJUQwJUJEJUQwJUI3JUQwJUIwJUQwJUJBJUQxJTg2JUQwJUI4JUQxJThGJTIwVDEwMDElMjAlRDAlQjElRDElOEIlRDAlQkIlRDAlQjAlMjAlRDElODMlRDElODElRDAlQkYlRDAlQjUlRDElODglRDAlQkQlRDAlQkUlMjAlRDAlQkUlRDAlQkYlRDAlQkIlRDAlQjAlRDElODclRDAlQjUlRDAlQkQlRDAlQjAuJTIyJTBBJTIwJTIwJTIwJTIwJTdEJTBBJTVE",highlighted:`conversation = [ | |
| { | |
| <span class="hljs-string">"role"</span>: <span class="hljs-string">"user"</span>, | |
| <span class="hljs-string">"content"</span>: <span class="hljs-string">"Каков статус моей транзакции T1001?"</span> | |
| }, | |
| { | |
| <span class="hljs-string">"role"</span>: <span class="hljs-string">"assistant"</span>, | |
| <span class="hljs-string">"content"</span>: <span class="hljs-string">""</span>, | |
| <span class="hljs-string">"function_call"</span>: { | |
| <span class="hljs-string">"name"</span>: <span class="hljs-string">"retrieve_payment_status"</span>, | |
| <span class="hljs-string">"arguments"</span>: <span class="hljs-string">"{\\"transaction_id\\": \\"T1001\\"}"</span> | |
| } | |
| }, | |
| { | |
| <span class="hljs-string">"role"</span>: <span class="hljs-string">"tool"</span>, | |
| <span class="hljs-string">"name"</span>: <span class="hljs-string">"retrieve_payment_status"</span>, | |
| <span class="hljs-string">"content"</span>: <span class="hljs-string">"{\\"status\\": \\"Paid\\"}"</span> | |
| }, | |
| { | |
| <span class="hljs-string">"role"</span>: <span class="hljs-string">"assistant"</span>, | |
| <span class="hljs-string">"content"</span>: <span class="hljs-string">"Ваша транзакция T1001 была успешно оплачена."</span> | |
| } | |
| ]`,wrap:!1}}),h=new Hl({props:{source:"https://github.com/huggingface/agents-course/blob/main/units/ru-RU/bonus-unit1/what-is-function-calling.mdx"}}),{c(){w=U("meta"),H=e(),d=U("p"),b=e(),v(i.$$.fragment),S=e(),a=U("p"),a.innerHTML=Il,F=e(),I=U("p"),I.innerHTML=ol,O=e(),o=U("p"),o.innerHTML=jl,V=e(),j=U("p"),j.innerHTML=ul,z=e(),v(u.$$.fragment),N=e(),Q=U("p"),Q.textContent=Ql,P=e(),p=U("ol"),p.innerHTML=pl,Z=e(),A=U("p"),A.textContent=Al,G=e(),v(r.$$.fragment),W=e(),y=U("p"),y.innerHTML=rl,Y=e(),c=U("ol"),c.innerHTML=yl,X=e(),m=U("p"),m.innerHTML=cl,K=e(),v(g.$$.fragment),ll=e(),q=U("blockquote"),q.innerHTML=ml,tl=e(),C=U("p"),C.innerHTML=gl,Jl=e(),f=U("ul"),f.innerHTML=ql,sl=e(),E=U("p"),E.innerHTML=Cl,el=e(),nl=U("hr"),Ul=e(),x=U("p"),x.innerHTML=fl,Tl=e(),D=U("p"),D.innerHTML=El,Ml=e(),v(h.$$.fragment),wl=e(),L=U("p"),this.h()},l(l){const t=$l("svelte-u9bgzb",document.head);w=T(t,"META",{name:!0,content:!0}),t.forEach(J),H=n(l),d=T(l,"P",{}),xl(d).forEach(J),b=n(l),R(i.$$.fragment,l),S=n(l),a=T(l,"P",{"data-svelte-h":!0}),M(a)!=="svelte-24t6yf"&&(a.innerHTML=Il),F=n(l),I=T(l,"P",{"data-svelte-h":!0}),M(I)!=="svelte-clvpnd"&&(I.innerHTML=ol),O=n(l),o=T(l,"P",{"data-svelte-h":!0}),M(o)!=="svelte-jccp7x"&&(o.innerHTML=jl),V=n(l),j=T(l,"P",{"data-svelte-h":!0}),M(j)!=="svelte-coodwk"&&(j.innerHTML=ul),z=n(l),R(u.$$.fragment,l),N=n(l),Q=T(l,"P",{"data-svelte-h":!0}),M(Q)!=="svelte-acc3iz"&&(Q.textContent=Ql),P=n(l),p=T(l,"OL",{"data-svelte-h":!0}),M(p)!=="svelte-1oo8xlv"&&(p.innerHTML=pl),Z=n(l),A=T(l,"P",{"data-svelte-h":!0}),M(A)!=="svelte-13iz9z0"&&(A.textContent=Al),G=n(l),R(r.$$.fragment,l),W=n(l),y=T(l,"P",{"data-svelte-h":!0}),M(y)!=="svelte-1defcqq"&&(y.innerHTML=rl),Y=n(l),c=T(l,"OL",{"data-svelte-h":!0}),M(c)!=="svelte-1vatoq6"&&(c.innerHTML=yl),X=n(l),m=T(l,"P",{"data-svelte-h":!0}),M(m)!=="svelte-1t51oug"&&(m.innerHTML=cl),K=n(l),R(g.$$.fragment,l),ll=n(l),q=T(l,"BLOCKQUOTE",{"data-svelte-h":!0}),M(q)!=="svelte-olf8os"&&(q.innerHTML=ml),tl=n(l),C=T(l,"P",{"data-svelte-h":!0}),M(C)!=="svelte-xjquw8"&&(C.innerHTML=gl),Jl=n(l),f=T(l,"UL",{"data-svelte-h":!0}),M(f)!=="svelte-10jjt5f"&&(f.innerHTML=ql),sl=n(l),E=T(l,"P",{"data-svelte-h":!0}),M(E)!=="svelte-1lw45k3"&&(E.innerHTML=Cl),el=n(l),nl=T(l,"HR",{}),Ul=n(l),x=T(l,"P",{"data-svelte-h":!0}),M(x)!=="svelte-1rtc04t"&&(x.innerHTML=fl),Tl=n(l),D=T(l,"P",{"data-svelte-h":!0}),M(D)!=="svelte-19989i5"&&(D.innerHTML=El),Ml=n(l),R(h.$$.fragment,l),wl=n(l),L=T(l,"P",{}),xl(L).forEach(J),this.h()},h(){Dl(w,"name","hf:doc:metadata"),Dl(w,"content",Sl)},m(l,t){kl(document.head,w),s(l,H,t),s(l,d,t),s(l,b,t),_(i,l,t),s(l,S,t),s(l,a,t),s(l,F,t),s(l,I,t),s(l,O,t),s(l,o,t),s(l,V,t),s(l,j,t),s(l,z,t),_(u,l,t),s(l,N,t),s(l,Q,t),s(l,P,t),s(l,p,t),s(l,Z,t),s(l,A,t),s(l,G,t),_(r,l,t),s(l,W,t),s(l,y,t),s(l,Y,t),s(l,c,t),s(l,X,t),s(l,m,t),s(l,K,t),_(g,l,t),s(l,ll,t),s(l,q,t),s(l,tl,t),s(l,C,t),s(l,Jl,t),s(l,f,t),s(l,sl,t),s(l,E,t),s(l,el,t),s(l,nl,t),s(l,Ul,t),s(l,x,t),s(l,Tl,t),s(l,D,t),s(l,Ml,t),_(h,l,t),s(l,wl,t),s(l,L,t),il=!0},p:vl,i(l){il||(B(i.$$.fragment,l),B(u.$$.fragment,l),B(r.$$.fragment,l),B(g.$$.fragment,l),B(h.$$.fragment,l),il=!0)},o(l){$(i.$$.fragment,l),$(u.$$.fragment,l),$(r.$$.fragment,l),$(g.$$.fragment,l),$(h.$$.fragment,l),il=!1},d(l){l&&(J(H),J(d),J(b),J(S),J(a),J(F),J(I),J(O),J(o),J(V),J(j),J(z),J(N),J(Q),J(P),J(p),J(Z),J(A),J(G),J(W),J(y),J(Y),J(c),J(X),J(m),J(K),J(ll),J(q),J(tl),J(C),J(Jl),J(f),J(sl),J(E),J(el),J(nl),J(Ul),J(x),J(Tl),J(D),J(Ml),J(wl),J(L)),J(w),k(i,l),k(u,l),k(r,l),k(g,l),k(h,l)}}}const Sl='{"title":"Что такое вызов функции?","local":"что-такое-вызов-функции","sections":[{"title":"Как модель “учится” выполнять то или иное действие?","local":"как-модель-учится-выполнять-то-или-иное-действие","sections":[],"depth":2}],"depth":1}';function Fl(al){return Rl(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Pl extends _l{constructor(w){super(),Bl(this,w,Fl,bl,Ll,{})}}export{Pl as component}; | |
Xet Storage Details
- Size:
- 15.8 kB
- Xet hash:
- 74e394b906cd52e34c9fcfc953258e122639e3fb5fe6d439a3f8c378d5d2ad44
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.