From f887abb2da47e12b119ca5c09c760b1d0f57508f Mon Sep 17 00:00:00 2001 From: ShilinHe Date: Wed, 20 Dec 2023 08:51:12 +0000 Subject: [PATCH] deploy: 6f8b82ccce929fccd4f0f2c277926d53379e48db --- 404.html | 4 +- .../data-b0233cff3b2d3e7d1f4c7210bd827e4b.jpg | Bin 0 -> 121925 bytes ...mains-eb14d2a9596df0092bb60ad97746aba4.jpg | Bin 0 -> 103134 bytes ...ugins-95c30f6685a410abb928b259fef670f4.jpg | Bin 0 -> 93896 bytes assets/js/17284fae.1ee21b12.js | 1 + assets/js/17284fae.7318a1d4.js | 1 - assets/js/1bba509c.4f7cc9c9.js | 1 - assets/js/1bba509c.fdb0b2a8.js | 1 + assets/js/1db64337.4e547cfe.js | 1 - assets/js/1db64337.d25cb400.js | 1 + assets/js/2603e7ac.0c65e357.js | 1 - assets/js/2603e7ac.8e247b05.js | 1 + assets/js/2aeb6ff3.4609e3f2.js | 1 + assets/js/2aeb6ff3.e29f6f3b.js | 1 - assets/js/31db19d2.8486d49a.js | 1 + assets/js/31db19d2.bff72e38.js | 1 - assets/js/3ad3027d.7f996976.js | 1 - assets/js/3ad3027d.e053b0a6.js | 1 + assets/js/3d6402a8.041ab8ee.js | 1 - assets/js/3d6402a8.0f12022c.js | 1 + assets/js/59362658.02980fd4.js | 1 - assets/js/59362658.1623e135.js | 1 + assets/js/5d7f3e2f.83c7b373.js | 1 - assets/js/5d7f3e2f.9154b97e.js | 1 + assets/js/73664a40.4275f694.js | 1 + assets/js/73664a40.ea8cbc3c.js | 1 - assets/js/7661071f.cef95589.js | 1 - assets/js/7661071f.f5e0cbe3.js | 1 + assets/js/792477b0.a704db8d.js | 1 - assets/js/792477b0.d8317cc4.js | 1 + assets/js/7fc9262a.982ec73c.js | 1 + assets/js/7fc9262a.ad3859b9.js | 1 - assets/js/8070e160.86e9a34b.js | 1 + assets/js/8070e160.ed4f9767.js | 1 - assets/js/8550895a.6c9d7d3f.js | 1 + assets/js/8550895a.d1d73d9a.js | 1 - assets/js/8717b14a.5e1dfc80.js | 1 - assets/js/8717b14a.b219edb4.js | 1 + assets/js/8f0a7c30.777b218d.js | 1 + assets/js/8f0a7c30.9f481fb2.js | 1 - assets/js/925b3f96.4e86b090.js | 1 + assets/js/925b3f96.c03ea1b5.js | 1 - ...f2afb.d62501dd.js => 935f2afb.0b8d1b42.js} | 2 +- assets/js/9fbcb257.5a8e04f9.js | 1 - assets/js/9fbcb257.63926424.js | 1 + ...59125.61189baf.js => a4259125.cb7ab266.js} | 2 +- assets/js/bbe97ef6.0ccf99b3.js | 1 + assets/js/bbe97ef6.ecdea617.js | 1 - assets/js/be4af720.968ab647.js | 1 + assets/js/be4af720.c0d4e1ad.js | 1 - assets/js/c4f5d8e4.87d5cbe9.js | 1 - assets/js/c4f5d8e4.902a52cf.js | 1 + assets/js/d9f32620.04472a88.js | 1 - assets/js/d9f32620.e8050201.js | 1 + assets/js/e273c56f.07ccc04f.js | 1 - assets/js/e273c56f.ae2acd0e.js | 1 + assets/js/f04cdb7e.105f1904.js | 1 + assets/js/f04cdb7e.223cb7c3.js | 1 - assets/js/f4f34a3a.8b40740b.js | 1 - assets/js/f4f34a3a.fb11a68c.js | 1 + .../js/{main.f205b142.js => main.b4f52c5a.js} | 4 +- ...CENSE.txt => main.b4f52c5a.js.LICENSE.txt} | 0 assets/js/runtime~main.24d36ac6.js | 1 - assets/js/runtime~main.d98025a7.js | 1 + blog/archive/index.html | 4 +- blog/first-blog-post/index.html | 6 +- blog/index.html | 4 +- blog/long-blog-post/index.html | 6 +- blog/mdx-blog-post/index.html | 6 +- blog/tags/docusaurus/index.html | 4 +- blog/tags/facebook/index.html | 4 +- blog/tags/hello/index.html | 4 +- blog/tags/hola/index.html | 4 +- blog/tags/index.html | 4 +- blog/welcome/index.html | 6 +- docs/compression/index.html | 6 +- docs/configurations/index.html | 6 +- docs/example/index.html | 6 +- docs/llms/geni/index.html | 6 +- docs/llms/index.html | 6 +- docs/llms/liteLLM/index.html | 6 +- docs/llms/ollama/index.html | 6 +- docs/llms/openai/index.html | 6 +- docs/llms/qwen/index.html | 6 +- docs/overview/index.html | 10 +- docs/planner/index.html | 6 +- docs/plugin/embedding/index.html | 6 +- docs/plugin/plugin_intro/index.html | 6 +- docs/plugin/plugin_selection/index.html | 6 +- docs/quickstart/index.html | 6 +- docs/run_pytest/index.html | 6 +- docs/session/index.html | 6 +- docs/taskweaver_as_a_lib/index.html | 6 +- img/APS.png | Bin 0 -> 53544 bytes img/data.jpg | Bin 0 -> 121925 bytes img/docusaurus-social-card.jpg | Bin 55746 -> 0 bytes img/docusaurus.png | Bin 5142 -> 0 bytes img/domains.jpg | Bin 0 -> 103134 bytes img/logo_light.png | Bin 0 -> 65635 bytes img/plugins.jpg | Bin 0 -> 93896 bytes img/undraw_docusaurus_mountain.svg | 171 ------------------ img/undraw_docusaurus_react.svg | 170 ----------------- img/undraw_docusaurus_tree.svg | 40 ---- index.html | 6 +- markdown-page/index.html | 4 +- search-index-docs.json | 2 +- search/index.html | 4 +- 107 files changed, 124 insertions(+), 505 deletions(-) create mode 100644 assets/images/data-b0233cff3b2d3e7d1f4c7210bd827e4b.jpg create mode 100644 assets/images/domains-eb14d2a9596df0092bb60ad97746aba4.jpg create mode 100644 assets/images/plugins-95c30f6685a410abb928b259fef670f4.jpg create mode 100644 assets/js/17284fae.1ee21b12.js delete mode 100644 assets/js/17284fae.7318a1d4.js delete mode 100644 assets/js/1bba509c.4f7cc9c9.js create mode 100644 assets/js/1bba509c.fdb0b2a8.js delete mode 100644 assets/js/1db64337.4e547cfe.js create mode 100644 assets/js/1db64337.d25cb400.js delete mode 100644 assets/js/2603e7ac.0c65e357.js create mode 100644 assets/js/2603e7ac.8e247b05.js create mode 100644 assets/js/2aeb6ff3.4609e3f2.js delete mode 100644 assets/js/2aeb6ff3.e29f6f3b.js create mode 100644 assets/js/31db19d2.8486d49a.js delete mode 100644 assets/js/31db19d2.bff72e38.js delete mode 100644 assets/js/3ad3027d.7f996976.js create mode 100644 assets/js/3ad3027d.e053b0a6.js delete mode 100644 assets/js/3d6402a8.041ab8ee.js create mode 100644 assets/js/3d6402a8.0f12022c.js delete mode 100644 assets/js/59362658.02980fd4.js create mode 100644 assets/js/59362658.1623e135.js delete mode 100644 assets/js/5d7f3e2f.83c7b373.js create mode 100644 assets/js/5d7f3e2f.9154b97e.js create mode 100644 assets/js/73664a40.4275f694.js delete mode 100644 assets/js/73664a40.ea8cbc3c.js delete mode 100644 assets/js/7661071f.cef95589.js create mode 100644 assets/js/7661071f.f5e0cbe3.js delete mode 100644 assets/js/792477b0.a704db8d.js create mode 100644 assets/js/792477b0.d8317cc4.js create mode 100644 assets/js/7fc9262a.982ec73c.js delete mode 100644 assets/js/7fc9262a.ad3859b9.js create mode 100644 assets/js/8070e160.86e9a34b.js delete mode 100644 assets/js/8070e160.ed4f9767.js create mode 100644 assets/js/8550895a.6c9d7d3f.js delete mode 100644 assets/js/8550895a.d1d73d9a.js delete mode 100644 assets/js/8717b14a.5e1dfc80.js create mode 100644 assets/js/8717b14a.b219edb4.js create mode 100644 assets/js/8f0a7c30.777b218d.js delete mode 100644 assets/js/8f0a7c30.9f481fb2.js create mode 100644 assets/js/925b3f96.4e86b090.js delete mode 100644 assets/js/925b3f96.c03ea1b5.js rename assets/js/{935f2afb.d62501dd.js => 935f2afb.0b8d1b42.js} (72%) delete mode 100644 assets/js/9fbcb257.5a8e04f9.js create mode 100644 assets/js/9fbcb257.63926424.js rename assets/js/{a4259125.61189baf.js => a4259125.cb7ab266.js} (62%) create mode 100644 assets/js/bbe97ef6.0ccf99b3.js delete mode 100644 assets/js/bbe97ef6.ecdea617.js create mode 100644 assets/js/be4af720.968ab647.js delete mode 100644 assets/js/be4af720.c0d4e1ad.js delete mode 100644 assets/js/c4f5d8e4.87d5cbe9.js create mode 100644 assets/js/c4f5d8e4.902a52cf.js delete mode 100644 assets/js/d9f32620.04472a88.js create mode 100644 assets/js/d9f32620.e8050201.js delete mode 100644 assets/js/e273c56f.07ccc04f.js create mode 100644 assets/js/e273c56f.ae2acd0e.js create mode 100644 assets/js/f04cdb7e.105f1904.js delete mode 100644 assets/js/f04cdb7e.223cb7c3.js delete mode 100644 assets/js/f4f34a3a.8b40740b.js create mode 100644 assets/js/f4f34a3a.fb11a68c.js rename assets/js/{main.f205b142.js => main.b4f52c5a.js} (79%) rename assets/js/{main.f205b142.js.LICENSE.txt => main.b4f52c5a.js.LICENSE.txt} (100%) delete mode 100644 assets/js/runtime~main.24d36ac6.js create mode 100644 assets/js/runtime~main.d98025a7.js create mode 100644 img/APS.png create mode 100644 img/data.jpg delete mode 100644 img/docusaurus-social-card.jpg delete mode 100644 img/docusaurus.png create mode 100644 img/domains.jpg create mode 100644 img/logo_light.png create mode 100644 img/plugins.jpg delete mode 100644 img/undraw_docusaurus_mountain.svg delete mode 100644 img/undraw_docusaurus_react.svg delete mode 100644 img/undraw_docusaurus_tree.svg diff --git a/404.html b/404.html index 21c71e9c..957dc694 100644 --- a/404.html +++ b/404.html @@ -5,8 +5,8 @@ Page Not Found | TaskWeaver - - + +
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

diff --git a/assets/images/data-b0233cff3b2d3e7d1f4c7210bd827e4b.jpg b/assets/images/data-b0233cff3b2d3e7d1f4c7210bd827e4b.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d22909df5661fdf4741cbbc4ee2cf428f7a5d690 GIT binary patch literal 121925 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 z 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%0DRO?_9V~0EvCd25P z=Jj9hVrl8xqh7SMofGK;wcA&+D1RJc3BL(W<6GvUirf5a#|AGMRC;0^?R%id-eMcr z83zTf3i8OEmgFbw;<}`eD0G%%_arTWO%&RxYDQHy{kY>kgH{DPVp(})z$_n7G^hA` zDbTXJWOFqnJ#sxhFg-c%bXNggD?1>baT*&Xy^tr7z9Z9R+}~AWQrAcDO!)Tbq!atH zRAsmDc?sv|8bvl&4+srAA^8%nwQ5gk4+=G;2QkSo2>stU)Ek`+fq3-_F1bjM8cY|o z-XS@}#=UNikR8QNuZtK5;(WSSWf3+Pb><=yi;sN{O5aI}8jhLDJSAs2J83uHvnbC( zO!X%~lD|D*>P0ZsPq(trq0+9@jiKL$lXj==`0O)PGA`_b9Z?)<-$p7$(pH5#o|W<* z$TMqdYYc%~1qz}>!9Bc!g6ZS&cUA0FcxA}}#zrpIcfNjz*)2PDmZ7=L9H{&BDCC1< zS~ED4YDQ}&n!zi(A#`F=)3x#EksIJ~e{^C{CHkz{^z+xPPHd5;Z0}JF>+6zQ3diL? zQtOy~6xZtKaYiV4y?rrWn|?O4!J5uO+uoWbKjY*nXB|j#P<48OhpFWKPo0U-wvBNT zFPkECL)F zxyTmU{EjxF@Z+)1@4ySb8*sYPnk|KJh?r^E?P?h8$EAG$I{(ckUo*sq^Z(n4Q2@&^ zy-ONEGxtDUMJ9ISQe9D;ZaWWDl2PRe;a^?@Tnq7!fR;uvjs63=SBA2dNdJI11@bvsgLF@l}62(3Tf@t$7Hl9HHIfFhttypTA zxED=53|J!fP9X~vVzZ}99%ulUUE<&I=JI>5nf0?04~BmZH@+*3*&5MFqud$l>-^2> zmaokPc*QFfXG1n_Whgdk%lPgWdLt`8^_4}->c8z}#pj;hl7$6DuwqRLuUgRPqT`(9 z@pivcHq|EFCgV&>x{Y65QOYNvcCbJ&mFI1$I)x8C%&`S4-#BZhhnp1{FN%-T$94#EW}H&~It9^F z!Z(m5xp$ofU%VZlZy?|IEbDV+n^{i9Iws%1sj<`8Y&DL}81@-o) z+HxY?r}WhLuk*)A_b=b@@!Fu)S0CpZ%U*4ANqFV|b`KC3@lL|mb;Rd7fS)F?=+p5N zjI=gBh$7>2{m_8M^FzVq&xz3~BRqbhx9mfoZGJw#m^sj1J}O~zFJ&^mDZ>s~`)Vup z4Y6!aGtF}RyGE)PEX1FRf_D+N+l{bvLEF_7&$4HOMtj-1Ab9x@=Lf9V%m$ z-CT;%IY z2@G>3#FOtd**U&k*vcZB=!<>lj(mFwR0?Y@a)D_oC;#Eb8CKl}`Eh4qdTZ0YT9^4- zn$-Gcm42R`JBAn$4KiHxyt9+#@%$Oc+(!;PjH@m8`rI|@HQg#ySgQj#O>V7>#w~Rc zmE~JoKPu_>^fL_X->2Wyqy>ewTK9zpp(T_K5rgZOU{rnAE#eHmA*FZ6T9s^b**~jpDuSWMf=jk10xA zJa96p^;kotIge=Ep6x7j?sgQ*o-CSz5@;dOKpi+{K*l|Dw6-;gUSPz#>24bt6&JjR z*TuL3+#>ZHyx*eqAF*bRH-K2;c;Y{nPp!cw?4+Eu6qccOuzyez*b%$; zSN{qjfK(zjT#GPf3oKafy>l~dgcu`*^Zs*J#c@)3xH2QUPoAx)C@ZDilcDX65rf+T z(PiTKo_fXi!qjLA(4c^Wx4&D=3sjUpVkR@U*EP>LdrEmMt9VsVS$8ORB;UwIU)$A> zeHv9O6bWGBSXe|~qWok)RtNiI_ahut8EdtfcG^{)l}3Hu#1V7ZTQc*_{)I-`dm7VO zn=)>1tM&FxNRNi)nhmP*6y2xdLSs%r%zxTw4t7DvN ziWvuTAVeYJ0ue#T`svRa#+;t(Hwy19wWFIouWFe$TVV z^lY`~>EpTZ=()0ey#2G-S3cBNYBX2MUdbD$Azrku|Co*dP5E5u&AjREqsHDlnpu&z zELN}BVBZkM6XqECbSI9a4<8UJqZ#<+%*376;jK9%5e_@{-{;dnC}E@z4hw}Smh1Y( z+C`>JW^{^=RJHh;uhVV3IGH{q^xw)zQEF57H8{!Mb?lAiG(ZP{Mcm^?jHy=53{a7X z&9sw_x>!2S@$J+)3Vj*p&6#Z5R?`?R$<4^%?HUz0u_CnXkzud&>Bv*)J}Wk1DyN&b zd6u`E@44CR?QOo1JcWBQ18W9h3%kbs-%+RLcYpSZw)rp-Xxq9`_Gx4b*^GAdDiYUA?Pt+tDkrUsfo_`$XhT1XV>ANAW z<}TGGUdh>eM~w-=C=q43S%?<45;*@}EOKxBBv>NSoV#o&lf6CcDF3+p`1-PgQqk~o zt#s#dZ2!{bi4Fm=cI%Dg7CWL1WjudEW!=IpKlkL#1N+AX_W4c_#jw#r+fLL%lZXS) za$Uj}r_`-O#V(|c*WOa{yD5Z8KfVe=%7qkjL$-O4eh!u0;l)DaLFx37Vs{PRPJb*< z2Oa9IW29Z$VA@K##GsE@GrcEiV#F)t^E!23i07=(yPrS-v*fCO+nw%V^ueO8$F}Lw zJL0R_HQO20zM3gIFL}jBn8T*0QHkbcv^*RBEGB%uv_i&_NgG`qoXPY9R8sWD+C0_c zSpS#XhN|G^;J|N>WR&1Hk-8CU$vyTjZ+2Tw+gkPtiKD69x6u_rX->Zsccc&Hff$y{ z^|)k&h)GAc5V}W|ic7i_4U0T_T4?5(6{GYklpW>ul32JE>rwnPm1@J8%T;k&9=SF$ zSw4>bY;J?}^x*%S8*7n#rdBuKw4TUwJwV(|4_~u%LIkbdNg>c{-n$91NW-eQ_Xuox z3*7B4e4FKxa+=(9(?6skBo{}=`&969X^WrX%W{&zc!6(Dc;_ zW9;tB>X_b|C@Y=g?JZpovkx+Ru0*M`*}q#Cmel76=g-I*-(6@MF-78}1vgd== z{dg9x#Gs=!z>W0>_z(2iV&vu`F>En-h%Vl&9=9#5!dOU8y6?-sltAf_?Qg+bpn5Y0NP(`uiWN)Mg$~#cM z3ul}Tt?ljCD*l73U<3EWpzK$<>6hri%cW|pm#ik+SxfRNfDWQC=lKu-yHPF}l+tJ^ z@%aYwj<~)}Ne?**6#g!|}szwEky5+dR37&01II z;HRiQ44^;93|D&o-e#qNH&heldZDhLKRbo)%P}u*@u`phS{$oD%YeR2#&M%Vs28^b zY0!p=&s!h@B#b=IJ(=pDqKf1hzlAPqMUjQ!*vpO;3E$p|?Ix9UemL~%CSc5j=6xZ_ zq-Cy;wMuDUUZE!zkxFdu?-5PHAT(!kq=wq@(JY3asfbZ)tMKs}Vh5lE9k(Kyg^n;T zgaiKwo|f@kHSdZ+!>e7w^L~KWu&mO4>9O;l$?9Cwq(-%?73G3Yv0z^TsqNei8-22t ziGI^S=olQS#4;7#QCe*Qgd@6-fh#MY${B2EYs^`^i(7SE;9sCm7KU$t=a>V3NB}+w zFcq(B!v~WjjXP#)TqL9kcG^Q_ngu&CvD(*rt{_WXS#lc+gBnhdJpE`?_S9x$63^Ap zYh5LoN-SgPu&Ba8N?RWoVZPp)&`9sxq-5ut`>4f(<3MU~0db9(nre5Y&x>79WJ+zg zYJ1-}0K-iue6HrdR9;Xw^p5_EL6rZ}G5ZG^5v=wuIcnC^bEFMccE)6MXotja)c6}T znwUZ8`L{wae&!#W9Q@|ho}iLyDrtM!Xu{tv_agro{P0wLVt4M<-5N|oIwXW??_iQL zYc$@}XM{Y6rX2F8J`v)DMs%ROkeosPQFQIPrOr?a9yv7oN7T%Q?0?^>!8l8N42UQM zXYXz>wVfLtQvMt(^DOgVfePt?JDGQI`ELwsT?@1-i?<5Q8`i$DpT9!)XB+oOx>nv| zxs?swGxwML(KUd{jruISslidOFxj9> z%PXf@WEE*5{36{g_#F%yuYPDP2XB8779NWns9GOwTm2XRr=eW(ud7aq4}S)vU{n0x z>)&7+@)AJGM2bXaltU2*tty$LWD-mDDHP2BlGPVRFATu#tMBRsDVpHb^Y_pK2T~nnI3inNxjAF?}Farnmh z!NA9?Yu=;x-r1u;Q3I?Rbs!QryH1;rG=QE4g0 zUnU&$K#+xHKsR-(FJOB*BN`Ls<`y}6h-a{nB1mpoma6(AujWks4v+%2KN0eSU-XjZ zbCZJ6_%3a)kwU9lOWSl|qkSzw)y>!ZF@`kZ~$xl7)QS~=RdQ&AV))VY3mvnThI`=9`4OZOlt;1#ytr&K_7sQ1x<6$mDB(8HAqC| zdxE8E#wh|*=~FUStB~oaIx~CKT3@Uv!%6q@A0!t<-9o~j-#7QcxRaYFUIU~c6@=?i z(V~O@6Q`7Zx_^)tp9B!`0Bz1khe$BQf&RyBQIZzXI^0UwK2;bLKBA7DaQFbw?($dx z1(N{%dxLwH43Ki}OI2}5sv=O%&3Yjcpy#X_e_ZIC*sp5YFL>*Bo8xU+7!AkT38Fh} zGJO$NffQpHW5s#a9^&5uD$wGW%YvP>GK=&d+%}L5G8(^^8fq;r-xuh<+>|k&i2Jpe z-yC_c>t9hE8Id%o{Qqh??`Ssv_y0#1rK;LcRikF@y?3bv~<+^Z9s+KmL7&dHG-oppP3q zgIB7N$*=XYScJAp?<=ajSdSc;0khWfdntdosbFPnZI}@H>tr;3B=g_^kD9kv{lT|_ zQx+Ft1Y`-+#?RP(qZc~b8Y^yBwy zDwkHsX1<)7!ka{v^%FKs8P^=kChyn&y!Es9r<=Z74fH?tRM-y5eStt?!`u=5$_yB< z*xN-l(w^2Zk1fZ%`r$3HZvj5!d{-}C-M(&RVg8$xf3#(qyXVCo$7bR2%Fnz#b%NdZ z3swV96k#lE{@l`4*@QDjv5{ami&hqwLJzc#Cy_iXO>3Qqe9mk1O)cFthgxPdIZmur z$G&*hjCc|(_jUz0eZ-`g&C`@1-?5XRaZq2I6w7xf?zfxaQep7ByN(%dJxm_my36Hl zZ|H1Y&v_W>)!lMmvcpfr zj{1#rV4Og|DaYu=Uyfs}OFM0-e&E*S9j}=5N-AoSiafjh_FrFAwR{sZl@0Ik%Z74e zb#ou@-?7RTGO)Jdz@lKYXvXmO^!li`qrp)9v(YgRt@IoG{1VCU0of;%#6K~yrpy0} zivkg}&ck`P&gh#w7%m&Z8R5g$cyjjh99`eF*!$h0E1KhZH%{yK#bEckVtaX80C<4< zBSX%t%RdkRDKuQV%LWzUGk~CYMW1kUqbP;R&=NRGp>Y;!@u%awhR#S<6Ke37p4b@j zuF#l{+?bB=E!Ov#SImo})Ji=)1q4luHk59#HToeM5dDP&Tj&I~3-bB#Jmw(V6`8xK z3lZifIP!OFhDvz+mVp!hZ1&&k>B;^+==q|9rpAg@|AVhjE{fs~T%rq`XDb{>$ zGSEMFJZ#IzJoVAOE}nFnhelz4Vn|_RqS8ycBlia8<>!dglO&j65yzIpKweFTAMR0_ z-E7@9cN>kw)V>V|*Df0&ljEj)zdK`12HL%8)VWaeCQ_$X;U}=S-3oIS_=!w$CP9h3 zH^zw&Kwipwi7g0=U z8QQHgk<_$8otH3{N(<@BTTN``C}|1F`$8pqWJ@W3<&2!ld!8U3ozmCR=F8j?o{@i; ze(cboVys!wb1EL*sfzSY-&Icwa6QV`a?*}7=h|oyDGQ+PUPH_s#j`Fz$L!vnbg2OG zUcrLjTyF?Cr#!~dqx+h)Zchbi2)1e-A@7cU9;vp5(@{0`Mr zp+3}BD}HIz^=ZK{K|2eB)cyxr9c_I`w-5WR2cQcWUFS}o+#3jQRELs6b_cceBoahy z9=%2o*R9r9bL~9UZ(}LOa0AU$dOM806iYF}$P30X#p*q;-TU|NOZn_ytvqYRznToP zY2CRWo?F+_nCz$p-+g}D9TFrYN?iQq$2(CNAOh_udSYxC##d&GbP+O4DW&ID<)9%I zrXgB9=i?m`uOGOtO{MHOO2t|~L_6g?fZ@$Xk7@4-iA&q|eU<)}pi!FcTZs0IrTI>m zl~n4!Dj{_OPaUHZV>Mi@tqxq${b-;2l6Ap9bm!iHNTwgz(9tA>YQfAhFtfN(x0B_< z>l?4pjO|_bHiANmWyEoz*L4QZ^bPx?dv=&-Xm1aT+(ilu*#~OXtMsbEDdGa$WFORQ zw=%BJ*m6c2GaH!bFy&%#)c1Ty&vw0!Cs$`L!gk9OD`;-Tg)$KPsFRn}3VvBZvg$l^q|6n`gn1xEm7k-riUMG;;v8~QJNpa z^O-vdyF~xJ)~h`e<5hnv)?oZmVMkO;7O5A^A^yKr{ualC2j}@GrHF<7Hu4yP>Ac^+ zQKTc>%v&d;96MKV(SP;Gp^+Pkk!BxjE*bC*a5933&8_LuvW-SV^ffv#{VhDdB~mw$ zC_6x)%wIJXw5Q62-< zZ)Afl5Jpix$O{Zd6~J)Z;Zb-Yyf#oT77(nj)U@-oA)}LVB1jehDFZ>ItD5(+u_ibJ zPd|(%`~d2N`!pJoH)l;HIF-$|k5e8CBF=cT-P|y8UOMG(cp;*>rXNy}5)KGCR`6wf zUUN0YsTQc@&(&#^doA~& zr3tWv=BU$6)dHK~E_A%wF5}>Po~L!kb(+0WHeXO#yq_zm@6Y$>c$@dK%8g>`j?^>K&~njNxgX%-SQHw~SF<+E=t&=xx(#LTAC3kd zgP%Lx*e|*YM?jJ+s@=r2bHqLnpWwa_zm>)>2WsEQq}1rvH|ARTTNq@zb>aCd_mx}@ z3<@>62QW=vFInm#mD_II$EYWa=GqTJjVSL_a3~EvK}Xf1^Hgjd!+k&dvzCV5N_8>% zQLY8JAaX96b!_wcJ%8ACS%v?-e-wKJ*P|vkIQ&lCPOOlHSu|q~d?UMgIyjH>Z9<-j z^zZM}RKGl(@k7rxCpDLB)W;XWne&k}Ixu0uZ zRv(lZee*mkX`+8?|F@hp`S^=`?2!>%x+||q7cfw&PC2d&*P}u+QH3>Xw`>e`py}Zg z;eny4sO41j2%8Q|5tRO!L;`qSSgC713Rb1YeM^bAaBPnDfJ-qVbopdbf>eA|uFdA^ zRMT(IbOUuvVj z)ff>Z)wEo8*;I*()rc-s4>@P~^uir4(oP%U-d*%yGm)W$6L= zP6&J}o6<>cwe_|2xuhChg`!aV zxjhw+pN~ZmHhI3KG$LC4)6j4?w!qe5Cf{#KN@4FU5JGeIy)Y~71dS@qCFX{&qH1bF zMJ{}t72tL~-yD0r_HX|KW%n37FhA7 zX;0$THKqGW<;8+^gdP9sJ#b8L*O$N>BVJUoLa&2sjQ9ih2nYe}TUaWf^u=e@J zRrU0nDVVInt`dJQkqYc1rtwEKv-BvY=Ov7i!Tu)Yv8NPggI+<9r6!&X=Pi!k17POD zfUeIpz9*S^{8rOjKaZKIvUIfWug1Aq6i~rw*4Fnon1mg~r6kbREvUIw#{LKSXZyv$ zV~0>if>;*=?4t(pW)g=k`bPLY#EhXWdZ15-tT=s!Y5WaV2&)sCmO1eSIG1oDHZ~ammhMSjpcPc{KxuKY6E;Fw3HZ)>^qIMsG?CXk@SVl~Mt&7C6x6eq1Yi&z*!( zjzjxyB8M;|oS%c{t8q=Dfl|ojSt&9d!c`ztfXz$2si~!o2BDY|+j$_6XHOCNyfA7V zR=fz3m3LE(`zRma7la00dT9i>&Ajh9OOcyF=aafXhCcdw{5XjZqPVYPXUbTDgh@JG zn@Vtc7yj5&M(E%Gvn=NGB(>mee#Ld;XP69Wrg6K4-|6uoP3G}bjXaq`B_dNZYiB)g zR%IdiMMNW+6ipYO`e}HT$V{(e8g+O#XZ@$-4J1*pysu1i8C0SsnMt*VS$CO{kHX$| zFQVyN`%2p;@eg!QSYgGDc{E2fcsXW8fTdhZKHPnzx3&!+br+@dl$PI}^X?Ok39B#h zp>ET{X^S@w7jFHYM&~vT`OW?upEkOF53^ zZtMNATz;MAN`)XGu>s!9kw8Q-#cRpbt0KoJz}eRg1J?cg9d@42eA=b4JTH5?T^!BG zzwSJi0SCwKN5r14x7=;v`NUI#LmJtyNxRU-PImF|&Vwecn6%kb(nJVNx}Sc#>u)6{^nE{xQ)&v-)rRO9o;;v(H%xujA?c zPOB)90PiP3=*|X%>>ss*yg$01TBkQ}iDxkKkS5f!H7gGq(FI$7T+Rpd_QIK0K>fms zJjK0=kmkFMj}gB^>ChFx53Na;Zrnk5 ziwS8(E`U+T8o;AZ_7%LFNtF?6!(-wPiqfs{abLUWZGm%~2^-f5;94gUzEGvZV!Kd4 zZq9rPO};(0DK&nDD=Vd;ti&){{FNxuvj~d7aJM;fbXbe`Z0S8gxE45C7jGuSwA5CX z6z8()m&ky4%5l$ABwjwI{1($tLH~(m{Ix^uYsxS~#L36BhSo1~6O2p8D>o7h?@d9V z+Hv2*RE$4D1}DYTcs*We;>jvp=~mMF`9>vlkV)rtDjEh}L-=j%2;>bhOwtnBB$xA(85E1Sjs#rkw`pP?oMn48m&#wD? zMeFIr)mOV247t+uS*s2e)!JiMa&V<*-1YJ8>HdskVp%OqHoHK6>w?9D&;7{pz>6B_1Le??8KyzMTiLCj|A6a zucUx)g2l-s1=E9*=30_+Ov{=)hS1#&Z`)Y9XXSYpM4PU@yQtD}IQ;8(VL!77l!8>H zhW>x22Lrya<;7!;^VbH3?r1Hoxo#UAsr~F5$+ieJ(Ioxmc20@dF|4nBda;AYb5gtJ zPO1OwzZJj~fY&l*y!WR5dE-Y5iZAP|4G$~=W6?OA!n~)FHIYL1LtTe zwJ(p3&gAbB!td{uryE(aSHFJ(kRmhjT^oiThD9>4rMQ(kR2?kw^_cn!Y@O|b(;aTY zVSMSyUA3|v=kQ=KtPozR6g3e4GDD;H7z3niMnzZu+{N>g>N!T%pl%r6`KpISK}(%s z*s|058?H4BEs?@lyFeU=$onhL*xZel)&RUzu~>N(1g>kLSBYuf9-yTC3VNWh8nnZ4L3L`Q^*g{#8eE6M-`3 z!~SKUJuVLdfST?U^~*{SG^xf)KyY4pbus zn(p6{{MJ3ap=8B5TFGG1HOdubh5b_Iw18Q~;ju>znkh>?&tCM+&?vk^2*Pu_%EP_t zH&-g-viYkQmON$k7B-G1N%*)%&wffyHv4?8li(k8<7;h_^C?b9dCcR|QSG6JbNMdJ z%;3kZ^QIPd^)9Ak5W%=$R641P+8^eS}xwo0^xzY7WIe3hF3u^hs`7QVE?c?Qd zFV=kbYP*0BJ#nINeV^>#AYNB^CE@n?!7CS222nUiSu5M_%(M(HS~pV+Xh`aIu~GqW zIdRBri-8fe<^3@fK3}^xE3_e{sF-a`OA#W-#PQrsk-Tcdwc(#{ z)%>ZI!;14k_m5Crs<{mvcf_qsp5%WL~%W7DPBzdAO6urT0`4TdTcRmxs2V%d(%)+Y){@Kc8*Qe0RH9)zjdR zGp#!Uf|a~Cad<^U271p#fuTimin1ok-^)CDpCNz`kt@DlYxmOVbA4z!sw*8p4JNii zxJbBHLuL)sv=~UXbqK})F(J0#(O&O4&tn1O25+$c7*Z_#*#3%Wvz{Gemot| z_e+G(*B?4&Mje)}?hG`jSjtO(F5k@2qvydaX+6oWg%VxfM6k^sk`XK(VM_g+>b#d8 z21%0+Plz-}v$)v$#W)%V@zzf}md`7|(tmkL3)C#LI`kNfd|G7gYBX2=y8JDU-8SL$ z3lMbRS;g>cbDyMAk;ibyB|BM$=h=dR#R~PSawhkVKV@-l9)2<*eVzDZo9yxNb=nE) z1onvA+uL_Y%Dqq47O(T=KMHtFccr9I0CtoW2mWIa+~j3<5m8p-b61rim^Y>waNy%V zP9(bpc}t!4_+tK^v;J^=MIoX2nEiATcJDq#=AtKCabA`eI~*dww>95(A>TUibm@)zK$imBFu_(EHP=8;QIT|U zu`<@n2$J8p!h0kjP!Pm=H_r5Q&P6(o-3{2C> zW8Og-D>>Mz(tIWJ1}ZO`cUr*-WxqXr3-a#u6@% zx>;KH>0MTD$L*xl=h8e2jxl*H6e9iDkQ^}u(xX?*A8btu+}swk6D(uX29FZcDy-@( zwC<43J676~UAcXw7-Yo4b!rr~Y4e+%@|g1H=;yVE0&W`?D#-j*H+nAhzPZu2s0J+f ztGl7MS|0=a?ar*gcM#>-dKQ-)vDVA(>4)rQZM;th^^eYJuuJ!fndMZiC6#m_yWLy2 zB@NNo+)ayo#)*+n2K50v1C!344ZqV(Lk$AE8PdOImRQZMZGPLxkI>;U4)Ge^<=&5D zk7kLkll*gna2gx*{09>La%Xyl0zzEo+GG@Fp)ti zsEINb1>Jb{xYp|+g0W1&Ol2l}aY9VA1av>}8@y-B<3~$}U_WXu;FY}nu`hG_@-e~8 zvw^k2YPuCy8Bg5cw`KovMqCp_AGo|Zk5-K@)Z`WBD80#lpMoB!+1X1j3wP~|`zm7{ zkahv{-N|@XJv6PMvgp^dr=lVOH(YV4(TKMMA7E0M~%50pJLT z0Mw`-t^r^3-b!+#xXNwxfj}iP;N1sn07dd29r`*L`k#6DKXcZN5iM0Az*~GdD)Ihs zy}0lJGC6f4si2OuN=+lF?Uo3o_3SE^UDQ}Ic@`3Ivpg_4&q~*D>`lKK7ZJz;F?6q+ zyi2fU_sC~UV$0r-E>bv``I$K{PP!4}*zmaqvn-PE=+Vifw8A?lm4_VHZ}P!@PBrXM z7Bo!E8m(j8U`D}{RkuXt1RmTZ-GI%gI0M&6WpO4jP{d2o(!g-M?bn|ti%fY~*pCKV z+FCWY6g4=}sluklja|)?k^P;^&>Yc-Qf%6mtuL`s{+4Y(Hg6O0v1g6by`FN~xqc13 zW)EUwx;TV;#&azPbz^=o*`t@Ud7zaS2Za>usYk~Su8rts$=e=N z-OwbG_E>6By6{eVe9m#AGfJ*3}3f> z@GYkam2#IhF=0c0D^K=Lzm|KS$I199qswxilJ)z*Z1svc<2fJ^U{Bn;Wzo|7_TR}) zMBUE2CMMGZuM+y`@qwwZ1D7!RS#z47>}76@pR+@TaKD>%c@soa6W_m36>X=-&NesI zU0Ch9EZYYtlT48gKfCbiMr1Z5$>>hD_VPL(X4RloyWl(<{jOQ3=iQdJa~Y-&S|9ed#P1iNemRM~sP#M^bkC+& zFgqmu$U3Q39sHx&xNtsgo>-mn^mspCoX*#K-J5lO1VGfNlJhuP9vv}n;O~!3KrO=kBF2j?~X0az9>k;x>an1^FzEQW7npVxIx;MZ0k=Sds zL9m5llCdy6m#mZ9eTDl~b{x(&q{K&MkvSA9IZ47tMj!gG8^%w|mnN*gZy4+q+MsrdzhFj= zwPaI>NwcvwP{Pbmni{c7<`4m{6=zZ1-A?kVB$Xg3-WelVuVOvV?rS0YWp!y^@ppT^ z@3Ok9*Yn0Mqn7|J2Y21z@GpG0zQwiyjnbj`$GKpjiL~k;c8pN-<2CAde8EE|`ctv* zGlz~Et%YS;X9>ikaaaDjjvS0Oo6^_m?{LjK0Q{NoG(1a$SL9I7ME&YDPaq8=&Y*e` z;qeZ*eIcvG4ayJ$Z-?Fe%KEV;1DgHe!AiwAMO@3<=-I9rNQ&pJM9=7 zeHM#L5XioO?N7%hUNFyDibnOZ+#h^6-EaD)?zClL{l)ivlkW)4+9Jn`kP_s|;~mP0 z#Az>CNpi)dJj#BU>C1lgdgh(IVn4dcSiXb$M;jG{zE! zEVLUbj5qA(uVBAD`31ZPC_mECAtg`<%QohrqrWc)91#Ke29Pc0`-f? zgI0Q3$f}R}LPVqHQ^U@=iEX-I(41}|#tQ^qhahi&^|=Eepzqj%HB}G#%eaFe055pS z#{dw631a_kZ2%i1@e9|<2%!E-1YF1gJOCc|2@oxKgP-LAxF+;1o9&Q+elVjyfv(O>DSW8 zdvXIA7LC{|w`9hq>-3JU*F89UeJJIu*?|-$l{2D|JZbma81>SlI47YN?mxqj-noMRIG4zJY9IJf~_ug+2u8PZ@i|!%U`GO}z>E9S z8j%92=V@!g>20$PT?3p9zRW8pBVk=*6$TQcDDjQg0de0keQr_^Ajo*I=+N?P$OL1D zxK(t`hlYsq{gW*0`qHDjudBY%w7C44=H}0V=&mP>>+{lP&(0}*#UEkw8lB5!h!3$*htY?`(}f9_iju?W~;9fuVD;IcOg^{>5EZC#=S;V75NR= zB09tC2__-v&j5%$hLp2TUwX;#``F4~Nrrubql!1#hS_JWZ6lTjUURo@E1onmTbdM~GZk=oT%SRJPTVD}_Z>?p3Tk6f?LxbDtkmHVxG@%#m*>o{UmSRh9yz<)IXFTqx z-KIpDqOVZ`_9{m@A+i1U6-eZVQPZs3ooVi2;uad-*-1Iqr=LDSl-`#aa5IfxSSCPG z2`F`|k4_<4(jfAs{ffJ)E@g3&3gZd$RN!8@=v$<%=%uVF#4JlM-iCHIPkV)qcQ664 z+5G5n@1`-(r}EIjuSCcnshp5&=`E%&!IW>h41h<`YVbq1}@Ek1rl4D{g6> zC6}+n$UABX`dYN+2^F9B`1+RxAjkiV`~zWve(qer0eEZA7oodqPxQcx^eWI5gqI@BB~}4>+Ip< z@1iDpQ>#0j5e6mIEQ}?6+@;zFph*=oZ)h=!3K=qfV~9$#Gn`lhTqYs z+0njI0PX}txk504Fco-C2Rw%Xy(ogIO6da#$!wGZxFrz;9fc0xAb<_b2qD1oeYu1K zvOw@HBsbTGD}Zbl1mGjCUCMSj_&NSFwR{22F9pI5c^D8xMN0$qwu^?M0_>z-Z`T#&Y(?XAv5|3rGown7yl<&!!^;}Y z1_aDU22UIlkEbqAxUg5LnYAqgQ*CI+L?h~#$>w*UhIKdc-n=&O&QmN} zQuk@|p5M}l@x%Ax$;ib7r6N=R#vSz_D20f1vLa_Pn7C)P`GoHE9~QZ5823GKtui zqWj4P)~!Ae_vfhk!=M_kPIWOEc4Tp()^*+*qT{AUys)6Xf%`)x9_{mjY^51VEclzc+%TOH-yN(PHB)9bDt?1oBD-^WW-Iohq0aTo z${wC&2)V>>D|8ezc&hW6^RTDqT-ED?+o1c`jHq;Zdas6G1ze=H@~V!g4cFDam0)j1K?V$mmSq>ak-sBosPpX8!w!BwqvK9M&k2#cCUWZh^*Xt#xvgJyPS9(}n;$h4d0H_wc?r}W6 zMtIQoSXLrF>5QzG(%OA%Q~L<2ciqZAsxHZSwMS{xt+XWq@GEsg`jzF;ZzDAu&& z{zsQ2w+3;yM?nLX$VqEu-jjO?k!Y#%1D=2%iTXEc`8k;J9<=|Xh5pwZfnH)mneqSg z3;<(zU};K!1~$+H)+cZx2*BH1rF}o5`sk{LLxI>A6>Y^VU_J;1@?qL}0DC^1Rm0fu zx#6PWb9f#-D{HEexG;DIMt$>%&foPeZi&$cX5AZ_ONXVhC<%QL5@xJC6gv%}eM=8u zl1r74FTrn7bBPWmrsv`U2zS00)26{|h_bEpDJ6}Wux)aG z>@&TAOzJh`oGIne0G?lg=csmwUc6~4@m=nAw@njNY3F1ap zvD~f4Rf#l;uWtUD)N(E{L4)}6do$>GbVZL2D?}eAzg8cl94hGB-L_%2H?k3!9}vkF zHTmRgMc?)^jFO@>wrA3WGi#YS9u|ug|5Z1}znFNwS@3*ce9`Lf)J~_GGqSridPwMF zyKbhXX#A({M>BVM9s`12;X`qX%*hF6kjD?!>o!KrkflH7A2-bH!_`lK-jG=7u0NwA z+O1K_aVW9K{hAT2t_-%Fd7|;kx39eKn>Y&VEKL&rft1UGOvm;8fIYfqTV9q%xq_b~ zKx7O8b`L=2zbfu_ekd11qwenb5V~{A`&a{*0dQYXPj8sb9E$$bYVqb@Z4R;JR-<JD|_wP+90+OTOD#|7pdGIcX zS7cTi@2GKtsH>Kq&xosacu9k&f(+Cs3nMElAcT)2m}-7CQ3M+jBMxY`@T}c= zK`?21mgVl~P421HioKIpL}-}O*z0E4{*}bq)zl={scag>z9kcJi69fdG==B}s_Z^h_n{)Q@@g}_~u@r1J z`L5Q-cc1sz^H-8WpLxx1-uLf{oN*GPA%(2+HNRSF&THxk!nX*r45JI+57uw*kn78% z+_a*AS!1lP8FUPkmuPSqo(B{rcwjR5)i@ETKmNBe{LfhXKZC92rJpFB3zQd&{jV|s zN*RN6&}HHB3-*(KdWp=3Xc9@E`*I6%*y&nrBHYs`{UTDAC9-cHUI7%OaDTM^}o{u`Z8vR+k zKT`Re;nXP8QQ=)+Ru znLg&set$A~YXjo^ch&brF1e-$dbl%EF8h3a#%+NP`;?#?@$^|74Nn7k1R^(9o}1-e z!@@3J%h4sf)~6~cGJ$qt=8ulkRGY!HDG4$e2#_?C@ER-3GyW7yhv$M#dhn7F6kJde^-WSVW*rYkv*lcWOLkCaU^Tc zja%L`AZ(EK$t@{qY?+X&XW@$I^gqx-pJK)C$wU(VOwuv60QN0vPa&y;M{~A&YrWZE z9af$l{}1#Qc_WeDncvE$aG_Mv7?`gihOiDXNjateK;5_#_}EcgmStdefOO~Je#vjY zb;sa{j19O+v*Wm&BgXV>Ip6+_yZl=*dxFDPH|3|FjI#cL<{h0c0HGAbr08a5=I#BA z*Kcrs4+Uin!d7Dcl*DUsblAZ{hGxOAFusDN@r&@U&8A)C@~sHd?DMQoZDWmwpY0H4 z@tXVMs`r^8!_^Ostv|VHF^o(Y*{i!g?&CRwT30(y2O2Gi$Iaf;<*qWaPOr8>*FCh3 zOtC>q`>l^^rUUiXqK;u2|NW75TQu%LDH%GPj~n--7)&hHe)?fY7Yy`*$Si6m0O_Y; zcpNo26-QP$U)&pg1&ApC|Kbh@{R44kUkAb77F==8cUA<~e|WBnk}#~#2a^Cn94D7= z$ReE|zQnm{#sc>@NYwdZKyT4}lRqo!7fpGl?@(}_=;UMhxe=CD3h#3N`1=j(r&VF9%<-z9i z1@NPQ`N}>ZDg;R6Az-`s)a$^><_fS%$ix?`P>RLk6*9C{P~2S!G|CS#+$aZ`KhOb;~4qU85i7C8!yV ze$0{@L~0cG>H9>={R4F}k%n%XmsDGbFG!M}P6MXR{n<6P!PiOvtWK3fppzjrSyU2sCicf6# zUw>4SoKHGh-#2Ml@=8a=Axdxd*e z`&EQj_XqI==423@z*bkgMnIcR@6G49I!3u6^?`SJD`wB$_wb*%A%#@NFvicic=q&1 z#VacbM%J-d38^Z?h+^*t%GFIrNH{vNKat)R@21moeARw@p3LUKqN#ZLIkI!>h zpG2Y{M*N*aFIDVWt6gdgMILMhcql0RJv=#?R30H}C(&?s6*eP=ik01qid3?~;K`$U zkD)qQ?}E2-{@}xxG!4PeIyO`Z>DnRB^}igjR@1k?zAyOvry%Se6V=#geaTqe&iz6E z(tS&}RfEpvl-UdI>9W~p^TX%d2kG(JZyH1yf=eWkc4cjNU18(b+{%y@*V z0dJ1?mvKGc_6f)qSvx1+366`r_qV)U`gq6mopx*u)ZI}<#%=5iG0W91UROC0OzPg^ z2-Nci=P@SH_L#&#H-cqHRX?}1ix8)&2SdV{8Ww(Gm>bZIm*ddLV2E5Z!iSRWm5g*7 zZ7vk_7d7OPqKCunaMRt#h$sUhW7Xr!%sW*EFBh=_^ImHj7h(ObB(!+pyYFINRy^#; zELDf_=Qt={Ee~s;9XOxKeO(H6XB~ihc6M0RkCn9Tt2qe7!~r%Mnm93LuY6mYaY5l zqeG{NUIjpDD035S(p8NklJjg!*);<*QuZ`B0 zmubB#R%C${49Rv3_*F2Yt%T{Q|5G!q@^5 z{5Z}@X;b%i?X^!LxwUMy=9r&T<@j=-f8iQK+!CpIVN+`w!{?2IG8nGWa)&#)jlY8! z>L!U`4On@IeKkBpjC2V**w+xl4cffB(`qoRN4nDChMK&G%|JD(_YiYvqA} zz~0{9HDF_0bSU`;lKe^B;Wsk;{OZBoQ7!iX%#)#Cy!U&p2^oCdrA+&qhv`r6t-OH* zkay>F(01;S$9^bDT>m}aqGs`xa#m|wu1tA0aV&W@_D}jAN=}k|4`6;?b>M34I5G6l zsD_ zG(?CVItfvn5ro$ug(&eTabtd6mm&uhkz3!Zs6GBt!lmB^C7Fkb(oakx84GA&S5NKM$i&1IoejgY_Tf#V)A|hj4)P zZ={R@-$h)%+)RRid-_r%N22=RKPdRyOJDotE&sn){@LFDeOsOY99b`^FqfH2pn^*x zE3oSb15$ELrFVJBmw;Aad*bKd2XS2bDM0_(EUaiWp4z3W$^nshUtAPrxE%P$C!6%nVw|-b_6|#-+fH|Hs(@mz=vvYB!Ye#`KokV&itd%S zz-b*=Dnhx6Fb+jP_BIzbFJ_!01dubl?;54n&EHVEQ|)Ug!jDv3!9-6^;i%d5pBK~L zL2vL2Rm>UM+DLDvL34Ef; zj1+Pp0hT79c=%sMaVg<=bh)sd7^sWEK)|0>7Xtz9iT}o3B$}52uP2xNQ{dNw*EF>- zkY^k>QquL>-`nh|_ZckO!Rg zwiKqsntHJ>5P;D-r$%|@p{k%iH+Q%mmY)tdnO^70OMXj>k-mJ0fYNIlFkZ;7UhW^j nOX&45z}nXw6eh_B0@p#zNZ=wX-P{H~%K!hMjSPYU{(b*{>5`lq literal 0 HcmV?d00001 diff --git a/assets/images/domains-eb14d2a9596df0092bb60ad97746aba4.jpg b/assets/images/domains-eb14d2a9596df0092bb60ad97746aba4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bcba9d639104a71d0a96fed043bfec29f68d842c GIT binary patch literal 103134 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 JN$UR={~u9pX#M~I literal 0 HcmV?d00001 diff --git a/assets/images/plugins-95c30f6685a410abb928b259fef670f4.jpg b/assets/images/plugins-95c30f6685a410abb928b259fef670f4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6d4cf57d7a69714515cf4364210c24eb1eddf12c GIT binary patch literal 93896 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⋙ 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⁢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 QnahgAsk{Rt9DhIlADrQKN&o-= literal 0 HcmV?d00001 diff --git a/assets/js/17284fae.1ee21b12.js b/assets/js/17284fae.1ee21b12.js new file mode 100644 index 00000000..a6e3bea3 --- /dev/null +++ b/assets/js/17284fae.1ee21b12.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[7402],{6444:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>h,contentTitle:()=>o,default:()=>d,frontMatter:()=>r,metadata:()=>i,toc:()=>c});var s=n(5893),a=n(1151);const r={},o="Customizing Examples",i={id:"example",title:"Customizing Examples",description:"There are two types of examples: (1) planning examples and (2) code interpreter examples.",source:"@site/docs/example.md",sourceDirName:".",slug:"/example",permalink:"/TaskWeaver/docs/example",draft:!1,unlisted:!1,editUrl:"https://github.com/microsoft/TaskWeaver/tree/docs/website/docs/example.md",tags:[],version:"current",frontMatter:{},sidebar:"documentSidebar",previous:{title:"Embedding",permalink:"/TaskWeaver/docs/plugin/embedding"},next:{title:"Prompt Compression",permalink:"/TaskWeaver/docs/compression"}},h={},c=[{value:"Planning Examples",id:"planning-examples",level:2},{value:"Code Interpreter Examples",id:"code-interpreter-examples",level:2}];function l(e){const t={a:"a",code:"code",h1:"h1",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",...(0,a.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h1,{id:"customizing-examples",children:"Customizing Examples"}),"\n",(0,s.jsx)(t.p,{children:"There are two types of examples: (1) planning examples and (2) code interpreter examples.\nPlanning examples are used to demonstrate how to use TaskWeaver to plan for a specific task.\nCode generation examples are used to demonstrate how to generate code or orchestrate plugins to perform a specific task."}),"\n",(0,s.jsx)(t.h2,{id:"planning-examples",children:"Planning Examples"}),"\n",(0,s.jsxs)(t.p,{children:["A planning example tells LLMs how to plan for a specific query from the user; talk to the code interpreter;\nreceive the execution result from the code interpreter; and summarize the execution result.\nBefore constructing the planning example, we strongly encourage you to go through the\n",(0,s.jsx)(t.a,{href:"https://github.com/microsoft/TaskWeaver/blob/main/taskweaver/planner/planner_prompt.yaml",children:"planner prompt"}),"."]}),"\n",(0,s.jsx)(t.p,{children:"The following is an example of a planning example which contains 4 posts.\nEach post contains a message, a sender, a receiver, and a list of attachments."}),"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsx)(t.li,{children:'The first post is sent from the user to the planner.\nThe message is "count the rows of /home/data.csv", which is the same as the user query.'}),"\n",(0,s.jsxs)(t.li,{children:['The second post is sent from the planner to the code interpreter.\nThe message is "Please load the data file /home/data.csv and count the rows of the loaded data".\nThe attachment list contains 3 attachments:',"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsx)(t.li,{children:"The first attachment is the initial plan, which is a markdown string."}),"\n",(0,s.jsx)(t.li,{children:"The second attachment is the plan, which is a markdown string."}),"\n",(0,s.jsx)(t.li,{children:"The third attachment is the current plan step, which is a markdown string."}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(t.li,{children:'The third post is sent from the code interpreter to the planner.\nThe message is "Load the data file /home/data.csv successfully and there are 100 rows in the data file".'}),"\n",(0,s.jsxs)(t.li,{children:['The fourth post is sent from the planner to the user.\nThe message is "The data file /home/data.csv is loaded and there are 100 rows in the data file".\nThe attachment list contains 3 attachments:',"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsx)(t.li,{children:"The first attachment is the initial plan, which is the same as the second attachment of the second post."}),"\n",(0,s.jsx)(t.li,{children:"The second attachment is the plan, which is the same as the third attachment of the second post."}),"\n",(0,s.jsx)(t.li,{children:"The third attachment is the current plan step, which is a markdown string."}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-yaml",children:"enabled: True\nrounds:\n - user_query: count the rows of /home/data.csv\n state: created\n post_list:\n - message: count the rows of /home/data.csv\n send_from: User\n send_to: Planner\n attachment_list:\n - message: Please load the data file /home/data.csv and count the rows of the loaded data\n send_from: Planner\n send_to: CodeInterpreter\n attachment_list:\n - type: init_plan\n content: |-\n 1. load the data file\n 2. count the rows of the loaded data \n 3. report the result to the user \n - type: plan\n content: |-\n 1. instruct CodeInterpreter to load the data file and count the rows of the loaded data\n 2. report the result to the user\n - type: current_plan_step\n content: 1. instruct CodeInterpreter to load the data file and count the rows of the loaded data\n - message: Load the data file /home/data.csv successfully and there are 100 rows in the data file\n send_from: CodeInterpreter\n send_to: Planner\n attachment_list:\n - message: The data file /home/data.csv is loaded and there are 100 rows in the data file\n send_from: Planner\n send_to: User\n attachment_list:\n - type: init_plan\n content: |-\n 1. load the data file\n 2. count the rows of the loaded data \n 3. report the result to the user \n - type: plan\n content: |-\n 1. instruct CodeInterpreter to load the data file and count the rows of the loaded data\n 2. report the result to the user\n - type: current_plan_step\n content: 2. report the result to the user\n"})}),"\n",(0,s.jsx)(t.h2,{id:"code-interpreter-examples",children:"Code Interpreter Examples"}),"\n",(0,s.jsxs)(t.p,{children:["A code interpreter example tells LLMs how to generate code or orchestrate plugins to perform a specific task.\nThe task is from the planner. Before constructing the code interpreter example, we strongly encourage you to\nread the ",(0,s.jsx)(t.a,{href:"https://github.com/microsoft/TaskWeaver/blob/main/taskweaver/code_interpreter/code_generator/code_generator_prompt.yaml",children:"code generator prompt"}),"."]}),"\n",(0,s.jsx)(t.p,{children:"The following is an example of a code interpreter example which contains 2 posts.\nEach post contains a message, a sender, a receiver, and a list of attachments."}),"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsx)(t.li,{children:'The first post is sent from the planner to the code interpreter.\nThe message is "Please read file /abc/def.txt".'}),"\n",(0,s.jsxs)(t.li,{children:['The second post is sent from the code interpreter to the planner.\nThe message is "read file /abc/def.txt".\nThe attachment list contains 6 attachments:',"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsx)(t.li,{children:"The first attachment is the thought of the code interpreter, which is a markdown string."}),"\n",(0,s.jsx)(t.li,{children:"The second attachment is the generated code, which is in python."}),"\n",(0,s.jsx)(t.li,{children:"The third attachment is the verification status, which is CORRECT, INCORRECT, or NONE."}),"\n",(0,s.jsx)(t.li,{children:"The fourth attachment is the verification error message, which is a markdown string."}),"\n",(0,s.jsx)(t.li,{children:"The fifth attachment is the execution status, which is SUCCESS, FAILURE, or NONE."}),"\n",(0,s.jsx)(t.li,{children:"The sixth attachment is the execution result, which is a markdown string."}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-yaml",children:'enabled: True\nrounds:\n - user_query: read file /abc/def.txt\n state: finished\n post_list:\n - message: read file /abc/def.txt\n send_from: Planner\n send_to: CodeInterpreter\n attachment_list: []\n - message: I\'m sorry, I cannot find the file /abc/def.txt. An FileNotFoundException has been raised.\n send_from: CodeInterpreter\n send_to: Planner\n attachment_list:\n - type: thought\n content: "{ROLE_NAME} will generate a code snippet to read the file /abc/def.txt and present the content to the user."\n - type: python\n content: |-\n file_path = "/abc/def.txt" \n\n with open(file_path, "r") as file: \n file_contents = file.read() \n print(file_contents)\n - type: verification\n content: CORRECT\n - type: code_error\n content: No code error.\n - type: execution_status\n content: FAILURE\n - type: execution_result\n content: FileNotFoundException, the file /abc/def.txt does not exist.\n'})}),"\n",(0,s.jsxs)(t.p,{children:["In this example, ",(0,s.jsx)(t.code,{children:"verification"})," is about whether the generated code is correct or not.\nWe implemented a module to verify the generated code. If the code is syntactically incorrect,\nor the code violates the constraints, the verification status will be ",(0,s.jsx)(t.code,{children:"INCORRECT"}),"\nand some error messages will be returned.\nA verification of NONE means that the code has not been verified, which means verification has been turned off."]}),"\n",(0,s.jsxs)(t.p,{children:["In this example, ",(0,s.jsx)(t.code,{children:"execution_status"})," is about whether the generated code can be executed successfully or not.\nIf the execution is successful, the execution status will be ",(0,s.jsx)(t.code,{children:"SUCCESS"})," and the execution result will be returned.\nOtherwise, the execution status will be ",(0,s.jsx)(t.code,{children:"FAILURE"})," and some error messages will be returned.\nA execution_status of ",(0,s.jsx)(t.code,{children:"NONE"})," means that the code has not been executed."]})]})}function d(e={}){const{wrapper:t}={...(0,a.a)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},1151:(e,t,n)=>{n.d(t,{Z:()=>i,a:()=>o});var s=n(7294);const a={},r=s.createContext(a);function o(e){const t=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:o(e.components),s.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/17284fae.7318a1d4.js b/assets/js/17284fae.7318a1d4.js deleted file mode 100644 index 3c5f549d..00000000 --- a/assets/js/17284fae.7318a1d4.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[7402],{6444:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>h,contentTitle:()=>o,default:()=>d,frontMatter:()=>r,metadata:()=>i,toc:()=>c});var s=n(5893),a=n(1151);const r={},o="Customizing Examples",i={id:"example",title:"Customizing Examples",description:"There are two types of examples: (1) planning examples and (2) code interpreter examples.",source:"@site/docs/example.md",sourceDirName:".",slug:"/example",permalink:"/TaskWeaver/docs/example",draft:!1,unlisted:!1,editUrl:"https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/docs/example.md",tags:[],version:"current",frontMatter:{},sidebar:"documentSidebar",previous:{title:"Embedding",permalink:"/TaskWeaver/docs/plugin/embedding"},next:{title:"Prompt Compression",permalink:"/TaskWeaver/docs/compression"}},h={},c=[{value:"Planning Examples",id:"planning-examples",level:2},{value:"Code Interpreter Examples",id:"code-interpreter-examples",level:2}];function l(e){const t={a:"a",code:"code",h1:"h1",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",...(0,a.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h1,{id:"customizing-examples",children:"Customizing Examples"}),"\n",(0,s.jsx)(t.p,{children:"There are two types of examples: (1) planning examples and (2) code interpreter examples.\nPlanning examples are used to demonstrate how to use TaskWeaver to plan for a specific task.\nCode generation examples are used to demonstrate how to generate code or orchestrate plugins to perform a specific task."}),"\n",(0,s.jsx)(t.h2,{id:"planning-examples",children:"Planning Examples"}),"\n",(0,s.jsxs)(t.p,{children:["A planning example tells LLMs how to plan for a specific query from the user; talk to the code interpreter;\nreceive the execution result from the code interpreter; and summarize the execution result.\nBefore constructing the planning example, we strongly encourage you to go through the\n",(0,s.jsx)(t.a,{href:"https://github.com/microsoft/TaskWeaver/blob/main/taskweaver/planner/planner_prompt.yaml",children:"planner prompt"}),"."]}),"\n",(0,s.jsx)(t.p,{children:"The following is an example of a planning example which contains 4 posts.\nEach post contains a message, a sender, a receiver, and a list of attachments."}),"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsx)(t.li,{children:'The first post is sent from the user to the planner.\nThe message is "count the rows of /home/data.csv", which is the same as the user query.'}),"\n",(0,s.jsxs)(t.li,{children:['The second post is sent from the planner to the code interpreter.\nThe message is "Please load the data file /home/data.csv and count the rows of the loaded data".\nThe attachment list contains 3 attachments:',"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsx)(t.li,{children:"The first attachment is the initial plan, which is a markdown string."}),"\n",(0,s.jsx)(t.li,{children:"The second attachment is the plan, which is a markdown string."}),"\n",(0,s.jsx)(t.li,{children:"The third attachment is the current plan step, which is a markdown string."}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(t.li,{children:'The third post is sent from the code interpreter to the planner.\nThe message is "Load the data file /home/data.csv successfully and there are 100 rows in the data file".'}),"\n",(0,s.jsxs)(t.li,{children:['The fourth post is sent from the planner to the user.\nThe message is "The data file /home/data.csv is loaded and there are 100 rows in the data file".\nThe attachment list contains 3 attachments:',"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsx)(t.li,{children:"The first attachment is the initial plan, which is the same as the second attachment of the second post."}),"\n",(0,s.jsx)(t.li,{children:"The second attachment is the plan, which is the same as the third attachment of the second post."}),"\n",(0,s.jsx)(t.li,{children:"The third attachment is the current plan step, which is a markdown string."}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-yaml",children:"enabled: True\nrounds:\n - user_query: count the rows of /home/data.csv\n state: created\n post_list:\n - message: count the rows of /home/data.csv\n send_from: User\n send_to: Planner\n attachment_list:\n - message: Please load the data file /home/data.csv and count the rows of the loaded data\n send_from: Planner\n send_to: CodeInterpreter\n attachment_list:\n - type: init_plan\n content: |-\n 1. load the data file\n 2. count the rows of the loaded data \n 3. report the result to the user \n - type: plan\n content: |-\n 1. instruct CodeInterpreter to load the data file and count the rows of the loaded data\n 2. report the result to the user\n - type: current_plan_step\n content: 1. instruct CodeInterpreter to load the data file and count the rows of the loaded data\n - message: Load the data file /home/data.csv successfully and there are 100 rows in the data file\n send_from: CodeInterpreter\n send_to: Planner\n attachment_list:\n - message: The data file /home/data.csv is loaded and there are 100 rows in the data file\n send_from: Planner\n send_to: User\n attachment_list:\n - type: init_plan\n content: |-\n 1. load the data file\n 2. count the rows of the loaded data \n 3. report the result to the user \n - type: plan\n content: |-\n 1. instruct CodeInterpreter to load the data file and count the rows of the loaded data\n 2. report the result to the user\n - type: current_plan_step\n content: 2. report the result to the user\n"})}),"\n",(0,s.jsx)(t.h2,{id:"code-interpreter-examples",children:"Code Interpreter Examples"}),"\n",(0,s.jsxs)(t.p,{children:["A code interpreter example tells LLMs how to generate code or orchestrate plugins to perform a specific task.\nThe task is from the planner. Before constructing the code interpreter example, we strongly encourage you to\nread the ",(0,s.jsx)(t.a,{href:"https://github.com/microsoft/TaskWeaver/blob/main/taskweaver/code_interpreter/code_generator/code_generator_prompt.yaml",children:"code generator prompt"}),"."]}),"\n",(0,s.jsx)(t.p,{children:"The following is an example of a code interpreter example which contains 2 posts.\nEach post contains a message, a sender, a receiver, and a list of attachments."}),"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsx)(t.li,{children:'The first post is sent from the planner to the code interpreter.\nThe message is "Please read file /abc/def.txt".'}),"\n",(0,s.jsxs)(t.li,{children:['The second post is sent from the code interpreter to the planner.\nThe message is "read file /abc/def.txt".\nThe attachment list contains 6 attachments:',"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsx)(t.li,{children:"The first attachment is the thought of the code interpreter, which is a markdown string."}),"\n",(0,s.jsx)(t.li,{children:"The second attachment is the generated code, which is in python."}),"\n",(0,s.jsx)(t.li,{children:"The third attachment is the verification status, which is CORRECT, INCORRECT, or NONE."}),"\n",(0,s.jsx)(t.li,{children:"The fourth attachment is the verification error message, which is a markdown string."}),"\n",(0,s.jsx)(t.li,{children:"The fifth attachment is the execution status, which is SUCCESS, FAILURE, or NONE."}),"\n",(0,s.jsx)(t.li,{children:"The sixth attachment is the execution result, which is a markdown string."}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-yaml",children:'enabled: True\nrounds:\n - user_query: read file /abc/def.txt\n state: finished\n post_list:\n - message: read file /abc/def.txt\n send_from: Planner\n send_to: CodeInterpreter\n attachment_list: []\n - message: I\'m sorry, I cannot find the file /abc/def.txt. An FileNotFoundException has been raised.\n send_from: CodeInterpreter\n send_to: Planner\n attachment_list:\n - type: thought\n content: "{ROLE_NAME} will generate a code snippet to read the file /abc/def.txt and present the content to the user."\n - type: python\n content: |-\n file_path = "/abc/def.txt" \n\n with open(file_path, "r") as file: \n file_contents = file.read() \n print(file_contents)\n - type: verification\n content: CORRECT\n - type: code_error\n content: No code error.\n - type: execution_status\n content: FAILURE\n - type: execution_result\n content: FileNotFoundException, the file /abc/def.txt does not exist.\n'})}),"\n",(0,s.jsxs)(t.p,{children:["In this example, ",(0,s.jsx)(t.code,{children:"verification"})," is about whether the generated code is correct or not.\nWe implemented a module to verify the generated code. If the code is syntactically incorrect,\nor the code violates the constraints, the verification status will be ",(0,s.jsx)(t.code,{children:"INCORRECT"}),"\nand some error messages will be returned.\nA verification of NONE means that the code has not been verified, which means verification has been turned off."]}),"\n",(0,s.jsxs)(t.p,{children:["In this example, ",(0,s.jsx)(t.code,{children:"execution_status"})," is about whether the generated code can be executed successfully or not.\nIf the execution is successful, the execution status will be ",(0,s.jsx)(t.code,{children:"SUCCESS"})," and the execution result will be returned.\nOtherwise, the execution status will be ",(0,s.jsx)(t.code,{children:"FAILURE"})," and some error messages will be returned.\nA execution_status of ",(0,s.jsx)(t.code,{children:"NONE"})," means that the code has not been executed."]})]})}function d(e={}){const{wrapper:t}={...(0,a.a)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},1151:(e,t,n)=>{n.d(t,{Z:()=>i,a:()=>o});var s=n(7294);const a={},r=s.createContext(a);function o(e){const t=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:o(e.components),s.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/1bba509c.4f7cc9c9.js b/assets/js/1bba509c.4f7cc9c9.js deleted file mode 100644 index abbe148b..00000000 --- a/assets/js/1bba509c.4f7cc9c9.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[4304],{4511:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>d,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var s=t(5893),i=t(1151);const o={},r="Auto Plugin Selection",l={id:"plugin/plugin_selection",title:"Auto Plugin Selection",description:"In TaskWeaver, we provide an auto plugin selection mechanism to dynamically select the best plugin for each user request.",source:"@site/docs/plugin/plugin_selection.md",sourceDirName:"plugin",slug:"/plugin/plugin_selection",permalink:"/TaskWeaver/docs/plugin/plugin_selection",draft:!1,unlisted:!1,editUrl:"https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/docs/plugin/plugin_selection.md",tags:[],version:"current",frontMatter:{},sidebar:"documentSidebar",previous:{title:"Plugin Introduction",permalink:"/TaskWeaver/docs/plugin/plugin_intro"},next:{title:"Embedding",permalink:"/TaskWeaver/docs/plugin/embedding"}},a={},c=[{value:"Auto Plugin Selection Overview",id:"auto-plugin-selection-overview",level:2},{value:"Auto Plugin Selection Configuration",id:"auto-plugin-selection-configuration",level:2},{value:"Auto Plugin Selection Example",id:"auto-plugin-selection-example",level:2}];function u(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h1,{id:"auto-plugin-selection",children:"Auto Plugin Selection"}),"\n",(0,s.jsx)(n.p,{children:"In TaskWeaver, we provide an auto plugin selection mechanism to dynamically select the best plugin for each user request.\nIt targets to solve the following two problems:"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsx)(n.li,{children:"An excessive number of plugins may cause confusion for LLM, leading to inaccuracies in generating the correct code."}),"\n",(0,s.jsx)(n.li,{children:"A large number of plugins could lead to increased token usage (potentially exceeding the token limit of LLM) and extended response time."}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"auto-plugin-selection-overview",children:"Auto Plugin Selection Overview"}),"\n",(0,s.jsxs)(n.p,{children:["Below is the overview workflow of the auto plugin selection mechanism.\n",(0,s.jsx)(n.img,{alt:"Auto Plugin Selection Overview",src:t(6869).Z+"",width:"1846",height:"543"})]}),"\n",(0,s.jsx)(n.p,{children:"NOTE: the automatic plugin selection mechanism is only activated during the code generation process in the Code Interpreter and does not affect the planning process of the Planner."}),"\n",(0,s.jsxs)(n.p,{children:["At the start of TaskWeaver initialization, the automatic plugin selector is activated to generate embedding vectors for all plugins, including their names and descriptions.\nThe embedding vectors are created using the specified embedding model configured in the ",(0,s.jsx)(n.code,{children:"taskweaver_config.json"})," file.\nFor more information, please refer to the ",(0,s.jsx)(n.a,{href:"/TaskWeaver/docs/plugin/embedding",children:"embedding"})," documentation."]}),"\n",(0,s.jsxs)(n.p,{children:["When the Planner sends a request to the Code Interpreter, the auto plugin selection mechanism will be triggered.\nIt will first generate an embedding vector for the request using the same embedding model.\nThen, it will calculate the cosine similarity between the request embedding vector and the embedding vectors of all plugins.\nIt will select the top-k plugins with the highest cosine similarity scores and load them into the ",(0,s.jsx)(n.code,{children:"code_generator"})," prompt."]}),"\n",(0,s.jsxs)(n.p,{children:["Upon completing the code generation, the ",(0,s.jsx)(n.code,{children:"code_generator"})," employs one or more plugins to produce the desired code.\nWe have established a plugin pool to store the plugins involved in the code generation process while filtering out any unused ones.\nDuring the subsequent automatic plugin selection phase, newly chosen plugins are appended to the existing ones."]}),"\n",(0,s.jsx)(n.h2,{id:"auto-plugin-selection-configuration",children:"Auto Plugin Selection Configuration"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"code_generator.enable_auto_plugin_selection"}),": Whether to enable auto plugin selection. The default value is ",(0,s.jsx)(n.code,{children:"false"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"code_generator.auto_plugin_selection_topk"}),":\tThe number of auto selected plugins in each round. The default value is ",(0,s.jsx)(n.code,{children:"3"}),"."]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"auto-plugin-selection-example",children:"Auto Plugin Selection Example"}),"\n",(0,s.jsx)(n.p,{children:"We show the auto plugin selection mechanism in the following example."}),"\n",(0,s.jsx)(n.p,{children:"First, we start TaskWeaver with the auto plugin selection mechanism enabled."}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"=========================================================\n _____ _ _ __\n|_ _|_ _ ___| | _ | | / /__ ____ __ _____ _____\n | |/ _` / __| |/ /| | /| / / _ \\/ __ `/ | / / _ \\/ ___/\n | | (_| \\__ \\ < | |/ |/ / __/ /_/ /| |/ / __/ /\n |_|\\__,_|___/_|\\_\\|__/|__/\\___/\\__,_/ |___/\\___/_/\n=========================================================\nTaskWeaver: I am TaskWeaver, an AI assistant. To get started, could you please enter your request?\nHuman: \n"})}),"\n",(0,s.jsxs)(n.p,{children:["Then we can check the log file ",(0,s.jsx)(n.code,{children:"task_weaver.log"})," in the ",(0,s.jsx)(n.code,{children:"logs"})," folder to see the auto plugin selector is initialized successfully because the ",(0,s.jsx)(n.code,{children:"Plugin embeddings generated"})," message is printed."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"2023-12-18 14:23:44,197 - INFO - Planner initialized successfully\n2023-12-18 14:24:10,488 - INFO - Plugin embeddings generated\n2023-12-18 14:24:10,490 - INFO - CodeInterpreter initialized successfully.\n2023-12-18 14:24:10,490 - INFO - Session 20231218-062343-c18494b1 is initialized\n"})}),"\n",(0,s.jsx)(n.p,{children:'We ask TaskWeaver to "search Xbox price for me".\nThe Planner instructs the Code Interpreter to search Xbox price.'}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"TaskWeaver: I am TaskWeaver, an AI assistant. To get started, could you please enter your request?\nHuman: search xbox price for me\n>>> [INIT_PLAN]\n1. search xbox price\n2. report the result to the user \n>>> [PLAN]\n1. instruct CodeInterpreter to search xbox price\n2. report the result to the user\n>>> [CURRENT_PLAN_STEP]\n1. instruct CodeInterpreter to search xbox price\n>>> [SEND_TO]\nCodeInterpreter\n>>> [MESSAGE]\nPlease search xbox price\n>>> [PLANNER->CODEINTERPRETER]\nPlease search xbox price\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Back to the Code Interpreter, the auto plugin selection mechanism is triggered.\nWe can check the log file ",(0,s.jsx)(n.code,{children:"task_weaver.log"})," again to see the auto plugin selector selected the top-3 plugins with the highest cosine similarity scores."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"023-12-18 14:24:34,513 - INFO - Planner talk to CodeInterpreter: Please search xbox price using klarna_search plugin\n2023-12-18 14:24:34,669 - INFO - Selected plugins: ['klarna_search', 'sql_pull_data', 'paper_summary']\n2023-12-18 14:24:34,669 - INFO - Selected plugin pool: ['klarna_search', 'sql_pull_data', 'paper_summary']\n"})}),"\n",(0,s.jsx)(n.p,{children:"Then the Code Interpreter will generate the code using the selected plugins."}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:">>> [THOUGHT]\nProgramApe will call the klarna_search plugin function to search for Xbox prices.\n>>> [PYTHON]\nsearch_results, description = klarna_search(query=\"xbox\")\nsearch_results, description\n>>> [VERIFICATION]\nNONE\n>>> [STATUS]\nSUCCESS\n>>> [RESULT]\nThe execution of the generated python code above has succeeded\n\nThe result of above Python code after execution is:\n( name price url attributes\n 0 Microsoft Xbox Series X - Black Edition $399.00 https://www.klarna.com/us/shopping/pl/cl52/495... [Release Year:2020, Included Accessories:1 gam...\n 1 Microsoft Xbox Series S 1TB - Black $349.00 https://www.klarna.com/us/shopping/pl/cl52/320... [Included Accessories:1 gamepad, Media Type:DV...\n .. ... ... ... ...\n 3 Xbox Series S \u2013 Starter Bundle $239.00 https://www.klarna.com/us/shopping/pl/cl52/320... [Platform:Xbox One]\n 4 Microsoft Xbox Series X 1TB Console - Diablo I... $385.58 https://www.klarna.com/us/shopping/pl/cl52/320... [Release Year:2023, Included Accessories:1 gam...\n\n [5 rows x 4 columns],\n 'The response is a dataframe with the following columns: name, price, url, attributes. The attributes column is a list of tags. The price is in the format of $xx.xx.')\n>>> [CODEINTERPRETER->PLANNER]\nThe following python code has been executed:\n```python\nsearch_results, description = klarna_search(query=\"xbox\")\nsearch_results, description\n```\n\nThe execution of the generated python code above has succeeded\n\nThe result of above Python code after execution is:\n( name price url attributes\n 0 Microsoft Xbox Series X - Black Edition $399.00 https://www.klarna.com/us/shopping/pl/cl52/495... [Release Year:2020, Included Accessories:1 gam...\n 1 Microsoft Xbox Series S 1TB - Black $349.00 https://www.klarna.com/us/shopping/pl/cl52/320... [Included Accessories:1 gamepad, Media Type:DV...\n .. ... ... ... ...\n 3 Xbox Series S \u2013 Starter Bundle $239.00 https://www.klarna.com/us/shopping/pl/cl52/320... [Platform:Xbox One]\n 4 Microsoft Xbox Series X 1TB Console - Diablo I... $385.58 https://www.klarna.com/us/shopping/pl/cl52/320... [Release Year:2023, Included Accessories:1 gam...\n\n [5 rows x 4 columns],\n 'The response is a dataframe with the following columns: name, price, url, attributes. The attributes column is a list of tags. The price is in the format of $xx.xx.')\n"})}),"\n",(0,s.jsx)(n.p,{children:"Finally, the Planner will report the result to the user."}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:">>> [INIT_PLAN]\n1. search xbox price using klarna_search plugin\n2. report the result to the user \n>>> [PLAN]\n1. instruct CodeInterpreter to search xbox price using klarna_search plugin\n2. report the result to the user\n>>> [CURRENT_PLAN_STEP]\n2. report the result to the user\n>>> [SEND_TO]\nUser\n>>> [MESSAGE]\nHere are some Xbox prices I found:\n\n1. Microsoft Xbox Series X - Black Edition: $399.00\n2. Microsoft Xbox Series S 1TB - Black: $349.00\n3. Xbox Series S \u2013 Starter Bundle: $239.00\n4. Microsoft Xbox Series X 1TB Console - Diablo Immortal Edition: $385.58\n\nPlease note that these prices are subject to change and availability.\n>>> [PLANNER->USER]\nHere are some Xbox prices I found:\n\n1. Microsoft Xbox Series X - Black Edition: $399.00\n2. Microsoft Xbox Series S 1TB - Black: $349.00\n3. Xbox Series S \u2013 Starter Bundle: $239.00\n4. Microsoft Xbox Series X 1TB Console - Diablo Immortal Edition: $385.58\n\nPlease note that these prices are subject to change and availability.\nTaskWeaver: Here are some Xbox prices I found:\n\n1. Microsoft Xbox Series X - Black Edition: $399.00\n2. Microsoft Xbox Series S 1TB - Black: $349.00\n3. Xbox Series S \u2013 Starter Bundle: $239.00\n4. Microsoft Xbox Series X 1TB Console - Diablo Immortal Edition: $385.58\n\nPlease note that these prices are subject to change and availability.\n"})})]})}function d(e={}){const{wrapper:n}={...(0,i.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(u,{...e})}):u(e)}},6869:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/APS-1dc4d286038dedc17487146cec8214fd.png"},1151:(e,n,t)=>{t.d(n,{Z:()=>l,a:()=>r});var s=t(7294);const i={},o=s.createContext(i);function r(e){const n=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),s.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/1bba509c.fdb0b2a8.js b/assets/js/1bba509c.fdb0b2a8.js new file mode 100644 index 00000000..165ce0ed --- /dev/null +++ b/assets/js/1bba509c.fdb0b2a8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[4304],{4511:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>d,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var i=t(5893),s=t(1151);const o={},r="Auto Plugin Selection",l={id:"plugin/plugin_selection",title:"Auto Plugin Selection",description:"In TaskWeaver, we provide an auto plugin selection mechanism to dynamically select the best plugin for each user request.",source:"@site/docs/plugin/plugin_selection.md",sourceDirName:"plugin",slug:"/plugin/plugin_selection",permalink:"/TaskWeaver/docs/plugin/plugin_selection",draft:!1,unlisted:!1,editUrl:"https://github.com/microsoft/TaskWeaver/tree/docs/website/docs/plugin/plugin_selection.md",tags:[],version:"current",frontMatter:{},sidebar:"documentSidebar",previous:{title:"Plugin Introduction",permalink:"/TaskWeaver/docs/plugin/plugin_intro"},next:{title:"Embedding",permalink:"/TaskWeaver/docs/plugin/embedding"}},a={},c=[{value:"Auto Plugin Selection Overview",id:"auto-plugin-selection-overview",level:2},{value:"Auto Plugin Selection Configuration",id:"auto-plugin-selection-configuration",level:2},{value:"Auto Plugin Selection Example",id:"auto-plugin-selection-example",level:2}];function u(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,s.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h1,{id:"auto-plugin-selection",children:"Auto Plugin Selection"}),"\n",(0,i.jsx)(n.p,{children:"In TaskWeaver, we provide an auto plugin selection mechanism to dynamically select the best plugin for each user request.\nIt targets to solve the following two problems:"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsx)(n.li,{children:"An excessive number of plugins may cause confusion for LLM, leading to inaccuracies in generating the correct code."}),"\n",(0,i.jsx)(n.li,{children:"A large number of plugins could lead to increased token usage (potentially exceeding the token limit of LLM) and extended response time."}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"auto-plugin-selection-overview",children:"Auto Plugin Selection Overview"}),"\n",(0,i.jsxs)(n.p,{children:["Below is the overview workflow of the auto plugin selection mechanism.\n",(0,i.jsx)(n.img,{alt:"Auto Plugin Selection Overview",src:t(802).Z+"",width:"1846",height:"543"})]}),"\n",(0,i.jsx)(n.p,{children:"NOTE: the automatic plugin selection mechanism is only activated during the code generation process in the Code Interpreter and does not affect the planning process of the Planner."}),"\n",(0,i.jsxs)(n.p,{children:["At the start of TaskWeaver initialization, the automatic plugin selector is activated to generate embedding vectors for all plugins, including their names and descriptions.\nThe embedding vectors are created using the specified embedding model configured in the ",(0,i.jsx)(n.code,{children:"taskweaver_config.json"})," file.\nFor more information, please refer to the ",(0,i.jsx)(n.a,{href:"/TaskWeaver/docs/plugin/embedding",children:"embedding"})," documentation."]}),"\n",(0,i.jsxs)(n.p,{children:["When the Planner sends a request to the Code Interpreter, the auto plugin selection mechanism will be triggered.\nIt will first generate an embedding vector for the request using the same embedding model.\nThen, it will calculate the cosine similarity between the request embedding vector and the embedding vectors of all plugins.\nIt will select the top-k plugins with the highest cosine similarity scores and load them into the ",(0,i.jsx)(n.code,{children:"code_generator"})," prompt."]}),"\n",(0,i.jsxs)(n.p,{children:["Upon completing the code generation, the ",(0,i.jsx)(n.code,{children:"code_generator"})," employs one or more plugins to produce the desired code.\nWe have established a plugin pool to store the plugins involved in the code generation process while filtering out any unused ones.\nDuring the subsequent automatic plugin selection phase, newly chosen plugins are appended to the existing ones."]}),"\n",(0,i.jsx)(n.h2,{id:"auto-plugin-selection-configuration",children:"Auto Plugin Selection Configuration"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"code_generator.enable_auto_plugin_selection"}),": Whether to enable auto plugin selection. The default value is ",(0,i.jsx)(n.code,{children:"false"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"code_generator.auto_plugin_selection_topk"}),":\tThe number of auto selected plugins in each round. The default value is ",(0,i.jsx)(n.code,{children:"3"}),"."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"auto-plugin-selection-example",children:"Auto Plugin Selection Example"}),"\n",(0,i.jsx)(n.p,{children:"We show the auto plugin selection mechanism in the following example."}),"\n",(0,i.jsx)(n.p,{children:"First, we start TaskWeaver with the auto plugin selection mechanism enabled."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"=========================================================\n _____ _ _ __\n|_ _|_ _ ___| | _ | | / /__ ____ __ _____ _____\n | |/ _` / __| |/ /| | /| / / _ \\/ __ `/ | / / _ \\/ ___/\n | | (_| \\__ \\ < | |/ |/ / __/ /_/ /| |/ / __/ /\n |_|\\__,_|___/_|\\_\\|__/|__/\\___/\\__,_/ |___/\\___/_/\n=========================================================\nTaskWeaver: I am TaskWeaver, an AI assistant. To get started, could you please enter your request?\nHuman: \n"})}),"\n",(0,i.jsxs)(n.p,{children:["Then we can check the log file ",(0,i.jsx)(n.code,{children:"task_weaver.log"})," in the ",(0,i.jsx)(n.code,{children:"logs"})," folder to see the auto plugin selector is initialized successfully because the ",(0,i.jsx)(n.code,{children:"Plugin embeddings generated"})," message is printed."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"2023-12-18 14:23:44,197 - INFO - Planner initialized successfully\n2023-12-18 14:24:10,488 - INFO - Plugin embeddings generated\n2023-12-18 14:24:10,490 - INFO - CodeInterpreter initialized successfully.\n2023-12-18 14:24:10,490 - INFO - Session 20231218-062343-c18494b1 is initialized\n"})}),"\n",(0,i.jsx)(n.p,{children:'We ask TaskWeaver to "search Xbox price for me".\nThe Planner instructs the Code Interpreter to search Xbox price.'}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"TaskWeaver: I am TaskWeaver, an AI assistant. To get started, could you please enter your request?\nHuman: search xbox price for me\n>>> [INIT_PLAN]\n1. search xbox price\n2. report the result to the user \n>>> [PLAN]\n1. instruct CodeInterpreter to search xbox price\n2. report the result to the user\n>>> [CURRENT_PLAN_STEP]\n1. instruct CodeInterpreter to search xbox price\n>>> [SEND_TO]\nCodeInterpreter\n>>> [MESSAGE]\nPlease search xbox price\n>>> [PLANNER->CODEINTERPRETER]\nPlease search xbox price\n"})}),"\n",(0,i.jsxs)(n.p,{children:["Back to the Code Interpreter, the auto plugin selection mechanism is triggered.\nWe can check the log file ",(0,i.jsx)(n.code,{children:"task_weaver.log"})," again to see the auto plugin selector selected the top-3 plugins with the highest cosine similarity scores."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"023-12-18 14:24:34,513 - INFO - Planner talk to CodeInterpreter: Please search xbox price using klarna_search plugin\n2023-12-18 14:24:34,669 - INFO - Selected plugins: ['klarna_search', 'sql_pull_data', 'paper_summary']\n2023-12-18 14:24:34,669 - INFO - Selected plugin pool: ['klarna_search', 'sql_pull_data', 'paper_summary']\n"})}),"\n",(0,i.jsx)(n.p,{children:"Then the Code Interpreter will generate the code using the selected plugins."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:">>> [THOUGHT]\nProgramApe will call the klarna_search plugin function to search for Xbox prices.\n>>> [PYTHON]\nsearch_results, description = klarna_search(query=\"xbox\")\nsearch_results, description\n>>> [VERIFICATION]\nNONE\n>>> [STATUS]\nSUCCESS\n>>> [RESULT]\nThe execution of the generated python code above has succeeded\n\nThe result of above Python code after execution is:\n( name price url attributes\n 0 Microsoft Xbox Series X - Black Edition $399.00 https://www.klarna.com/us/shopping/pl/cl52/495... [Release Year:2020, Included Accessories:1 gam...\n 1 Microsoft Xbox Series S 1TB - Black $349.00 https://www.klarna.com/us/shopping/pl/cl52/320... [Included Accessories:1 gamepad, Media Type:DV...\n .. ... ... ... ...\n 3 Xbox Series S \u2013 Starter Bundle $239.00 https://www.klarna.com/us/shopping/pl/cl52/320... [Platform:Xbox One]\n 4 Microsoft Xbox Series X 1TB Console - Diablo I... $385.58 https://www.klarna.com/us/shopping/pl/cl52/320... [Release Year:2023, Included Accessories:1 gam...\n\n [5 rows x 4 columns],\n 'The response is a dataframe with the following columns: name, price, url, attributes. The attributes column is a list of tags. The price is in the format of $xx.xx.')\n>>> [CODEINTERPRETER->PLANNER]\nThe following python code has been executed:\n```python\nsearch_results, description = klarna_search(query=\"xbox\")\nsearch_results, description\n```\n\nThe execution of the generated python code above has succeeded\n\nThe result of above Python code after execution is:\n( name price url attributes\n 0 Microsoft Xbox Series X - Black Edition $399.00 https://www.klarna.com/us/shopping/pl/cl52/495... [Release Year:2020, Included Accessories:1 gam...\n 1 Microsoft Xbox Series S 1TB - Black $349.00 https://www.klarna.com/us/shopping/pl/cl52/320... [Included Accessories:1 gamepad, Media Type:DV...\n .. ... ... ... ...\n 3 Xbox Series S \u2013 Starter Bundle $239.00 https://www.klarna.com/us/shopping/pl/cl52/320... [Platform:Xbox One]\n 4 Microsoft Xbox Series X 1TB Console - Diablo I... $385.58 https://www.klarna.com/us/shopping/pl/cl52/320... [Release Year:2023, Included Accessories:1 gam...\n\n [5 rows x 4 columns],\n 'The response is a dataframe with the following columns: name, price, url, attributes. The attributes column is a list of tags. The price is in the format of $xx.xx.')\n"})}),"\n",(0,i.jsx)(n.p,{children:"Finally, the Planner will report the result to the user."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:">>> [INIT_PLAN]\n1. search xbox price using klarna_search plugin\n2. report the result to the user \n>>> [PLAN]\n1. instruct CodeInterpreter to search xbox price using klarna_search plugin\n2. report the result to the user\n>>> [CURRENT_PLAN_STEP]\n2. report the result to the user\n>>> [SEND_TO]\nUser\n>>> [MESSAGE]\nHere are some Xbox prices I found:\n\n1. Microsoft Xbox Series X - Black Edition: $399.00\n2. Microsoft Xbox Series S 1TB - Black: $349.00\n3. Xbox Series S \u2013 Starter Bundle: $239.00\n4. Microsoft Xbox Series X 1TB Console - Diablo Immortal Edition: $385.58\n\nPlease note that these prices are subject to change and availability.\n>>> [PLANNER->USER]\nHere are some Xbox prices I found:\n\n1. Microsoft Xbox Series X - Black Edition: $399.00\n2. Microsoft Xbox Series S 1TB - Black: $349.00\n3. Xbox Series S \u2013 Starter Bundle: $239.00\n4. Microsoft Xbox Series X 1TB Console - Diablo Immortal Edition: $385.58\n\nPlease note that these prices are subject to change and availability.\nTaskWeaver: Here are some Xbox prices I found:\n\n1. Microsoft Xbox Series X - Black Edition: $399.00\n2. Microsoft Xbox Series S 1TB - Black: $349.00\n3. Xbox Series S \u2013 Starter Bundle: $239.00\n4. Microsoft Xbox Series X 1TB Console - Diablo Immortal Edition: $385.58\n\nPlease note that these prices are subject to change and availability.\n"})})]})}function d(e={}){const{wrapper:n}={...(0,s.a)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(u,{...e})}):u(e)}},802:(e,n,t)=>{t.d(n,{Z:()=>i});const i=t.p+"assets/images/APS-1dc4d286038dedc17487146cec8214fd.png"},1151:(e,n,t)=>{t.d(n,{Z:()=>l,a:()=>r});var i=t(7294);const s={},o=i.createContext(s);function r(e){const n=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),i.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/1db64337.4e547cfe.js b/assets/js/1db64337.4e547cfe.js deleted file mode 100644 index 97f3cef7..00000000 --- a/assets/js/1db64337.4e547cfe.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[1372],{9674:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>h,frontMatter:()=>a,metadata:()=>r,toc:()=>d});var n=s(5893),i=s(1151);const a={},o="Overview",r={id:"overview",title:"Overview",description:"A code-first agent framework for seamlessly planning and executing data analytics tasks.",source:"@site/docs/overview.md",sourceDirName:".",slug:"/overview",permalink:"/TaskWeaver/docs/overview",draft:!1,unlisted:!1,editUrl:"https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/docs/overview.md",tags:[],version:"current",frontMatter:{},sidebar:"documentSidebar",next:{title:"Quick Start",permalink:"/TaskWeaver/docs/quickstart"}},c={},d=[];function l(e){const t={h1:"h1",input:"input",li:"li",p:"p",strong:"strong",ul:"ul",...(0,i.a)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h1,{id:"overview",children:"Overview"}),"\n",(0,n.jsxs)(t.p,{children:["A ",(0,n.jsx)(t.strong,{children:"code-first"})," agent framework for seamlessly planning and executing data analytics tasks.\nThis innovative framework interprets user requests through coded snippets and efficiently\ncoordinates a variety of plugins in the form of functions to execute\ndata analytics tasks"]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Highlighted Features"})}),"\n",(0,n.jsxs)(t.ul,{className:"contains-task-list",children:["\n",(0,n.jsxs)(t.li,{className:"task-list-item",children:[(0,n.jsx)(t.input,{type:"checkbox",checked:!0,disabled:!0})," ",(0,n.jsx)(t.strong,{children:"Rich data structure"})," - TaskWeaver allows you to work with rich data\nstructures in Python, such as DataFrames, instead of having to work with\ntext strings."]}),"\n",(0,n.jsxs)(t.li,{className:"task-list-item",children:[(0,n.jsx)(t.input,{type:"checkbox",checked:!0,disabled:!0})," ",(0,n.jsx)(t.strong,{children:"Customized algorithms"})," - TaskWeaver allows you to encapsulate your\nown algorithms into plugins (in the form of Python functions),\nand orchestrate them to achieve complex tasks."]}),"\n",(0,n.jsxs)(t.li,{className:"task-list-item",children:[(0,n.jsx)(t.input,{type:"checkbox",checked:!0,disabled:!0})," ",(0,n.jsx)(t.strong,{children:"Incorporating domain-specific knowledge"})," - TaskWeaver is designed to\nbe easily incorporating domain-specific knowledge, such as the knowledge\nof execution flow, to improve the reliability of the AI copilot."]}),"\n",(0,n.jsxs)(t.li,{className:"task-list-item",children:[(0,n.jsx)(t.input,{type:"checkbox",checked:!0,disabled:!0})," ",(0,n.jsx)(t.strong,{children:"Stateful conversation"})," - TaskWeaver is designed to support stateful\nconversation. It can remember the context of the conversation and\nleverage it to improve the user experience."]}),"\n",(0,n.jsxs)(t.li,{className:"task-list-item",children:[(0,n.jsx)(t.input,{type:"checkbox",checked:!0,disabled:!0})," ",(0,n.jsx)(t.strong,{children:"Code verification"})," - TaskWeaver is designed to verify the generated code\nbefore execution. It can detect potential issues in the generated code\nand provide suggestions to fix them."]}),"\n",(0,n.jsxs)(t.li,{className:"task-list-item",children:[(0,n.jsx)(t.input,{type:"checkbox",checked:!0,disabled:!0})," ",(0,n.jsx)(t.strong,{children:"Easy to use"})," - TaskWeaver is designed to be easy to use.\nWe provide a set of sample plugins and a tutorial to help you get started.\nUsers can easily create their own plugins based on the sample plugins.\nTaskWeaver offers an open-box experience, allowing users to run a service immediately after installation."]}),"\n",(0,n.jsxs)(t.li,{className:"task-list-item",children:[(0,n.jsx)(t.input,{type:"checkbox",checked:!0,disabled:!0})," ",(0,n.jsx)(t.strong,{children:"Easy to debug"})," - TaskWeaver is designed to be easy to debug.\nWe have detailed logs to help you understand what is going on during calling the LLM,\nthe code generation, and execution process."]}),"\n",(0,n.jsxs)(t.li,{className:"task-list-item",children:[(0,n.jsx)(t.input,{type:"checkbox",checked:!0,disabled:!0})," ",(0,n.jsx)(t.strong,{children:"Security consideration"})," - TaskWeaver supports a basic session management to keep\ndifferent users' data separate. The code execution is separated into different processes in order not to interfere with each other."]}),"\n",(0,n.jsxs)(t.li,{className:"task-list-item",children:[(0,n.jsx)(t.input,{type:"checkbox",checked:!0,disabled:!0})," ",(0,n.jsx)(t.strong,{children:"Easy extension"})," - TaskWeaver is designed to be easily extended to accomplish\nmore complex tasks. You can create multiple AI copilots to\nact in different roles, and orchestrate them to achieve complex tasks."]}),"\n"]})]})}function h(e={}){const{wrapper:t}={...(0,i.a)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(l,{...e})}):l(e)}},1151:(e,t,s)=>{s.d(t,{Z:()=>r,a:()=>o});var n=s(7294);const i={},a=n.createContext(i);function o(e){const t=n.useContext(a);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),n.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/1db64337.d25cb400.js b/assets/js/1db64337.d25cb400.js new file mode 100644 index 00000000..5574df6b --- /dev/null +++ b/assets/js/1db64337.d25cb400.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[1372],{9674:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>h,frontMatter:()=>a,metadata:()=>r,toc:()=>d});var n=s(5893),i=s(1151);const a={},o="Overview",r={id:"overview",title:"Overview",description:"{s.d(t,{Z:()=>r,a:()=>o});var n=s(7294);const i={},a=n.createContext(i);function o(e){const t=n.useContext(a);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),n.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/2603e7ac.0c65e357.js b/assets/js/2603e7ac.0c65e357.js deleted file mode 100644 index 1802090c..00000000 --- a/assets/js/2603e7ac.0c65e357.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[2930],{6600:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>o,contentTitle:()=>a,default:()=>d,frontMatter:()=>i,metadata:()=>c,toc:()=>u});var n=s(5893),r=s(1151);const i={},a="Running pytest",c={id:"run_pytest",title:"Running pytest",description:"quickstart",source:"@site/docs/run_pytest.md",sourceDirName:".",slug:"/run_pytest",permalink:"/TaskWeaver/docs/run_pytest",draft:!1,unlisted:!1,editUrl:"https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/docs/run_pytest.md",tags:[],version:"current",frontMatter:{},sidebar:"documentSidebar",previous:{title:"Session",permalink:"/TaskWeaver/docs/session"},next:{title:"Use TaskWeaver as a library",permalink:"/TaskWeaver/docs/taskweaver_as_a_lib"}},o={},u=[{value:"quickstart",id:"quickstart",level:2},{value:"setup",id:"setup",level:3},{value:"run tests",id:"run-tests",level:3},{value:"notes",id:"notes",level:3}];function l(e){const t={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",ul:"ul",...(0,r.a)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h1,{id:"running-pytest",children:"Running pytest"}),"\n",(0,n.jsx)(t.h2,{id:"quickstart",children:"quickstart"}),"\n",(0,n.jsx)(t.h3,{id:"setup",children:"setup"}),"\n",(0,n.jsxs)(t.p,{children:["make sure you completed the ",(0,n.jsx)(t.a,{href:"https://github.com/microsoft/TaskWeaver#quick-start",children:"taskweaver quickstart"})]}),"\n",(0,n.jsx)(t.h3,{id:"run-tests",children:"run tests"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:["execute ",(0,n.jsx)(t.code,{children:"./scripts/run_pytest.sh"})," from the project root"]}),"\n"]}),"\n",(0,n.jsx)(t.h3,{id:"notes",children:"notes"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:["the script temporarily sets ",(0,n.jsx)(t.code,{children:"PYTHONPATH"})," and runs pytest"]}),"\n",(0,n.jsx)(t.li,{children:"no permanent environment changes"}),"\n",(0,n.jsx)(t.li,{children:"pass additional pytest arguments as needed"}),"\n"]}),"\n",(0,n.jsx)(t.p,{children:"done! \ud83d\ude80"})]})}function d(e={}){const{wrapper:t}={...(0,r.a)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(l,{...e})}):l(e)}},1151:(e,t,s)=>{s.d(t,{Z:()=>c,a:()=>a});var n=s(7294);const r={},i=n.createContext(r);function a(e){const t=n.useContext(i);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),n.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/2603e7ac.8e247b05.js b/assets/js/2603e7ac.8e247b05.js new file mode 100644 index 00000000..f2be131e --- /dev/null +++ b/assets/js/2603e7ac.8e247b05.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[2930],{6600:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>o,contentTitle:()=>c,default:()=>d,frontMatter:()=>i,metadata:()=>a,toc:()=>u});var n=s(5893),r=s(1151);const i={},c="Running pytest",a={id:"run_pytest",title:"Running pytest",description:"quickstart",source:"@site/docs/run_pytest.md",sourceDirName:".",slug:"/run_pytest",permalink:"/TaskWeaver/docs/run_pytest",draft:!1,unlisted:!1,editUrl:"https://github.com/microsoft/TaskWeaver/tree/docs/website/docs/run_pytest.md",tags:[],version:"current",frontMatter:{},sidebar:"documentSidebar",previous:{title:"Session",permalink:"/TaskWeaver/docs/session"},next:{title:"Use TaskWeaver as a library",permalink:"/TaskWeaver/docs/taskweaver_as_a_lib"}},o={},u=[{value:"quickstart",id:"quickstart",level:2},{value:"setup",id:"setup",level:3},{value:"run tests",id:"run-tests",level:3},{value:"notes",id:"notes",level:3}];function l(e){const t={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",ul:"ul",...(0,r.a)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h1,{id:"running-pytest",children:"Running pytest"}),"\n",(0,n.jsx)(t.h2,{id:"quickstart",children:"quickstart"}),"\n",(0,n.jsx)(t.h3,{id:"setup",children:"setup"}),"\n",(0,n.jsxs)(t.p,{children:["make sure you completed the ",(0,n.jsx)(t.a,{href:"https://github.com/microsoft/TaskWeaver#quick-start",children:"taskweaver quickstart"})]}),"\n",(0,n.jsx)(t.h3,{id:"run-tests",children:"run tests"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:["execute ",(0,n.jsx)(t.code,{children:"./scripts/run_pytest.sh"})," from the project root"]}),"\n"]}),"\n",(0,n.jsx)(t.h3,{id:"notes",children:"notes"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:["the script temporarily sets ",(0,n.jsx)(t.code,{children:"PYTHONPATH"})," and runs pytest"]}),"\n",(0,n.jsx)(t.li,{children:"no permanent environment changes"}),"\n",(0,n.jsx)(t.li,{children:"pass additional pytest arguments as needed"}),"\n"]}),"\n",(0,n.jsx)(t.p,{children:"done! \ud83d\ude80"})]})}function d(e={}){const{wrapper:t}={...(0,r.a)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(l,{...e})}):l(e)}},1151:(e,t,s)=>{s.d(t,{Z:()=>a,a:()=>c});var n=s(7294);const r={},i=n.createContext(r);function c(e){const t=n.useContext(i);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:c(e.components),n.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/2aeb6ff3.4609e3f2.js b/assets/js/2aeb6ff3.4609e3f2.js new file mode 100644 index 00000000..dcc4e0f8 --- /dev/null +++ b/assets/js/2aeb6ff3.4609e3f2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[3269],{6671:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>a,metadata:()=>i,toc:()=>d});var r=t(5893),s=t(1151);const a={},o="Planner",i={id:"planner",title:"Planner",description:"In TaskWeaver, the Planner is responsible for generating a plan to accomplish the user's task.",source:"@site/docs/planner.md",sourceDirName:".",slug:"/planner",permalink:"/TaskWeaver/docs/planner",draft:!1,unlisted:!1,editUrl:"https://github.com/microsoft/TaskWeaver/tree/docs/website/docs/planner.md",tags:[],version:"current",frontMatter:{},sidebar:"documentSidebar",previous:{title:"Configuration File",permalink:"/TaskWeaver/docs/configurations"},next:{title:"Session",permalink:"/TaskWeaver/docs/session"}},l={},d=[{value:"Planner Configuration",id:"planner-configuration",level:2}];function c(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,s.a)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h1,{id:"planner",children:"Planner"}),"\n",(0,r.jsx)(n.p,{children:"In TaskWeaver, the Planner is responsible for generating a plan to accomplish the user's task.\nThe plan is a sequence of steps, where each step will be executed by the Code Interpreter.\nTaken the response from the Code Interpreter or new requests from the user as input, the Planner will update the plan and move on to the next step."}),"\n",(0,r.jsx)(n.h2,{id:"planner-configuration",children:"Planner Configuration"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"planner.example_base_path"}),":\tThe folder to store planner examples. The default value is ",(0,r.jsx)(n.code,{children:"${AppBaseDir}/planner_examples"}),".\nIf you want to create your own planner examples, you can add them to this folder. More details about ",(0,r.jsx)(n.code,{children:"example"})," can referred to ",(0,r.jsx)(n.a,{href:"./example",children:"example"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"planner.prompt_compression"}),": At times, lengthy conversations with the Planner may exceed the input limitations of the LLM model.\nTo address this issue, we can compress the chat history and send it to the LLM model. The default value for this setting is ",(0,r.jsx)(n.code,{children:"false"}),".\nMore details about ",(0,r.jsx)(n.code,{children:"prompt_compression"})," can be referred to ",(0,r.jsx)(n.a,{href:"./compression",children:"prompt_compression"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"planner.skip_planning"}),": In certain scenarios, there may be no need to use the Planner to generate complex plans for simple tasks.\nFor instance, if a user wants to count the rows in a data file, the request can be sent directly to the Code Interpreter.\nWhen the majority of user requests involve simple tasks, enabling this option will create a dummy plan that is sent alongside the user request to the Code Interpreter directly, without LLM generation process.\nThe fixed dummy plan is shown in ",(0,r.jsx)(n.a,{href:"https://github.com/microsoft/TaskWeaver/blob/main/taskweaver/planner/dummy_plan.json",children:"dummy_plan.json"}),".\nHere is an chat example:"]}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"=========================================================\n _____ _ _ __\n|_ _|_ _ ___| | _ | | / /__ ____ __ _____ _____\n | |/ _` / __| |/ /| | /| / / _ \\/ __ `/ | / / _ \\/ ___/\n | | (_| \\__ \\ < | |/ |/ / __/ /_/ /| |/ / __/ /\n |_|\\__,_|___/_|\\_\\|__/|__/\\___/\\__,_/ |___/\\___/_/\n=========================================================\nTaskWeaver: I am TaskWeaver, an AI assistant. To get started, could you please enter your request?\nHuman: generate 10 random numbers\n>>> [MESSAGE]eparing... <=\ufffd=>\nPlease process this request: generate 10 random numbers\n>>> [SEND_TO]\nCodeInterpreter\n>>> [INIT_PLAN]\n1. ask Code Interpreter to handle the request; 2. report the result to user \n>>> [PLAN]\n1. ask Code Interpreter to handle user's request; 2. report the result to user\n>>> [CURRENT_PLAN_STEP]\n1. ask Code Interpreter to handle the request\n>>> [PLANNER->CODEINTERPRETER]\nPlease process this request: generate 10 random numbers\n>>> [PYTHON]tarting... <=\ufffd=> \nrandom_numbers = np.random.rand(10)\nrandom_numbers\n>>> [VERIFICATION]\nNONE\n>>> [STATUS]tarting... <=\ufffd=> \nSUCCESS\n>>> [RESULT]\nThe execution of the generated python code above has succeeded\n\nThe result of above Python code after execution is:\narray([0.65294462, 0.26946084, 0.06244879, 0.78520418, 0.87067657,\n 0.24208003, 0.60249788, 0.30921069, 0.83811521, 0.05135891])\n>>> [CODEINTERPRETER->PLANNER]\nThe following python code has been executed:\n```python\nrandom_numbers = np.random.rand(10)\nrandom_numbers\n```\n\nThe execution of the generated python code above has succeeded\n\nThe result of above Python code after execution is:\narray([0.65294462, 0.26946084, 0.06244879, 0.78520418, 0.87067657,\n 0.24208003, 0.60249788, 0.30921069, 0.83811521, 0.05135891])\n>>> [INIT_PLAN]ting... <=\ufffd=> \n1. ask Code Interpreter to handle the request; 2. report the result to user \n>>> [PLAN]\n1. ask Code Interpreter to handle user's request; 2. report the result to user\n>>> [CURRENT_PLAN_STEP]\n2. report the result to user\n>>> [SEND_TO]\nUser\n>>> [MESSAGE]\nThe random numbers are as follows: [0.65294462, 0.26946084, 0.06244879, 0.78520418, 0.87067657, 0.24208003, 0.60249788, 0.30921069, 0.83811521, 0.05135891]\n>>> [PLANNER->USER]\nThe random numbers are as follows: [0.65294462, 0.26946084, 0.06244879, 0.78520418, 0.87067657, 0.24208003, 0.60249788, 0.30921069, 0.83811521, 0.05135891]\nTaskWeaver: The random numbers are as follows: [0.65294462, 0.26946084, 0.06244879, 0.78520418, 0.87067657, 0.24208003, 0.60249788, 0.30921069, 0.83811521, 0.05135891]\n"})})]})}function h(e={}){const{wrapper:n}={...(0,s.a)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(c,{...e})}):c(e)}},1151:(e,n,t)=>{t.d(n,{Z:()=>i,a:()=>o});var r=t(7294);const s={},a=r.createContext(s);function o(e){const n=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),r.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/2aeb6ff3.e29f6f3b.js b/assets/js/2aeb6ff3.e29f6f3b.js deleted file mode 100644 index 4a7a7315..00000000 --- a/assets/js/2aeb6ff3.e29f6f3b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[3269],{6671:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>a,metadata:()=>i,toc:()=>d});var r=t(5893),s=t(1151);const a={},o="Planner",i={id:"planner",title:"Planner",description:"In TaskWeaver, the Planner is responsible for generating a plan to accomplish the user's task.",source:"@site/docs/planner.md",sourceDirName:".",slug:"/planner",permalink:"/TaskWeaver/docs/planner",draft:!1,unlisted:!1,editUrl:"https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/docs/planner.md",tags:[],version:"current",frontMatter:{},sidebar:"documentSidebar",previous:{title:"Configuration File",permalink:"/TaskWeaver/docs/configurations"},next:{title:"Session",permalink:"/TaskWeaver/docs/session"}},l={},d=[{value:"Planner Configuration",id:"planner-configuration",level:2}];function c(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,s.a)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h1,{id:"planner",children:"Planner"}),"\n",(0,r.jsx)(n.p,{children:"In TaskWeaver, the Planner is responsible for generating a plan to accomplish the user's task.\nThe plan is a sequence of steps, where each step will be executed by the Code Interpreter.\nTaken the response from the Code Interpreter or new requests from the user as input, the Planner will update the plan and move on to the next step."}),"\n",(0,r.jsx)(n.h2,{id:"planner-configuration",children:"Planner Configuration"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"planner.example_base_path"}),":\tThe folder to store planner examples. The default value is ",(0,r.jsx)(n.code,{children:"${AppBaseDir}/planner_examples"}),".\nIf you want to create your own planner examples, you can add them to this folder. More details about ",(0,r.jsx)(n.code,{children:"example"})," can referred to ",(0,r.jsx)(n.a,{href:"./example",children:"example"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"planner.prompt_compression"}),": At times, lengthy conversations with the Planner may exceed the input limitations of the LLM model.\nTo address this issue, we can compress the chat history and send it to the LLM model. The default value for this setting is ",(0,r.jsx)(n.code,{children:"false"}),".\nMore details about ",(0,r.jsx)(n.code,{children:"prompt_compression"})," can be referred to ",(0,r.jsx)(n.a,{href:"./compression",children:"prompt_compression"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"planner.skip_planning"}),": In certain scenarios, there may be no need to use the Planner to generate complex plans for simple tasks.\nFor instance, if a user wants to count the rows in a data file, the request can be sent directly to the Code Interpreter.\nWhen the majority of user requests involve simple tasks, enabling this option will create a dummy plan that is sent alongside the user request to the Code Interpreter directly, without LLM generation process.\nThe fixed dummy plan is shown in ",(0,r.jsx)(n.a,{href:"https://github.com/microsoft/TaskWeaver/blob/main/taskweaver/planner/dummy_plan.json",children:"dummy_plan.json"}),".\nHere is an chat example:"]}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"=========================================================\n _____ _ _ __\n|_ _|_ _ ___| | _ | | / /__ ____ __ _____ _____\n | |/ _` / __| |/ /| | /| / / _ \\/ __ `/ | / / _ \\/ ___/\n | | (_| \\__ \\ < | |/ |/ / __/ /_/ /| |/ / __/ /\n |_|\\__,_|___/_|\\_\\|__/|__/\\___/\\__,_/ |___/\\___/_/\n=========================================================\nTaskWeaver: I am TaskWeaver, an AI assistant. To get started, could you please enter your request?\nHuman: generate 10 random numbers\n>>> [MESSAGE]eparing... <=\ufffd=>\nPlease process this request: generate 10 random numbers\n>>> [SEND_TO]\nCodeInterpreter\n>>> [INIT_PLAN]\n1. ask Code Interpreter to handle the request; 2. report the result to user \n>>> [PLAN]\n1. ask Code Interpreter to handle user's request; 2. report the result to user\n>>> [CURRENT_PLAN_STEP]\n1. ask Code Interpreter to handle the request\n>>> [PLANNER->CODEINTERPRETER]\nPlease process this request: generate 10 random numbers\n>>> [PYTHON]tarting... <=\ufffd=> \nrandom_numbers = np.random.rand(10)\nrandom_numbers\n>>> [VERIFICATION]\nNONE\n>>> [STATUS]tarting... <=\ufffd=> \nSUCCESS\n>>> [RESULT]\nThe execution of the generated python code above has succeeded\n\nThe result of above Python code after execution is:\narray([0.65294462, 0.26946084, 0.06244879, 0.78520418, 0.87067657,\n 0.24208003, 0.60249788, 0.30921069, 0.83811521, 0.05135891])\n>>> [CODEINTERPRETER->PLANNER]\nThe following python code has been executed:\n```python\nrandom_numbers = np.random.rand(10)\nrandom_numbers\n```\n\nThe execution of the generated python code above has succeeded\n\nThe result of above Python code after execution is:\narray([0.65294462, 0.26946084, 0.06244879, 0.78520418, 0.87067657,\n 0.24208003, 0.60249788, 0.30921069, 0.83811521, 0.05135891])\n>>> [INIT_PLAN]ting... <=\ufffd=> \n1. ask Code Interpreter to handle the request; 2. report the result to user \n>>> [PLAN]\n1. ask Code Interpreter to handle user's request; 2. report the result to user\n>>> [CURRENT_PLAN_STEP]\n2. report the result to user\n>>> [SEND_TO]\nUser\n>>> [MESSAGE]\nThe random numbers are as follows: [0.65294462, 0.26946084, 0.06244879, 0.78520418, 0.87067657, 0.24208003, 0.60249788, 0.30921069, 0.83811521, 0.05135891]\n>>> [PLANNER->USER]\nThe random numbers are as follows: [0.65294462, 0.26946084, 0.06244879, 0.78520418, 0.87067657, 0.24208003, 0.60249788, 0.30921069, 0.83811521, 0.05135891]\nTaskWeaver: The random numbers are as follows: [0.65294462, 0.26946084, 0.06244879, 0.78520418, 0.87067657, 0.24208003, 0.60249788, 0.30921069, 0.83811521, 0.05135891]\n"})})]})}function h(e={}){const{wrapper:n}={...(0,s.a)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(c,{...e})}):c(e)}},1151:(e,n,t)=>{t.d(n,{Z:()=>i,a:()=>o});var r=t(7294);const s={},a=r.createContext(s);function o(e){const n=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),r.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/31db19d2.8486d49a.js b/assets/js/31db19d2.8486d49a.js new file mode 100644 index 00000000..d8819973 --- /dev/null +++ b/assets/js/31db19d2.8486d49a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[6011],{906:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>a,default:()=>u,frontMatter:()=>o,metadata:()=>i,toc:()=>d});var t=s(5893),r=s(1151);const o={},a="Session",i={id:"session",title:"Session",description:"session is the entrance of TaskWeaver.",source:"@site/docs/session.md",sourceDirName:".",slug:"/session",permalink:"/TaskWeaver/docs/session",draft:!1,unlisted:!1,editUrl:"https://github.com/microsoft/TaskWeaver/tree/docs/website/docs/session.md",tags:[],version:"current",frontMatter:{},sidebar:"documentSidebar",previous:{title:"Planner",permalink:"/TaskWeaver/docs/planner"},next:{title:"Running pytest",permalink:"/TaskWeaver/docs/run_pytest"}},c={},d=[{value:"Session Configration",id:"session-configration",level:2}];function _(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,r.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h1,{id:"session",children:"Session"}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.code,{children:"session"})," is the entrance of TaskWeaver.\nIt is responsible for the communication between the user and TaskWeaver.\nYou can refer to ",(0,t.jsx)(n.a,{href:"/TaskWeaver/docs/taskweaver_as_a_lib",children:"taskweaver_as_a_lib"})," to see how to setup a TaskWeaver session and start chatting with TaskWeaver."]}),"\n",(0,t.jsx)(n.h2,{id:"session-configration",children:"Session Configration"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"max_internal_chat_round_num"}),": the maximum number of internal chat rounds between Planner and Code Interpreter.\nIf the number of internal chat rounds exceeds this number, the session will be terminated.\nThe default value is ",(0,t.jsx)(n.code,{children:"10"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"code_interpreter_only"}),": allow users to directly communicate with the Code Interpreter.\nIn this mode, users can only send messages to the Code Interpreter and receive messages from the Code Interpreter.\nHere is an example:"]}),"\n"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:" =========================================================\n _____ _ _ __\n|_ _|_ _ ___| | _ | | / /__ ____ __ _____ _____\n | |/ _` / __| |/ /| | /| / / _ \\/ __ `/ | / / _ \\/ ___/\n | | (_| \\__ \\ < | |/ |/ / __/ /_/ /| |/ / __/ /\n |_|\\__,_|___/_|\\_\\|__/|__/\\___/\\__,_/ |___/\\___/_/\n=========================================================\nTaskWeaver: I am TaskWeaver, an AI assistant. To get started, could you please enter your request?\nHuman: generate 10 random numbers\n>>> [PYTHON]tarting... <=\ufffd=> >\nimport numpy as np\nrandom_numbers = np.random.rand(10)\nrandom_numbers\n>>> [VERIFICATION]\nNONE\n>>> [STATUS]tarting... <=\ufffd=> \nSUCCESS\n>>> [RESULT]\nThe execution of the generated python code above has succeeded\n\nThe result of above Python code after execution is:\narray([0.09918602, 0.68732778, 0.44413814, 0.4756623 , 0.48302334,\n 0.8286594 , 0.80994359, 0.35677263, 0.45719317, 0.68240194])\n>>> [CODEINTERPRETER->PLANNER]\nThe following python code has been executed:\n```python\nimport numpy as np\nrandom_numbers = np.random.rand(10)\nrandom_numbers\n```\n\nThe execution of the generated python code above has succeeded\n\nThe result of above Python code after execution is:\narray([0.09918602, 0.68732778, 0.44413814, 0.4756623 , 0.48302334,\n 0.8286594 , 0.80994359, 0.35677263, 0.45719317, 0.68240194])\nTaskWeaver: The following python code has been executed:\n```python\nimport numpy as np\nrandom_numbers = np.random.rand(10)\nrandom_numbers\n\\```\n\nThe execution of the generated python code above has succeeded\n\nThe result of above Python code after execution is:\narray([0.09918602, 0.68732778, 0.44413814, 0.4756623 , 0.48302334,\n 0.8286594 , 0.80994359, 0.35677263, 0.45719317, 0.68240194])\n"})})]})}function u(e={}){const{wrapper:n}={...(0,r.a)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(_,{...e})}):_(e)}},1151:(e,n,s)=>{s.d(n,{Z:()=>i,a:()=>a});var t=s(7294);const r={},o=t.createContext(r);function a(e){const n=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),t.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/31db19d2.bff72e38.js b/assets/js/31db19d2.bff72e38.js deleted file mode 100644 index ecdb4b1d..00000000 --- a/assets/js/31db19d2.bff72e38.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[6011],{906:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>a,default:()=>u,frontMatter:()=>o,metadata:()=>i,toc:()=>d});var t=s(5893),r=s(1151);const o={},a="Session",i={id:"session",title:"Session",description:"session is the entrance of TaskWeaver.",source:"@site/docs/session.md",sourceDirName:".",slug:"/session",permalink:"/TaskWeaver/docs/session",draft:!1,unlisted:!1,editUrl:"https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/docs/session.md",tags:[],version:"current",frontMatter:{},sidebar:"documentSidebar",previous:{title:"Planner",permalink:"/TaskWeaver/docs/planner"},next:{title:"Running pytest",permalink:"/TaskWeaver/docs/run_pytest"}},c={},d=[{value:"Session Configration",id:"session-configration",level:2}];function _(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,r.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h1,{id:"session",children:"Session"}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.code,{children:"session"})," is the entrance of TaskWeaver.\nIt is responsible for the communication between the user and TaskWeaver.\nYou can refer to ",(0,t.jsx)(n.a,{href:"/TaskWeaver/docs/taskweaver_as_a_lib",children:"taskweaver_as_a_lib"})," to see how to setup a TaskWeaver session and start chatting with TaskWeaver."]}),"\n",(0,t.jsx)(n.h2,{id:"session-configration",children:"Session Configration"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"max_internal_chat_round_num"}),": the maximum number of internal chat rounds between Planner and Code Interpreter.\nIf the number of internal chat rounds exceeds this number, the session will be terminated.\nThe default value is ",(0,t.jsx)(n.code,{children:"10"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"code_interpreter_only"}),": allow users to directly communicate with the Code Interpreter.\nIn this mode, users can only send messages to the Code Interpreter and receive messages from the Code Interpreter.\nHere is an example:"]}),"\n"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:" =========================================================\n _____ _ _ __\n|_ _|_ _ ___| | _ | | / /__ ____ __ _____ _____\n | |/ _` / __| |/ /| | /| / / _ \\/ __ `/ | / / _ \\/ ___/\n | | (_| \\__ \\ < | |/ |/ / __/ /_/ /| |/ / __/ /\n |_|\\__,_|___/_|\\_\\|__/|__/\\___/\\__,_/ |___/\\___/_/\n=========================================================\nTaskWeaver: I am TaskWeaver, an AI assistant. To get started, could you please enter your request?\nHuman: generate 10 random numbers\n>>> [PYTHON]tarting... <=\ufffd=> >\nimport numpy as np\nrandom_numbers = np.random.rand(10)\nrandom_numbers\n>>> [VERIFICATION]\nNONE\n>>> [STATUS]tarting... <=\ufffd=> \nSUCCESS\n>>> [RESULT]\nThe execution of the generated python code above has succeeded\n\nThe result of above Python code after execution is:\narray([0.09918602, 0.68732778, 0.44413814, 0.4756623 , 0.48302334,\n 0.8286594 , 0.80994359, 0.35677263, 0.45719317, 0.68240194])\n>>> [CODEINTERPRETER->PLANNER]\nThe following python code has been executed:\n```python\nimport numpy as np\nrandom_numbers = np.random.rand(10)\nrandom_numbers\n```\n\nThe execution of the generated python code above has succeeded\n\nThe result of above Python code after execution is:\narray([0.09918602, 0.68732778, 0.44413814, 0.4756623 , 0.48302334,\n 0.8286594 , 0.80994359, 0.35677263, 0.45719317, 0.68240194])\nTaskWeaver: The following python code has been executed:\n```python\nimport numpy as np\nrandom_numbers = np.random.rand(10)\nrandom_numbers\n\\```\n\nThe execution of the generated python code above has succeeded\n\nThe result of above Python code after execution is:\narray([0.09918602, 0.68732778, 0.44413814, 0.4756623 , 0.48302334,\n 0.8286594 , 0.80994359, 0.35677263, 0.45719317, 0.68240194])\n"})})]})}function u(e={}){const{wrapper:n}={...(0,r.a)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(_,{...e})}):_(e)}},1151:(e,n,s)=>{s.d(n,{Z:()=>i,a:()=>a});var t=s(7294);const r={},o=t.createContext(r);function a(e){const n=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),t.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/3ad3027d.7f996976.js b/assets/js/3ad3027d.7f996976.js deleted file mode 100644 index 94d92bb8..00000000 --- a/assets/js/3ad3027d.7f996976.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[4728],{4390:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>m,frontMatter:()=>r,metadata:()=>a,toc:()=>l});var s=n(5893),o=n(1151);const r={},i="Gemini",a={id:"llms/geni",title:"Gemini",description:"",source:"@site/docs/llms/geni.md",sourceDirName:"llms",slug:"/llms/geni",permalink:"/TaskWeaver/docs/llms/geni",draft:!1,unlisted:!1,editUrl:"https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/docs/llms/geni.md",tags:[],version:"current",frontMatter:{},sidebar:"documentSidebar",previous:{title:"Ollama",permalink:"/TaskWeaver/docs/llms/ollama"},next:{title:"QWen",permalink:"/TaskWeaver/docs/llms/qwen"}},c={},l=[];function u(e){const t={h1:"h1",...(0,o.a)(),...e.components};return(0,s.jsx)(t.h1,{id:"gemini",children:"Gemini"})}function m(e={}){const{wrapper:t}={...(0,o.a)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(u,{...e})}):u(e)}},1151:(e,t,n)=>{n.d(t,{Z:()=>a,a:()=>i});var s=n(7294);const o={},r=s.createContext(o);function i(e){const t=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),s.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/3ad3027d.e053b0a6.js b/assets/js/3ad3027d.e053b0a6.js new file mode 100644 index 00000000..5662e6ee --- /dev/null +++ b/assets/js/3ad3027d.e053b0a6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[4728],{4390:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>r,default:()=>u,frontMatter:()=>i,metadata:()=>c,toc:()=>l});var s=n(5893),o=n(1151);const i={},r="Gemini",c={id:"llms/geni",title:"Gemini",description:"",source:"@site/docs/llms/geni.md",sourceDirName:"llms",slug:"/llms/geni",permalink:"/TaskWeaver/docs/llms/geni",draft:!1,unlisted:!1,editUrl:"https://github.com/microsoft/TaskWeaver/tree/docs/website/docs/llms/geni.md",tags:[],version:"current",frontMatter:{},sidebar:"documentSidebar",previous:{title:"Ollama",permalink:"/TaskWeaver/docs/llms/ollama"},next:{title:"QWen",permalink:"/TaskWeaver/docs/llms/qwen"}},a={},l=[];function m(e){const t={h1:"h1",...(0,o.a)(),...e.components};return(0,s.jsx)(t.h1,{id:"gemini",children:"Gemini"})}function u(e={}){const{wrapper:t}={...(0,o.a)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(m,{...e})}):m(e)}},1151:(e,t,n)=>{n.d(t,{Z:()=>c,a:()=>r});var s=n(7294);const o={},i=s.createContext(o);function r(e){const t=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),s.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/3d6402a8.041ab8ee.js b/assets/js/3d6402a8.041ab8ee.js deleted file mode 100644 index 55a8b98b..00000000 --- a/assets/js/3d6402a8.041ab8ee.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[889],{4497:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>S,contentTitle:()=>O,default:()=>N,frontMatter:()=>_,metadata:()=>T,toc:()=>V});var r=t(5893),a=t(1151),s=t(7294),o=t(512),l=t(2466),i=t(6550),c=t(469),u=t(1980),d=t(7392),p=t(12);function h(e){return s.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,s.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function m(e){const{values:n,children:t}=e;return(0,s.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:t,attributes:r,default:a}}=e;return{value:n,label:t,attributes:r,default:a}}))}(t);return function(e){const n=(0,d.l)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function f(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function b(e){let{queryString:n=!1,groupId:t}=e;const r=(0,i.k6)(),a=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,u._X)(a),(0,s.useCallback)((e=>{if(!a)return;const n=new URLSearchParams(r.location.search);n.set(a,e),r.replace({...r.location,search:n.toString()})}),[a,r])]}function j(e){const{defaultValue:n,queryString:t=!1,groupId:r}=e,a=m(e),[o,l]=(0,s.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!f({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=t.find((e=>e.default))??t[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:a}))),[i,u]=b({queryString:t,groupId:r}),[d,h]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[r,a]=(0,p.Nk)(t);return[r,(0,s.useCallback)((e=>{t&&a.set(e)}),[t,a])]}({groupId:r}),j=(()=>{const e=i??d;return f({value:e,tabValues:a})?e:null})();(0,c.Z)((()=>{j&&l(j)}),[j]);return{selectedValue:o,selectValue:(0,s.useCallback)((e=>{if(!f({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),h(e)}),[u,h,a]),tabValues:a}}var x=t(2389);const v={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function g(e){let{className:n,block:t,selectedValue:a,selectValue:s,tabValues:i}=e;const c=[],{blockElementScrollPositionUntilNextRender:u}=(0,l.o5)(),d=e=>{const n=e.currentTarget,t=c.indexOf(n),r=i[t].value;r!==a&&(u(n),s(r))},p=e=>{let n=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const t=c.indexOf(e.currentTarget)+1;n=c[t]??c[0];break}case"ArrowLeft":{const t=c.indexOf(e.currentTarget)-1;n=c[t]??c[c.length-1];break}}n?.focus()};return(0,r.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.Z)("tabs",{"tabs--block":t},n),children:i.map((e=>{let{value:n,label:t,attributes:s}=e;return(0,r.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>c.push(e),onKeyDown:p,onClick:d,...s,className:(0,o.Z)("tabs__item",v.tabItem,s?.className,{"tabs__item--active":a===n}),children:t??n},n)}))})}function k(e){let{lazy:n,children:t,selectedValue:a}=e;const o=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=o.find((e=>e.props.value===a));return e?(0,s.cloneElement)(e,{className:"margin-top--md"}):null}return(0,r.jsx)("div",{className:"margin-top--md",children:o.map(((e,n)=>(0,s.cloneElement)(e,{key:n,hidden:e.props.value!==a})))})}function w(e){const n=j(e);return(0,r.jsxs)("div",{className:(0,o.Z)("tabs-container",v.tabList),children:[(0,r.jsx)(g,{...e,...n}),(0,r.jsx)(k,{...e,...n})]})}function y(e){const n=(0,x.Z)();return(0,r.jsx)(w,{...e,children:h(e.children)},String(n))}const I={tabItem:"tabItem_Ymn6"};function A(e){let{children:n,hidden:t,className:a}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,o.Z)(I.tabItem,a),hidden:t,children:n})}const _={description:"Using LLMs from OpenAI/AOAI"},O="OpenAI & Azure OpenAI",T={id:"llms/openai",title:"OpenAI & Azure OpenAI",description:"Using LLMs from OpenAI/AOAI",source:"@site/docs/llms/openai.mdx",sourceDirName:"llms",slug:"/llms/openai",permalink:"/TaskWeaver/docs/llms/openai",draft:!1,unlisted:!1,editUrl:"https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/docs/llms/openai.mdx",tags:[],version:"current",frontMatter:{description:"Using LLMs from OpenAI/AOAI"},sidebar:"documentSidebar",previous:{title:"Supported LLMs",permalink:"/TaskWeaver/docs/llms/"},next:{title:"LiteLLM",permalink:"/TaskWeaver/docs/llms/liteLLM"}},S={},V=[];function L(e){const n={a:"a",code:"code",h1:"h1",li:"li",ol:"ol",p:"p",pre:"pre",...(0,a.a)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h1,{id:"openai--azure-openai",children:"OpenAI & Azure OpenAI"}),"\n","\n","\n",(0,r.jsxs)(y,{children:[(0,r.jsxs)(A,{value:"openai",label:"OpenAI",default:!0,children:[(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["Create an account on ",(0,r.jsx)(n.a,{href:"https://beta.openai.com/",children:"OpenAI"})," and get your API key."]}),"\n",(0,r.jsxs)(n.li,{children:["Add the following to your ",(0,r.jsx)(n.code,{children:"taskweaver_config.json"})," file:"]}),"\n"]}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "llm.api_type":"openai",\n "llm.api_base": "https://api.openai.com/v1",\n "llm.api_key": "YOUR_API_KEY",\n "llm.model": "gpt-4-1106-preview"\n "llm.response_format": "json_object"\n}\n'})}),(0,r.jsxs)(n.p,{children:["\ud83d\udca1",(0,r.jsx)(n.code,{children:"llm.model"})," is the model name you want to use.\nYou can find the list of models ",(0,r.jsx)(n.a,{href:"https://platform.openai.com/docs/models",children:"here"}),"."]}),(0,r.jsxs)(n.p,{children:["\ud83d\udca1For ",(0,r.jsx)(n.code,{children:"gpt-4-1106-preview"})," and ",(0,r.jsx)(n.code,{children:"gpt-3.5-turbo-1106"}),", ",(0,r.jsx)(n.code,{children:"llm.response_format"})," can be set to ",(0,r.jsx)(n.code,{children:"json_object"}),".\nHowever, for the earlier models, which do not support JSON response explicitly, ",(0,r.jsx)(n.code,{children:"llm.response_format"})," should be set to ",(0,r.jsx)(n.code,{children:"null"}),"."]}),(0,r.jsxs)(n.ol,{start:"3",children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["Start TaskWeaver and chat with TaskWeaver.\nYou can refer to the ",(0,r.jsx)(n.a,{href:"/TaskWeaver/docs/quickstart",children:"Quick Start"})," for more details."]}),"\n"]}),"\n"]})]}),(0,r.jsxs)(A,{value:"orange",label:"Azure OpenAI",children:[(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["Create an account on ",(0,r.jsx)(n.a,{href:"https://azure.microsoft.com/en-us/products/ai-services/openai-service",children:"Azure OpenAI"})," and get your API key."]}),"\n",(0,r.jsxs)(n.li,{children:["Add the following to your ",(0,r.jsx)(n.code,{children:"taskweaver_config.json"})," file:"]}),"\n"]}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "llm.api_base":"YOUR_AOAI_ENDPOINT",\n "llm.api_key":"YOUR_API_KEY",\n "llm.api_type":"azure",\n "llm.auth_mode":"api-key",\n "llm.model":"gpt-4-1106-preview",\n "llm.response_format": "json_object"\n}\n'})}),(0,r.jsxs)(n.p,{children:["\ud83d\udca1",(0,r.jsx)(n.code,{children:"llm.model"})," is the model name you want to use.\nYou can find the list of models ",(0,r.jsx)(n.a,{href:"https://platform.openai.com/docs/models",children:"here"}),"."]}),(0,r.jsxs)(n.p,{children:["\ud83d\udca1For ",(0,r.jsx)(n.code,{children:"gpt-4-1106-preview"})," and ",(0,r.jsx)(n.code,{children:"gpt-3.5-turbo-1106"}),", ",(0,r.jsx)(n.code,{children:"llm.response_format"})," can be set to ",(0,r.jsx)(n.code,{children:"json_object"}),".\nHowever, for the earlier models, which do not support JSON response explicitly, ",(0,r.jsx)(n.code,{children:"llm.response_format"})," should be set to ",(0,r.jsx)(n.code,{children:"null"}),"."]}),(0,r.jsxs)(n.ol,{start:"3",children:["\n",(0,r.jsxs)(n.li,{children:["Start TaskWeaver and chat with TaskWeaver.\nYou can refer to the ",(0,r.jsx)(n.a,{href:"/TaskWeaver/docs/quickstart",children:"Quick Start"})," for more details."]}),"\n"]})]})]})]})}function N(e={}){const{wrapper:n}={...(0,a.a)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(L,{...e})}):L(e)}},1151:(e,n,t)=>{t.d(n,{Z:()=>l,a:()=>o});var r=t(7294);const a={},s=r.createContext(a);function o(e){const n=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:o(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/3d6402a8.0f12022c.js b/assets/js/3d6402a8.0f12022c.js new file mode 100644 index 00000000..b1338de3 --- /dev/null +++ b/assets/js/3d6402a8.0f12022c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[889],{4497:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>S,contentTitle:()=>O,default:()=>N,frontMatter:()=>_,metadata:()=>T,toc:()=>V});var r=t(5893),s=t(1151),a=t(7294),o=t(512),l=t(2466),i=t(6550),c=t(469),u=t(1980),d=t(7392),p=t(12);function h(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function m(e){const{values:n,children:t}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return h(e).map((e=>{let{props:{value:n,label:t,attributes:r,default:s}}=e;return{value:n,label:t,attributes:r,default:s}}))}(t);return function(e){const n=(0,d.l)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function f(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function b(e){let{queryString:n=!1,groupId:t}=e;const r=(0,i.k6)(),s=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,u._X)(s),(0,a.useCallback)((e=>{if(!s)return;const n=new URLSearchParams(r.location.search);n.set(s,e),r.replace({...r.location,search:n.toString()})}),[s,r])]}function j(e){const{defaultValue:n,queryString:t=!1,groupId:r}=e,s=m(e),[o,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!f({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=t.find((e=>e.default))??t[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:s}))),[i,u]=b({queryString:t,groupId:r}),[d,h]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[r,s]=(0,p.Nk)(t);return[r,(0,a.useCallback)((e=>{t&&s.set(e)}),[t,s])]}({groupId:r}),j=(()=>{const e=i??d;return f({value:e,tabValues:s})?e:null})();(0,c.Z)((()=>{j&&l(j)}),[j]);return{selectedValue:o,selectValue:(0,a.useCallback)((e=>{if(!f({value:e,tabValues:s}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),h(e)}),[u,h,s]),tabValues:s}}var x=t(2389);const v={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function g(e){let{className:n,block:t,selectedValue:s,selectValue:a,tabValues:i}=e;const c=[],{blockElementScrollPositionUntilNextRender:u}=(0,l.o5)(),d=e=>{const n=e.currentTarget,t=c.indexOf(n),r=i[t].value;r!==s&&(u(n),a(r))},p=e=>{let n=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const t=c.indexOf(e.currentTarget)+1;n=c[t]??c[0];break}case"ArrowLeft":{const t=c.indexOf(e.currentTarget)-1;n=c[t]??c[c.length-1];break}}n?.focus()};return(0,r.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.Z)("tabs",{"tabs--block":t},n),children:i.map((e=>{let{value:n,label:t,attributes:a}=e;return(0,r.jsx)("li",{role:"tab",tabIndex:s===n?0:-1,"aria-selected":s===n,ref:e=>c.push(e),onKeyDown:p,onClick:d,...a,className:(0,o.Z)("tabs__item",v.tabItem,a?.className,{"tabs__item--active":s===n}),children:t??n},n)}))})}function k(e){let{lazy:n,children:t,selectedValue:s}=e;const o=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=o.find((e=>e.props.value===s));return e?(0,a.cloneElement)(e,{className:"margin-top--md"}):null}return(0,r.jsx)("div",{className:"margin-top--md",children:o.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==s})))})}function w(e){const n=j(e);return(0,r.jsxs)("div",{className:(0,o.Z)("tabs-container",v.tabList),children:[(0,r.jsx)(g,{...e,...n}),(0,r.jsx)(k,{...e,...n})]})}function y(e){const n=(0,x.Z)();return(0,r.jsx)(w,{...e,children:h(e.children)},String(n))}const I={tabItem:"tabItem_Ymn6"};function A(e){let{children:n,hidden:t,className:s}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,o.Z)(I.tabItem,s),hidden:t,children:n})}const _={description:"Using LLMs from OpenAI/AOAI"},O="OpenAI & Azure OpenAI",T={id:"llms/openai",title:"OpenAI & Azure OpenAI",description:"Using LLMs from OpenAI/AOAI",source:"@site/docs/llms/openai.mdx",sourceDirName:"llms",slug:"/llms/openai",permalink:"/TaskWeaver/docs/llms/openai",draft:!1,unlisted:!1,editUrl:"https://github.com/microsoft/TaskWeaver/tree/docs/website/docs/llms/openai.mdx",tags:[],version:"current",frontMatter:{description:"Using LLMs from OpenAI/AOAI"},sidebar:"documentSidebar",previous:{title:"Supported LLMs",permalink:"/TaskWeaver/docs/llms/"},next:{title:"LiteLLM",permalink:"/TaskWeaver/docs/llms/liteLLM"}},S={},V=[];function L(e){const n={a:"a",code:"code",h1:"h1",li:"li",ol:"ol",p:"p",pre:"pre",...(0,s.a)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h1,{id:"openai--azure-openai",children:"OpenAI & Azure OpenAI"}),"\n","\n","\n",(0,r.jsxs)(y,{children:[(0,r.jsxs)(A,{value:"openai",label:"OpenAI",default:!0,children:[(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["Create an account on ",(0,r.jsx)(n.a,{href:"https://beta.openai.com/",children:"OpenAI"})," and get your API key."]}),"\n",(0,r.jsxs)(n.li,{children:["Add the following to your ",(0,r.jsx)(n.code,{children:"taskweaver_config.json"})," file:"]}),"\n"]}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "llm.api_type":"openai",\n "llm.api_base": "https://api.openai.com/v1",\n "llm.api_key": "YOUR_API_KEY",\n "llm.model": "gpt-4-1106-preview"\n "llm.response_format": "json_object"\n}\n'})}),(0,r.jsxs)(n.p,{children:["\ud83d\udca1",(0,r.jsx)(n.code,{children:"llm.model"})," is the model name you want to use.\nYou can find the list of models ",(0,r.jsx)(n.a,{href:"https://platform.openai.com/docs/models",children:"here"}),"."]}),(0,r.jsxs)(n.p,{children:["\ud83d\udca1For ",(0,r.jsx)(n.code,{children:"gpt-4-1106-preview"})," and ",(0,r.jsx)(n.code,{children:"gpt-3.5-turbo-1106"}),", ",(0,r.jsx)(n.code,{children:"llm.response_format"})," can be set to ",(0,r.jsx)(n.code,{children:"json_object"}),".\nHowever, for the earlier models, which do not support JSON response explicitly, ",(0,r.jsx)(n.code,{children:"llm.response_format"})," should be set to ",(0,r.jsx)(n.code,{children:"null"}),"."]}),(0,r.jsxs)(n.ol,{start:"3",children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["Start TaskWeaver and chat with TaskWeaver.\nYou can refer to the ",(0,r.jsx)(n.a,{href:"/TaskWeaver/docs/quickstart",children:"Quick Start"})," for more details."]}),"\n"]}),"\n"]})]}),(0,r.jsxs)(A,{value:"orange",label:"Azure OpenAI",children:[(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["Create an account on ",(0,r.jsx)(n.a,{href:"https://azure.microsoft.com/en-us/products/ai-services/openai-service",children:"Azure OpenAI"})," and get your API key."]}),"\n",(0,r.jsxs)(n.li,{children:["Add the following to your ",(0,r.jsx)(n.code,{children:"taskweaver_config.json"})," file:"]}),"\n"]}),(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "llm.api_base":"YOUR_AOAI_ENDPOINT",\n "llm.api_key":"YOUR_API_KEY",\n "llm.api_type":"azure",\n "llm.auth_mode":"api-key",\n "llm.model":"gpt-4-1106-preview",\n "llm.response_format": "json_object"\n}\n'})}),(0,r.jsxs)(n.p,{children:["\ud83d\udca1",(0,r.jsx)(n.code,{children:"llm.model"})," is the model name you want to use.\nYou can find the list of models ",(0,r.jsx)(n.a,{href:"https://platform.openai.com/docs/models",children:"here"}),"."]}),(0,r.jsxs)(n.p,{children:["\ud83d\udca1For ",(0,r.jsx)(n.code,{children:"gpt-4-1106-preview"})," and ",(0,r.jsx)(n.code,{children:"gpt-3.5-turbo-1106"}),", ",(0,r.jsx)(n.code,{children:"llm.response_format"})," can be set to ",(0,r.jsx)(n.code,{children:"json_object"}),".\nHowever, for the earlier models, which do not support JSON response explicitly, ",(0,r.jsx)(n.code,{children:"llm.response_format"})," should be set to ",(0,r.jsx)(n.code,{children:"null"}),"."]}),(0,r.jsxs)(n.ol,{start:"3",children:["\n",(0,r.jsxs)(n.li,{children:["Start TaskWeaver and chat with TaskWeaver.\nYou can refer to the ",(0,r.jsx)(n.a,{href:"/TaskWeaver/docs/quickstart",children:"Quick Start"})," for more details."]}),"\n"]})]})]})]})}function N(e={}){const{wrapper:n}={...(0,s.a)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(L,{...e})}):L(e)}},1151:(e,n,t)=>{t.d(n,{Z:()=>l,a:()=>o});var r=t(7294);const s={},a=r.createContext(s);function o(e){const n=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),r.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/59362658.02980fd4.js b/assets/js/59362658.02980fd4.js deleted file mode 100644 index ed4a2a9a..00000000 --- a/assets/js/59362658.02980fd4.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[2267],{7797:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>c,contentTitle:()=>n,default:()=>d,frontMatter:()=>a,metadata:()=>u,toc:()=>l});var s=o(5893),r=o(1151);const a={slug:"mdx-blog-post",title:"MDX Blog Post",authors:["slorber"],tags:["docusaurus"]},n=void 0,u={permalink:"/TaskWeaver/blog/mdx-blog-post",editUrl:"https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/blog/2021-08-01-mdx-blog-post.mdx",source:"@site/blog/2021-08-01-mdx-blog-post.mdx",title:"MDX Blog Post",description:"Blog posts support Docusaurus Markdown features, such as MDX.",date:"2021-08-01T00:00:00.000Z",formattedDate:"August 1, 2021",tags:[{label:"docusaurus",permalink:"/TaskWeaver/blog/tags/docusaurus"}],readingTime:.175,hasTruncateMarker:!1,authors:[{name:"S\xe9bastien Lorber",title:"Docusaurus maintainer",url:"https://sebastienlorber.com",imageURL:"https://github.com/slorber.png",key:"slorber"}],frontMatter:{slug:"mdx-blog-post",title:"MDX Blog Post",authors:["slorber"],tags:["docusaurus"]},unlisted:!1,prevItem:{title:"Welcome",permalink:"/TaskWeaver/blog/welcome"},nextItem:{title:"Long Blog Post",permalink:"/TaskWeaver/blog/long-blog-post"}},c={authorsImageUrls:[void 0]},l=[];function i(e){const t={a:"a",admonition:"admonition",code:"code",p:"p",pre:"pre",...(0,r.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(t.p,{children:["Blog posts support ",(0,s.jsx)(t.a,{href:"https://docusaurus.io/docs/markdown-features",children:"Docusaurus Markdown features"}),", such as ",(0,s.jsx)(t.a,{href:"https://mdxjs.com/",children:"MDX"}),"."]}),"\n",(0,s.jsxs)(t.admonition,{type:"tip",children:[(0,s.jsx)(t.p,{children:"Use the power of React to create interactive blog posts."}),(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-js",children:"\n"})}),(0,s.jsx)("button",{onClick:()=>alert("button clicked!"),children:"Click me!"})]})]})}function d(e={}){const{wrapper:t}={...(0,r.a)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(i,{...e})}):i(e)}},1151:(e,t,o)=>{o.d(t,{Z:()=>u,a:()=>n});var s=o(7294);const r={},a=s.createContext(r);function n(e){const t=s.useContext(a);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function u(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:n(e.components),s.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/59362658.1623e135.js b/assets/js/59362658.1623e135.js new file mode 100644 index 00000000..a8226043 --- /dev/null +++ b/assets/js/59362658.1623e135.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[2267],{7797:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>d,frontMatter:()=>n,metadata:()=>l,toc:()=>u});var s=o(5893),r=o(1151);const n={slug:"mdx-blog-post",title:"MDX Blog Post",authors:["slorber"],tags:["docusaurus"]},a=void 0,l={permalink:"/TaskWeaver/blog/mdx-blog-post",editUrl:"https://github.com/microsoft/TaskWeaver/tree/docs/website/blog/2021-08-01-mdx-blog-post.mdx",source:"@site/blog/2021-08-01-mdx-blog-post.mdx",title:"MDX Blog Post",description:"Blog posts support Docusaurus Markdown features, such as MDX.",date:"2021-08-01T00:00:00.000Z",formattedDate:"August 1, 2021",tags:[{label:"docusaurus",permalink:"/TaskWeaver/blog/tags/docusaurus"}],readingTime:.175,hasTruncateMarker:!1,authors:[{name:"S\xe9bastien Lorber",title:"Docusaurus maintainer",url:"https://sebastienlorber.com",imageURL:"https://github.com/slorber.png",key:"slorber"}],frontMatter:{slug:"mdx-blog-post",title:"MDX Blog Post",authors:["slorber"],tags:["docusaurus"]},unlisted:!1,prevItem:{title:"Welcome",permalink:"/TaskWeaver/blog/welcome"},nextItem:{title:"Long Blog Post",permalink:"/TaskWeaver/blog/long-blog-post"}},c={authorsImageUrls:[void 0]},u=[];function i(e){const t={a:"a",admonition:"admonition",code:"code",p:"p",pre:"pre",...(0,r.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(t.p,{children:["Blog posts support ",(0,s.jsx)(t.a,{href:"https://docusaurus.io/docs/markdown-features",children:"Docusaurus Markdown features"}),", such as ",(0,s.jsx)(t.a,{href:"https://mdxjs.com/",children:"MDX"}),"."]}),"\n",(0,s.jsxs)(t.admonition,{type:"tip",children:[(0,s.jsx)(t.p,{children:"Use the power of React to create interactive blog posts."}),(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-js",children:"\n"})}),(0,s.jsx)("button",{onClick:()=>alert("button clicked!"),children:"Click me!"})]})]})}function d(e={}){const{wrapper:t}={...(0,r.a)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(i,{...e})}):i(e)}},1151:(e,t,o)=>{o.d(t,{Z:()=>l,a:()=>a});var s=o(7294);const r={},n=s.createContext(r);function a(e){const t=s.useContext(n);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),s.createElement(n.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/5d7f3e2f.83c7b373.js b/assets/js/5d7f3e2f.83c7b373.js deleted file mode 100644 index cc5984af..00000000 --- a/assets/js/5d7f3e2f.83c7b373.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[6910],{3616:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>l,contentTitle:()=>t,default:()=>a,frontMatter:()=>o,metadata:()=>c,toc:()=>i});var d=r(5893),s=r(1151);const o={},t="Configuration File",c={id:"configurations",title:"Configuration File",description:"The configuration file is located at project/taskweaver_config.json.",source:"@site/docs/configurations.md",sourceDirName:".",slug:"/configurations",permalink:"/TaskWeaver/docs/configurations",draft:!1,unlisted:!1,editUrl:"https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/docs/configurations.md",tags:[],version:"current",frontMatter:{},sidebar:"documentSidebar",previous:{title:"Prompt Compression",permalink:"/TaskWeaver/docs/compression"},next:{title:"Planner",permalink:"/TaskWeaver/docs/planner"}},l={},i=[];function h(e){const n={a:"a",blockquote:"blockquote",code:"code",h1:"h1",p:"p",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,s.a)(),...e.components};return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(n.h1,{id:"configuration-file",children:"Configuration File"}),"\n",(0,d.jsxs)(n.p,{children:["The configuration file is located at ",(0,d.jsx)(n.code,{children:"project/taskweaver_config.json"}),".\nYou can edit this file to configure TaskWeaver.\nThe configuration file is in JSON format. So for boolean values, use ",(0,d.jsx)(n.code,{children:"true"})," or ",(0,d.jsx)(n.code,{children:"false"})," instead of ",(0,d.jsx)(n.code,{children:"True"})," or ",(0,d.jsx)(n.code,{children:"False"}),".\nFor null values, use ",(0,d.jsx)(n.code,{children:"null"})," instead of ",(0,d.jsx)(n.code,{children:"None"})," or ",(0,d.jsx)(n.code,{children:'"null"'}),". All other values should be strings in double quotes.\nThe following table lists the parameters in the configuration file:"]}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Parameter"}),(0,d.jsx)(n.th,{children:"Description"}),(0,d.jsx)(n.th,{children:"Default Value"})]})}),(0,d.jsxs)(n.tbody,{children:[(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"llm.model"})}),(0,d.jsx)(n.td,{children:"The model name used by the language model."}),(0,d.jsx)(n.td,{children:"gpt-4"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"llm.backup_model"})}),(0,d.jsx)(n.td,{children:"The model name used for self-correction purposes."}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"null"})})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"llm.api_base"})}),(0,d.jsx)(n.td,{children:"The base URL of the OpenAI API."}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"https://api.openai.com/v1"})})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"llm.api_key"})}),(0,d.jsx)(n.td,{children:"The API key of the OpenAI API."}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"null"})})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"llm.api_type"})}),(0,d.jsxs)(n.td,{children:["The type of the OpenAI API, could be ",(0,d.jsx)(n.code,{children:"openai"})," or ",(0,d.jsx)(n.code,{children:"azure"}),"."]}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"openai"})})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"llm.api_version"})}),(0,d.jsx)(n.td,{children:"The version of the OpenAI API."}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"2023-07-01-preview"})})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"llm.response_format"})}),(0,d.jsxs)(n.td,{children:["The response format of the OpenAI API, could be ",(0,d.jsx)(n.code,{children:"json_object"}),", ",(0,d.jsx)(n.code,{children:"text"})," or ",(0,d.jsx)(n.code,{children:"null"}),"."]}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"json_object"})})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"code_interpreter.code_verification_on"})}),(0,d.jsx)(n.td,{children:"Whether to enable code verification."}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"false"})})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"code_interpreter.plugin_only"})}),(0,d.jsx)(n.td,{children:"Whether to turn on the plugin only mode."}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"false"})})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"code_interpreter.allowed_modules"})}),(0,d.jsx)(n.td,{children:"The list of allowed modules to import in code generation."}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:'"pandas", "matplotlib", "numpy", "sklearn", "scipy", "seaborn", "datetime", "typing"'})})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"logging.log_file"})}),(0,d.jsx)(n.td,{children:"The name of the log file."}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"taskweaver.log"})})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"logging.log_folder"})}),(0,d.jsx)(n.td,{children:"The folder to store the log file."}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"logs"})})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"plugin.base_path"})}),(0,d.jsx)(n.td,{children:"The folder to store plugins."}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"${AppBaseDir}/plugins"})})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"planner.example_base_path"})}),(0,d.jsx)(n.td,{children:"The folder to store planner examples."}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"${AppBaseDir}/planner_examples"})})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"planner.prompt_compression"})}),(0,d.jsx)(n.td,{children:"Whether to compress the chat history for planner."}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"false"})})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"planner.skip_planning"})}),(0,d.jsx)(n.td,{children:"Whether to skip LLM planning process and enable the default plan"}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"false"})})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"code_generator.example_base_path"})}),(0,d.jsx)(n.td,{children:"The folder to store code interpreter examples."}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"${AppBaseDir}/codeinterpreter_examples"})})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"code_generator.prompt_compression"})}),(0,d.jsx)(n.td,{children:"Whether to compress the chat history for code interpreter."}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"false"})})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"code_generator.enable_auto_plugin_selection"})}),(0,d.jsx)(n.td,{children:"Whether to enable auto plugin selection."}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"false"})})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"code_generator.auto_plugin_selection_topk"})}),(0,d.jsx)(n.td,{children:"The number of auto selected plugins in each round."}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"3"})})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"session.max_internal_chat_round_num"})}),(0,d.jsx)(n.td,{children:"The maximum number of internal chat rounds between Planner and Code Interpreter."}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"10"})})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"session.code_interpreter_only"})}),(0,d.jsx)(n.td,{children:"Allow users to directly communicate with the Code Interpreter."}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"false"})})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"round_compressor.rounds_to_compress"})}),(0,d.jsx)(n.td,{children:"The number of rounds to compress."}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"2"})})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"round_compressor.rounds_to_retain"})}),(0,d.jsx)(n.td,{children:"The number of rounds to retain."}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"3"})})]})]})]}),"\n",(0,d.jsxs)(n.blockquote,{children:["\n",(0,d.jsx)(n.p,{children:"\ud83d\udca1 ${AppBaseDir} is the project directory."}),"\n"]}),"\n",(0,d.jsxs)(n.blockquote,{children:["\n",(0,d.jsxs)(n.p,{children:["\ud83d\udca1 Up to 11/30/2023, the ",(0,d.jsx)(n.code,{children:"json_object"})," and ",(0,d.jsx)(n.code,{children:"text"})," options of ",(0,d.jsx)(n.code,{children:"llm.response_format"})," is only supported by the OpenAI models later than 1106. If you are using an older version of OpenAI model, you need to set the ",(0,d.jsx)(n.code,{children:"llm.response_format"})," to ",(0,d.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,d.jsxs)(n.blockquote,{children:["\n",(0,d.jsxs)(n.p,{children:["\ud83d\udca1 Read ",(0,d.jsx)(n.a,{href:"/TaskWeaver/docs/compression",children:"this"})," for more information for ",(0,d.jsx)(n.code,{children:"planner.prompt_compression"})," and ",(0,d.jsx)(n.code,{children:"code_generator.prompt_compression"}),"."]}),"\n"]})]})}function a(e={}){const{wrapper:n}={...(0,s.a)(),...e.components};return n?(0,d.jsx)(n,{...e,children:(0,d.jsx)(h,{...e})}):h(e)}},1151:(e,n,r)=>{r.d(n,{Z:()=>c,a:()=>t});var d=r(7294);const s={},o=d.createContext(s);function t(e){const n=d.useContext(o);return d.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:t(e.components),d.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/5d7f3e2f.9154b97e.js b/assets/js/5d7f3e2f.9154b97e.js new file mode 100644 index 00000000..d96f0e48 --- /dev/null +++ b/assets/js/5d7f3e2f.9154b97e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[6910],{3616:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>l,contentTitle:()=>t,default:()=>x,frontMatter:()=>o,metadata:()=>c,toc:()=>i});var d=r(5893),s=r(1151);const o={},t="Configuration File",c={id:"configurations",title:"Configuration File",description:"The configuration file is located at project/taskweaver_config.json.",source:"@site/docs/configurations.md",sourceDirName:".",slug:"/configurations",permalink:"/TaskWeaver/docs/configurations",draft:!1,unlisted:!1,editUrl:"https://github.com/microsoft/TaskWeaver/tree/docs/website/docs/configurations.md",tags:[],version:"current",frontMatter:{},sidebar:"documentSidebar",previous:{title:"Prompt Compression",permalink:"/TaskWeaver/docs/compression"},next:{title:"Planner",permalink:"/TaskWeaver/docs/planner"}},l={},i=[];function h(e){const n={a:"a",blockquote:"blockquote",code:"code",h1:"h1",p:"p",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,s.a)(),...e.components};return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(n.h1,{id:"configuration-file",children:"Configuration File"}),"\n",(0,d.jsxs)(n.p,{children:["The configuration file is located at ",(0,d.jsx)(n.code,{children:"project/taskweaver_config.json"}),".\nYou can edit this file to configure TaskWeaver.\nThe configuration file is in JSON format. So for boolean values, use ",(0,d.jsx)(n.code,{children:"true"})," or ",(0,d.jsx)(n.code,{children:"false"})," instead of ",(0,d.jsx)(n.code,{children:"True"})," or ",(0,d.jsx)(n.code,{children:"False"}),".\nFor null values, use ",(0,d.jsx)(n.code,{children:"null"})," instead of ",(0,d.jsx)(n.code,{children:"None"})," or ",(0,d.jsx)(n.code,{children:'"null"'}),". All other values should be strings in double quotes.\nThe following table lists the parameters in the configuration file:"]}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Parameter"}),(0,d.jsx)(n.th,{children:"Description"}),(0,d.jsx)(n.th,{children:"Default Value"})]})}),(0,d.jsxs)(n.tbody,{children:[(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"llm.model"})}),(0,d.jsx)(n.td,{children:"The model name used by the language model."}),(0,d.jsx)(n.td,{children:"gpt-4"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"llm.backup_model"})}),(0,d.jsx)(n.td,{children:"The model name used for self-correction purposes."}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"null"})})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"llm.api_base"})}),(0,d.jsx)(n.td,{children:"The base URL of the OpenAI API."}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"https://api.openai.com/v1"})})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"llm.api_key"})}),(0,d.jsx)(n.td,{children:"The API key of the OpenAI API."}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"null"})})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"llm.api_type"})}),(0,d.jsxs)(n.td,{children:["The type of the OpenAI API, could be ",(0,d.jsx)(n.code,{children:"openai"})," or ",(0,d.jsx)(n.code,{children:"azure"}),"."]}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"openai"})})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"llm.api_version"})}),(0,d.jsx)(n.td,{children:"The version of the OpenAI API."}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"2023-07-01-preview"})})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"llm.response_format"})}),(0,d.jsxs)(n.td,{children:["The response format of the OpenAI API, could be ",(0,d.jsx)(n.code,{children:"json_object"}),", ",(0,d.jsx)(n.code,{children:"text"})," or ",(0,d.jsx)(n.code,{children:"null"}),"."]}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"json_object"})})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"code_interpreter.code_verification_on"})}),(0,d.jsx)(n.td,{children:"Whether to enable code verification."}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"false"})})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"code_interpreter.plugin_only"})}),(0,d.jsx)(n.td,{children:"Whether to turn on the plugin only mode."}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"false"})})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"code_interpreter.allowed_modules"})}),(0,d.jsx)(n.td,{children:"The list of allowed modules to import in code generation."}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:'"pandas", "matplotlib", "numpy", "sklearn", "scipy", "seaborn", "datetime", "typing"'})})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"logging.log_file"})}),(0,d.jsx)(n.td,{children:"The name of the log file."}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"taskweaver.log"})})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"logging.log_folder"})}),(0,d.jsx)(n.td,{children:"The folder to store the log file."}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"logs"})})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"plugin.base_path"})}),(0,d.jsx)(n.td,{children:"The folder to store plugins."}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"${AppBaseDir}/plugins"})})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"planner.example_base_path"})}),(0,d.jsx)(n.td,{children:"The folder to store planner examples."}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"${AppBaseDir}/planner_examples"})})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"planner.prompt_compression"})}),(0,d.jsx)(n.td,{children:"Whether to compress the chat history for planner."}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"false"})})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"planner.skip_planning"})}),(0,d.jsx)(n.td,{children:"Whether to skip LLM planning process and enable the default plan"}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"false"})})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"code_generator.example_base_path"})}),(0,d.jsx)(n.td,{children:"The folder to store code interpreter examples."}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"${AppBaseDir}/codeinterpreter_examples"})})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"code_generator.prompt_compression"})}),(0,d.jsx)(n.td,{children:"Whether to compress the chat history for code interpreter."}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"false"})})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"code_generator.enable_auto_plugin_selection"})}),(0,d.jsx)(n.td,{children:"Whether to enable auto plugin selection."}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"false"})})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"code_generator.auto_plugin_selection_topk"})}),(0,d.jsx)(n.td,{children:"The number of auto selected plugins in each round."}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"3"})})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"session.max_internal_chat_round_num"})}),(0,d.jsx)(n.td,{children:"The maximum number of internal chat rounds between Planner and Code Interpreter."}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"10"})})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"session.code_interpreter_only"})}),(0,d.jsx)(n.td,{children:"Allow users to directly communicate with the Code Interpreter."}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"false"})})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"round_compressor.rounds_to_compress"})}),(0,d.jsx)(n.td,{children:"The number of rounds to compress."}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"2"})})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"round_compressor.rounds_to_retain"})}),(0,d.jsx)(n.td,{children:"The number of rounds to retain."}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"3"})})]})]})]}),"\n",(0,d.jsxs)(n.blockquote,{children:["\n",(0,d.jsx)(n.p,{children:"\ud83d\udca1 ${AppBaseDir} is the project directory."}),"\n"]}),"\n",(0,d.jsxs)(n.blockquote,{children:["\n",(0,d.jsxs)(n.p,{children:["\ud83d\udca1 Up to 11/30/2023, the ",(0,d.jsx)(n.code,{children:"json_object"})," and ",(0,d.jsx)(n.code,{children:"text"})," options of ",(0,d.jsx)(n.code,{children:"llm.response_format"})," is only supported by the OpenAI models later than 1106. If you are using an older version of OpenAI model, you need to set the ",(0,d.jsx)(n.code,{children:"llm.response_format"})," to ",(0,d.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,d.jsxs)(n.blockquote,{children:["\n",(0,d.jsxs)(n.p,{children:["\ud83d\udca1 Read ",(0,d.jsx)(n.a,{href:"/TaskWeaver/docs/compression",children:"this"})," for more information for ",(0,d.jsx)(n.code,{children:"planner.prompt_compression"})," and ",(0,d.jsx)(n.code,{children:"code_generator.prompt_compression"}),"."]}),"\n"]})]})}function x(e={}){const{wrapper:n}={...(0,s.a)(),...e.components};return n?(0,d.jsx)(n,{...e,children:(0,d.jsx)(h,{...e})}):h(e)}},1151:(e,n,r)=>{r.d(n,{Z:()=>c,a:()=>t});var d=r(7294);const s={},o=d.createContext(s);function t(e){const n=d.useContext(o);return d.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:t(e.components),d.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/73664a40.4275f694.js b/assets/js/73664a40.4275f694.js new file mode 100644 index 00000000..52107201 --- /dev/null +++ b/assets/js/73664a40.4275f694.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[3514],{1985:(e,s,i)=>{i.r(s),i.d(s,{assets:()=>u,contentTitle:()=>n,default:()=>a,frontMatter:()=>r,metadata:()=>m,toc:()=>l});var t=i(5893),o=i(1151);const r={slug:"long-blog-post",title:"Long Blog Post",authors:"endi",tags:["hello","docusaurus"]},n=void 0,m={permalink:"/TaskWeaver/blog/long-blog-post",editUrl:"https://github.com/microsoft/TaskWeaver/tree/docs/website/blog/2019-05-29-long-blog-post.md",source:"@site/blog/2019-05-29-long-blog-post.md",title:"Long Blog Post",description:"This is the summary of a very long blog post,",date:"2019-05-29T00:00:00.000Z",formattedDate:"May 29, 2019",tags:[{label:"hello",permalink:"/TaskWeaver/blog/tags/hello"},{label:"docusaurus",permalink:"/TaskWeaver/blog/tags/docusaurus"}],readingTime:2.05,hasTruncateMarker:!0,authors:[{name:"Endilie Yacop Sucipto",title:"Maintainer of Docusaurus",url:"https://github.com/endiliey",imageURL:"https://github.com/endiliey.png",key:"endi"}],frontMatter:{slug:"long-blog-post",title:"Long Blog Post",authors:"endi",tags:["hello","docusaurus"]},unlisted:!1,prevItem:{title:"MDX Blog Post",permalink:"/TaskWeaver/blog/mdx-blog-post"},nextItem:{title:"First Blog Post",permalink:"/TaskWeaver/blog/first-blog-post"}},u={authorsImageUrls:[void 0]},l=[];function c(e){const s={code:"code",p:"p",...(0,o.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(s.p,{children:"This is the summary of a very long blog post,"}),"\n",(0,t.jsxs)(s.p,{children:["Use a ",(0,t.jsx)(s.code,{children:"\x3c!--"})," ",(0,t.jsx)(s.code,{children:"truncate"})," ",(0,t.jsx)(s.code,{children:"--\x3e"})," comment to limit blog post size in the list view."]}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"})]})}function a(e={}){const{wrapper:s}={...(0,o.a)(),...e.components};return s?(0,t.jsx)(s,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},1151:(e,s,i)=>{i.d(s,{Z:()=>m,a:()=>n});var t=i(7294);const o={},r=t.createContext(o);function n(e){const s=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function m(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:n(e.components),t.createElement(r.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/73664a40.ea8cbc3c.js b/assets/js/73664a40.ea8cbc3c.js deleted file mode 100644 index e8511458..00000000 --- a/assets/js/73664a40.ea8cbc3c.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[3514],{1985:(e,s,i)=>{i.r(s),i.d(s,{assets:()=>m,contentTitle:()=>n,default:()=>a,frontMatter:()=>r,metadata:()=>u,toc:()=>l});var t=i(5893),o=i(1151);const r={slug:"long-blog-post",title:"Long Blog Post",authors:"endi",tags:["hello","docusaurus"]},n=void 0,u={permalink:"/TaskWeaver/blog/long-blog-post",editUrl:"https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/blog/2019-05-29-long-blog-post.md",source:"@site/blog/2019-05-29-long-blog-post.md",title:"Long Blog Post",description:"This is the summary of a very long blog post,",date:"2019-05-29T00:00:00.000Z",formattedDate:"May 29, 2019",tags:[{label:"hello",permalink:"/TaskWeaver/blog/tags/hello"},{label:"docusaurus",permalink:"/TaskWeaver/blog/tags/docusaurus"}],readingTime:2.05,hasTruncateMarker:!0,authors:[{name:"Endilie Yacop Sucipto",title:"Maintainer of Docusaurus",url:"https://github.com/endiliey",imageURL:"https://github.com/endiliey.png",key:"endi"}],frontMatter:{slug:"long-blog-post",title:"Long Blog Post",authors:"endi",tags:["hello","docusaurus"]},unlisted:!1,prevItem:{title:"MDX Blog Post",permalink:"/TaskWeaver/blog/mdx-blog-post"},nextItem:{title:"First Blog Post",permalink:"/TaskWeaver/blog/first-blog-post"}},m={authorsImageUrls:[void 0]},l=[];function c(e){const s={code:"code",p:"p",...(0,o.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(s.p,{children:"This is the summary of a very long blog post,"}),"\n",(0,t.jsxs)(s.p,{children:["Use a ",(0,t.jsx)(s.code,{children:"\x3c!--"})," ",(0,t.jsx)(s.code,{children:"truncate"})," ",(0,t.jsx)(s.code,{children:"--\x3e"})," comment to limit blog post size in the list view."]}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"})]})}function a(e={}){const{wrapper:s}={...(0,o.a)(),...e.components};return s?(0,t.jsx)(s,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},1151:(e,s,i)=>{i.d(s,{Z:()=>u,a:()=>n});var t=i(7294);const o={},r=t.createContext(o);function n(e){const s=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function u(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:n(e.components),t.createElement(r.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/7661071f.cef95589.js b/assets/js/7661071f.cef95589.js deleted file mode 100644 index 861b0ca4..00000000 --- a/assets/js/7661071f.cef95589.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[9642],{3174:(e,s,o)=>{o.r(s),o.d(s,{assets:()=>c,contentTitle:()=>r,default:()=>d,frontMatter:()=>a,metadata:()=>l,toc:()=>u});var t=o(5893),n=o(1151);const a={slug:"welcome",title:"Welcome",authors:["slorber","yangshun"],tags:["facebook","hello","docusaurus"]},r=void 0,l={permalink:"/TaskWeaver/blog/welcome",editUrl:"https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/blog/2021-08-26-welcome/index.md",source:"@site/blog/2021-08-26-welcome/index.md",title:"Welcome",description:"Docusaurus blogging features are powered by the blog plugin.",date:"2021-08-26T00:00:00.000Z",formattedDate:"August 26, 2021",tags:[{label:"facebook",permalink:"/TaskWeaver/blog/tags/facebook"},{label:"hello",permalink:"/TaskWeaver/blog/tags/hello"},{label:"docusaurus",permalink:"/TaskWeaver/blog/tags/docusaurus"}],readingTime:.405,hasTruncateMarker:!1,authors:[{name:"S\xe9bastien Lorber",title:"Docusaurus maintainer",url:"https://sebastienlorber.com",imageURL:"https://github.com/slorber.png",key:"slorber"},{name:"Yangshun Tay",title:"Front End Engineer @ Facebook",url:"https://github.com/yangshun",imageURL:"https://github.com/yangshun.png",key:"yangshun"}],frontMatter:{slug:"welcome",title:"Welcome",authors:["slorber","yangshun"],tags:["facebook","hello","docusaurus"]},unlisted:!1,nextItem:{title:"MDX Blog Post",permalink:"/TaskWeaver/blog/mdx-blog-post"}},c={authorsImageUrls:[void 0,void 0]},u=[];function i(e){const s={a:"a",code:"code",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,n.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://docusaurus.io/docs/blog",children:"Docusaurus blogging features"})," are powered by the ",(0,t.jsx)(s.a,{href:"https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-blog",children:"blog plugin"}),"."]}),"\n",(0,t.jsxs)(s.p,{children:["Simply add Markdown files (or folders) to the ",(0,t.jsx)(s.code,{children:"blog"})," directory."]}),"\n",(0,t.jsxs)(s.p,{children:["Regular blog authors can be added to ",(0,t.jsx)(s.code,{children:"authors.yml"}),"."]}),"\n",(0,t.jsx)(s.p,{children:"The blog post date can be extracted from filenames, such as:"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsx)(s.li,{children:(0,t.jsx)(s.code,{children:"2019-05-30-welcome.md"})}),"\n",(0,t.jsx)(s.li,{children:(0,t.jsx)(s.code,{children:"2019-05-30-welcome/index.md"})}),"\n"]}),"\n",(0,t.jsx)(s.p,{children:"A blog post folder can be convenient to co-locate blog post images:"}),"\n",(0,t.jsx)(s.p,{children:(0,t.jsx)(s.img,{alt:"Docusaurus Plushie",src:o(3217).Z+"",width:"1500",height:"500"})}),"\n",(0,t.jsx)(s.p,{children:"The blog supports tags as well!"}),"\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.strong,{children:"And if you don't want a blog"}),": just delete this directory, and use ",(0,t.jsx)(s.code,{children:"blog: false"})," in your Docusaurus config."]})]})}function d(e={}){const{wrapper:s}={...(0,n.a)(),...e.components};return s?(0,t.jsx)(s,{...e,children:(0,t.jsx)(i,{...e})}):i(e)}},3217:(e,s,o)=>{o.d(s,{Z:()=>t});const t=o.p+"assets/images/docusaurus-plushie-banner-a60f7593abca1e3eef26a9afa244e4fb.jpeg"},1151:(e,s,o)=>{o.d(s,{Z:()=>l,a:()=>r});var t=o(7294);const n={},a=t.createContext(n);function r(e){const s=t.useContext(a);return t.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function l(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:r(e.components),t.createElement(a.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/7661071f.f5e0cbe3.js b/assets/js/7661071f.f5e0cbe3.js new file mode 100644 index 00000000..2b0e624f --- /dev/null +++ b/assets/js/7661071f.f5e0cbe3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[9642],{3174:(e,s,o)=>{o.r(s),o.d(s,{assets:()=>c,contentTitle:()=>r,default:()=>d,frontMatter:()=>a,metadata:()=>l,toc:()=>i});var t=o(5893),n=o(1151);const a={slug:"welcome",title:"Welcome",authors:["slorber","yangshun"],tags:["facebook","hello","docusaurus"]},r=void 0,l={permalink:"/TaskWeaver/blog/welcome",editUrl:"https://github.com/microsoft/TaskWeaver/tree/docs/website/blog/2021-08-26-welcome/index.md",source:"@site/blog/2021-08-26-welcome/index.md",title:"Welcome",description:"Docusaurus blogging features are powered by the blog plugin.",date:"2021-08-26T00:00:00.000Z",formattedDate:"August 26, 2021",tags:[{label:"facebook",permalink:"/TaskWeaver/blog/tags/facebook"},{label:"hello",permalink:"/TaskWeaver/blog/tags/hello"},{label:"docusaurus",permalink:"/TaskWeaver/blog/tags/docusaurus"}],readingTime:.405,hasTruncateMarker:!1,authors:[{name:"S\xe9bastien Lorber",title:"Docusaurus maintainer",url:"https://sebastienlorber.com",imageURL:"https://github.com/slorber.png",key:"slorber"},{name:"Yangshun Tay",title:"Front End Engineer @ Facebook",url:"https://github.com/yangshun",imageURL:"https://github.com/yangshun.png",key:"yangshun"}],frontMatter:{slug:"welcome",title:"Welcome",authors:["slorber","yangshun"],tags:["facebook","hello","docusaurus"]},unlisted:!1,nextItem:{title:"MDX Blog Post",permalink:"/TaskWeaver/blog/mdx-blog-post"}},c={authorsImageUrls:[void 0,void 0]},i=[];function u(e){const s={a:"a",code:"code",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,n.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://docusaurus.io/docs/blog",children:"Docusaurus blogging features"})," are powered by the ",(0,t.jsx)(s.a,{href:"https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-blog",children:"blog plugin"}),"."]}),"\n",(0,t.jsxs)(s.p,{children:["Simply add Markdown files (or folders) to the ",(0,t.jsx)(s.code,{children:"blog"})," directory."]}),"\n",(0,t.jsxs)(s.p,{children:["Regular blog authors can be added to ",(0,t.jsx)(s.code,{children:"authors.yml"}),"."]}),"\n",(0,t.jsx)(s.p,{children:"The blog post date can be extracted from filenames, such as:"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsx)(s.li,{children:(0,t.jsx)(s.code,{children:"2019-05-30-welcome.md"})}),"\n",(0,t.jsx)(s.li,{children:(0,t.jsx)(s.code,{children:"2019-05-30-welcome/index.md"})}),"\n"]}),"\n",(0,t.jsx)(s.p,{children:"A blog post folder can be convenient to co-locate blog post images:"}),"\n",(0,t.jsx)(s.p,{children:(0,t.jsx)(s.img,{alt:"Docusaurus Plushie",src:o(3217).Z+"",width:"1500",height:"500"})}),"\n",(0,t.jsx)(s.p,{children:"The blog supports tags as well!"}),"\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.strong,{children:"And if you don't want a blog"}),": just delete this directory, and use ",(0,t.jsx)(s.code,{children:"blog: false"})," in your Docusaurus config."]})]})}function d(e={}){const{wrapper:s}={...(0,n.a)(),...e.components};return s?(0,t.jsx)(s,{...e,children:(0,t.jsx)(u,{...e})}):u(e)}},3217:(e,s,o)=>{o.d(s,{Z:()=>t});const t=o.p+"assets/images/docusaurus-plushie-banner-a60f7593abca1e3eef26a9afa244e4fb.jpeg"},1151:(e,s,o)=>{o.d(s,{Z:()=>l,a:()=>r});var t=o(7294);const n={},a=t.createContext(n);function r(e){const s=t.useContext(a);return t.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function l(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:r(e.components),t.createElement(a.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/792477b0.a704db8d.js b/assets/js/792477b0.a704db8d.js deleted file mode 100644 index 209e9531..00000000 --- a/assets/js/792477b0.a704db8d.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[9522],{8051:e=>{e.exports=JSON.parse('{"blogPosts":[{"id":"welcome","metadata":{"permalink":"/TaskWeaver/blog/welcome","editUrl":"https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/blog/2021-08-26-welcome/index.md","source":"@site/blog/2021-08-26-welcome/index.md","title":"Welcome","description":"Docusaurus blogging features are powered by the blog plugin.","date":"2021-08-26T00:00:00.000Z","formattedDate":"August 26, 2021","tags":[{"label":"facebook","permalink":"/TaskWeaver/blog/tags/facebook"},{"label":"hello","permalink":"/TaskWeaver/blog/tags/hello"},{"label":"docusaurus","permalink":"/TaskWeaver/blog/tags/docusaurus"}],"readingTime":0.405,"hasTruncateMarker":false,"authors":[{"name":"S\xe9bastien Lorber","title":"Docusaurus maintainer","url":"https://sebastienlorber.com","imageURL":"https://github.com/slorber.png","key":"slorber"},{"name":"Yangshun Tay","title":"Front End Engineer @ Facebook","url":"https://github.com/yangshun","imageURL":"https://github.com/yangshun.png","key":"yangshun"}],"frontMatter":{"slug":"welcome","title":"Welcome","authors":["slorber","yangshun"],"tags":["facebook","hello","docusaurus"]},"unlisted":false,"nextItem":{"title":"MDX Blog Post","permalink":"/TaskWeaver/blog/mdx-blog-post"}},"content":"[Docusaurus blogging features](https://docusaurus.io/docs/blog) are powered by the [blog plugin](https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-blog).\\n\\nSimply add Markdown files (or folders) to the `blog` directory.\\n\\nRegular blog authors can be added to `authors.yml`.\\n\\nThe blog post date can be extracted from filenames, such as:\\n\\n- `2019-05-30-welcome.md`\\n- `2019-05-30-welcome/index.md`\\n\\nA blog post folder can be convenient to co-locate blog post images:\\n\\n![Docusaurus Plushie](./docusaurus-plushie-banner.jpeg)\\n\\nThe blog supports tags as well!\\n\\n**And if you don\'t want a blog**: just delete this directory, and use `blog: false` in your Docusaurus config."},{"id":"mdx-blog-post","metadata":{"permalink":"/TaskWeaver/blog/mdx-blog-post","editUrl":"https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/blog/2021-08-01-mdx-blog-post.mdx","source":"@site/blog/2021-08-01-mdx-blog-post.mdx","title":"MDX Blog Post","description":"Blog posts support Docusaurus Markdown features, such as MDX.","date":"2021-08-01T00:00:00.000Z","formattedDate":"August 1, 2021","tags":[{"label":"docusaurus","permalink":"/TaskWeaver/blog/tags/docusaurus"}],"readingTime":0.175,"hasTruncateMarker":false,"authors":[{"name":"S\xe9bastien Lorber","title":"Docusaurus maintainer","url":"https://sebastienlorber.com","imageURL":"https://github.com/slorber.png","key":"slorber"}],"frontMatter":{"slug":"mdx-blog-post","title":"MDX Blog Post","authors":["slorber"],"tags":["docusaurus"]},"unlisted":false,"prevItem":{"title":"Welcome","permalink":"/TaskWeaver/blog/welcome"},"nextItem":{"title":"Long Blog Post","permalink":"/TaskWeaver/blog/long-blog-post"}},"content":"Blog posts support [Docusaurus Markdown features](https://docusaurus.io/docs/markdown-features), such as [MDX](https://mdxjs.com/).\\n\\n:::tip\\n\\nUse the power of React to create interactive blog posts.\\n\\n```js\\n\\n```\\n\\n\\n\\n:::"},{"id":"long-blog-post","metadata":{"permalink":"/TaskWeaver/blog/long-blog-post","editUrl":"https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/blog/2019-05-29-long-blog-post.md","source":"@site/blog/2019-05-29-long-blog-post.md","title":"Long Blog Post","description":"This is the summary of a very long blog post,","date":"2019-05-29T00:00:00.000Z","formattedDate":"May 29, 2019","tags":[{"label":"hello","permalink":"/TaskWeaver/blog/tags/hello"},{"label":"docusaurus","permalink":"/TaskWeaver/blog/tags/docusaurus"}],"readingTime":2.05,"hasTruncateMarker":true,"authors":[{"name":"Endilie Yacop Sucipto","title":"Maintainer of Docusaurus","url":"https://github.com/endiliey","imageURL":"https://github.com/endiliey.png","key":"endi"}],"frontMatter":{"slug":"long-blog-post","title":"Long Blog Post","authors":"endi","tags":["hello","docusaurus"]},"unlisted":false,"prevItem":{"title":"MDX Blog Post","permalink":"/TaskWeaver/blog/mdx-blog-post"},"nextItem":{"title":"First Blog Post","permalink":"/TaskWeaver/blog/first-blog-post"}},"content":"This is the summary of a very long blog post,\\n\\nUse a `\x3c!--` `truncate` `--\x3e` comment to limit blog post size in the list view.\\n\\n\x3c!--truncate--\x3e\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"},{"id":"first-blog-post","metadata":{"permalink":"/TaskWeaver/blog/first-blog-post","editUrl":"https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/blog/2019-05-28-first-blog-post.md","source":"@site/blog/2019-05-28-first-blog-post.md","title":"First Blog Post","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet","date":"2019-05-28T00:00:00.000Z","formattedDate":"May 28, 2019","tags":[{"label":"hola","permalink":"/TaskWeaver/blog/tags/hola"},{"label":"docusaurus","permalink":"/TaskWeaver/blog/tags/docusaurus"}],"readingTime":0.12,"hasTruncateMarker":false,"authors":[{"name":"Gao Wei","title":"Docusaurus Core Team","url":"https://github.com/wgao19","image_url":"https://github.com/wgao19.png","imageURL":"https://github.com/wgao19.png"}],"frontMatter":{"slug":"first-blog-post","title":"First Blog Post","authors":{"name":"Gao Wei","title":"Docusaurus Core Team","url":"https://github.com/wgao19","image_url":"https://github.com/wgao19.png","imageURL":"https://github.com/wgao19.png"},"tags":["hola","docusaurus"]},"unlisted":false,"prevItem":{"title":"Long Blog Post","permalink":"/TaskWeaver/blog/long-blog-post"}},"content":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}]}')}}]); \ No newline at end of file diff --git a/assets/js/792477b0.d8317cc4.js b/assets/js/792477b0.d8317cc4.js new file mode 100644 index 00000000..c613ecb8 --- /dev/null +++ b/assets/js/792477b0.d8317cc4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[9522],{8051:e=>{e.exports=JSON.parse('{"blogPosts":[{"id":"welcome","metadata":{"permalink":"/TaskWeaver/blog/welcome","editUrl":"https://github.com/microsoft/TaskWeaver/tree/docs/website/blog/2021-08-26-welcome/index.md","source":"@site/blog/2021-08-26-welcome/index.md","title":"Welcome","description":"Docusaurus blogging features are powered by the blog plugin.","date":"2021-08-26T00:00:00.000Z","formattedDate":"August 26, 2021","tags":[{"label":"facebook","permalink":"/TaskWeaver/blog/tags/facebook"},{"label":"hello","permalink":"/TaskWeaver/blog/tags/hello"},{"label":"docusaurus","permalink":"/TaskWeaver/blog/tags/docusaurus"}],"readingTime":0.405,"hasTruncateMarker":false,"authors":[{"name":"S\xe9bastien Lorber","title":"Docusaurus maintainer","url":"https://sebastienlorber.com","imageURL":"https://github.com/slorber.png","key":"slorber"},{"name":"Yangshun Tay","title":"Front End Engineer @ Facebook","url":"https://github.com/yangshun","imageURL":"https://github.com/yangshun.png","key":"yangshun"}],"frontMatter":{"slug":"welcome","title":"Welcome","authors":["slorber","yangshun"],"tags":["facebook","hello","docusaurus"]},"unlisted":false,"nextItem":{"title":"MDX Blog Post","permalink":"/TaskWeaver/blog/mdx-blog-post"}},"content":"[Docusaurus blogging features](https://docusaurus.io/docs/blog) are powered by the [blog plugin](https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-blog).\\n\\nSimply add Markdown files (or folders) to the `blog` directory.\\n\\nRegular blog authors can be added to `authors.yml`.\\n\\nThe blog post date can be extracted from filenames, such as:\\n\\n- `2019-05-30-welcome.md`\\n- `2019-05-30-welcome/index.md`\\n\\nA blog post folder can be convenient to co-locate blog post images:\\n\\n![Docusaurus Plushie](./docusaurus-plushie-banner.jpeg)\\n\\nThe blog supports tags as well!\\n\\n**And if you don\'t want a blog**: just delete this directory, and use `blog: false` in your Docusaurus config."},{"id":"mdx-blog-post","metadata":{"permalink":"/TaskWeaver/blog/mdx-blog-post","editUrl":"https://github.com/microsoft/TaskWeaver/tree/docs/website/blog/2021-08-01-mdx-blog-post.mdx","source":"@site/blog/2021-08-01-mdx-blog-post.mdx","title":"MDX Blog Post","description":"Blog posts support Docusaurus Markdown features, such as MDX.","date":"2021-08-01T00:00:00.000Z","formattedDate":"August 1, 2021","tags":[{"label":"docusaurus","permalink":"/TaskWeaver/blog/tags/docusaurus"}],"readingTime":0.175,"hasTruncateMarker":false,"authors":[{"name":"S\xe9bastien Lorber","title":"Docusaurus maintainer","url":"https://sebastienlorber.com","imageURL":"https://github.com/slorber.png","key":"slorber"}],"frontMatter":{"slug":"mdx-blog-post","title":"MDX Blog Post","authors":["slorber"],"tags":["docusaurus"]},"unlisted":false,"prevItem":{"title":"Welcome","permalink":"/TaskWeaver/blog/welcome"},"nextItem":{"title":"Long Blog Post","permalink":"/TaskWeaver/blog/long-blog-post"}},"content":"Blog posts support [Docusaurus Markdown features](https://docusaurus.io/docs/markdown-features), such as [MDX](https://mdxjs.com/).\\n\\n:::tip\\n\\nUse the power of React to create interactive blog posts.\\n\\n```js\\n\\n```\\n\\n\\n\\n:::"},{"id":"long-blog-post","metadata":{"permalink":"/TaskWeaver/blog/long-blog-post","editUrl":"https://github.com/microsoft/TaskWeaver/tree/docs/website/blog/2019-05-29-long-blog-post.md","source":"@site/blog/2019-05-29-long-blog-post.md","title":"Long Blog Post","description":"This is the summary of a very long blog post,","date":"2019-05-29T00:00:00.000Z","formattedDate":"May 29, 2019","tags":[{"label":"hello","permalink":"/TaskWeaver/blog/tags/hello"},{"label":"docusaurus","permalink":"/TaskWeaver/blog/tags/docusaurus"}],"readingTime":2.05,"hasTruncateMarker":true,"authors":[{"name":"Endilie Yacop Sucipto","title":"Maintainer of Docusaurus","url":"https://github.com/endiliey","imageURL":"https://github.com/endiliey.png","key":"endi"}],"frontMatter":{"slug":"long-blog-post","title":"Long Blog Post","authors":"endi","tags":["hello","docusaurus"]},"unlisted":false,"prevItem":{"title":"MDX Blog Post","permalink":"/TaskWeaver/blog/mdx-blog-post"},"nextItem":{"title":"First Blog Post","permalink":"/TaskWeaver/blog/first-blog-post"}},"content":"This is the summary of a very long blog post,\\n\\nUse a `\x3c!--` `truncate` `--\x3e` comment to limit blog post size in the list view.\\n\\n\x3c!--truncate--\x3e\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"},{"id":"first-blog-post","metadata":{"permalink":"/TaskWeaver/blog/first-blog-post","editUrl":"https://github.com/microsoft/TaskWeaver/tree/docs/website/blog/2019-05-28-first-blog-post.md","source":"@site/blog/2019-05-28-first-blog-post.md","title":"First Blog Post","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet","date":"2019-05-28T00:00:00.000Z","formattedDate":"May 28, 2019","tags":[{"label":"hola","permalink":"/TaskWeaver/blog/tags/hola"},{"label":"docusaurus","permalink":"/TaskWeaver/blog/tags/docusaurus"}],"readingTime":0.12,"hasTruncateMarker":false,"authors":[{"name":"Gao Wei","title":"Docusaurus Core Team","url":"https://github.com/wgao19","image_url":"https://github.com/wgao19.png","imageURL":"https://github.com/wgao19.png"}],"frontMatter":{"slug":"first-blog-post","title":"First Blog Post","authors":{"name":"Gao Wei","title":"Docusaurus Core Team","url":"https://github.com/wgao19","image_url":"https://github.com/wgao19.png","imageURL":"https://github.com/wgao19.png"},"tags":["hola","docusaurus"]},"unlisted":false,"prevItem":{"title":"Long Blog Post","permalink":"/TaskWeaver/blog/long-blog-post"}},"content":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}]}')}}]); \ No newline at end of file diff --git a/assets/js/7fc9262a.982ec73c.js b/assets/js/7fc9262a.982ec73c.js new file mode 100644 index 00000000..ecc1d2ec --- /dev/null +++ b/assets/js/7fc9262a.982ec73c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[746],{5333:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>r,default:()=>m,frontMatter:()=>o,metadata:()=>l,toc:()=>a});var s=n(5893),i=n(1151);const o={description:"Using LLMs from LiteLLM"},r="LiteLLM",l={id:"llms/liteLLM",title:"LiteLLM",description:"Using LLMs from LiteLLM",source:"@site/docs/llms/liteLLM.md",sourceDirName:"llms",slug:"/llms/liteLLM",permalink:"/TaskWeaver/docs/llms/liteLLM",draft:!1,unlisted:!1,editUrl:"https://github.com/microsoft/TaskWeaver/tree/docs/website/docs/llms/liteLLM.md",tags:[],version:"current",frontMatter:{description:"Using LLMs from LiteLLM"},sidebar:"documentSidebar",previous:{title:"OpenAI & Azure OpenAI",permalink:"/TaskWeaver/docs/llms/openai"},next:{title:"Ollama",permalink:"/TaskWeaver/docs/llms/ollama"}},c={},a=[];function L(e){const t={h1:"h1",...(0,i.a)(),...e.components};return(0,s.jsx)(t.h1,{id:"litellm",children:"LiteLLM"})}function m(e={}){const{wrapper:t}={...(0,i.a)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(L,{...e})}):L(e)}},1151:(e,t,n)=>{n.d(t,{Z:()=>l,a:()=>r});var s=n(7294);const i={},o=s.createContext(i);function r(e){const t=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),s.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/7fc9262a.ad3859b9.js b/assets/js/7fc9262a.ad3859b9.js deleted file mode 100644 index e700a08f..00000000 --- a/assets/js/7fc9262a.ad3859b9.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[746],{5333:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>a,contentTitle:()=>i,default:()=>L,frontMatter:()=>r,metadata:()=>l,toc:()=>c});var n=s(5893),o=s(1151);const r={description:"Using LLMs from LiteLLM"},i="LiteLLM",l={id:"llms/liteLLM",title:"LiteLLM",description:"Using LLMs from LiteLLM",source:"@site/docs/llms/liteLLM.md",sourceDirName:"llms",slug:"/llms/liteLLM",permalink:"/TaskWeaver/docs/llms/liteLLM",draft:!1,unlisted:!1,editUrl:"https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/docs/llms/liteLLM.md",tags:[],version:"current",frontMatter:{description:"Using LLMs from LiteLLM"},sidebar:"documentSidebar",previous:{title:"OpenAI & Azure OpenAI",permalink:"/TaskWeaver/docs/llms/openai"},next:{title:"Ollama",permalink:"/TaskWeaver/docs/llms/ollama"}},a={},c=[];function u(e){const t={h1:"h1",...(0,o.a)(),...e.components};return(0,n.jsx)(t.h1,{id:"litellm",children:"LiteLLM"})}function L(e={}){const{wrapper:t}={...(0,o.a)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(u,{...e})}):u(e)}},1151:(e,t,s)=>{s.d(t,{Z:()=>l,a:()=>i});var n=s(7294);const o={},r=n.createContext(o);function i(e){const t=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),n.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/8070e160.86e9a34b.js b/assets/js/8070e160.86e9a34b.js new file mode 100644 index 00000000..676bfd58 --- /dev/null +++ b/assets/js/8070e160.86e9a34b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[2651],{9759:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>s,default:()=>p,frontMatter:()=>a,metadata:()=>i,toc:()=>c});var r=t(5893),o=t(1151);const a={},s="Quick Start",i={id:"quickstart",title:"Quick Start",description:"Installation",source:"@site/docs/quickstart.md",sourceDirName:".",slug:"/quickstart",permalink:"/TaskWeaver/docs/quickstart",draft:!1,unlisted:!1,editUrl:"https://github.com/microsoft/TaskWeaver/tree/docs/website/docs/quickstart.md",tags:[],version:"current",frontMatter:{},sidebar:"documentSidebar",previous:{title:"Overview",permalink:"/TaskWeaver/docs/overview"},next:{title:"Supported LLMs",permalink:"/TaskWeaver/docs/llms/"}},l={},c=[{value:"Installation",id:"installation",level:2},{value:"Project Directory",id:"project-directory",level:2},{value:"OpenAI Configuration",id:"openai-configuration",level:2},{value:"Azure OpenAI",id:"azure-openai",level:3},{value:"OpenAI",id:"openai",level:3},{value:"Start TaskWeaver",id:"start-taskweaver",level:2}];function d(e){const n={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",p:"p",pre:"pre",...(0,o.a)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h1,{id:"quick-start",children:"Quick Start"}),"\n",(0,r.jsx)(n.h2,{id:"installation",children:"Installation"}),"\n",(0,r.jsx)(n.p,{children:"You can install TaskWeaver by running the following command:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"# [optional] create a conda environment to isolate the dependencies\n# conda create -n taskweaver python=3.10\n# conda activate taskweaver\n\n# clone the repository\ngit clone https://github.com/microsoft/TaskWeaver.git\ncd TaskWeaver\n# install the requirements\npip install -r requirements.txt\n"})}),"\n",(0,r.jsx)(n.h2,{id:"project-directory",children:"Project Directory"}),"\n",(0,r.jsxs)(n.p,{children:["TaskWeaver runs as a process, you need to create a project directory to store plugins and configuration files.\nWe provided a sample project directory in the ",(0,r.jsx)(n.code,{children:"project"})," folder. You can copy the ",(0,r.jsx)(n.code,{children:"project"})," folder to your workspace.\nA project directory typically contains the following files and folders:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"\ud83d\udce6project\n \u2523 \ud83d\udcdctaskweaver_config.json # the configuration file for TaskWeaver\n \u2523 \ud83d\udcc2plugins # the folder to store plugins\n \u2523 \ud83d\udcc2planner_examples # the folder to store planner examples\n \u2523 \ud83d\udcc2codeinterpreter_examples # the folder to store code interpreter examples\n \u2523 \ud83d\udcc2sample_data # the folder to store sample data used for evaluations\n \u2523 \ud83d\udcc2logs # the folder to store logs, will be generated after program starts\n \u2517 \ud83d\udcc2workspace # the directory stores session data\uff0c will be generated after program starts\n \u2517 \ud83d\udcc2 session_id \n \u2523 \ud83d\udcc2ces # the folder used by the code execution service\n \u2517 \ud83d\udcc2cwd # the current working directory to run the generated code\n"})}),"\n",(0,r.jsx)(n.h2,{id:"openai-configuration",children:"OpenAI Configuration"}),"\n",(0,r.jsxs)(n.p,{children:["Before running TaskWeaver, you need to provide your OpenAI API key and other necessary information.\nYou can do this by editing the ",(0,r.jsx)(n.code,{children:"taskweaver_config.json"})," file.\nIf you are using Azure OpenAI, you need to set the following parameters in the ",(0,r.jsx)(n.code,{children:"taskweaver_config.json"})," file:"]}),"\n",(0,r.jsx)(n.h3,{id:"azure-openai",children:"Azure OpenAI"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n"llm.api_base": "https://xxx.openai.azure.com/",\n"llm.api_key": "your_api_key",\n"llm.api_type": "azure",\n"llm.api_version": "the api version",\n"llm.model": "the model name, e.g., gpt-4"\n}\n'})}),"\n",(0,r.jsx)(n.h3,{id:"openai",children:"OpenAI"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n"llm.api_key": "the api key",\n"llm.model": "the model name, e.g., gpt-4"\n}\n'})}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:["\ud83d\udca1 Only the latest OpenAI API supports the ",(0,r.jsx)(n.code,{children:"json_object"})," response format.\nIf you are using an older version of OpenAI API, you need to set the ",(0,r.jsx)(n.code,{children:"llm.response_format"})," to ",(0,r.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["More configuration options can be found in the ",(0,r.jsx)(n.a,{href:"/TaskWeaver/docs/configurations",children:"configuration documentation"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"start-taskweaver",children:"Start TaskWeaver"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"# assume you are in the taskweaver folder\n# -p is the path to the project directory\npython -m taskweaver -p ./project/\n"})}),"\n",(0,r.jsx)(n.p,{children:"This will start the TaskWeaver process and you can interact with it through the command line interface.\nIf everything goes well, you will see the following prompt:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"=========================================================\n _____ _ _ __\n|_ _|_ _ ___| | _ | | / /__ ____ __ _____ _____\n | |/ _` / __| |/ /| | /| / / _ \\/ __ `/ | / / _ \\/ ___/\n | | (_| \\__ \\ < | |/ |/ / __/ /_/ /| |/ / __/ /\n |_|\\__,_|___/_|\\_\\|__/|__/\\___/\\__,_/ |___/\\___/_/\n=========================================================\nTaskWeaver: I am TaskWeaver, an AI assistant. To get started, could you please enter your request?\nHuman: ___\n"})})]})}function p(e={}){const{wrapper:n}={...(0,o.a)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},1151:(e,n,t)=>{t.d(n,{Z:()=>i,a:()=>s});var r=t(7294);const o={},a=r.createContext(o);function s(e){const n=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:s(e.components),r.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/8070e160.ed4f9767.js b/assets/js/8070e160.ed4f9767.js deleted file mode 100644 index a15babff..00000000 --- a/assets/js/8070e160.ed4f9767.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[2651],{9759:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>s,default:()=>p,frontMatter:()=>a,metadata:()=>i,toc:()=>l});var r=t(5893),o=t(1151);const a={},s="Quick Start",i={id:"quickstart",title:"Quick Start",description:"Installation",source:"@site/docs/quickstart.md",sourceDirName:".",slug:"/quickstart",permalink:"/TaskWeaver/docs/quickstart",draft:!1,unlisted:!1,editUrl:"https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/docs/quickstart.md",tags:[],version:"current",frontMatter:{},sidebar:"documentSidebar",previous:{title:"Overview",permalink:"/TaskWeaver/docs/overview"},next:{title:"Supported LLMs",permalink:"/TaskWeaver/docs/llms/"}},c={},l=[{value:"Installation",id:"installation",level:2},{value:"Project Directory",id:"project-directory",level:2},{value:"OpenAI Configuration",id:"openai-configuration",level:2},{value:"Azure OpenAI",id:"azure-openai",level:3},{value:"OpenAI",id:"openai",level:3},{value:"Start TaskWeaver",id:"start-taskweaver",level:2}];function d(e){const n={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",p:"p",pre:"pre",...(0,o.a)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h1,{id:"quick-start",children:"Quick Start"}),"\n",(0,r.jsx)(n.h2,{id:"installation",children:"Installation"}),"\n",(0,r.jsx)(n.p,{children:"You can install TaskWeaver by running the following command:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"# [optional] create a conda environment to isolate the dependencies\n# conda create -n taskweaver python=3.10\n# conda activate taskweaver\n\n# clone the repository\ngit clone https://github.com/microsoft/TaskWeaver.git\ncd TaskWeaver\n# install the requirements\npip install -r requirements.txt\n"})}),"\n",(0,r.jsx)(n.h2,{id:"project-directory",children:"Project Directory"}),"\n",(0,r.jsxs)(n.p,{children:["TaskWeaver runs as a process, you need to create a project directory to store plugins and configuration files.\nWe provided a sample project directory in the ",(0,r.jsx)(n.code,{children:"project"})," folder. You can copy the ",(0,r.jsx)(n.code,{children:"project"})," folder to your workspace.\nA project directory typically contains the following files and folders:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"\ud83d\udce6project\n \u2523 \ud83d\udcdctaskweaver_config.json # the configuration file for TaskWeaver\n \u2523 \ud83d\udcc2plugins # the folder to store plugins\n \u2523 \ud83d\udcc2planner_examples # the folder to store planner examples\n \u2523 \ud83d\udcc2codeinterpreter_examples # the folder to store code interpreter examples\n \u2523 \ud83d\udcc2sample_data # the folder to store sample data used for evaluations\n \u2523 \ud83d\udcc2logs # the folder to store logs, will be generated after program starts\n \u2517 \ud83d\udcc2workspace # the directory stores session data\uff0c will be generated after program starts\n \u2517 \ud83d\udcc2 session_id \n \u2523 \ud83d\udcc2ces # the folder used by the code execution service\n \u2517 \ud83d\udcc2cwd # the current working directory to run the generated code\n"})}),"\n",(0,r.jsx)(n.h2,{id:"openai-configuration",children:"OpenAI Configuration"}),"\n",(0,r.jsxs)(n.p,{children:["Before running TaskWeaver, you need to provide your OpenAI API key and other necessary information.\nYou can do this by editing the ",(0,r.jsx)(n.code,{children:"taskweaver_config.json"})," file.\nIf you are using Azure OpenAI, you need to set the following parameters in the ",(0,r.jsx)(n.code,{children:"taskweaver_config.json"})," file:"]}),"\n",(0,r.jsx)(n.h3,{id:"azure-openai",children:"Azure OpenAI"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n"llm.api_base": "https://xxx.openai.azure.com/",\n"llm.api_key": "your_api_key",\n"llm.api_type": "azure",\n"llm.api_version": "the api version",\n"llm.model": "the model name, e.g., gpt-4"\n}\n'})}),"\n",(0,r.jsx)(n.h3,{id:"openai",children:"OpenAI"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n"llm.api_key": "the api key",\n"llm.model": "the model name, e.g., gpt-4"\n}\n'})}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:["\ud83d\udca1 Only the latest OpenAI API supports the ",(0,r.jsx)(n.code,{children:"json_object"})," response format.\nIf you are using an older version of OpenAI API, you need to set the ",(0,r.jsx)(n.code,{children:"llm.response_format"})," to ",(0,r.jsx)(n.code,{children:"null"}),"."]}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["More configuration options can be found in the ",(0,r.jsx)(n.a,{href:"/TaskWeaver/docs/configurations",children:"configuration documentation"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"start-taskweaver",children:"Start TaskWeaver"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"# assume you are in the taskweaver folder\n# -p is the path to the project directory\npython -m taskweaver -p ./project/\n"})}),"\n",(0,r.jsx)(n.p,{children:"This will start the TaskWeaver process and you can interact with it through the command line interface.\nIf everything goes well, you will see the following prompt:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"=========================================================\n _____ _ _ __\n|_ _|_ _ ___| | _ | | / /__ ____ __ _____ _____\n | |/ _` / __| |/ /| | /| / / _ \\/ __ `/ | / / _ \\/ ___/\n | | (_| \\__ \\ < | |/ |/ / __/ /_/ /| |/ / __/ /\n |_|\\__,_|___/_|\\_\\|__/|__/\\___/\\__,_/ |___/\\___/_/\n=========================================================\nTaskWeaver: I am TaskWeaver, an AI assistant. To get started, could you please enter your request?\nHuman: ___\n"})})]})}function p(e={}){const{wrapper:n}={...(0,o.a)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},1151:(e,n,t)=>{t.d(n,{Z:()=>i,a:()=>s});var r=t(7294);const o={},a=r.createContext(o);function s(e){const n=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:s(e.components),r.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/8550895a.6c9d7d3f.js b/assets/js/8550895a.6c9d7d3f.js new file mode 100644 index 00000000..6dc4ec78 --- /dev/null +++ b/assets/js/8550895a.6c9d7d3f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[8892],{6279:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>o,contentTitle:()=>t,default:()=>m,frontMatter:()=>d,metadata:()=>r,toc:()=>c});var l=i(5893),s=i(1151);const d={},t="Embedding",r={id:"plugin/embedding",title:"Embedding",description:"In TaskWeaver, we support various embedding models to generate embeddings for auto plugin selection.",source:"@site/docs/plugin/embedding.md",sourceDirName:"plugin",slug:"/plugin/embedding",permalink:"/TaskWeaver/docs/plugin/embedding",draft:!1,unlisted:!1,editUrl:"https://github.com/microsoft/TaskWeaver/tree/docs/website/docs/plugin/embedding.md",tags:[],version:"current",frontMatter:{},sidebar:"documentSidebar",previous:{title:"Auto Plugin Selection",permalink:"/TaskWeaver/docs/plugin/plugin_selection"},next:{title:"Customizing Examples",permalink:"/TaskWeaver/docs/example"}},o={},c=[{value:"Embedding Configration",id:"embedding-configration",level:2}];function a(e){const n={code:"code",h1:"h1",h2:"h2",li:"li",p:"p",ul:"ul",...(0,s.a)(),...e.components};return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(n.h1,{id:"embedding",children:"Embedding"}),"\n",(0,l.jsx)(n.p,{children:"In TaskWeaver, we support various embedding models to generate embeddings for auto plugin selection."}),"\n",(0,l.jsx)(n.h2,{id:"embedding-configration",children:"Embedding Configration"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"llm.embedding_api_type"}),": The type of the embedding API. We support the following types:"]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:"openai"}),"\n",(0,l.jsx)(n.li,{children:"qwen"}),"\n",(0,l.jsx)(n.li,{children:"ollama"}),"\n",(0,l.jsx)(n.li,{children:"sentence_transformers"}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"llm.embedding_model"}),": The embedding model name. The model name should be aligned with ",(0,l.jsx)(n.code,{children:"llm.embedding_api_type"}),".\nWe only list some embedding models we have tested below:"]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["openai","\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:"text-embedding-ada-002"}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["qwen","\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:"text-embedding-v1"}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["ollama","\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:"llama2"}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["sentence_transformers","\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:"all-mpnet-base-v2"}),"\n",(0,l.jsx)(n.li,{children:"multi-qa-mpnet-base-dot-v1"}),"\n",(0,l.jsx)(n.li,{children:"all-distilroberta-v1"}),"\n",(0,l.jsx)(n.li,{children:"all-MiniLM-L12-v2"}),"\n",(0,l.jsx)(n.li,{children:"multi-qa-MiniLM-L6-cos-v1"}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"You also can use other embedding models supported by the above embedding APIs."})]})}function m(e={}){const{wrapper:n}={...(0,s.a)(),...e.components};return n?(0,l.jsx)(n,{...e,children:(0,l.jsx)(a,{...e})}):a(e)}},1151:(e,n,i)=>{i.d(n,{Z:()=>r,a:()=>t});var l=i(7294);const s={},d=l.createContext(s);function t(e){const n=l.useContext(d);return l.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:t(e.components),l.createElement(d.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/8550895a.d1d73d9a.js b/assets/js/8550895a.d1d73d9a.js deleted file mode 100644 index 30bc2e58..00000000 --- a/assets/js/8550895a.d1d73d9a.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[8892],{6279:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>o,contentTitle:()=>t,default:()=>m,frontMatter:()=>d,metadata:()=>r,toc:()=>c});var l=i(5893),s=i(1151);const d={},t="Embedding",r={id:"plugin/embedding",title:"Embedding",description:"In TaskWeaver, we support various embedding models to generate embeddings for auto plugin selection.",source:"@site/docs/plugin/embedding.md",sourceDirName:"plugin",slug:"/plugin/embedding",permalink:"/TaskWeaver/docs/plugin/embedding",draft:!1,unlisted:!1,editUrl:"https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/docs/plugin/embedding.md",tags:[],version:"current",frontMatter:{},sidebar:"documentSidebar",previous:{title:"Auto Plugin Selection",permalink:"/TaskWeaver/docs/plugin/plugin_selection"},next:{title:"Customizing Examples",permalink:"/TaskWeaver/docs/example"}},o={},c=[{value:"Embedding Configration",id:"embedding-configration",level:2}];function a(e){const n={code:"code",h1:"h1",h2:"h2",li:"li",p:"p",ul:"ul",...(0,s.a)(),...e.components};return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(n.h1,{id:"embedding",children:"Embedding"}),"\n",(0,l.jsx)(n.p,{children:"In TaskWeaver, we support various embedding models to generate embeddings for auto plugin selection."}),"\n",(0,l.jsx)(n.h2,{id:"embedding-configration",children:"Embedding Configration"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"llm.embedding_api_type"}),": The type of the embedding API. We support the following types:"]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:"openai"}),"\n",(0,l.jsx)(n.li,{children:"qwen"}),"\n",(0,l.jsx)(n.li,{children:"ollama"}),"\n",(0,l.jsx)(n.li,{children:"sentence_transformers"}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.code,{children:"llm.embedding_model"}),": The embedding model name. The model name should be aligned with ",(0,l.jsx)(n.code,{children:"llm.embedding_api_type"}),".\nWe only list some embedding models we have tested below:"]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["openai","\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:"text-embedding-ada-002"}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["qwen","\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:"text-embedding-v1"}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["ollama","\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:"llama2"}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["sentence_transformers","\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:"all-mpnet-base-v2"}),"\n",(0,l.jsx)(n.li,{children:"multi-qa-mpnet-base-dot-v1"}),"\n",(0,l.jsx)(n.li,{children:"all-distilroberta-v1"}),"\n",(0,l.jsx)(n.li,{children:"all-MiniLM-L12-v2"}),"\n",(0,l.jsx)(n.li,{children:"multi-qa-MiniLM-L6-cos-v1"}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"You also can use other embedding models supported by the above embedding APIs."})]})}function m(e={}){const{wrapper:n}={...(0,s.a)(),...e.components};return n?(0,l.jsx)(n,{...e,children:(0,l.jsx)(a,{...e})}):a(e)}},1151:(e,n,i)=>{i.d(n,{Z:()=>r,a:()=>t});var l=i(7294);const s={},d=l.createContext(s);function t(e){const n=l.useContext(d);return l.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:t(e.components),l.createElement(d.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/8717b14a.5e1dfc80.js b/assets/js/8717b14a.5e1dfc80.js deleted file mode 100644 index 16c2cbbb..00000000 --- a/assets/js/8717b14a.5e1dfc80.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[948],{7106:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>i,contentTitle:()=>l,default:()=>g,frontMatter:()=>a,metadata:()=>r,toc:()=>c});var s=o(5893),n=o(1151);const a={slug:"long-blog-post",title:"Long Blog Post",authors:"endi",tags:["hello","docusaurus"]},l=void 0,r={permalink:"/TaskWeaver/blog/long-blog-post",editUrl:"https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/blog/2019-05-29-long-blog-post.md",source:"@site/blog/2019-05-29-long-blog-post.md",title:"Long Blog Post",description:"This is the summary of a very long blog post,",date:"2019-05-29T00:00:00.000Z",formattedDate:"May 29, 2019",tags:[{label:"hello",permalink:"/TaskWeaver/blog/tags/hello"},{label:"docusaurus",permalink:"/TaskWeaver/blog/tags/docusaurus"}],readingTime:2.05,hasTruncateMarker:!0,authors:[{name:"Endilie Yacop Sucipto",title:"Maintainer of Docusaurus",url:"https://github.com/endiliey",imageURL:"https://github.com/endiliey.png",key:"endi"}],frontMatter:{slug:"long-blog-post",title:"Long Blog Post",authors:"endi",tags:["hello","docusaurus"]},unlisted:!1,prevItem:{title:"MDX Blog Post",permalink:"/TaskWeaver/blog/mdx-blog-post"},nextItem:{title:"First Blog Post",permalink:"/TaskWeaver/blog/first-blog-post"}},i={authorsImageUrls:[void 0]},c=[];function u(e){const t={code:"code",p:"p",...(0,n.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.p,{children:"This is the summary of a very long blog post,"}),"\n",(0,s.jsxs)(t.p,{children:["Use a ",(0,s.jsx)(t.code,{children:"\x3c!--"})," ",(0,s.jsx)(t.code,{children:"truncate"})," ",(0,s.jsx)(t.code,{children:"--\x3e"})," comment to limit blog post size in the list view."]})]})}function g(e={}){const{wrapper:t}={...(0,n.a)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(u,{...e})}):u(e)}},1151:(e,t,o)=>{o.d(t,{Z:()=>r,a:()=>l});var s=o(7294);const n={},a=s.createContext(n);function l(e){const t=s.useContext(a);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:l(e.components),s.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/8717b14a.b219edb4.js b/assets/js/8717b14a.b219edb4.js new file mode 100644 index 00000000..35edc59e --- /dev/null +++ b/assets/js/8717b14a.b219edb4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[948],{7106:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>i,contentTitle:()=>r,default:()=>g,frontMatter:()=>l,metadata:()=>a,toc:()=>c});var s=o(5893),n=o(1151);const l={slug:"long-blog-post",title:"Long Blog Post",authors:"endi",tags:["hello","docusaurus"]},r=void 0,a={permalink:"/TaskWeaver/blog/long-blog-post",editUrl:"https://github.com/microsoft/TaskWeaver/tree/docs/website/blog/2019-05-29-long-blog-post.md",source:"@site/blog/2019-05-29-long-blog-post.md",title:"Long Blog Post",description:"This is the summary of a very long blog post,",date:"2019-05-29T00:00:00.000Z",formattedDate:"May 29, 2019",tags:[{label:"hello",permalink:"/TaskWeaver/blog/tags/hello"},{label:"docusaurus",permalink:"/TaskWeaver/blog/tags/docusaurus"}],readingTime:2.05,hasTruncateMarker:!0,authors:[{name:"Endilie Yacop Sucipto",title:"Maintainer of Docusaurus",url:"https://github.com/endiliey",imageURL:"https://github.com/endiliey.png",key:"endi"}],frontMatter:{slug:"long-blog-post",title:"Long Blog Post",authors:"endi",tags:["hello","docusaurus"]},unlisted:!1,prevItem:{title:"MDX Blog Post",permalink:"/TaskWeaver/blog/mdx-blog-post"},nextItem:{title:"First Blog Post",permalink:"/TaskWeaver/blog/first-blog-post"}},i={authorsImageUrls:[void 0]},c=[];function u(e){const t={code:"code",p:"p",...(0,n.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.p,{children:"This is the summary of a very long blog post,"}),"\n",(0,s.jsxs)(t.p,{children:["Use a ",(0,s.jsx)(t.code,{children:"\x3c!--"})," ",(0,s.jsx)(t.code,{children:"truncate"})," ",(0,s.jsx)(t.code,{children:"--\x3e"})," comment to limit blog post size in the list view."]})]})}function g(e={}){const{wrapper:t}={...(0,n.a)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(u,{...e})}):u(e)}},1151:(e,t,o)=>{o.d(t,{Z:()=>a,a:()=>r});var s=o(7294);const n={},l=s.createContext(n);function r(e){const t=s.useContext(l);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:r(e.components),s.createElement(l.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/8f0a7c30.777b218d.js b/assets/js/8f0a7c30.777b218d.js new file mode 100644 index 00000000..7fb64976 --- /dev/null +++ b/assets/js/8f0a7c30.777b218d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[664],{9600:(e,n,a)=>{a.r(n),a.d(n,{assets:()=>c,contentTitle:()=>r,default:()=>p,frontMatter:()=>o,metadata:()=>i,toc:()=>l});var t=a(5893),s=a(1151);const o={},r="Use TaskWeaver as a library",i={id:"taskweaver_as_a_lib",title:"Use TaskWeaver as a library",description:"If you want to use TaskWeaver as a library, you can refer to the following code example:",source:"@site/docs/taskweaver_as_a_lib.md",sourceDirName:".",slug:"/taskweaver_as_a_lib",permalink:"/TaskWeaver/docs/taskweaver_as_a_lib",draft:!1,unlisted:!1,editUrl:"https://github.com/microsoft/TaskWeaver/tree/docs/website/docs/taskweaver_as_a_lib.md",tags:[],version:"current",frontMatter:{},sidebar:"documentSidebar",previous:{title:"Running pytest",permalink:"/TaskWeaver/docs/run_pytest"}},c={},l=[];function d(e){const n={code:"code",h1:"h1",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h1,{id:"use-taskweaver-as-a-library",children:"Use TaskWeaver as a library"}),"\n",(0,t.jsx)(n.p,{children:"If you want to use TaskWeaver as a library, you can refer to the following code example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",children:'from taskweaver.app.app import TaskWeaverApp\n\n# This is the folder that contains the taskweaver_config.json file and not the repo root. Defaults to "./project/"\napp_dir = "./project/"\napp = TaskWeaverApp(app_dir=app_dir)\nsession = app.get_session()\n\nuser_query = "hello, what can you do?"\nresponse_round = session.send_message(user_query,\n event_handler=lambda _type, _msg: print(f"{_type}:\\n{_msg}"))\nprint(response_round.to_dict())\n'})}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Note:"})}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"event_handler"}),": a callback function that is utilized to display the internal planning and execution steps of TaskWeaver.\nIt takes two arguments: the message type (e.g., ",(0,t.jsx)(n.code,{children:"plan"}),") and the message body."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"response_round"}),": the response from TaskWeaver. which is an object of the ",(0,t.jsx)(n.code,{children:"Round"})," class.\nAn example of the ",(0,t.jsx)(n.code,{children:"Round"})," object is shown below:"]}),"\n"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-json",children:'{\n "id": "round-20231201-043134-218a2681",\n "user_query": "hello, what can you do?",\n "state": "finished",\n "post_list": [\n {\n "id": "post-20231201-043134-10eedcca",\n "message": "hello, what can you do?",\n "send_from": "User",\n "send_to": "Planner",\n "attachment_list": []\n },\n {\n "id": "post-20231201-043141-86a2aaff",\n "message": "I can help you with various tasks, such as counting rows in a data file, detecting anomalies in a dataset, searching for products on Klarna, summarizing research papers, and pulling data from a SQL database. Please provide more information about the task you want to accomplish, and I\'ll guide you through the process.",\n "send_from": "Planner",\n "send_to": "User",\n "attachment_list": [\n {\n "id": "atta-20231201-043141-6bc4da86",\n "type": "init_plan",\n "content": "1. list the available functions"\n },\n {\n "id": "atta-20231201-043141-6f29f6c9",\n "type": "plan",\n "content": "1. list the available functions"\n },\n {\n "id": "atta-20231201-043141-76186c7a",\n "type": "current_plan_step",\n "content": "1. list the available functions"\n }\n ]\n }\n ]\n}\n'})})]})}function p(e={}){const{wrapper:n}={...(0,s.a)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(d,{...e})}):d(e)}},1151:(e,n,a)=>{a.d(n,{Z:()=>i,a:()=>r});var t=a(7294);const s={},o=t.createContext(s);function r(e){const n=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),t.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/8f0a7c30.9f481fb2.js b/assets/js/8f0a7c30.9f481fb2.js deleted file mode 100644 index 82458d7f..00000000 --- a/assets/js/8f0a7c30.9f481fb2.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[664],{9600:(e,n,a)=>{a.r(n),a.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>p,frontMatter:()=>r,metadata:()=>i,toc:()=>l});var t=a(5893),s=a(1151);const r={},o="Use TaskWeaver as a library",i={id:"taskweaver_as_a_lib",title:"Use TaskWeaver as a library",description:"If you want to use TaskWeaver as a library, you can refer to the following code example:",source:"@site/docs/taskweaver_as_a_lib.md",sourceDirName:".",slug:"/taskweaver_as_a_lib",permalink:"/TaskWeaver/docs/taskweaver_as_a_lib",draft:!1,unlisted:!1,editUrl:"https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/docs/taskweaver_as_a_lib.md",tags:[],version:"current",frontMatter:{},sidebar:"documentSidebar",previous:{title:"Running pytest",permalink:"/TaskWeaver/docs/run_pytest"}},c={},l=[];function d(e){const n={code:"code",h1:"h1",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h1,{id:"use-taskweaver-as-a-library",children:"Use TaskWeaver as a library"}),"\n",(0,t.jsx)(n.p,{children:"If you want to use TaskWeaver as a library, you can refer to the following code example:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",children:'from taskweaver.app.app import TaskWeaverApp\n\n# This is the folder that contains the taskweaver_config.json file and not the repo root. Defaults to "./project/"\napp_dir = "./project/"\napp = TaskWeaverApp(app_dir=app_dir)\nsession = app.get_session()\n\nuser_query = "hello, what can you do?"\nresponse_round = session.send_message(user_query,\n event_handler=lambda _type, _msg: print(f"{_type}:\\n{_msg}"))\nprint(response_round.to_dict())\n'})}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Note:"})}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"event_handler"}),": a callback function that is utilized to display the internal planning and execution steps of TaskWeaver.\nIt takes two arguments: the message type (e.g., ",(0,t.jsx)(n.code,{children:"plan"}),") and the message body."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"response_round"}),": the response from TaskWeaver. which is an object of the ",(0,t.jsx)(n.code,{children:"Round"})," class.\nAn example of the ",(0,t.jsx)(n.code,{children:"Round"})," object is shown below:"]}),"\n"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-json",children:'{\n "id": "round-20231201-043134-218a2681",\n "user_query": "hello, what can you do?",\n "state": "finished",\n "post_list": [\n {\n "id": "post-20231201-043134-10eedcca",\n "message": "hello, what can you do?",\n "send_from": "User",\n "send_to": "Planner",\n "attachment_list": []\n },\n {\n "id": "post-20231201-043141-86a2aaff",\n "message": "I can help you with various tasks, such as counting rows in a data file, detecting anomalies in a dataset, searching for products on Klarna, summarizing research papers, and pulling data from a SQL database. Please provide more information about the task you want to accomplish, and I\'ll guide you through the process.",\n "send_from": "Planner",\n "send_to": "User",\n "attachment_list": [\n {\n "id": "atta-20231201-043141-6bc4da86",\n "type": "init_plan",\n "content": "1. list the available functions"\n },\n {\n "id": "atta-20231201-043141-6f29f6c9",\n "type": "plan",\n "content": "1. list the available functions"\n },\n {\n "id": "atta-20231201-043141-76186c7a",\n "type": "current_plan_step",\n "content": "1. list the available functions"\n }\n ]\n }\n ]\n}\n'})})]})}function p(e={}){const{wrapper:n}={...(0,s.a)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(d,{...e})}):d(e)}},1151:(e,n,a)=>{a.d(n,{Z:()=>i,a:()=>o});var t=a(7294);const s={},r=t.createContext(s);function o(e){const n=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),t.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/925b3f96.4e86b090.js b/assets/js/925b3f96.4e86b090.js new file mode 100644 index 00000000..66ecad98 --- /dev/null +++ b/assets/js/925b3f96.4e86b090.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[9003],{3902:(t,e,o)=>{o.r(e),o.d(e,{assets:()=>n,contentTitle:()=>i,default:()=>c,frontMatter:()=>r,metadata:()=>u,toc:()=>l});var s=o(5893),a=o(1151);const r={slug:"first-blog-post",title:"First Blog Post",authors:{name:"Gao Wei",title:"Docusaurus Core Team",url:"https://github.com/wgao19",image_url:"https://github.com/wgao19.png"},tags:["hola","docusaurus"]},i=void 0,u={permalink:"/TaskWeaver/blog/first-blog-post",editUrl:"https://github.com/microsoft/TaskWeaver/tree/docs/website/blog/2019-05-28-first-blog-post.md",source:"@site/blog/2019-05-28-first-blog-post.md",title:"First Blog Post",description:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet",date:"2019-05-28T00:00:00.000Z",formattedDate:"May 28, 2019",tags:[{label:"hola",permalink:"/TaskWeaver/blog/tags/hola"},{label:"docusaurus",permalink:"/TaskWeaver/blog/tags/docusaurus"}],readingTime:.12,hasTruncateMarker:!1,authors:[{name:"Gao Wei",title:"Docusaurus Core Team",url:"https://github.com/wgao19",image_url:"https://github.com/wgao19.png",imageURL:"https://github.com/wgao19.png"}],frontMatter:{slug:"first-blog-post",title:"First Blog Post",authors:{name:"Gao Wei",title:"Docusaurus Core Team",url:"https://github.com/wgao19",image_url:"https://github.com/wgao19.png",imageURL:"https://github.com/wgao19.png"},tags:["hola","docusaurus"]},unlisted:!1,prevItem:{title:"Long Blog Post",permalink:"/TaskWeaver/blog/long-blog-post"}},n={authorsImageUrls:[void 0]},l=[];function m(t){const e={p:"p",...(0,a.a)(),...t.components};return(0,s.jsx)(e.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"})}function c(t={}){const{wrapper:e}={...(0,a.a)(),...t.components};return e?(0,s.jsx)(e,{...t,children:(0,s.jsx)(m,{...t})}):m(t)}},1151:(t,e,o)=>{o.d(e,{Z:()=>u,a:()=>i});var s=o(7294);const a={},r=s.createContext(a);function i(t){const e=s.useContext(r);return s.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function u(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(a):t.components||a:i(t.components),s.createElement(r.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/925b3f96.c03ea1b5.js b/assets/js/925b3f96.c03ea1b5.js deleted file mode 100644 index db61a419..00000000 --- a/assets/js/925b3f96.c03ea1b5.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[9003],{3902:(t,e,o)=>{o.r(e),o.d(e,{assets:()=>n,contentTitle:()=>u,default:()=>m,frontMatter:()=>r,metadata:()=>i,toc:()=>l});var s=o(5893),a=o(1151);const r={slug:"first-blog-post",title:"First Blog Post",authors:{name:"Gao Wei",title:"Docusaurus Core Team",url:"https://github.com/wgao19",image_url:"https://github.com/wgao19.png"},tags:["hola","docusaurus"]},u=void 0,i={permalink:"/TaskWeaver/blog/first-blog-post",editUrl:"https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/blog/2019-05-28-first-blog-post.md",source:"@site/blog/2019-05-28-first-blog-post.md",title:"First Blog Post",description:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet",date:"2019-05-28T00:00:00.000Z",formattedDate:"May 28, 2019",tags:[{label:"hola",permalink:"/TaskWeaver/blog/tags/hola"},{label:"docusaurus",permalink:"/TaskWeaver/blog/tags/docusaurus"}],readingTime:.12,hasTruncateMarker:!1,authors:[{name:"Gao Wei",title:"Docusaurus Core Team",url:"https://github.com/wgao19",image_url:"https://github.com/wgao19.png",imageURL:"https://github.com/wgao19.png"}],frontMatter:{slug:"first-blog-post",title:"First Blog Post",authors:{name:"Gao Wei",title:"Docusaurus Core Team",url:"https://github.com/wgao19",image_url:"https://github.com/wgao19.png",imageURL:"https://github.com/wgao19.png"},tags:["hola","docusaurus"]},unlisted:!1,prevItem:{title:"Long Blog Post",permalink:"/TaskWeaver/blog/long-blog-post"}},n={authorsImageUrls:[void 0]},l=[];function c(t){const e={p:"p",...(0,a.a)(),...t.components};return(0,s.jsx)(e.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"})}function m(t={}){const{wrapper:e}={...(0,a.a)(),...t.components};return e?(0,s.jsx)(e,{...t,children:(0,s.jsx)(c,{...t})}):c(t)}},1151:(t,e,o)=>{o.d(e,{Z:()=>i,a:()=>u});var s=o(7294);const a={},r=s.createContext(a);function u(t){const e=s.useContext(r);return s.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function i(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(a):t.components||a:u(t.components),s.createElement(r.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.d62501dd.js b/assets/js/935f2afb.0b8d1b42.js similarity index 72% rename from assets/js/935f2afb.d62501dd.js rename to assets/js/935f2afb.0b8d1b42.js index c70456d4..68347c7c 100644 --- a/assets/js/935f2afb.d62501dd.js +++ b/assets/js/935f2afb.0b8d1b42.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[53],{1109:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"documentSidebar":[{"type":"link","label":"Overview","href":"/TaskWeaver/docs/overview","docId":"overview","unlisted":false},{"type":"link","label":"Quick Start","href":"/TaskWeaver/docs/quickstart","docId":"quickstart","unlisted":false},{"type":"category","label":"LLMs","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"Supported LLMs","href":"/TaskWeaver/docs/llms/","docId":"llms/index","unlisted":false},{"type":"link","label":"OpenAI & Azure OpenAI","href":"/TaskWeaver/docs/llms/openai","docId":"llms/openai","unlisted":false},{"type":"link","label":"LiteLLM","href":"/TaskWeaver/docs/llms/liteLLM","docId":"llms/liteLLM","unlisted":false},{"type":"link","label":"Ollama","href":"/TaskWeaver/docs/llms/ollama","docId":"llms/ollama","unlisted":false},{"type":"link","label":"Gemini","href":"/TaskWeaver/docs/llms/geni","docId":"llms/geni","unlisted":false},{"type":"link","label":"QWen","href":"/TaskWeaver/docs/llms/qwen","docId":"llms/qwen","unlisted":false}]},{"type":"category","label":"Plugin","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"Plugin Introduction","href":"/TaskWeaver/docs/plugin/plugin_intro","docId":"plugin/plugin_intro","unlisted":false},{"type":"link","label":"Auto Plugin Selection","href":"/TaskWeaver/docs/plugin/plugin_selection","docId":"plugin/plugin_selection","unlisted":false},{"type":"link","label":"Embedding","href":"/TaskWeaver/docs/plugin/embedding","docId":"plugin/embedding","unlisted":false}]},{"type":"link","label":"Customizing Examples","href":"/TaskWeaver/docs/example","docId":"example","unlisted":false},{"type":"link","label":"Prompt Compression","href":"/TaskWeaver/docs/compression","docId":"compression","unlisted":false},{"type":"link","label":"Configuration File","href":"/TaskWeaver/docs/configurations","docId":"configurations","unlisted":false},{"type":"link","label":"Planner","href":"/TaskWeaver/docs/planner","docId":"planner","unlisted":false},{"type":"link","label":"Session","href":"/TaskWeaver/docs/session","docId":"session","unlisted":false},{"type":"link","label":"Running pytest","href":"/TaskWeaver/docs/run_pytest","docId":"run_pytest","unlisted":false},{"type":"link","label":"Use TaskWeaver as a library","href":"/TaskWeaver/docs/taskweaver_as_a_lib","docId":"taskweaver_as_a_lib","unlisted":false}]},"docs":{"compression":{"id":"compression","title":"Prompt Compression","description":"After chatting for a few rounds, the chat history can become quite long, especially when we have code and execution results in it.","sidebar":"documentSidebar"},"configurations":{"id":"configurations","title":"Configuration File","description":"The configuration file is located at project/taskweaver_config.json.","sidebar":"documentSidebar"},"example":{"id":"example","title":"Customizing Examples","description":"There are two types of examples: (1) planning examples and (2) code interpreter examples.","sidebar":"documentSidebar"},"llms/geni":{"id":"llms/geni","title":"Gemini","description":"","sidebar":"documentSidebar"},"llms/index":{"id":"llms/index","title":"Supported LLMs","description":"List for all supported LLMs","sidebar":"documentSidebar"},"llms/liteLLM":{"id":"llms/liteLLM","title":"LiteLLM","description":"Using LLMs from LiteLLM","sidebar":"documentSidebar"},"llms/ollama":{"id":"llms/ollama","title":"Ollama","description":"How to use Ollama LLM API","sidebar":"documentSidebar"},"llms/openai":{"id":"llms/openai","title":"OpenAI & Azure OpenAI","description":"Using LLMs from OpenAI/AOAI","sidebar":"documentSidebar"},"llms/qwen":{"id":"llms/qwen","title":"QWen","description":"How to use QWen API","sidebar":"documentSidebar"},"overview":{"id":"overview","title":"Overview","description":"A code-first agent framework for seamlessly planning and executing data analytics tasks.","sidebar":"documentSidebar"},"planner":{"id":"planner","title":"Planner","description":"In TaskWeaver, the Planner is responsible for generating a plan to accomplish the user\'s task.","sidebar":"documentSidebar"},"plugin/embedding":{"id":"plugin/embedding","title":"Embedding","description":"In TaskWeaver, we support various embedding models to generate embeddings for auto plugin selection.","sidebar":"documentSidebar"},"plugin/plugin_intro":{"id":"plugin/plugin_intro","title":"Plugin Introduction","description":"Plugin introduction","sidebar":"documentSidebar"},"plugin/plugin_selection":{"id":"plugin/plugin_selection","title":"Auto Plugin Selection","description":"In TaskWeaver, we provide an auto plugin selection mechanism to dynamically select the best plugin for each user request.","sidebar":"documentSidebar"},"quickstart":{"id":"quickstart","title":"Quick Start","description":"Installation","sidebar":"documentSidebar"},"run_pytest":{"id":"run_pytest","title":"Running pytest","description":"quickstart","sidebar":"documentSidebar"},"session":{"id":"session","title":"Session","description":"session is the entrance of TaskWeaver.","sidebar":"documentSidebar"},"taskweaver_as_a_lib":{"id":"taskweaver_as_a_lib","title":"Use TaskWeaver as a library","description":"If you want to use TaskWeaver as a library, you can refer to the following code example:","sidebar":"documentSidebar"}}}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[53],{1109:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"documentSidebar":[{"type":"link","label":"Overview","href":"/TaskWeaver/docs/overview","docId":"overview","unlisted":false},{"type":"link","label":"Quick Start","href":"/TaskWeaver/docs/quickstart","docId":"quickstart","unlisted":false},{"type":"category","label":"LLMs","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"Supported LLMs","href":"/TaskWeaver/docs/llms/","docId":"llms/index","unlisted":false},{"type":"link","label":"OpenAI & Azure OpenAI","href":"/TaskWeaver/docs/llms/openai","docId":"llms/openai","unlisted":false},{"type":"link","label":"LiteLLM","href":"/TaskWeaver/docs/llms/liteLLM","docId":"llms/liteLLM","unlisted":false},{"type":"link","label":"Ollama","href":"/TaskWeaver/docs/llms/ollama","docId":"llms/ollama","unlisted":false},{"type":"link","label":"Gemini","href":"/TaskWeaver/docs/llms/geni","docId":"llms/geni","unlisted":false},{"type":"link","label":"QWen","href":"/TaskWeaver/docs/llms/qwen","docId":"llms/qwen","unlisted":false}]},{"type":"category","label":"Plugin","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"Plugin Introduction","href":"/TaskWeaver/docs/plugin/plugin_intro","docId":"plugin/plugin_intro","unlisted":false},{"type":"link","label":"Auto Plugin Selection","href":"/TaskWeaver/docs/plugin/plugin_selection","docId":"plugin/plugin_selection","unlisted":false},{"type":"link","label":"Embedding","href":"/TaskWeaver/docs/plugin/embedding","docId":"plugin/embedding","unlisted":false}]},{"type":"link","label":"Customizing Examples","href":"/TaskWeaver/docs/example","docId":"example","unlisted":false},{"type":"link","label":"Prompt Compression","href":"/TaskWeaver/docs/compression","docId":"compression","unlisted":false},{"type":"link","label":"Configuration File","href":"/TaskWeaver/docs/configurations","docId":"configurations","unlisted":false},{"type":"link","label":"Planner","href":"/TaskWeaver/docs/planner","docId":"planner","unlisted":false},{"type":"link","label":"Session","href":"/TaskWeaver/docs/session","docId":"session","unlisted":false},{"type":"link","label":"Running pytest","href":"/TaskWeaver/docs/run_pytest","docId":"run_pytest","unlisted":false},{"type":"link","label":"Use TaskWeaver as a library","href":"/TaskWeaver/docs/taskweaver_as_a_lib","docId":"taskweaver_as_a_lib","unlisted":false}]},"docs":{"compression":{"id":"compression","title":"Prompt Compression","description":"After chatting for a few rounds, the chat history can become quite long, especially when we have code and execution results in it.","sidebar":"documentSidebar"},"configurations":{"id":"configurations","title":"Configuration File","description":"The configuration file is located at project/taskweaver_config.json.","sidebar":"documentSidebar"},"example":{"id":"example","title":"Customizing Examples","description":"There are two types of examples: (1) planning examples and (2) code interpreter examples.","sidebar":"documentSidebar"},"llms/geni":{"id":"llms/geni","title":"Gemini","description":"","sidebar":"documentSidebar"},"llms/index":{"id":"llms/index","title":"Supported LLMs","description":"List for all supported LLMs","sidebar":"documentSidebar"},"llms/liteLLM":{"id":"llms/liteLLM","title":"LiteLLM","description":"Using LLMs from LiteLLM","sidebar":"documentSidebar"},"llms/ollama":{"id":"llms/ollama","title":"Ollama","description":"How to use Ollama LLM API","sidebar":"documentSidebar"},"llms/openai":{"id":"llms/openai","title":"OpenAI & Azure OpenAI","description":"Using LLMs from OpenAI/AOAI","sidebar":"documentSidebar"},"llms/qwen":{"id":"llms/qwen","title":"QWen","description":"How to use QWen API","sidebar":"documentSidebar"},"overview":{"id":"overview","title":"Overview","description":"{t.r(n),t.d(n,{assets:()=>r,contentTitle:()=>s,default:()=>u,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var i=t(5893),a=t(1151);const o={id:"plugin_intro",description:"Plugin introduction",slug:"/plugin/plugin_intro"},s="Plugin Introduction",l={id:"plugin/plugin_intro",title:"Plugin Introduction",description:"Plugin introduction",source:"@site/docs/plugin/plugin_intro.md",sourceDirName:"plugin",slug:"/plugin/plugin_intro",permalink:"/TaskWeaver/docs/plugin/plugin_intro",draft:!1,unlisted:!1,editUrl:"https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/docs/plugin/plugin_intro.md",tags:[],version:"current",frontMatter:{id:"plugin_intro",description:"Plugin introduction",slug:"/plugin/plugin_intro"},sidebar:"documentSidebar",previous:{title:"QWen",permalink:"/TaskWeaver/docs/llms/qwen"},next:{title:"Auto Plugin Selection",permalink:"/TaskWeaver/docs/plugin/plugin_selection"}},r={},c=[{value:"Plugin Structure",id:"plugin-structure",level:2},{value:"Plugin Implementation",id:"plugin-implementation",level:2},{value:"Important Notes",id:"important-notes",level:3},{value:"Plugin Schema",id:"plugin-schema",level:2}];function d(e){const n={blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,a.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h1,{id:"plugin-introduction",children:"Plugin Introduction"}),"\n",(0,i.jsx)(n.p,{children:"Plugins are the units that could be orchestrated by TaskWeaver. One could view the plugins as tools that the LLM can\nutilize to accomplish certain tasks."}),"\n",(0,i.jsx)(n.p,{children:"In TaskWeaver, each plugin is represented as a Python function that can be called within a code snippet. The\norchestration is essentially the process of generating Python code snippets consisting of a certain number of plugins.\nOne concrete example would be pulling data from database and apply anomaly detection. The generated code (simplified) looks like\nfollows:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-python",children:'df, data_description = sql_pull_data(query="pull data from time_series table") \nanomaly_df, anomaly_description = anomaly_detection(df, time_col_name="ts", value_col_name="val") \n'})}),"\n",(0,i.jsx)(n.h2,{id:"plugin-structure",children:"Plugin Structure"}),"\n",(0,i.jsx)(n.p,{children:"A plugin has two files:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Plugin Implementation"}),": a Python file that defines the plugin"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Plugin Schema"}),": a file in yaml that defines the schema of the plugin"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"plugin-implementation",children:"Plugin Implementation"}),"\n",(0,i.jsx)(n.p,{children:"The plugin function needs to be implemented in Python.\nTo be coordinated with the orchestration by TaskWeaver, a plugin python file consists of two parts:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Plugin function implementation code"}),"\n",(0,i.jsx)(n.li,{children:"TaskWeaver plugin decorator"}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Here we exhibit an example of the anomaly detection plugin as the following code:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-python",children:'import pandas as pd\nfrom pandas.api.types import is_numeric_dtype\n\nfrom taskWeaver.plugin import Plugin, register_plugin\n\n\n@register_plugin\nclass AnomalyDetectionPlugin(Plugin):\n def __call__(self, df: pd.DataFrame, time_col_name: str, value_col_name: str):\n\n """\n anomaly_detection function identifies anomalies from an input dataframe of time series.\n It will add a new column "Is_Anomaly", where each entry will be marked with "True" if the value is an anomaly\n or "False" otherwise.\n\n :param df: the input data, must be a dataframe\n :param time_col_name: name of the column that contains the datetime\n :param value_col_name: name of the column that contains the numeric values.\n :return df: a new df that adds an additional "Is_Anomaly" column based on the input df.\n :return description: the description about the anomaly detection results.\n """\n try:\n df[time_col_name] = pd.to_datetime(df[time_col_name])\n except Exception:\n print("Time column is not datetime")\n return\n\n if not is_numeric_dtype(df[value_col_name]):\n try:\n df[value_col_name] = df[value_col_name].astype(float)\n except ValueError:\n print("Value column is not numeric")\n return\n\n mean, std = df[value_col_name].mean(), df[value_col_name].std()\n cutoff = std * 3\n lower, upper = mean - cutoff, mean + cutoff\n df["Is_Anomaly"] = df[value_col_name].apply(lambda x: x < lower or x > upper)\n anomaly_count = df["Is_Anomaly"].sum()\n description = "There are {} anomalies in the time series data".format(anomaly_count)\n \n self.ctx.add_artifact(\n name="anomaly_detection_results", # a brief description of the artifact\n file_name="anomaly_detection_results.csv", # artifact file name\n type="df", # artifact data type, support chart/df/file/txt/svg\n val=df, # variable to be dumped\n )\n \n return df, description\n\n'})}),"\n",(0,i.jsx)(n.p,{children:"You need to go through the following steps to implement your own plugin."}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["import the TaskWeaver plugin decorator ",(0,i.jsx)(n.code,{children:"from taskWeaver.plugin import Plugin, register_plugin"})]}),"\n",(0,i.jsxs)(n.li,{children:["create your plugin class inherited from ",(0,i.jsx)(n.code,{children:"Plugin"})," parent class (e.g., ",(0,i.jsx)(n.code,{children:"AnomalyDetectionPlugin(Plugin)"}),"), which is\ndecorated by ",(0,i.jsx)(n.code,{children:"@register_plugin"})]}),"\n",(0,i.jsxs)(n.li,{children:["implement your plugin function in ",(0,i.jsx)(n.code,{children:"__call__"})," method of the plugin class. ",(0,i.jsxs)(n.strong,{children:["Most importantly, it is mandatory to\ninclude ",(0,i.jsx)(n.code,{children:"descriptions"})," of your execution results in the return values of your plugin function"]}),". These descriptions\ncan be utilized by the LLM to effectively summarize your execution results."]}),"\n"]}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:"\ud83d\udca1A key difference in a plugin implementation and a normal python function is that it always return a description of\nthe result in natural language. As LLMs only understand natural language, it is important to let the model understand\nwhat the execution result is. In the example implementation above, the description says how many anomalies are detected.\nBehind the scene, only the description will be passed to the LLM model. In contrast, the execution result (e.g., df in\nthe above example) is not handled by the LLM."}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"important-notes",children:"Important Notes"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"If the functionality of your plugin depends on additional libraries or packages, it is essential to ensure that they\nare installed before proceeding."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:["If you wish to persist intermediate results, such as data, figures, or prompts, in your plugin implementation,\nTaskWeaver provides an ",(0,i.jsx)(n.code,{children:"add_artifact"})," API that allows you to store these results in the workspace. In the example we\nprovide, if you have performed anomaly detection and obtained results in the form of a CSV file, you can utilize\nthe ",(0,i.jsx)(n.code,{children:"add_artifact"})," API to save this file as an artifact. The artifacts are stored in the ",(0,i.jsx)(n.code,{children:"project/workspace/session_id/cwd"})," folder in the project directory."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-python",children:'self.ctx.add_artifact(\n name="anomaly_detection_results", # a brief description of the artifact\n file_name="anomaly_detection_results.csv", # artifact file name\n type="df", # artifact data type, support chart/df/file/txt/svg\n val=df, # variable to be dumped\n)\n'})}),"\n",(0,i.jsx)(n.h2,{id:"plugin-schema",children:"Plugin Schema"}),"\n",(0,i.jsx)(n.p,{children:"The plugin schema is composed of several parts:"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"name"}),": The main function name of the Python code."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"enabled"}),": determine whether the plugin is enabled for selection during conversations. The default value is true."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"descriptions"}),": A brief description that introduces the plugin function."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"parameters"}),": This section lists all the input parameter information. It includes the parameter's name, type,\nwhether it is required or optional, and a description providing more details about the parameter."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"returns"}),": This section lists all the return value information. It includes the return value's name, type, and\ndescription that provides information about the value that is returned by the function."]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Note:"})," The addition of any extra fields would result in a validation failure within the plugin schema."]}),"\n",(0,i.jsx)(n.p,{children:"The plugin schema is required to be written in YAML format. Here is the plugin schema example of the above anomaly\ndetection plugin:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",children:'name: anomaly_detection\nenabled: true\nrequired: false\ndescription: >-\n anomaly_detection function identifies anomalies from an input DataFrame of\n time series. It will add a new column "Is_Anomaly", where each entry will be marked with "True" if the value is an anomaly or "False" otherwise.\n\nparameters:\n - name: df\n type: DataFrame\n required: true\n description: >-\n the input data from which we can identify the anomalies with the 3-sigma\n algorithm.\n - name: time_col_name\n type: str\n required: true\n description: name of the column that contains the datetime\n - name: value_col_name\n type: str\n required: true\n description: name of the column that contains the numeric values.\n\nreturns:\n - name: df\n type: DataFrame\n description: >-\n This DataFrame extends the input DataFrame with a newly-added column\n "Is_Anomaly" containing the anomaly detection result.\n - name: description\n type: str\n description: This is a string describing the anomaly detection results.\n\n'})}),"\n",(0,i.jsx)(n.p,{children:"Besides, we also set two optional fields as below:"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"code"}),": In cases where multiple plugins map to the same Python code (i.e., the plugin name is different from the\ncode name), it is essential to specify the code name (code file) in the plugin schema to ensure clarity and accuracy."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"configurations"}),": When using common code that requires some configuration parameter modifications for different\nplugins, it is important to specify these configuration parameters in the plugin schema."]}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,a.a)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}},1151:(e,n,t)=>{t.d(n,{Z:()=>l,a:()=>s});var i=t(7294);const a={},o=i.createContext(a);function s(e){const n=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:s(e.components),i.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/9fbcb257.63926424.js b/assets/js/9fbcb257.63926424.js new file mode 100644 index 00000000..9482fe3c --- /dev/null +++ b/assets/js/9fbcb257.63926424.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[8007],{1940:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>r,contentTitle:()=>s,default:()=>u,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var i=t(5893),a=t(1151);const o={id:"plugin_intro",description:"Plugin introduction",slug:"/plugin/plugin_intro"},s="Plugin Introduction",l={id:"plugin/plugin_intro",title:"Plugin Introduction",description:"Plugin introduction",source:"@site/docs/plugin/plugin_intro.md",sourceDirName:"plugin",slug:"/plugin/plugin_intro",permalink:"/TaskWeaver/docs/plugin/plugin_intro",draft:!1,unlisted:!1,editUrl:"https://github.com/microsoft/TaskWeaver/tree/docs/website/docs/plugin/plugin_intro.md",tags:[],version:"current",frontMatter:{id:"plugin_intro",description:"Plugin introduction",slug:"/plugin/plugin_intro"},sidebar:"documentSidebar",previous:{title:"QWen",permalink:"/TaskWeaver/docs/llms/qwen"},next:{title:"Auto Plugin Selection",permalink:"/TaskWeaver/docs/plugin/plugin_selection"}},r={},c=[{value:"Plugin Structure",id:"plugin-structure",level:2},{value:"Plugin Implementation",id:"plugin-implementation",level:2},{value:"Important Notes",id:"important-notes",level:3},{value:"Plugin Schema",id:"plugin-schema",level:2}];function d(e){const n={blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,a.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h1,{id:"plugin-introduction",children:"Plugin Introduction"}),"\n",(0,i.jsx)(n.p,{children:"Plugins are the units that could be orchestrated by TaskWeaver. One could view the plugins as tools that the LLM can\nutilize to accomplish certain tasks."}),"\n",(0,i.jsx)(n.p,{children:"In TaskWeaver, each plugin is represented as a Python function that can be called within a code snippet. The\norchestration is essentially the process of generating Python code snippets consisting of a certain number of plugins.\nOne concrete example would be pulling data from database and apply anomaly detection. The generated code (simplified) looks like\nfollows:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-python",children:'df, data_description = sql_pull_data(query="pull data from time_series table") \nanomaly_df, anomaly_description = anomaly_detection(df, time_col_name="ts", value_col_name="val") \n'})}),"\n",(0,i.jsx)(n.h2,{id:"plugin-structure",children:"Plugin Structure"}),"\n",(0,i.jsx)(n.p,{children:"A plugin has two files:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Plugin Implementation"}),": a Python file that defines the plugin"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Plugin Schema"}),": a file in yaml that defines the schema of the plugin"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"plugin-implementation",children:"Plugin Implementation"}),"\n",(0,i.jsx)(n.p,{children:"The plugin function needs to be implemented in Python.\nTo be coordinated with the orchestration by TaskWeaver, a plugin python file consists of two parts:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Plugin function implementation code"}),"\n",(0,i.jsx)(n.li,{children:"TaskWeaver plugin decorator"}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Here we exhibit an example of the anomaly detection plugin as the following code:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-python",children:'import pandas as pd\nfrom pandas.api.types import is_numeric_dtype\n\nfrom taskWeaver.plugin import Plugin, register_plugin\n\n\n@register_plugin\nclass AnomalyDetectionPlugin(Plugin):\n def __call__(self, df: pd.DataFrame, time_col_name: str, value_col_name: str):\n\n """\n anomaly_detection function identifies anomalies from an input dataframe of time series.\n It will add a new column "Is_Anomaly", where each entry will be marked with "True" if the value is an anomaly\n or "False" otherwise.\n\n :param df: the input data, must be a dataframe\n :param time_col_name: name of the column that contains the datetime\n :param value_col_name: name of the column that contains the numeric values.\n :return df: a new df that adds an additional "Is_Anomaly" column based on the input df.\n :return description: the description about the anomaly detection results.\n """\n try:\n df[time_col_name] = pd.to_datetime(df[time_col_name])\n except Exception:\n print("Time column is not datetime")\n return\n\n if not is_numeric_dtype(df[value_col_name]):\n try:\n df[value_col_name] = df[value_col_name].astype(float)\n except ValueError:\n print("Value column is not numeric")\n return\n\n mean, std = df[value_col_name].mean(), df[value_col_name].std()\n cutoff = std * 3\n lower, upper = mean - cutoff, mean + cutoff\n df["Is_Anomaly"] = df[value_col_name].apply(lambda x: x < lower or x > upper)\n anomaly_count = df["Is_Anomaly"].sum()\n description = "There are {} anomalies in the time series data".format(anomaly_count)\n \n self.ctx.add_artifact(\n name="anomaly_detection_results", # a brief description of the artifact\n file_name="anomaly_detection_results.csv", # artifact file name\n type="df", # artifact data type, support chart/df/file/txt/svg\n val=df, # variable to be dumped\n )\n \n return df, description\n\n'})}),"\n",(0,i.jsx)(n.p,{children:"You need to go through the following steps to implement your own plugin."}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["import the TaskWeaver plugin decorator ",(0,i.jsx)(n.code,{children:"from taskWeaver.plugin import Plugin, register_plugin"})]}),"\n",(0,i.jsxs)(n.li,{children:["create your plugin class inherited from ",(0,i.jsx)(n.code,{children:"Plugin"})," parent class (e.g., ",(0,i.jsx)(n.code,{children:"AnomalyDetectionPlugin(Plugin)"}),"), which is\ndecorated by ",(0,i.jsx)(n.code,{children:"@register_plugin"})]}),"\n",(0,i.jsxs)(n.li,{children:["implement your plugin function in ",(0,i.jsx)(n.code,{children:"__call__"})," method of the plugin class. ",(0,i.jsxs)(n.strong,{children:["Most importantly, it is mandatory to\ninclude ",(0,i.jsx)(n.code,{children:"descriptions"})," of your execution results in the return values of your plugin function"]}),". These descriptions\ncan be utilized by the LLM to effectively summarize your execution results."]}),"\n"]}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:"\ud83d\udca1A key difference in a plugin implementation and a normal python function is that it always return a description of\nthe result in natural language. As LLMs only understand natural language, it is important to let the model understand\nwhat the execution result is. In the example implementation above, the description says how many anomalies are detected.\nBehind the scene, only the description will be passed to the LLM model. In contrast, the execution result (e.g., df in\nthe above example) is not handled by the LLM."}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"important-notes",children:"Important Notes"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"If the functionality of your plugin depends on additional libraries or packages, it is essential to ensure that they\nare installed before proceeding."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:["If you wish to persist intermediate results, such as data, figures, or prompts, in your plugin implementation,\nTaskWeaver provides an ",(0,i.jsx)(n.code,{children:"add_artifact"})," API that allows you to store these results in the workspace. In the example we\nprovide, if you have performed anomaly detection and obtained results in the form of a CSV file, you can utilize\nthe ",(0,i.jsx)(n.code,{children:"add_artifact"})," API to save this file as an artifact. The artifacts are stored in the ",(0,i.jsx)(n.code,{children:"project/workspace/session_id/cwd"})," folder in the project directory."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-python",children:'self.ctx.add_artifact(\n name="anomaly_detection_results", # a brief description of the artifact\n file_name="anomaly_detection_results.csv", # artifact file name\n type="df", # artifact data type, support chart/df/file/txt/svg\n val=df, # variable to be dumped\n)\n'})}),"\n",(0,i.jsx)(n.h2,{id:"plugin-schema",children:"Plugin Schema"}),"\n",(0,i.jsx)(n.p,{children:"The plugin schema is composed of several parts:"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"name"}),": The main function name of the Python code."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"enabled"}),": determine whether the plugin is enabled for selection during conversations. The default value is true."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"descriptions"}),": A brief description that introduces the plugin function."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"parameters"}),": This section lists all the input parameter information. It includes the parameter's name, type,\nwhether it is required or optional, and a description providing more details about the parameter."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"returns"}),": This section lists all the return value information. It includes the return value's name, type, and\ndescription that provides information about the value that is returned by the function."]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Note:"})," The addition of any extra fields would result in a validation failure within the plugin schema."]}),"\n",(0,i.jsx)(n.p,{children:"The plugin schema is required to be written in YAML format. Here is the plugin schema example of the above anomaly\ndetection plugin:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",children:'name: anomaly_detection\nenabled: true\nrequired: false\ndescription: >-\n anomaly_detection function identifies anomalies from an input DataFrame of\n time series. It will add a new column "Is_Anomaly", where each entry will be marked with "True" if the value is an anomaly or "False" otherwise.\n\nparameters:\n - name: df\n type: DataFrame\n required: true\n description: >-\n the input data from which we can identify the anomalies with the 3-sigma\n algorithm.\n - name: time_col_name\n type: str\n required: true\n description: name of the column that contains the datetime\n - name: value_col_name\n type: str\n required: true\n description: name of the column that contains the numeric values.\n\nreturns:\n - name: df\n type: DataFrame\n description: >-\n This DataFrame extends the input DataFrame with a newly-added column\n "Is_Anomaly" containing the anomaly detection result.\n - name: description\n type: str\n description: This is a string describing the anomaly detection results.\n\n'})}),"\n",(0,i.jsx)(n.p,{children:"Besides, we also set two optional fields as below:"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"code"}),": In cases where multiple plugins map to the same Python code (i.e., the plugin name is different from the\ncode name), it is essential to specify the code name (code file) in the plugin schema to ensure clarity and accuracy."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"configurations"}),": When using common code that requires some configuration parameter modifications for different\nplugins, it is important to specify these configuration parameters in the plugin schema."]}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,a.a)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}},1151:(e,n,t)=>{t.d(n,{Z:()=>l,a:()=>s});var i=t(7294);const a={},o=i.createContext(a);function s(e){const n=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:s(e.components),i.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/a4259125.61189baf.js b/assets/js/a4259125.cb7ab266.js similarity index 62% rename from assets/js/a4259125.61189baf.js rename to assets/js/a4259125.cb7ab266.js index 6f826e4b..7eebd196 100644 --- a/assets/js/a4259125.61189baf.js +++ b/assets/js/a4259125.cb7ab266.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[419],{2897:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>w,contentTitle:()=>L,default:()=>v,frontMatter:()=>k,metadata:()=>b,toc:()=>M});var s=n(5893),r=n(1151),i=(n(7294),n(512)),c=n(3438),o=n(9960),a=n(3919),l=n(5999),d=n(2503);const u={cardContainer:"cardContainer_fWXF",cardTitle:"cardTitle_rnsV",cardDescription:"cardDescription_PWke"};function p(e){let{href:t,children:n}=e;return(0,s.jsx)(o.Z,{href:t,className:(0,i.Z)("card padding--lg",u.cardContainer),children:n})}function m(e){let{href:t,icon:n,title:r,description:c}=e;return(0,s.jsxs)(p,{href:t,children:[(0,s.jsxs)(d.Z,{as:"h2",className:(0,i.Z)("text--truncate",u.cardTitle),title:r,children:[n," ",r]}),c&&(0,s.jsx)("p",{className:(0,i.Z)("text--truncate",u.cardDescription),title:c,children:c})]})}function f(e){let{item:t}=e;const n=(0,c.LM)(t);return n?(0,s.jsx)(m,{href:n,icon:"\ud83d\uddc3\ufe0f",title:t.label,description:t.description??(0,l.I)({message:"{count} items",id:"theme.docs.DocCard.categoryDescription",description:"The default description for a category card in the generated index about how many items this category includes"},{count:t.items.length})}):null}function h(e){let{item:t}=e;const n=(0,a.Z)(t.href)?"\ud83d\udcc4\ufe0f":"\ud83d\udd17",r=(0,c.xz)(t.docId??void 0);return(0,s.jsx)(m,{href:t.href,icon:n,title:t.label,description:t.description??r?.description})}function x(e){let{item:t}=e;switch(t.type){case"link":return(0,s.jsx)(h,{item:t});case"category":return(0,s.jsx)(f,{item:t});default:throw new Error(`unknown item type ${JSON.stringify(t)}`)}}function j(e){let{className:t}=e;const n=(0,c.jA)();return(0,s.jsx)(g,{items:n.items,className:t})}function g(e){const{items:t,className:n}=e;if(!t)return(0,s.jsx)(j,{...e});const r=(0,c.MN)(t);return(0,s.jsx)("section",{className:(0,i.Z)("row",n),children:r.map(((e,t)=>(0,s.jsx)("article",{className:"col col--6 margin-bottom--lg",children:(0,s.jsx)(x,{item:e})},t)))})}const k={description:"List for all supported LLMs"},L="Supported LLMs",b={id:"llms/index",title:"Supported LLMs",description:"List for all supported LLMs",source:"@site/docs/llms/index.md",sourceDirName:"llms",slug:"/llms/",permalink:"/TaskWeaver/docs/llms/",draft:!1,unlisted:!1,editUrl:"https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/docs/llms/index.md",tags:[],version:"current",frontMatter:{description:"List for all supported LLMs"},sidebar:"documentSidebar",previous:{title:"Quick Start",permalink:"/TaskWeaver/docs/quickstart"},next:{title:"OpenAI & Azure OpenAI",permalink:"/TaskWeaver/docs/llms/openai"}},w={},M=[];function N(e){const t={h1:"h1",...(0,r.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h1,{id:"supported-llms",children:"Supported LLMs"}),"\n","\n","\n",(0,s.jsx)(g,{})]})}function v(e={}){const{wrapper:t}={...(0,r.a)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(N,{...e})}):N(e)}},1151:(e,t,n)=>{n.d(t,{Z:()=>o,a:()=>c});var s=n(7294);const r={},i=s.createContext(r);function c(e){const t=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:c(e.components),s.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[419],{2897:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>w,contentTitle:()=>L,default:()=>N,frontMatter:()=>k,metadata:()=>b,toc:()=>v});var s=n(5893),r=n(1151),i=(n(7294),n(512)),c=n(3438),o=n(9960),a=n(3919),l=n(5999),d=n(2503);const u={cardContainer:"cardContainer_fWXF",cardTitle:"cardTitle_rnsV",cardDescription:"cardDescription_PWke"};function p(e){let{href:t,children:n}=e;return(0,s.jsx)(o.Z,{href:t,className:(0,i.Z)("card padding--lg",u.cardContainer),children:n})}function m(e){let{href:t,icon:n,title:r,description:c}=e;return(0,s.jsxs)(p,{href:t,children:[(0,s.jsxs)(d.Z,{as:"h2",className:(0,i.Z)("text--truncate",u.cardTitle),title:r,children:[n," ",r]}),c&&(0,s.jsx)("p",{className:(0,i.Z)("text--truncate",u.cardDescription),title:c,children:c})]})}function f(e){let{item:t}=e;const n=(0,c.LM)(t);return n?(0,s.jsx)(m,{href:n,icon:"\ud83d\uddc3\ufe0f",title:t.label,description:t.description??(0,l.I)({message:"{count} items",id:"theme.docs.DocCard.categoryDescription",description:"The default description for a category card in the generated index about how many items this category includes"},{count:t.items.length})}):null}function h(e){let{item:t}=e;const n=(0,a.Z)(t.href)?"\ud83d\udcc4\ufe0f":"\ud83d\udd17",r=(0,c.xz)(t.docId??void 0);return(0,s.jsx)(m,{href:t.href,icon:n,title:t.label,description:t.description??r?.description})}function x(e){let{item:t}=e;switch(t.type){case"link":return(0,s.jsx)(h,{item:t});case"category":return(0,s.jsx)(f,{item:t});default:throw new Error(`unknown item type ${JSON.stringify(t)}`)}}function j(e){let{className:t}=e;const n=(0,c.jA)();return(0,s.jsx)(g,{items:n.items,className:t})}function g(e){const{items:t,className:n}=e;if(!t)return(0,s.jsx)(j,{...e});const r=(0,c.MN)(t);return(0,s.jsx)("section",{className:(0,i.Z)("row",n),children:r.map(((e,t)=>(0,s.jsx)("article",{className:"col col--6 margin-bottom--lg",children:(0,s.jsx)(x,{item:e})},t)))})}const k={description:"List for all supported LLMs"},L="Supported LLMs",b={id:"llms/index",title:"Supported LLMs",description:"List for all supported LLMs",source:"@site/docs/llms/index.md",sourceDirName:"llms",slug:"/llms/",permalink:"/TaskWeaver/docs/llms/",draft:!1,unlisted:!1,editUrl:"https://github.com/microsoft/TaskWeaver/tree/docs/website/docs/llms/index.md",tags:[],version:"current",frontMatter:{description:"List for all supported LLMs"},sidebar:"documentSidebar",previous:{title:"Quick Start",permalink:"/TaskWeaver/docs/quickstart"},next:{title:"OpenAI & Azure OpenAI",permalink:"/TaskWeaver/docs/llms/openai"}},w={},v=[];function M(e){const t={h1:"h1",...(0,r.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h1,{id:"supported-llms",children:"Supported LLMs"}),"\n","\n","\n",(0,s.jsx)(g,{})]})}function N(e={}){const{wrapper:t}={...(0,r.a)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(M,{...e})}):M(e)}},1151:(e,t,n)=>{n.d(t,{Z:()=>o,a:()=>c});var s=n(7294);const r={},i=s.createContext(r);function c(e){const t=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:c(e.components),s.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/bbe97ef6.0ccf99b3.js b/assets/js/bbe97ef6.0ccf99b3.js new file mode 100644 index 00000000..409dd268 --- /dev/null +++ b/assets/js/bbe97ef6.0ccf99b3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[5111],{8722:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>h,contentTitle:()=>a,default:()=>u,frontMatter:()=>o,metadata:()=>i,toc:()=>d});var r=t(5893),s=t(1151);const o={},a="Prompt Compression",i={id:"compression",title:"Prompt Compression",description:"After chatting for a few rounds, the chat history can become quite long, especially when we have code and execution results in it.",source:"@site/docs/compression.md",sourceDirName:".",slug:"/compression",permalink:"/TaskWeaver/docs/compression",draft:!1,unlisted:!1,editUrl:"https://github.com/microsoft/TaskWeaver/tree/docs/website/docs/compression.md",tags:[],version:"current",frontMatter:{},sidebar:"documentSidebar",previous:{title:"Customizing Examples",permalink:"/TaskWeaver/docs/example"},next:{title:"Configuration File",permalink:"/TaskWeaver/docs/configurations"}},h={},d=[{value:"Configurations",id:"configurations",level:2}];function c(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",li:"li",mermaid:"mermaid",p:"p",pre:"pre",ul:"ul",...(0,s.a)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h1,{id:"prompt-compression",children:"Prompt Compression"}),"\n",(0,r.jsx)(n.p,{children:"After chatting for a few rounds, the chat history can become quite long, especially when we have code and execution results in it.\nThis can cause the problem of exceeding the context window of the LLMs.\nTo solve the problem, one way is to summarize the chat history a few rounds ago,\nand only keep the latest rounds of the chat history."}),"\n",(0,r.jsx)(n.p,{children:"Another way is to use a vector database to store the chat history entries, and only retrieve the last few rounds of the relevant\npart given the current user request. However, in TaskWeaver, code is also part of the chat history.\nIt is not an option to skip some intermediate code and execution results in order to correctly\ngenerate the code for the current user request. Therefore, we choose the first way to solve the problem."}),"\n",(0,r.jsx)(n.p,{children:"The following figure shows the idea of chat history summarization where the chat history is divided into two parts:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Rounds to compress: this part is summarized and only the summary is kept in the chat history. If the context_summary\nalready exists, a new summary is generated based on the previous summary adding the rounds to be summarized."}),"\n",(0,r.jsx)(n.li,{children:"Rounds to retain: this part is kept in the chat history without summarization."}),"\n"]}),"\n",(0,r.jsx)(n.mermaid,{value:" flowchart LR\n ConversationSummary--\x3eRound1\n subgraph Rounds to compress \n Round1--\x3eRound2\n end\n subgraph Rounds to retain\n Round2--\x3eRound3--\x3eRound4--\x3eRound5 \n end"}),"\n",(0,r.jsxs)(n.p,{children:["Imagine that, at the beginning, the ConversationSummary is empty.\nOnce the chat history reaches the ",(0,r.jsx)(n.code,{children:"rounds_to_compress"})," (default 2) rounds plus ",(0,r.jsx)(n.code,{children:"rounds_to_retain"})," (default 3) rounds,\nthe ConversationSummary is generated based on the ",(0,r.jsx)(n.code,{children:"rounds_to_compress"})," rounds and the ",(0,r.jsx)(n.code,{children:"rounds_to_retain"})," rounds are kept in the chat history.\nAfter that, there will be only ",(0,r.jsx)(n.code,{children:"rounds_to_retain"})," rounds in the chat history.\nThe next time the chat history reaches the ",(0,r.jsx)(n.code,{children:"rounds_to_compress"})," rounds plus ",(0,r.jsx)(n.code,{children:"rounds_to_retain"})," rounds,\nthe ConversationSummary is generated based on the ",(0,r.jsx)(n.code,{children:"rounds_to_compress"})," rounds and the previous ConversationSummary.\nWe use these two parameters to control the frequency of the chat history summarization."]}),"\n",(0,r.jsx)(n.p,{children:"An example of the chat history summarization in the Code Generator is shown below:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "ConversationSummary": "The user requested the generation of 100 random numbers, which was successfully executed. Then, the user asked to show the top 5 largest numbers from the generated random numbers. The assistant provided a code snippet to sort the generated random numbers in descending order and select the top 5 largest numbers, which was also successfully executed. After that, the user requested to plot the distribution of the 100 numbers, which was successfully executed. The user then asked to count the frequency of numbers in each bin of the histogram and identify the bin with the most numbers for the 0.1 bin width, which was also successfully executed.",\n "Variables": [\n {\n "name": "random_numbers_100",\n "type": "numpy array",\n "description": "An array containing 100 random numbers generated using np.random.rand()"\n },\n {\n "name": "top_5_largest",\n "type": "numpy array",\n "description": "An array containing the top 5 largest numbers from the generated random numbers"\n }\n ]\n}\n'})}),"\n",(0,r.jsx)(n.p,{children:"The JSON object has two fields:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"ConversationSummary: the summary of the chat history."}),"\n",(0,r.jsx)(n.li,{children:"Variables: the variables in the chat history that could be used in the current user request."}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"The chat history summary of the Planner has only the ConversationSummary field."}),"\n",(0,r.jsx)(n.p,{children:"The actual code generated in the summarized rounds is ignored and only the variables are kept in the summary\nso that the LLM can still refer the these variables in future code generation."}),"\n",(0,r.jsxs)(n.p,{children:["One thing to note is that chat history summarization requires call the LLM which incurs additional latency and cost.\nThe prompts for chat history summarization could be found for ",(0,r.jsx)(n.a,{target:"_blank",href:t(9585).Z+"",children:"planner"}),"\nand ",(0,r.jsx)(n.a,{target:"_blank",href:t(2327).Z+"",children:"code generator"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"configurations",children:"Configurations"}),"\n",(0,r.jsxs)(n.p,{children:["As explained above, there are two parameters in controlling the chat history summarization:\n",(0,r.jsx)(n.code,{children:"round_compressor.rounds_to_compress"})," (default 2) and ",(0,r.jsx)(n.code,{children:"round_compressor.rounds_to_retain"})," (default 3).\nTo enable the chat history summarization, you need to set ",(0,r.jsx)(n.code,{children:"planner.prompt_compression"}),"\nand ",(0,r.jsx)(n.code,{children:"code_generator.prompt_compression"})," to ",(0,r.jsx)(n.code,{children:"true"}),"."]})]})}function u(e={}){const{wrapper:n}={...(0,s.a)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(c,{...e})}):c(e)}},2327:(e,n,t)=>{t.d(n,{Z:()=>r});const r=t.p+"assets/files/compression_prompt-b02606dbb37ec1a39beb98a2d45cad99.yaml"},9585:(e,n,t)=>{t.d(n,{Z:()=>r});const r=t.p+"assets/files/compression_prompt-04e803fc1bad28b70d25b824281c0211.yaml"},1151:(e,n,t)=>{t.d(n,{Z:()=>i,a:()=>a});var r=t(7294);const s={},o=r.createContext(s);function a(e){const n=r.useContext(o);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),r.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/bbe97ef6.ecdea617.js b/assets/js/bbe97ef6.ecdea617.js deleted file mode 100644 index 90145c57..00000000 --- a/assets/js/bbe97ef6.ecdea617.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[5111],{8722:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>h,contentTitle:()=>a,default:()=>u,frontMatter:()=>o,metadata:()=>i,toc:()=>d});var r=t(5893),s=t(1151);const o={},a="Prompt Compression",i={id:"compression",title:"Prompt Compression",description:"After chatting for a few rounds, the chat history can become quite long, especially when we have code and execution results in it.",source:"@site/docs/compression.md",sourceDirName:".",slug:"/compression",permalink:"/TaskWeaver/docs/compression",draft:!1,unlisted:!1,editUrl:"https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/docs/compression.md",tags:[],version:"current",frontMatter:{},sidebar:"documentSidebar",previous:{title:"Customizing Examples",permalink:"/TaskWeaver/docs/example"},next:{title:"Configuration File",permalink:"/TaskWeaver/docs/configurations"}},h={},d=[{value:"Configurations",id:"configurations",level:2}];function c(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",li:"li",mermaid:"mermaid",p:"p",pre:"pre",ul:"ul",...(0,s.a)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h1,{id:"prompt-compression",children:"Prompt Compression"}),"\n",(0,r.jsx)(n.p,{children:"After chatting for a few rounds, the chat history can become quite long, especially when we have code and execution results in it.\nThis can cause the problem of exceeding the context window of the LLMs.\nTo solve the problem, one way is to summarize the chat history a few rounds ago,\nand only keep the latest rounds of the chat history."}),"\n",(0,r.jsx)(n.p,{children:"Another way is to use a vector database to store the chat history entries, and only retrieve the last few rounds of the relevant\npart given the current user request. However, in TaskWeaver, code is also part of the chat history.\nIt is not an option to skip some intermediate code and execution results in order to correctly\ngenerate the code for the current user request. Therefore, we choose the first way to solve the problem."}),"\n",(0,r.jsx)(n.p,{children:"The following figure shows the idea of chat history summarization where the chat history is divided into two parts:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Rounds to compress: this part is summarized and only the summary is kept in the chat history. If the context_summary\nalready exists, a new summary is generated based on the previous summary adding the rounds to be summarized."}),"\n",(0,r.jsx)(n.li,{children:"Rounds to retain: this part is kept in the chat history without summarization."}),"\n"]}),"\n",(0,r.jsx)(n.mermaid,{value:" flowchart LR\n ConversationSummary--\x3eRound1\n subgraph Rounds to compress \n Round1--\x3eRound2\n end\n subgraph Rounds to retain\n Round2--\x3eRound3--\x3eRound4--\x3eRound5 \n end"}),"\n",(0,r.jsxs)(n.p,{children:["Imagine that, at the beginning, the ConversationSummary is empty.\nOnce the chat history reaches the ",(0,r.jsx)(n.code,{children:"rounds_to_compress"})," (default 2) rounds plus ",(0,r.jsx)(n.code,{children:"rounds_to_retain"})," (default 3) rounds,\nthe ConversationSummary is generated based on the ",(0,r.jsx)(n.code,{children:"rounds_to_compress"})," rounds and the ",(0,r.jsx)(n.code,{children:"rounds_to_retain"})," rounds are kept in the chat history.\nAfter that, there will be only ",(0,r.jsx)(n.code,{children:"rounds_to_retain"})," rounds in the chat history.\nThe next time the chat history reaches the ",(0,r.jsx)(n.code,{children:"rounds_to_compress"})," rounds plus ",(0,r.jsx)(n.code,{children:"rounds_to_retain"})," rounds,\nthe ConversationSummary is generated based on the ",(0,r.jsx)(n.code,{children:"rounds_to_compress"})," rounds and the previous ConversationSummary.\nWe use these two parameters to control the frequency of the chat history summarization."]}),"\n",(0,r.jsx)(n.p,{children:"An example of the chat history summarization in the Code Generator is shown below:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "ConversationSummary": "The user requested the generation of 100 random numbers, which was successfully executed. Then, the user asked to show the top 5 largest numbers from the generated random numbers. The assistant provided a code snippet to sort the generated random numbers in descending order and select the top 5 largest numbers, which was also successfully executed. After that, the user requested to plot the distribution of the 100 numbers, which was successfully executed. The user then asked to count the frequency of numbers in each bin of the histogram and identify the bin with the most numbers for the 0.1 bin width, which was also successfully executed.",\n "Variables": [\n {\n "name": "random_numbers_100",\n "type": "numpy array",\n "description": "An array containing 100 random numbers generated using np.random.rand()"\n },\n {\n "name": "top_5_largest",\n "type": "numpy array",\n "description": "An array containing the top 5 largest numbers from the generated random numbers"\n }\n ]\n}\n'})}),"\n",(0,r.jsx)(n.p,{children:"The JSON object has two fields:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"ConversationSummary: the summary of the chat history."}),"\n",(0,r.jsx)(n.li,{children:"Variables: the variables in the chat history that could be used in the current user request."}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"The chat history summary of the Planner has only the ConversationSummary field."}),"\n",(0,r.jsx)(n.p,{children:"The actual code generated in the summarized rounds is ignored and only the variables are kept in the summary\nso that the LLM can still refer the these variables in future code generation."}),"\n",(0,r.jsxs)(n.p,{children:["One thing to note is that chat history summarization requires call the LLM which incurs additional latency and cost.\nThe prompts for chat history summarization could be found for ",(0,r.jsx)(n.a,{target:"_blank",href:t(9585).Z+"",children:"planner"}),"\nand ",(0,r.jsx)(n.a,{target:"_blank",href:t(2327).Z+"",children:"code generator"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"configurations",children:"Configurations"}),"\n",(0,r.jsxs)(n.p,{children:["As explained above, there are two parameters in controlling the chat history summarization:\n",(0,r.jsx)(n.code,{children:"round_compressor.rounds_to_compress"})," (default 2) and ",(0,r.jsx)(n.code,{children:"round_compressor.rounds_to_retain"})," (default 3).\nTo enable the chat history summarization, you need to set ",(0,r.jsx)(n.code,{children:"planner.prompt_compression"}),"\nand ",(0,r.jsx)(n.code,{children:"code_generator.prompt_compression"})," to ",(0,r.jsx)(n.code,{children:"true"}),"."]})]})}function u(e={}){const{wrapper:n}={...(0,s.a)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(c,{...e})}):c(e)}},2327:(e,n,t)=>{t.d(n,{Z:()=>r});const r=t.p+"assets/files/compression_prompt-b02606dbb37ec1a39beb98a2d45cad99.yaml"},9585:(e,n,t)=>{t.d(n,{Z:()=>r});const r=t.p+"assets/files/compression_prompt-04e803fc1bad28b70d25b824281c0211.yaml"},1151:(e,n,t)=>{t.d(n,{Z:()=>i,a:()=>a});var r=t(7294);const s={},o=r.createContext(s);function a(e){const n=r.useContext(o);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),r.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/be4af720.968ab647.js b/assets/js/be4af720.968ab647.js new file mode 100644 index 00000000..4135f4a4 --- /dev/null +++ b/assets/js/be4af720.968ab647.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[8654],{3172:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>i,contentTitle:()=>l,default:()=>h,frontMatter:()=>r,metadata:()=>a,toc:()=>c});var s=t(5893),o=t(1151);const r={},l="QWen",a={id:"llms/qwen",title:"QWen",description:"How to use QWen API",source:"@site/docs/llms/qwen.md",sourceDirName:"llms",slug:"/llms/qwen",permalink:"/TaskWeaver/docs/llms/qwen",draft:!1,unlisted:!1,editUrl:"https://github.com/microsoft/TaskWeaver/tree/docs/website/docs/llms/qwen.md",tags:[],version:"current",frontMatter:{},sidebar:"documentSidebar",previous:{title:"Gemini",permalink:"/TaskWeaver/docs/llms/geni"},next:{title:"Plugin Introduction",permalink:"/TaskWeaver/docs/plugin/plugin_intro"}},i={},c=[{value:"How to use QWen API",id:"how-to-use-qwen-api",level:2}];function d(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",...(0,o.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h1,{id:"qwen",children:"QWen"}),"\n",(0,s.jsx)(n.h2,{id:"how-to-use-qwen-api",children:"How to use QWen API"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["Go to ",(0,s.jsx)(n.a,{href:"https://help.aliyun.com/zh/dashscope/developer-reference/activate-dashscope-and-create-an-api-key?spm=a2c4g.11186623.0.0.7b5749d72j3SYU",children:"QWen"})," and register an account and get the API key."]}),"\n",(0,s.jsxs)(n.li,{children:["Run ",(0,s.jsx)(n.code,{children:"pip install dashscope"})," to install the required packages."]}),"\n",(0,s.jsxs)(n.li,{children:["Add the following configuration to ",(0,s.jsx)(n.code,{children:"taskweaver_config.json"}),":"]}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{\n "llm.api_type": "qwen",\n "llm.model": "qwen-max", \n "llm.api_key": "YOUR_API_KEY"\n}\n'})}),"\n",(0,s.jsxs)(n.p,{children:["NOTE: ",(0,s.jsx)(n.code,{children:"llm.model"})," is the model name of QWen LLM API.\nYou can find the model name in the ",(0,s.jsx)(n.a,{href:"https://help.aliyun.com/zh/dashscope/developer-reference/model-square/?spm=a2c4g.11186623.0.0.35a36ffdt97ljI",children:"QWen LLM model list"}),"."]}),"\n",(0,s.jsxs)(n.ol,{start:"4",children:["\n",(0,s.jsxs)(n.li,{children:["Start TaskWeaver and chat with TaskWeaver.\nYou can refer to the ",(0,s.jsx)(n.a,{href:"/TaskWeaver/docs/quickstart",children:"Quick Start"})," for more details."]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,o.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},1151:(e,n,t)=>{t.d(n,{Z:()=>a,a:()=>l});var s=t(7294);const o={},r=s.createContext(o);function l(e){const n=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:l(e.components),s.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/be4af720.c0d4e1ad.js b/assets/js/be4af720.c0d4e1ad.js deleted file mode 100644 index cae6320f..00000000 --- a/assets/js/be4af720.c0d4e1ad.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[8654],{3172:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>i,contentTitle:()=>r,default:()=>h,frontMatter:()=>a,metadata:()=>l,toc:()=>c});var s=t(5893),o=t(1151);const a={},r="QWen",l={id:"llms/qwen",title:"QWen",description:"How to use QWen API",source:"@site/docs/llms/qwen.md",sourceDirName:"llms",slug:"/llms/qwen",permalink:"/TaskWeaver/docs/llms/qwen",draft:!1,unlisted:!1,editUrl:"https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/docs/llms/qwen.md",tags:[],version:"current",frontMatter:{},sidebar:"documentSidebar",previous:{title:"Gemini",permalink:"/TaskWeaver/docs/llms/geni"},next:{title:"Plugin Introduction",permalink:"/TaskWeaver/docs/plugin/plugin_intro"}},i={},c=[{value:"How to use QWen API",id:"how-to-use-qwen-api",level:2}];function d(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",...(0,o.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h1,{id:"qwen",children:"QWen"}),"\n",(0,s.jsx)(n.h2,{id:"how-to-use-qwen-api",children:"How to use QWen API"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["Go to ",(0,s.jsx)(n.a,{href:"https://help.aliyun.com/zh/dashscope/developer-reference/activate-dashscope-and-create-an-api-key?spm=a2c4g.11186623.0.0.7b5749d72j3SYU",children:"QWen"})," and register an account and get the API key."]}),"\n",(0,s.jsxs)(n.li,{children:["Run ",(0,s.jsx)(n.code,{children:"pip install dashscope"})," to install the required packages."]}),"\n",(0,s.jsxs)(n.li,{children:["Add the following configuration to ",(0,s.jsx)(n.code,{children:"taskweaver_config.json"}),":"]}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{\n "llm.api_type": "qwen",\n "llm.model": "qwen-max", \n "llm.api_key": "YOUR_API_KEY"\n}\n'})}),"\n",(0,s.jsxs)(n.p,{children:["NOTE: ",(0,s.jsx)(n.code,{children:"llm.model"})," is the model name of QWen LLM API.\nYou can find the model name in the ",(0,s.jsx)(n.a,{href:"https://help.aliyun.com/zh/dashscope/developer-reference/model-square/?spm=a2c4g.11186623.0.0.35a36ffdt97ljI",children:"QWen LLM model list"}),"."]}),"\n",(0,s.jsxs)(n.ol,{start:"4",children:["\n",(0,s.jsxs)(n.li,{children:["Start TaskWeaver and chat with TaskWeaver.\nYou can refer to the ",(0,s.jsx)(n.a,{href:"/TaskWeaver/docs/quickstart",children:"Quick Start"})," for more details."]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,o.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},1151:(e,n,t)=>{t.d(n,{Z:()=>l,a:()=>r});var s=t(7294);const o={},a=s.createContext(o);function r(e){const n=s.useContext(a);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),s.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/c4f5d8e4.87d5cbe9.js b/assets/js/c4f5d8e4.87d5cbe9.js deleted file mode 100644 index d3631afd..00000000 --- a/assets/js/c4f5d8e4.87d5cbe9.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[4195],{9722:(e,a,t)=>{t.d(a,{Z:()=>c});var l,r=t(7294);function n(){return n=Object.assign?Object.assign.bind():function(e){for(var a=1;a{let{title:a,titleId:t,...c}=e;return r.createElement("svg",n({xmlns:"http://www.w3.org/2000/svg",width:1088,height:687.962,viewBox:"0 0 1088 687.962","aria-labelledby":t},c),void 0===a?r.createElement("title",{id:t},"Easy to Use"):a?r.createElement("title",{id:t},a):null,l||(l=r.createElement("g",{"data-name":"Group 12"},r.createElement("g",{"data-name":"Group 11"},r.createElement("path",{"data-name":"Path 83",d:"M961.81 454.442c-5.27 45.15-16.22 81.4-31.25 110.31-20 38.52-54.21 54.04-84.77 70.28a193.275 193.275 0 0 1-27.46 11.94c-55.61 19.3-117.85 14.18-166.74 3.99a657.282 657.282 0 0 0-104.09-13.16q-14.97-.675-29.97-.67c-15.42.02-293.07 5.29-360.67-131.57-16.69-33.76-28.13-75-32.24-125.27-11.63-142.12 52.29-235.46 134.74-296.47 155.97-115.41 369.76-110.57 523.43 7.88 102.36 78.9 198.2 198.31 179.02 362.74Z",fill:"#3f3d56"}),r.createElement("path",{"data-name":"Path 84",d:"M930.56 564.752c-20 38.52-47.21 64.04-77.77 80.28a193.272 193.272 0 0 1-27.46 11.94c-55.61 19.3-117.85 14.18-166.74 3.99a657.3 657.3 0 0 0-104.09-13.16q-14.97-.675-29.97-.67-23.13.03-46.25 1.72c-100.17 7.36-253.82-6.43-321.42-143.29L326 177.962l62.95 161.619 20.09 51.59 55.37-75.98L493 275.962l130.2 149.27 36.8-81.27 254.78 207.919 14.21 11.59Z",fill:"#f2f2f2"}),r.createElement("path",{"data-name":"Path 85",d:"m302 282.962 26-57 36 83-31-60Z",opacity:.1}),r.createElement("path",{"data-name":"Path 86",d:"M554.5 647.802q-14.97-.675-29.97-.67l-115.49-255.96Z",opacity:.1}),r.createElement("path",{"data-name":"Path 87",d:"M464.411 315.191 493 292.962l130 150-132-128Z",opacity:.1}),r.createElement("path",{"data-name":"Path 88",d:"M852.79 645.032a193.265 193.265 0 0 1-27.46 11.94L623.2 425.232Z",opacity:.1}),r.createElement("circle",{"data-name":"Ellipse 11",cx:3,cy:3,r:3,transform:"translate(479 98.962)",fill:"#f2f2f2"}),r.createElement("circle",{"data-name":"Ellipse 12",cx:3,cy:3,r:3,transform:"translate(396 201.962)",fill:"#f2f2f2"}),r.createElement("circle",{"data-name":"Ellipse 13",cx:2,cy:2,r:2,transform:"translate(600 220.962)",fill:"#f2f2f2"}),r.createElement("circle",{"data-name":"Ellipse 14",cx:2,cy:2,r:2,transform:"translate(180 265.962)",fill:"#f2f2f2"}),r.createElement("circle",{"data-name":"Ellipse 15",cx:2,cy:2,r:2,transform:"translate(612 96.962)",fill:"#f2f2f2"}),r.createElement("circle",{"data-name":"Ellipse 16",cx:2,cy:2,r:2,transform:"translate(736 192.962)",fill:"#f2f2f2"}),r.createElement("circle",{"data-name":"Ellipse 17",cx:2,cy:2,r:2,transform:"translate(858 344.962)",fill:"#f2f2f2"}),r.createElement("path",{"data-name":"Path 89",d:"M306 121.222h-2.76v-2.76h-1.48v2.76H299v1.478h2.76v2.759h1.48V122.7H306Z",fill:"#f2f2f2"}),r.createElement("path",{"data-name":"Path 90",d:"M848 424.222h-2.76v-2.76h-1.48v2.76H841v1.478h2.76v2.759h1.48V425.7H848Z",fill:"#f2f2f2"}),r.createElement("path",{"data-name":"Path 91",d:"M1088 613.962c0 16.569-243.557 74-544 74s-544-57.431-544-74 243.557 14 544 14 544-30.568 544-14Z",fill:"#3f3d56"}),r.createElement("path",{"data-name":"Path 92",d:"M1088 613.962c0 16.569-243.557 74-544 74s-544-57.431-544-74 243.557 14 544 14 544-30.568 544-14Z",opacity:.1}),r.createElement("ellipse",{"data-name":"Ellipse 18",cx:544,cy:30,rx:544,ry:30,transform:"translate(0 583.962)",fill:"#3f3d56"}),r.createElement("path",{"data-name":"Path 93",d:"M568 571.962c0 33.137-14.775 24-33 24s-33 9.137-33-24 33-96 33-96 33 62.863 33 96Z",fill:"#ff6584"}),r.createElement("path",{"data-name":"Path 94",d:"M550 584.641c0 15.062-6.716 10.909-15 10.909s-15 4.153-15-10.909 15-43.636 15-43.636 15 28.576 15 43.636Z",opacity:.1}),r.createElement("rect",{"data-name":"Rectangle 97",width:92,height:18,rx:9,transform:"translate(489 604.962)",fill:"#2f2e41"}),r.createElement("rect",{"data-name":"Rectangle 98",width:92,height:18,rx:9,transform:"translate(489 586.962)",fill:"#2f2e41"}),r.createElement("path",{"data-name":"Path 95",d:"M137 490.528c0 55.343 34.719 100.126 77.626 100.126",fill:"#3f3d56"}),r.createElement("path",{"data-name":"Path 96",d:"M214.626 590.654c0-55.965 38.745-101.251 86.626-101.251",fill:"#6c63ff"}),r.createElement("path",{"data-name":"Path 97",d:"M165.125 495.545c0 52.57 22.14 95.109 49.5 95.109",fill:"#6c63ff"}),r.createElement("path",{"data-name":"Path 98",d:"M214.626 590.654c0-71.511 44.783-129.377 100.126-129.377",fill:"#3f3d56"}),r.createElement("path",{"data-name":"Path 99",d:"M198.3 591.36s11.009-.339 14.326-2.7 16.934-5.183 17.757-1.395 16.544 18.844 4.115 18.945-28.879-1.936-32.19-3.953-4.008-10.897-4.008-10.897Z",fill:"#a8a8a8"}),r.createElement("path",{"data-name":"Path 100",d:"M234.716 604.89c-12.429.1-28.879-1.936-32.19-3.953-2.522-1.536-3.527-7.048-3.863-9.591l-.368.014s.7 8.879 4.009 10.9 19.761 4.053 32.19 3.953c3.588-.029 4.827-1.305 4.759-3.2-.498 1.142-1.867 1.855-4.537 1.877Z",opacity:.2}),r.createElement("path",{"data-name":"Path 101",d:"M721.429 527.062c0 38.029 23.857 68.8 53.341 68.8",fill:"#3f3d56"}),r.createElement("path",{"data-name":"Path 102",d:"M774.769 595.863c0-38.456 26.623-69.575 59.525-69.575",fill:"#6c63ff"}),r.createElement("path",{"data-name":"Path 103",d:"M740.755 530.509c0 36.124 15.213 65.354 34.014 65.354",fill:"#6c63ff"}),r.createElement("path",{"data-name":"Path 104",d:"M774.769 595.863c0-49.139 30.773-88.9 68.8-88.9",fill:"#3f3d56"}),r.createElement("path",{"data-name":"Path 105",d:"M763.548 596.348s7.565-.233 9.844-1.856 11.636-3.562 12.2-.958 11.368 12.949 2.828 13.018-19.844-1.33-22.119-2.716-2.753-7.488-2.753-7.488Z",fill:"#a8a8a8"}),r.createElement("path",{"data-name":"Path 106",d:"M788.574 605.645c-8.54.069-19.844-1.33-22.119-2.716-1.733-1.056-2.423-4.843-2.654-6.59l-.253.01s.479 6.1 2.755 7.487 13.579 2.785 22.119 2.716c2.465-.02 3.317-.9 3.27-2.2-.343.788-1.283 1.278-3.118 1.293Z",opacity:.2}),r.createElement("path",{"data-name":"Path 107",d:"M893.813 618.699s11.36-1.729 14.5-4.591 16.89-7.488 18.217-3.667 19.494 17.447 6.633 19.107-30.153 1.609-33.835-.065-5.515-10.784-5.515-10.784Z",fill:"#a8a8a8"}),r.createElement("path",{"data-name":"Path 108",d:"M933.228 628.154c-12.86 1.659-30.153 1.609-33.835-.065-2.8-1.275-4.535-6.858-5.2-9.45l-.379.061s1.833 9.109 5.516 10.783 20.975 1.725 33.835.065c3.712-.479 4.836-1.956 4.529-3.906-.375 1.246-1.703 2.156-4.466 2.512Z",opacity:.2}),r.createElement("path",{"data-name":"Path 109",d:"M614.26 617.881s9.587-1.459 12.237-3.875 14.255-6.32 15.374-3.095 16.452 14.725 5.6 16.125-25.448 1.358-28.555-.055-4.656-9.1-4.656-9.1Z",fill:"#a8a8a8"}),r.createElement("path",{"data-name":"Path 110",d:"M647.524 625.856c-10.853 1.4-25.448 1.358-28.555-.055-2.367-1.076-3.827-5.788-4.39-7.976l-.32.051s1.547 7.687 4.655 9.1 17.7 1.456 28.555.055c3.133-.4 4.081-1.651 3.822-3.3-.314 1.057-1.435 1.825-3.767 2.125Z",opacity:.2}),r.createElement("path",{"data-name":"Path 111",d:"M122.389 613.09s7.463-1.136 9.527-3.016 11.1-4.92 11.969-2.409 12.808 11.463 4.358 12.553-19.811 1.057-22.23-.043-3.624-7.085-3.624-7.085Z",fill:"#a8a8a8"}),r.createElement("path",{"data-name":"Path 112",d:"M148.285 619.302c-8.449 1.09-19.811 1.057-22.23-.043-1.842-.838-2.979-4.506-3.417-6.209l-.249.04s1.2 5.984 3.624 7.085 13.781 1.133 22.23.043c2.439-.315 3.177-1.285 2.976-2.566-.246.818-1.119 1.416-2.934 1.65Z",opacity:.2}),r.createElement("path",{"data-name":"Path 113",d:"M383.7 601.318c0 30.22-42.124 20.873-93.7 20.873s-93.074 9.347-93.074-20.873 42.118-36.793 93.694-36.793 93.08 6.573 93.08 36.793Z",opacity:.1}),r.createElement("path",{"data-name":"Path 114",d:"M383.7 593.881c0 30.22-42.124 20.873-93.7 20.873s-93.074 9.347-93.074-20.873 42.114-36.8 93.69-36.8 93.084 6.576 93.084 36.8Z",fill:"#3f3d56"})),r.createElement("path",{"data-name":"Path 40",d:"M360.175 475.732h91.791v37.153h-91.791Z",fill:"#fff",fillRule:"evenodd"}),r.createElement("path",{"data-name":"Path 41",d:"M277.126 597.026a21.828 21.828 0 0 1-18.908-10.927 21.829 21.829 0 0 0 18.908 32.782h21.855v-21.855Z",fill:"#3ecc5f",fillRule:"evenodd"}),r.createElement("path",{"data-name":"Path 42",d:"m375.451 481.607 76.514-4.782v-10.928a21.854 21.854 0 0 0-21.855-21.855h-98.347l-2.732-4.735a3.154 3.154 0 0 0-5.464 0l-2.732 4.732-2.732-4.732a3.154 3.154 0 0 0-5.464 0l-2.732 4.732-2.731-4.732a3.154 3.154 0 0 0-5.464 0l-2.732 4.735h-.071l-4.526-4.525a3.153 3.153 0 0 0-5.276 1.414l-1.5 5.577-5.674-1.521a3.154 3.154 0 0 0-3.863 3.864l1.52 5.679-5.575 1.494a3.155 3.155 0 0 0-1.416 5.278l4.526 4.526v.07l-4.735 2.731a3.154 3.154 0 0 0 0 5.464l4.732 2.732-4.732 2.732a3.154 3.154 0 0 0 0 5.464l4.732 2.732-4.732 2.731a3.154 3.154 0 0 0 0 5.464l4.732 2.732-4.732 2.727a3.154 3.154 0 0 0 0 5.464l4.735 2.736-4.735 2.732a3.154 3.154 0 0 0 0 5.464l4.732 2.732-4.732 2.732a3.154 3.154 0 0 0 0 5.464l4.732 2.732-4.732 2.731a3.154 3.154 0 0 0 0 5.464l4.732 2.732-4.732 2.732a3.154 3.154 0 0 0 0 5.464l4.732 2.732-4.732 2.731a3.154 3.154 0 0 0 0 5.464l4.732 2.732-4.732 2.731a3.154 3.154 0 0 0 0 5.464l4.732 2.732-4.732 2.735a3.154 3.154 0 0 0 0 5.464l4.732 2.732-4.732 2.728a3.154 3.154 0 0 0 0 5.464l4.732 2.732a21.854 21.854 0 0 0 21.858 21.855h131.13a21.854 21.854 0 0 0 21.855-21.855v-87.42l-76.514-4.782a11.632 11.632 0 0 1 0-23.219",fill:"#3ecc5f",fillRule:"evenodd"}),r.createElement("path",{"data-name":"Path 43",d:"M408.255 618.882h32.782v-43.71h-32.782Z",fill:"#3ecc5f",fillRule:"evenodd"}),r.createElement("path",{"data-name":"Path 44",d:"M462.893 591.563a5.438 5.438 0 0 0-.7.07c-.042-.164-.081-.329-.127-.493a5.457 5.457 0 1 0-5.4-9.372q-.181-.185-.366-.367a5.454 5.454 0 1 0-9.384-5.4c-.162-.046-.325-.084-.486-.126a5.467 5.467 0 1 0-10.788 0c-.162.042-.325.08-.486.126a5.457 5.457 0 1 0-9.384 5.4 21.843 21.843 0 1 0 36.421 21.02 5.452 5.452 0 1 0 .7-10.858",fill:"#44d860",fillRule:"evenodd"}),r.createElement("path",{"data-name":"Path 45",d:"M419.183 553.317h32.782v-21.855h-32.782Z",fill:"#3ecc5f",fillRule:"evenodd"}),r.createElement("path",{"data-name":"Path 46",d:"M462.893 545.121a2.732 2.732 0 1 0 0-5.464 2.811 2.811 0 0 0-.349.035c-.022-.082-.04-.164-.063-.246a2.733 2.733 0 0 0-1.052-5.253 2.7 2.7 0 0 0-1.648.566q-.09-.093-.184-.184a2.7 2.7 0 0 0 .553-1.633 2.732 2.732 0 0 0-5.245-1.07 10.928 10.928 0 1 0 0 21.031 2.732 2.732 0 0 0 5.245-1.07 2.7 2.7 0 0 0-.553-1.633q.093-.09.184-.184a2.7 2.7 0 0 0 1.648.566 2.732 2.732 0 0 0 1.052-5.253c.023-.081.042-.164.063-.246a2.814 2.814 0 0 0 .349.035",fill:"#44d860",fillRule:"evenodd"}),r.createElement("path",{"data-name":"Path 47",d:"M320.836 479.556a2.732 2.732 0 0 1-2.732-2.732 8.2 8.2 0 0 0-16.391 0 2.732 2.732 0 0 1-5.464 0 13.66 13.66 0 0 1 27.319 0 2.732 2.732 0 0 1-2.732 2.732",fillRule:"evenodd"}),r.createElement("path",{"data-name":"Path 48",d:"M364.546 618.881h65.565a21.854 21.854 0 0 0 21.855-21.855v-76.492h-65.565a21.854 21.854 0 0 0-21.855 21.855Z",fill:"#ffff50",fillRule:"evenodd"}),r.createElement("path",{"data-name":"Path 49",d:"M435.596 554.41h-54.681a1.093 1.093 0 1 1 0-2.185h54.681a1.093 1.093 0 0 1 0 2.185m0 21.855h-54.681a1.093 1.093 0 1 1 0-2.186h54.681a1.093 1.093 0 0 1 0 2.186m0 21.855h-54.681a1.093 1.093 0 1 1 0-2.185h54.681a1.093 1.093 0 0 1 0 2.185m0-54.434h-54.681a1.093 1.093 0 1 1 0-2.185h54.681a1.093 1.093 0 0 1 0 2.185m0 21.652h-54.681a1.093 1.093 0 1 1 0-2.186h54.681a1.093 1.093 0 0 1 0 2.186m0 21.855h-54.681a1.093 1.093 0 1 1 0-2.186h54.681a1.093 1.093 0 0 1 0 2.186m16.369-100.959c-.013 0-.024-.007-.037-.005-3.377.115-4.974 3.492-6.384 6.472-1.471 3.114-2.608 5.139-4.473 5.078-2.064-.074-3.244-2.406-4.494-4.874-1.436-2.835-3.075-6.049-6.516-5.929-3.329.114-4.932 3.053-6.346 5.646-1.5 2.762-2.529 4.442-4.5 4.364-2.106-.076-3.225-1.972-4.52-4.167-1.444-2.443-3.112-5.191-6.487-5.1-3.272.113-4.879 2.606-6.3 4.808-1.5 2.328-2.552 3.746-4.551 3.662-2.156-.076-3.27-1.65-4.558-3.472-1.447-2.047-3.077-4.363-6.442-4.251-3.2.109-4.807 2.153-6.224 3.954-1.346 1.709-2.4 3.062-4.621 2.977a1.094 1.094 0 0 0-.079 2.186c3.3.11 4.967-1.967 6.417-3.81 1.286-1.635 2.4-3.045 4.582-3.12 2.1-.09 3.091 1.218 4.584 3.327 1.417 2 3.026 4.277 6.263 4.394 3.391.114 5.022-2.42 6.467-4.663 1.292-2 2.406-3.734 4.535-3.807 1.959-.073 3.026 1.475 4.529 4.022 1.417 2.4 3.023 5.121 6.324 5.241 3.415.118 5.064-2.863 6.5-5.5 1.245-2.282 2.419-4.437 4.5-4.509 1.959-.046 2.981 1.743 4.492 4.732 1.412 2.79 3.013 5.95 6.365 6.071h.185c3.348 0 4.937-3.36 6.343-6.331 1.245-2.634 2.423-5.114 4.444-5.216Z",fillRule:"evenodd"}),r.createElement("path",{"data-name":"Path 50",d:"M342.691 618.882h43.71v-43.71h-43.71Z",fill:"#3ecc5f",fillRule:"evenodd"}),r.createElement("g",{"data-name":"Group 8",transform:"rotate(-14.98 2188.845 -1120.376)"},r.createElement("rect",{"data-name":"Rectangle 3",width:92.361,height:36.462,rx:2,fill:"#d8d8d8"}),r.createElement("g",{"data-name":"Group 2",transform:"translate(1.531 23.03)",fill:"#4a4a4a"},r.createElement("rect",{"data-name":"Rectangle 4",width:5.336,height:5.336,rx:1,transform:"translate(16.797)"}),r.createElement("rect",{"data-name":"Rectangle 5",width:5.336,height:5.336,rx:1,transform:"translate(23.12)"}),r.createElement("rect",{"data-name":"Rectangle 6",width:5.336,height:5.336,rx:1,transform:"translate(29.444)"}),r.createElement("rect",{"data-name":"Rectangle 7",width:5.336,height:5.336,rx:1,transform:"translate(35.768)"}),r.createElement("rect",{"data-name":"Rectangle 8",width:5.336,height:5.336,rx:1,transform:"translate(42.091)"}),r.createElement("rect",{"data-name":"Rectangle 9",width:5.336,height:5.336,rx:1,transform:"translate(48.415)"}),r.createElement("rect",{"data-name":"Rectangle 10",width:5.336,height:5.336,rx:1,transform:"translate(54.739)"}),r.createElement("rect",{"data-name":"Rectangle 11",width:5.336,height:5.336,rx:1,transform:"translate(61.063)"}),r.createElement("rect",{"data-name":"Rectangle 12",width:5.336,height:5.336,rx:1,transform:"translate(67.386)"}),r.createElement("path",{"data-name":"Path 51",d:"M1.093 0h13.425a1.093 1.093 0 0 1 1.093 1.093v3.15a1.093 1.093 0 0 1-1.093 1.093H1.093A1.093 1.093 0 0 1 0 4.243v-3.15A1.093 1.093 0 0 1 1.093 0ZM75 0h13.426a1.093 1.093 0 0 1 1.093 1.093v3.15a1.093 1.093 0 0 1-1.093 1.093H75a1.093 1.093 0 0 1-1.093-1.093v-3.15A1.093 1.093 0 0 1 75 0Z",fillRule:"evenodd"})),r.createElement("g",{"data-name":"Group 3",transform:"translate(1.531 10.261)",fill:"#4a4a4a"},r.createElement("path",{"data-name":"Path 52",d:"M1.093 0h5.125A1.093 1.093 0 0 1 7.31 1.093v3.149a1.093 1.093 0 0 1-1.092 1.093H1.093A1.093 1.093 0 0 1 0 4.242V1.093A1.093 1.093 0 0 1 1.093 0Z",fillRule:"evenodd"}),r.createElement("rect",{"data-name":"Rectangle 13",width:5.336,height:5.336,rx:1,transform:"translate(8.299)"}),r.createElement("rect",{"data-name":"Rectangle 14",width:5.336,height:5.336,rx:1,transform:"translate(14.623)"}),r.createElement("rect",{"data-name":"Rectangle 15",width:5.336,height:5.336,rx:1,transform:"translate(20.947)"}),r.createElement("rect",{"data-name":"Rectangle 16",width:5.336,height:5.336,rx:1,transform:"translate(27.271)"}),r.createElement("rect",{"data-name":"Rectangle 17",width:5.336,height:5.336,rx:1,transform:"translate(33.594)"}),r.createElement("rect",{"data-name":"Rectangle 18",width:5.336,height:5.336,rx:1,transform:"translate(39.918)"}),r.createElement("rect",{"data-name":"Rectangle 19",width:5.336,height:5.336,rx:1,transform:"translate(46.242)"}),r.createElement("rect",{"data-name":"Rectangle 20",width:5.336,height:5.336,rx:1,transform:"translate(52.565)"}),r.createElement("rect",{"data-name":"Rectangle 21",width:5.336,height:5.336,rx:1,transform:"translate(58.888)"}),r.createElement("rect",{"data-name":"Rectangle 22",width:5.336,height:5.336,rx:1,transform:"translate(65.212)"}),r.createElement("rect",{"data-name":"Rectangle 23",width:5.336,height:5.336,rx:1,transform:"translate(71.536)"}),r.createElement("rect",{"data-name":"Rectangle 24",width:5.336,height:5.336,rx:1,transform:"translate(77.859)"}),r.createElement("rect",{"data-name":"Rectangle 25",width:5.336,height:5.336,rx:1,transform:"translate(84.183)"})),r.createElement("g",{"data-name":"Group 4",transform:"rotate(180 45.525 4.773)",fill:"#4a4a4a"},r.createElement("path",{"data-name":"Path 53",d:"M1.093 0h5.126a1.093 1.093 0 0 1 1.093 1.093v3.15a1.093 1.093 0 0 1-1.093 1.093H1.093A1.093 1.093 0 0 1 0 4.243v-3.15A1.093 1.093 0 0 1 1.093 0Z",fillRule:"evenodd"}),r.createElement("rect",{"data-name":"Rectangle 26",width:5.336,height:5.336,rx:1,transform:"translate(8.299)"}),r.createElement("rect",{"data-name":"Rectangle 27",width:5.336,height:5.336,rx:1,transform:"translate(14.623)"}),r.createElement("rect",{"data-name":"Rectangle 28",width:5.336,height:5.336,rx:1,transform:"translate(20.947)"}),r.createElement("rect",{"data-name":"Rectangle 29",width:5.336,height:5.336,rx:1,transform:"translate(27.271)"}),r.createElement("rect",{"data-name":"Rectangle 30",width:5.336,height:5.336,rx:1,transform:"translate(33.594)"}),r.createElement("rect",{"data-name":"Rectangle 31",width:5.336,height:5.336,rx:1,transform:"translate(39.918)"}),r.createElement("rect",{"data-name":"Rectangle 32",width:5.336,height:5.336,rx:1,transform:"translate(46.242)"}),r.createElement("rect",{"data-name":"Rectangle 33",width:5.336,height:5.336,rx:1,transform:"translate(52.565)"}),r.createElement("rect",{"data-name":"Rectangle 34",width:5.336,height:5.336,rx:1,transform:"translate(58.889)"}),r.createElement("rect",{"data-name":"Rectangle 35",width:5.336,height:5.336,rx:1,transform:"translate(65.213)"}),r.createElement("rect",{"data-name":"Rectangle 36",width:5.336,height:5.336,rx:1,transform:"translate(71.537)"}),r.createElement("rect",{"data-name":"Rectangle 37",width:5.336,height:5.336,rx:1,transform:"translate(77.86)"}),r.createElement("rect",{"data-name":"Rectangle 38",width:5.336,height:5.336,rx:1,transform:"translate(84.183)"}),r.createElement("rect",{"data-name":"Rectangle 39",width:5.336,height:5.336,rx:1,transform:"translate(8.299)"}),r.createElement("rect",{"data-name":"Rectangle 40",width:5.336,height:5.336,rx:1,transform:"translate(14.623)"}),r.createElement("rect",{"data-name":"Rectangle 41",width:5.336,height:5.336,rx:1,transform:"translate(20.947)"}),r.createElement("rect",{"data-name":"Rectangle 42",width:5.336,height:5.336,rx:1,transform:"translate(27.271)"}),r.createElement("rect",{"data-name":"Rectangle 43",width:5.336,height:5.336,rx:1,transform:"translate(33.594)"}),r.createElement("rect",{"data-name":"Rectangle 44",width:5.336,height:5.336,rx:1,transform:"translate(39.918)"}),r.createElement("rect",{"data-name":"Rectangle 45",width:5.336,height:5.336,rx:1,transform:"translate(46.242)"}),r.createElement("rect",{"data-name":"Rectangle 46",width:5.336,height:5.336,rx:1,transform:"translate(52.565)"}),r.createElement("rect",{"data-name":"Rectangle 47",width:5.336,height:5.336,rx:1,transform:"translate(58.889)"}),r.createElement("rect",{"data-name":"Rectangle 48",width:5.336,height:5.336,rx:1,transform:"translate(65.213)"}),r.createElement("rect",{"data-name":"Rectangle 49",width:5.336,height:5.336,rx:1,transform:"translate(71.537)"}),r.createElement("rect",{"data-name":"Rectangle 50",width:5.336,height:5.336,rx:1,transform:"translate(77.86)"}),r.createElement("rect",{"data-name":"Rectangle 51",width:5.336,height:5.336,rx:1,transform:"translate(84.183)"})),r.createElement("g",{"data-name":"Group 6",fill:"#4a4a4a"},r.createElement("path",{"data-name":"Path 54",d:"M2.624 16.584h7.3a1.093 1.093 0 0 1 1.092 1.093v3.15a1.093 1.093 0 0 1-1.093 1.093h-7.3a1.093 1.093 0 0 1-1.092-1.093v-3.149a1.093 1.093 0 0 1 1.093-1.094Z",fillRule:"evenodd"}),r.createElement("g",{"data-name":"Group 5",transform:"translate(12.202 16.584)"},r.createElement("rect",{"data-name":"Rectangle 52",width:5.336,height:5.336,rx:1}),r.createElement("rect",{"data-name":"Rectangle 53",width:5.336,height:5.336,rx:1,transform:"translate(6.324)"}),r.createElement("rect",{"data-name":"Rectangle 54",width:5.336,height:5.336,rx:1,transform:"translate(12.647)"}),r.createElement("rect",{"data-name":"Rectangle 55",width:5.336,height:5.336,rx:1,transform:"translate(18.971)"}),r.createElement("rect",{"data-name":"Rectangle 56",width:5.336,height:5.336,rx:1,transform:"translate(25.295)"}),r.createElement("rect",{"data-name":"Rectangle 57",width:5.336,height:5.336,rx:1,transform:"translate(31.619)"}),r.createElement("rect",{"data-name":"Rectangle 58",width:5.336,height:5.336,rx:1,transform:"translate(37.942)"}),r.createElement("rect",{"data-name":"Rectangle 59",width:5.336,height:5.336,rx:1,transform:"translate(44.265)"}),r.createElement("rect",{"data-name":"Rectangle 60",width:5.336,height:5.336,rx:1,transform:"translate(50.589)"}),r.createElement("rect",{"data-name":"Rectangle 61",width:5.336,height:5.336,rx:1,transform:"translate(56.912)"}),r.createElement("rect",{"data-name":"Rectangle 62",width:5.336,height:5.336,rx:1,transform:"translate(63.236)"})),r.createElement("path",{"data-name":"Path 55",d:"M83.053 16.584h6.906a1.093 1.093 0 0 1 1.091 1.093v3.15a1.093 1.093 0 0 1-1.091 1.093h-6.907a1.093 1.093 0 0 1-1.093-1.093v-3.149a1.093 1.093 0 0 1 1.093-1.094Z",fillRule:"evenodd"})),r.createElement("g",{"data-name":"Group 7",transform:"translate(1.531 29.627)",fill:"#4a4a4a"},r.createElement("rect",{"data-name":"Rectangle 63",width:5.336,height:5.336,rx:1}),r.createElement("rect",{"data-name":"Rectangle 64",width:5.336,height:5.336,rx:1,transform:"translate(6.324)"}),r.createElement("rect",{"data-name":"Rectangle 65",width:5.336,height:5.336,rx:1,transform:"translate(12.647)"}),r.createElement("rect",{"data-name":"Rectangle 66",width:5.336,height:5.336,rx:1,transform:"translate(18.971)"}),r.createElement("path",{"data-name":"Path 56",d:"M26.387 0h30.422a1.093 1.093 0 0 1 1.093 1.093v3.151a1.093 1.093 0 0 1-1.093 1.093H26.387a1.093 1.093 0 0 1-1.093-1.093V1.093A1.093 1.093 0 0 1 26.387 0Zm33.594 0h3.942a1.093 1.093 0 0 1 1.093 1.093v3.151a1.093 1.093 0 0 1-1.093 1.093h-3.942a1.093 1.093 0 0 1-1.093-1.093V1.093A1.093 1.093 0 0 1 59.981 0Z",fillRule:"evenodd"}),r.createElement("rect",{"data-name":"Rectangle 67",width:5.336,height:5.336,rx:1,transform:"translate(66.003)"}),r.createElement("rect",{"data-name":"Rectangle 68",width:5.336,height:5.336,rx:1,transform:"translate(72.327)"}),r.createElement("rect",{"data-name":"Rectangle 69",width:5.336,height:5.336,rx:1,transform:"translate(84.183)"}),r.createElement("path",{"data-name":"Path 57",d:"M78.254 2.273v-1.18A1.093 1.093 0 0 1 79.347 0h3.15a1.093 1.093 0 0 1 1.093 1.093v1.18Z"}),r.createElement("path",{"data-name":"Path 58",d:"M83.591 3.063v1.18a1.093 1.093 0 0 1-1.093 1.093h-3.15a1.093 1.093 0 0 1-1.093-1.093v-1.18Z"})),r.createElement("rect",{"data-name":"Rectangle 70",width:88.927,height:2.371,rx:1.085,transform:"translate(1.925 1.17)",fill:"#4a4a4a"}),r.createElement("rect",{"data-name":"Rectangle 71",width:4.986,height:1.581,rx:.723,transform:"translate(4.1 1.566)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 72",width:4.986,height:1.581,rx:.723,transform:"translate(10.923 1.566)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 73",width:4.986,height:1.581,rx:.723,transform:"translate(16.173 1.566)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 74",width:4.986,height:1.581,rx:.723,transform:"translate(21.421 1.566)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 75",width:4.986,height:1.581,rx:.723,transform:"translate(26.671 1.566)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 76",width:4.986,height:1.581,rx:.723,transform:"translate(33.232 1.566)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 77",width:4.986,height:1.581,rx:.723,transform:"translate(38.48 1.566)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 78",width:4.986,height:1.581,rx:.723,transform:"translate(43.73 1.566)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 79",width:4.986,height:1.581,rx:.723,transform:"translate(48.978 1.566)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 80",width:4.986,height:1.581,rx:.723,transform:"translate(55.54 1.566)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 81",width:4.986,height:1.581,rx:.723,transform:"translate(60.788 1.566)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 82",width:4.986,height:1.581,rx:.723,transform:"translate(66.038 1.566)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 83",width:4.986,height:1.581,rx:.723,transform:"translate(72.599 1.566)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 84",width:4.986,height:1.581,rx:.723,transform:"translate(77.847 1.566)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 85",width:4.986,height:1.581,rx:.723,transform:"translate(83.097 1.566)",fill:"#d8d8d8",opacity:.136})),r.createElement("path",{"data-name":"Path 59",d:"M408.256 591.563a5.439 5.439 0 0 0-.7.07c-.042-.164-.081-.329-.127-.493a5.457 5.457 0 1 0-5.4-9.372q-.181-.185-.366-.367a5.454 5.454 0 1 0-9.384-5.4c-.162-.046-.325-.084-.486-.126a5.467 5.467 0 1 0-10.788 0c-.162.042-.325.08-.486.126a5.457 5.457 0 1 0-9.384 5.4 21.843 21.843 0 1 0 36.421 21.02 5.452 5.452 0 1 0 .7-10.858",fill:"#44d860",fillRule:"evenodd"}),r.createElement("path",{"data-name":"Path 60",d:"M342.691 553.317h43.71v-21.855h-43.71Z",fill:"#3ecc5f",fillRule:"evenodd"}),r.createElement("path",{"data-name":"Path 61",d:"M397.328 545.121a2.732 2.732 0 1 0 0-5.464 2.811 2.811 0 0 0-.349.035c-.022-.082-.04-.164-.063-.246a2.733 2.733 0 0 0-1.052-5.253 2.7 2.7 0 0 0-1.648.566q-.09-.093-.184-.184a2.7 2.7 0 0 0 .553-1.633 2.732 2.732 0 0 0-5.245-1.07 10.928 10.928 0 1 0 0 21.031 2.732 2.732 0 0 0 5.245-1.07 2.7 2.7 0 0 0-.553-1.633q.093-.09.184-.184a2.7 2.7 0 0 0 1.648.566 2.732 2.732 0 0 0 1.052-5.253c.023-.081.042-.164.063-.246a2.811 2.811 0 0 0 .349.035",fill:"#44d860",fillRule:"evenodd"}),r.createElement("path",{"data-name":"Path 62",d:"M408.256 464.531a2.967 2.967 0 0 1-.535-.055 2.754 2.754 0 0 1-.514-.153 2.838 2.838 0 0 1-.471-.251 4.139 4.139 0 0 1-.415-.339 3.2 3.2 0 0 1-.338-.415 2.7 2.7 0 0 1-.459-1.517 2.968 2.968 0 0 1 .055-.535 3.152 3.152 0 0 1 .152-.514 2.874 2.874 0 0 1 .252-.47 2.633 2.633 0 0 1 .753-.754 2.837 2.837 0 0 1 .471-.251 2.753 2.753 0 0 1 .514-.153 2.527 2.527 0 0 1 1.071 0 2.654 2.654 0 0 1 .983.4 4.139 4.139 0 0 1 .415.339 4.019 4.019 0 0 1 .339.415 2.786 2.786 0 0 1 .251.47 2.864 2.864 0 0 1 .208 1.049 2.77 2.77 0 0 1-.8 1.934 4.139 4.139 0 0 1-.415.339 2.722 2.722 0 0 1-1.519.459m21.855-1.366a2.789 2.789 0 0 1-1.935-.8 4.162 4.162 0 0 1-.338-.415 2.7 2.7 0 0 1-.459-1.519 2.789 2.789 0 0 1 .8-1.934 4.139 4.139 0 0 1 .415-.339 2.838 2.838 0 0 1 .471-.251 2.752 2.752 0 0 1 .514-.153 2.527 2.527 0 0 1 1.071 0 2.654 2.654 0 0 1 .983.4 4.139 4.139 0 0 1 .415.339 2.79 2.79 0 0 1 .8 1.934 3.069 3.069 0 0 1-.055.535 2.779 2.779 0 0 1-.153.514 3.885 3.885 0 0 1-.251.47 4.02 4.02 0 0 1-.339.415 4.138 4.138 0 0 1-.415.339 2.722 2.722 0 0 1-1.519.459",fillRule:"evenodd"}))))}},8066:(e,a,t)=>{t.d(a,{Z:()=>c});var l,r=t(7294);function n(){return n=Object.assign?Object.assign.bind():function(e){for(var a=1;a{let{title:a,titleId:t,...c}=e;return r.createElement("svg",n({xmlns:"http://www.w3.org/2000/svg",width:1041.277,height:554.141,viewBox:"0 0 1041.277 554.141","aria-labelledby":t},c),void 0===a?r.createElement("title",{id:t},"Powered by React"):a?r.createElement("title",{id:t},a):null,l||(l=r.createElement("g",{"data-name":"Group 24"},r.createElement("g",{"data-name":"Group 23",transform:"translate(-.011 -.035)"},r.createElement("path",{"data-name":"Path 299",d:"M961.48 438.21q-1.74 3.75-3.47 7.4-2.7 5.67-5.33 11.12c-.78 1.61-1.56 3.19-2.32 4.77-8.6 17.57-16.63 33.11-23.45 45.89a73.21 73.21 0 0 1-63.81 38.7l-151.65 1.65h-1.6l-13 .14-11.12.12-34.1.37h-1.38l-17.36.19h-.53l-107 1.16-95.51 1-11.11.12-69 .75h-.08l-44.75.48h-.48l-141.5 1.53-42.33.46a87.991 87.991 0 0 1-10.79-.54c-1.22-.14-2.44-.3-3.65-.49a87.38 87.38 0 0 1-51.29-27.54c-18.21-20.03-31.46-43.4-40.36-68.76q-1.93-5.49-3.6-11.12c-30.81-104.15 6.75-238.52 74.35-328.44q4.25-5.64 8.64-11l.07-.08c20.79-25.52 44.1-46.84 68.93-62 44-26.91 92.75-34.49 140.7-11.9 40.57 19.12 78.45 28.11 115.17 30.55 3.71.24 7.42.42 11.11.53 84.23 2.65 163.17-27.7 255.87-47.29 3.69-.78 7.39-1.55 11.12-2.28C763 .54 836.36-6.4 923.6 8.19a189.089 189.089 0 0 1 26.76 6.4q5.77 1.86 11.12 4c41.64 16.94 64.35 48.24 74 87.46q1.37 5.46 2.37 11.11c17.11 94.34-33 228.16-76.37 321.05Z",fill:"#f2f2f2"}),r.createElement("path",{"data-name":"Path 300",d:"M497.02 445.61a95.21 95.21 0 0 1-1.87 11.12h93.7v-11.12Zm-78.25 62.81 11.11-.09v-27.47c-3.81-.17-7.52-.34-11.11-.52Zm-232.92-62.81v11.12h198.5v-11.12Zm849.68-339.52h-74V18.6q-5.35-2.17-11.12-4v91.49H696.87V13.67c-3.73.73-7.43 1.5-11.12 2.28v90.14H429.88V63.24c-3.69-.11-7.4-.29-11.11-.53v43.38H162.9v-62c-24.83 15.16-48.14 36.48-68.93 62h-.07v.08q-4.4 5.4-8.64 11h8.64v328.44h-83q1.66 5.63 3.6 11.12h79.39v93.62a87 87 0 0 0 12.2 2.79c1.21.19 2.43.35 3.65.49a87.991 87.991 0 0 0 10.79.54l42.33-.46v-97h255.91v94.21l11.11-.12v-94.07h255.87v91.36l11.12-.12v-91.24h253.49v4.77c.76-1.58 1.54-3.16 2.32-4.77q2.63-5.45 5.33-11.12 1.73-3.64 3.47-7.4v-321h76.42q-1.01-5.69-2.37-11.12ZM162.9 445.61V117.17h255.87v328.44Zm267 0V117.17h255.85v328.44Zm520.48 0H696.87V117.17h253.49Z",opacity:.1}),r.createElement("path",{"data-name":"Path 301",d:"M863.09 533.65v13l-151.92 1.4-1.62.03-57.74.53-1.38.02-17.55.15h-.52l-106.98.99-175.61 1.63h-.15l-44.65.42-.48.01-198.4 1.82v-15l46.65-28 93.6-.78 2-.01.66-.01 2-.03 44.94-.37 2.01-.01.64-.01 2-.01 14.41-.12.38-.01 35.55-.3h.29l277.4-2.34 6.79-.05h.68l5.18-.05 37.65-.31 2-.03 1.85-.02h.96l11.71-.09 2.32-.03 3.11-.02 9.75-.09 15.47-.13 2-.02 3.48-.02h.65l74.71-.64Z",fill:"#65617d"}),r.createElement("path",{"data-name":"Path 302",d:"M863.09 533.65v13l-151.92 1.4-1.62.03-57.74.53-1.38.02-17.55.15h-.52l-106.98.99-175.61 1.63h-.15l-44.65.42-.48.01-198.4 1.82v-15l46.65-28 93.6-.78 2-.01.66-.01 2-.03 44.94-.37 2.01-.01.64-.01 2-.01 14.41-.12.38-.01 35.55-.3h.29l277.4-2.34 6.79-.05h.68l5.18-.05 37.65-.31 2-.03 1.85-.02h.96l11.71-.09 2.32-.03 3.11-.02 9.75-.09 15.47-.13 2-.02 3.48-.02h.65l74.71-.64Z",opacity:.2}),r.createElement("path",{"data-name":"Path 303",d:"M296.1 483.66v24.49a6.13 6.13 0 0 1-3.5 5.54 6 6 0 0 1-2.5.6l-34.9.74a6 6 0 0 1-2.7-.57 6.12 6.12 0 0 1-3.57-5.57v-25.23Z",fill:"#3f3d56"}),r.createElement("path",{"data-name":"Path 304",d:"M296.1 483.66v24.49a6.13 6.13 0 0 1-3.5 5.54 6 6 0 0 1-2.5.6l-34.9.74a6 6 0 0 1-2.7-.57 6.12 6.12 0 0 1-3.57-5.57v-25.23Z",opacity:.1}),r.createElement("path",{"data-name":"Path 305",d:"M298.1 483.66v24.49a6.13 6.13 0 0 1-3.5 5.54 6 6 0 0 1-2.5.6l-34.9.74a6 6 0 0 1-2.7-.57 6.12 6.12 0 0 1-3.57-5.57v-25.23Z",fill:"#3f3d56"}),r.createElement("path",{"data-name":"Rectangle 137",fill:"#3f3d56",d:"M680.92 483.65h47.17v31.5h-47.17z"}),r.createElement("path",{"data-name":"Rectangle 138",opacity:.1,d:"M680.92 483.65h47.17v31.5h-47.17z"}),r.createElement("path",{"data-name":"Rectangle 139",fill:"#3f3d56",d:"M678.92 483.65h47.17v31.5h-47.17z"}),r.createElement("path",{"data-name":"Path 306",d:"M298.09 483.65v4.97l-47.17 1.26v-6.23Z",opacity:.1}),r.createElement("path",{"data-name":"Path 307",d:"M381.35 312.36v168.2a4 4 0 0 1-3.85 3.95l-191.65 5.1h-.05a4 4 0 0 1-3.95-3.95v-173.3a4 4 0 0 1 3.95-3.95h191.6a4 4 0 0 1 3.95 3.95Z",fill:"#65617d"}),r.createElement("path",{"data-name":"Path 308",d:"M185.85 308.41v181.2h-.05a4 4 0 0 1-3.95-3.95v-173.3a4 4 0 0 1 3.95-3.95Z",opacity:.1}),r.createElement("path",{"data-name":"Path 309",d:"M194.59 319.15h177.5V467.4l-177.5 4Z",fill:"#39374d"}),r.createElement("path",{"data-name":"Path 310",d:"M726.09 483.65v6.41l-47.17-1.26v-5.15Z",opacity:.1}),r.createElement("path",{"data-name":"Path 311",d:"M788.35 312.36v173.3a4 4 0 0 1-4 3.95l-191.69-5.1a4 4 0 0 1-3.85-3.95v-168.2a4 4 0 0 1 3.95-3.95h191.6a4 4 0 0 1 3.99 3.95Z",fill:"#65617d"}),r.createElement("path",{"data-name":"Path 312",d:"M788.35 312.36v173.3a4 4 0 0 1-4 3.95v-181.2a4 4 0 0 1 4 3.95Z",opacity:.1}),r.createElement("path",{"data-name":"Path 313",d:"M775.59 319.15h-177.5V467.4l177.5 4Z",fill:"#39374d"}),r.createElement("path",{"data-name":"Path 314",d:"M583.85 312.36v168.2a4 4 0 0 1-3.85 3.95l-191.65 5.1a4 4 0 0 1-4-3.95v-173.3a4 4 0 0 1 3.95-3.95h191.6a4 4 0 0 1 3.95 3.95Z",fill:"#65617d"}),r.createElement("path",{"data-name":"Path 315",d:"M397.09 319.15h177.5V467.4l-177.5 4Z",fill:"#4267b2"}),r.createElement("path",{"data-name":"Path 316",d:"M863.09 533.65v13l-151.92 1.4-1.62.03-57.74.53-1.38.02-17.55.15h-.52l-106.98.99-175.61 1.63h-.15l-44.65.42-.48.01-198.4 1.82v-15l202.51-1.33h.48l40.99-.28h.19l283.08-1.87h.29l.17-.01h.47l4.79-.03h1.46l74.49-.5 4.4-.02.98-.01Z",opacity:.1}),r.createElement("circle",{"data-name":"Ellipse 111",cx:51.33,cy:51.33,r:51.33,transform:"translate(435.93 246.82)",fill:"#fbbebe"}),r.createElement("path",{"data-name":"Path 317",d:"M538.6 377.16s-99.5 12-90 0c3.44-4.34 4.39-17.2 4.2-31.85-.06-4.45-.22-9.06-.45-13.65-1.1-22-3.75-43.5-3.75-43.5s87-41 77-8.5c-4 13.13-2.69 31.57.35 48.88.89 5.05 1.92 10 3 14.7a344.66 344.66 0 0 0 9.65 33.92Z",fill:"#fbbebe"}),r.createElement("path",{"data-name":"Path 318",d:"M506.13 373.09c11.51-2.13 23.7-6 34.53-1.54 2.85 1.17 5.47 2.88 8.39 3.86s6.12 1.22 9.16 1.91c10.68 2.42 19.34 10.55 24.9 20s8.44 20.14 11.26 30.72l6.9 25.83c6 22.45 12 45.09 13.39 68.3a2437.506 2437.506 0 0 1-250.84 1.43c5.44-10.34 11-21.31 10.54-33s-7.19-23.22-4.76-34.74c1.55-7.34 6.57-13.39 9.64-20.22 8.75-19.52 1.94-45.79 17.32-60.65 6.92-6.68 17-9.21 26.63-8.89 12.28.41 24.85 4.24 37 6.11 15.56 2.36 30.26 3.76 45.94.88Z",fill:"#ff6584"}),r.createElement("path",{"data-name":"Path 319",d:"m637.03 484.26-.1 1.43v.1l-.17 2.3-1.33 18.51-1.61 22.3-.46 6.28-1 13.44v.17l-107 1-175.59 1.9v.84h-.14v-1.12l.45-14.36.86-28.06.74-23.79.07-2.37a10.53 10.53 0 0 1 11.42-10.17c4.72.4 10.85.89 18.18 1.41l3 .22c42.33 2.94 120.56 6.74 199.5 2 1.66-.09 3.33-.19 5-.31 12.24-.77 24.47-1.76 36.58-3a10.53 10.53 0 0 1 11.6 11.23Z",opacity:.1}),r.createElement("path",{"data-name":"Path 320",d:"M349.74 552.53v-.84l175.62-1.91 107-1h.3v-.17l1-13.44.43-6 1.64-22.61 1.29-17.9v-.44a10.617 10.617 0 0 0-.11-2.47.3.3 0 0 0 0-.1 10.391 10.391 0 0 0-2-4.64 10.54 10.54 0 0 0-9.42-4 937.419 937.419 0 0 1-36.58 3c-1.67.12-3.34.22-5 .31-78.94 4.69-157.17.89-199.5-2l-3-.22c-7.33-.52-13.46-1-18.18-1.41a10.54 10.54 0 0 0-11.24 8.53 11 11 0 0 0-.18 1.64l-.68 22.16-.93 28.07-.44 14.36v1.12Z",fill:"#3f3d56"}),r.createElement("path",{"data-name":"Path 321",d:"m637.33 491.27-1.23 15.33-1.83 22.85-.46 5.72-1 12.81-.06.64v.17l-.15 1.48.11-1.48h-.29l-107 1-175.65 1.9v-.28l.49-14.36 1-28.06.64-18.65a6.36 6.36 0 0 1 3.06-5.25 6.25 6.25 0 0 1 3.78-.9c2.1.17 4.68.37 7.69.59 4.89.36 10.92.78 17.94 1.22 13 .82 29.31 1.7 48 2.42 52 2 122.2 2.67 188.88-3.17 3-.26 6.1-.55 9.13-.84a6.26 6.26 0 0 1 3.48.66 5.159 5.159 0 0 1 .86.54 6.14 6.14 0 0 1 2 2.46 3.564 3.564 0 0 1 .25.61 6.279 6.279 0 0 1 .36 2.59Z",opacity:.1}),r.createElement("path",{"data-name":"Path 322",d:"M298.1 504.96v3.19a6.13 6.13 0 0 1-3.5 5.54l-40.1.77a6.12 6.12 0 0 1-3.57-5.57v-3Z",opacity:.1}),r.createElement("path",{"data-name":"Path 323",d:"m298.59 515.57-52.25 1v-8.67l52.25-1Z",fill:"#3f3d56"}),r.createElement("path",{"data-name":"Path 324",d:"m298.59 515.57-52.25 1v-8.67l52.25-1Z",opacity:.1}),r.createElement("path",{"data-name":"Path 325",d:"m300.59 515.57-52.25 1v-8.67l52.25-1Z",fill:"#3f3d56"}),r.createElement("path",{"data-name":"Path 326",d:"M679.22 506.96v3.19a6.13 6.13 0 0 0 3.5 5.54l40.1.77a6.12 6.12 0 0 0 3.57-5.57v-3Z",opacity:.1}),r.createElement("path",{"data-name":"Path 327",d:"m678.72 517.57 52.25 1v-8.67l-52.25-1Z",opacity:.1}),r.createElement("path",{"data-name":"Path 328",d:"m676.72 517.57 52.25 1v-8.67l-52.25-1Z",fill:"#3f3d56"}),r.createElement("path",{"data-name":"Path 329",d:"M454.79 313.88c.08 7-3.16 13.6-5.91 20.07a163.491 163.491 0 0 0-12.66 74.71c.73 11 2.58 22 .73 32.9s-8.43 21.77-19 24.9c17.53 10.45 41.26 9.35 57.76-2.66 8.79-6.4 15.34-15.33 21.75-24.11a97.86 97.86 0 0 1-13.31 44.75 103.43 103.43 0 0 0 73.51-40.82c4.31-5.81 8.06-12.19 9.72-19.23 3.09-13-1.22-26.51-4.51-39.5a266.055 266.055 0 0 1-6.17-33c-.43-3.56-.78-7.22.1-10.7 1-4.07 3.67-7.51 5.64-11.22 5.6-10.54 5.73-23.3 2.86-34.88s-8.49-22.26-14.06-32.81c-4.46-8.46-9.3-17.31-17.46-22.28-5.1-3.1-11-4.39-16.88-5.64l-25.37-5.43c-5.55-1.19-11.26-2.38-16.87-1.51-9.47 1.48-16.14 8.32-22 15.34-4.59 5.46-15.81 15.71-16.6 22.86-.72 6.59 5.1 17.63 6.09 24.58 1.3 9 2.22 6 7.3 11.52 3.21 3.42 5.28 7.37 5.34 12.16Z",fill:"#3f3d56"})),r.createElement("path",{"data-name":"Path 40",d:"M280.139 370.832h43.635v17.662h-43.635Z",fill:"#fff",fillRule:"evenodd"}),r.createElement("path",{"data-name":"Path 41",d:"M240.66 428.493a10.377 10.377 0 0 1-8.989-5.195 10.377 10.377 0 0 0 8.988 15.584h10.391v-10.389Z",fill:"#3ecc5f",fillRule:"evenodd"}),r.createElement("path",{"data-name":"Path 42",d:"m287.402 373.625 36.373-2.273v-5.195a10.389 10.389 0 0 0-10.39-10.389h-46.75l-1.3-2.249a1.5 1.5 0 0 0-2.6 0l-1.3 2.249-1.3-2.249a1.5 1.5 0 0 0-2.6 0l-1.3 2.249-1.3-2.249a1.5 1.5 0 0 0-2.6 0l-1.3 2.249h-.034l-2.152-2.151a1.5 1.5 0 0 0-2.508.672l-.696 2.653-2.7-.723a1.5 1.5 0 0 0-1.836 1.837l.722 2.7-2.65.71a1.5 1.5 0 0 0-.673 2.509l2.152 2.152v.033l-2.249 1.3a1.5 1.5 0 0 0 0 2.6l2.249 1.3-2.249 1.3a1.5 1.5 0 0 0 0 2.6l2.25 1.282-2.249 1.3a1.5 1.5 0 0 0 0 2.6l2.249 1.3-2.249 1.3a1.5 1.5 0 0 0 0 2.6l2.249 1.3-2.249 1.3a1.5 1.5 0 0 0 0 2.6l2.249 1.3-2.249 1.3a1.5 1.5 0 0 0 0 2.6l2.249 1.3-2.249 1.3a1.5 1.5 0 0 0 0 2.6l2.249 1.3-2.249 1.3a1.5 1.5 0 0 0 0 2.6l2.249 1.3-2.249 1.3a1.5 1.5 0 0 0 0 2.6l2.249 1.3-2.249 1.3a1.5 1.5 0 0 0 0 2.6l2.249 1.3-2.249 1.3a1.5 1.5 0 0 0 0 2.6l2.249 1.3-2.249 1.3a1.5 1.5 0 0 0 0 2.6l2.249 1.3a10.389 10.389 0 0 0 10.389 10.34h62.335a10.389 10.389 0 0 0 10.39-10.39v-41.557l-36.373-2.273a5.53 5.53 0 0 1 0-11.038",fill:"#3ecc5f",fillRule:"evenodd"}),r.createElement("path",{"data-name":"Path 43",d:"M302.996 438.882h15.584v-20.779h-15.584Z",fill:"#3ecc5f",fillRule:"evenodd"}),r.createElement("path",{"data-name":"Path 44",d:"M328.97 425.895a2.582 2.582 0 0 0-.332.033c-.02-.078-.038-.156-.06-.234a2.594 2.594 0 1 0-2.567-4.455q-.086-.088-.174-.175a2.593 2.593 0 1 0-4.461-2.569c-.077-.022-.154-.04-.231-.06a2.6 2.6 0 1 0-5.128 0c-.077.02-.154.038-.231.06a2.594 2.594 0 1 0-4.461 2.569 10.384 10.384 0 1 0 17.314 9.992 2.592 2.592 0 1 0 .332-5.161",fill:"#44d860",fillRule:"evenodd"}),r.createElement("path",{"data-name":"Path 45",d:"M308.191 407.713h15.584v-10.389h-15.584Z",fill:"#3ecc5f",fillRule:"evenodd"}),r.createElement("path",{"data-name":"Path 46",d:"M328.969 403.818a1.3 1.3 0 1 0 0-2.6 1.336 1.336 0 0 0-.166.017l-.03-.117a1.3 1.3 0 0 0-.5-2.5 1.285 1.285 0 0 0-.783.269l-.087-.087a1.285 1.285 0 0 0 .263-.776 1.3 1.3 0 0 0-2.493-.509 5.195 5.195 0 1 0 0 10 1.3 1.3 0 0 0 2.493-.509 1.285 1.285 0 0 0-.263-.776l.087-.087a1.285 1.285 0 0 0 .783.269 1.3 1.3 0 0 0 .5-2.5c.011-.038.02-.078.03-.117a1.337 1.337 0 0 0 .166.017",fill:"#44d860",fillRule:"evenodd"}),r.createElement("path",{"data-name":"Path 47",d:"M261.439 372.65a1.3 1.3 0 0 1-1.3-1.3 3.9 3.9 0 0 0-7.792 0 1.3 1.3 0 1 1-2.6 0 6.494 6.494 0 0 1 12.987 0 1.3 1.3 0 0 1-1.3 1.3",fillRule:"evenodd"}),r.createElement("path",{"data-name":"Path 48",d:"M282.217 438.882h31.168a10.389 10.389 0 0 0 10.389-10.389V392.13h-31.168a10.389 10.389 0 0 0-10.389 10.389Z",fill:"#ffff50",fillRule:"evenodd"}),r.createElement("path",{"data-name":"Path 49",d:"M315.993 408.233h-25.994a.52.52 0 1 1 0-1.039h25.994a.52.52 0 0 1 0 1.039m0 10.389h-25.994a.52.52 0 1 1 0-1.039h25.994a.52.52 0 0 1 0 1.039m0 10.389h-25.994a.52.52 0 1 1 0-1.039h25.994a.52.52 0 0 1 0 1.039m0-25.877h-25.994a.52.52 0 1 1 0-1.039h25.994a.52.52 0 0 1 0 1.039m0 10.293h-25.994a.52.52 0 1 1 0-1.039h25.994a.52.52 0 0 1 0 1.039m0 10.389h-25.994a.52.52 0 1 1 0-1.039h25.994a.52.52 0 0 1 0 1.039m7.782-47.993h-.018c-1.605.055-2.365 1.66-3.035 3.077-.7 1.48-1.24 2.443-2.126 2.414-.981-.035-1.542-1.144-2.137-2.317-.683-1.347-1.462-2.876-3.1-2.819-1.582.054-2.344 1.451-3.017 2.684-.715 1.313-1.2 2.112-2.141 2.075-1-.036-1.533-.938-2.149-1.981-.686-1.162-1.479-2.467-3.084-2.423-1.555.053-2.319 1.239-2.994 2.286-.713 1.106-1.213 1.781-2.164 1.741-1.025-.036-1.554-.784-2.167-1.65-.688-.973-1.463-2.074-3.062-2.021a3.815 3.815 0 0 0-2.959 1.879c-.64.812-1.14 1.456-2.2 1.415a.52.52 0 0 0-.037 1.039 3.588 3.588 0 0 0 3.05-1.811c.611-.777 1.139-1.448 2.178-1.483 1-.043 1.47.579 2.179 1.582.674.953 1.438 2.033 2.977 2.089 1.612.054 2.387-1.151 3.074-2.217.614-.953 1.144-1.775 2.156-1.81.931-.035 1.438.7 2.153 1.912.674 1.141 1.437 2.434 3.006 2.491 1.623.056 2.407-1.361 3.09-2.616.592-1.085 1.15-2.109 2.14-2.143.931-.022 1.417.829 2.135 2.249.671 1.326 1.432 2.828 3.026 2.886h.088c1.592 0 2.347-1.6 3.015-3.01.592-1.252 1.152-2.431 2.113-2.479Z",fillRule:"evenodd"}),r.createElement("path",{"data-name":"Path 50",d:"M271.828 438.882h20.779v-20.779h-20.779Z",fill:"#3ecc5f",fillRule:"evenodd"}),r.createElement("g",{"data-name":"Group 8",transform:"rotate(-14.98 1643.944 -873.93)"},r.createElement("rect",{"data-name":"Rectangle 3",width:43.906,height:17.333,rx:2,fill:"#d8d8d8"}),r.createElement("g",{"data-name":"Group 2",transform:"translate(.728 10.948)",fill:"#4a4a4a"},r.createElement("rect",{"data-name":"Rectangle 4",width:2.537,height:2.537,rx:1,transform:"translate(7.985)"}),r.createElement("rect",{"data-name":"Rectangle 5",width:2.537,height:2.537,rx:1,transform:"translate(10.991)"}),r.createElement("rect",{"data-name":"Rectangle 6",width:2.537,height:2.537,rx:1,transform:"translate(13.997)"}),r.createElement("rect",{"data-name":"Rectangle 7",width:2.537,height:2.537,rx:1,transform:"translate(17.003)"}),r.createElement("rect",{"data-name":"Rectangle 8",width:2.537,height:2.537,rx:1,transform:"translate(20.009)"}),r.createElement("rect",{"data-name":"Rectangle 9",width:2.537,height:2.537,rx:1,transform:"translate(23.015)"}),r.createElement("rect",{"data-name":"Rectangle 10",width:2.537,height:2.537,rx:1,transform:"translate(26.021)"}),r.createElement("rect",{"data-name":"Rectangle 11",width:2.537,height:2.537,rx:1,transform:"translate(29.028)"}),r.createElement("rect",{"data-name":"Rectangle 12",width:2.537,height:2.537,rx:1,transform:"translate(32.034)"}),r.createElement("path",{"data-name":"Path 51",d:"M.519 0H6.9a.519.519 0 0 1 .521.52v1.5a.519.519 0 0 1-.519.519H.519A.519.519 0 0 1 0 2.017V.519A.519.519 0 0 1 .519 0Zm35.134 0h6.383a.519.519 0 0 1 .519.519v1.5a.519.519 0 0 1-.519.519h-6.384a.519.519 0 0 1-.519-.519v-1.5A.519.519 0 0 1 35.652 0Z",fillRule:"evenodd"})),r.createElement("g",{"data-name":"Group 3",transform:"translate(.728 4.878)",fill:"#4a4a4a"},r.createElement("path",{"data-name":"Path 52",d:"M.519 0h2.437a.519.519 0 0 1 .519.519v1.5a.519.519 0 0 1-.519.519H.519A.519.519 0 0 1 0 2.017V.519A.519.519 0 0 1 .519 0Z",fillRule:"evenodd"}),r.createElement("rect",{"data-name":"Rectangle 13",width:2.537,height:2.537,rx:1,transform:"translate(3.945)"}),r.createElement("rect",{"data-name":"Rectangle 14",width:2.537,height:2.537,rx:1,transform:"translate(6.951)"}),r.createElement("rect",{"data-name":"Rectangle 15",width:2.537,height:2.537,rx:1,transform:"translate(9.958)"}),r.createElement("rect",{"data-name":"Rectangle 16",width:2.537,height:2.537,rx:1,transform:"translate(12.964)"}),r.createElement("rect",{"data-name":"Rectangle 17",width:2.537,height:2.537,rx:1,transform:"translate(15.97)"}),r.createElement("rect",{"data-name":"Rectangle 18",width:2.537,height:2.537,rx:1,transform:"translate(18.976)"}),r.createElement("rect",{"data-name":"Rectangle 19",width:2.537,height:2.537,rx:1,transform:"translate(21.982)"}),r.createElement("rect",{"data-name":"Rectangle 20",width:2.537,height:2.537,rx:1,transform:"translate(24.988)"}),r.createElement("rect",{"data-name":"Rectangle 21",width:2.537,height:2.537,rx:1,transform:"translate(27.994)"}),r.createElement("rect",{"data-name":"Rectangle 22",width:2.537,height:2.537,rx:1,transform:"translate(31)"}),r.createElement("rect",{"data-name":"Rectangle 23",width:2.537,height:2.537,rx:1,transform:"translate(34.006)"}),r.createElement("rect",{"data-name":"Rectangle 24",width:2.537,height:2.537,rx:1,transform:"translate(37.012)"}),r.createElement("rect",{"data-name":"Rectangle 25",width:2.537,height:2.537,rx:1,transform:"translate(40.018)"})),r.createElement("g",{"data-name":"Group 4",transform:"rotate(180 21.642 2.269)",fill:"#4a4a4a"},r.createElement("path",{"data-name":"Path 53",d:"M.519 0h2.437a.519.519 0 0 1 .519.519v1.5a.519.519 0 0 1-.519.519H.519A.519.519 0 0 1 0 2.017V.519A.519.519 0 0 1 .519 0Z",fillRule:"evenodd"}),r.createElement("rect",{"data-name":"Rectangle 26",width:2.537,height:2.537,rx:1,transform:"translate(3.945)"}),r.createElement("rect",{"data-name":"Rectangle 27",width:2.537,height:2.537,rx:1,transform:"translate(6.951)"}),r.createElement("rect",{"data-name":"Rectangle 28",width:2.537,height:2.537,rx:1,transform:"translate(9.958)"}),r.createElement("rect",{"data-name":"Rectangle 29",width:2.537,height:2.537,rx:1,transform:"translate(12.964)"}),r.createElement("rect",{"data-name":"Rectangle 30",width:2.537,height:2.537,rx:1,transform:"translate(15.97)"}),r.createElement("rect",{"data-name":"Rectangle 31",width:2.537,height:2.537,rx:1,transform:"translate(18.976)"}),r.createElement("rect",{"data-name":"Rectangle 32",width:2.537,height:2.537,rx:1,transform:"translate(21.982)"}),r.createElement("rect",{"data-name":"Rectangle 33",width:2.537,height:2.537,rx:1,transform:"translate(24.988)"}),r.createElement("rect",{"data-name":"Rectangle 34",width:2.537,height:2.537,rx:1,transform:"translate(27.994)"}),r.createElement("rect",{"data-name":"Rectangle 35",width:2.537,height:2.537,rx:1,transform:"translate(31.001)"}),r.createElement("rect",{"data-name":"Rectangle 36",width:2.537,height:2.537,rx:1,transform:"translate(34.007)"}),r.createElement("rect",{"data-name":"Rectangle 37",width:2.537,height:2.537,rx:1,transform:"translate(37.013)"}),r.createElement("rect",{"data-name":"Rectangle 38",width:2.537,height:2.537,rx:1,transform:"translate(40.018)"}),r.createElement("rect",{"data-name":"Rectangle 39",width:2.537,height:2.537,rx:1,transform:"translate(3.945)"}),r.createElement("rect",{"data-name":"Rectangle 40",width:2.537,height:2.537,rx:1,transform:"translate(6.951)"}),r.createElement("rect",{"data-name":"Rectangle 41",width:2.537,height:2.537,rx:1,transform:"translate(9.958)"}),r.createElement("rect",{"data-name":"Rectangle 42",width:2.537,height:2.537,rx:1,transform:"translate(12.964)"}),r.createElement("rect",{"data-name":"Rectangle 43",width:2.537,height:2.537,rx:1,transform:"translate(15.97)"}),r.createElement("rect",{"data-name":"Rectangle 44",width:2.537,height:2.537,rx:1,transform:"translate(18.976)"}),r.createElement("rect",{"data-name":"Rectangle 45",width:2.537,height:2.537,rx:1,transform:"translate(21.982)"}),r.createElement("rect",{"data-name":"Rectangle 46",width:2.537,height:2.537,rx:1,transform:"translate(24.988)"}),r.createElement("rect",{"data-name":"Rectangle 47",width:2.537,height:2.537,rx:1,transform:"translate(27.994)"}),r.createElement("rect",{"data-name":"Rectangle 48",width:2.537,height:2.537,rx:1,transform:"translate(31.001)"}),r.createElement("rect",{"data-name":"Rectangle 49",width:2.537,height:2.537,rx:1,transform:"translate(34.007)"}),r.createElement("rect",{"data-name":"Rectangle 50",width:2.537,height:2.537,rx:1,transform:"translate(37.013)"}),r.createElement("rect",{"data-name":"Rectangle 51",width:2.537,height:2.537,rx:1,transform:"translate(40.018)"})),r.createElement("g",{"data-name":"Group 6",fill:"#4a4a4a"},r.createElement("path",{"data-name":"Path 54",d:"M1.247 7.883h3.47a.519.519 0 0 1 .519.519v1.5a.519.519 0 0 1-.519.519h-3.47A.519.519 0 0 1 .728 9.9V8.403a.519.519 0 0 1 .519-.52Z",fillRule:"evenodd"}),r.createElement("g",{"data-name":"Group 5",transform:"translate(5.801 7.883)"},r.createElement("rect",{"data-name":"Rectangle 52",width:2.537,height:2.537,rx:1}),r.createElement("rect",{"data-name":"Rectangle 53",width:2.537,height:2.537,rx:1,transform:"translate(3.006)"}),r.createElement("rect",{"data-name":"Rectangle 54",width:2.537,height:2.537,rx:1,transform:"translate(6.012)"}),r.createElement("rect",{"data-name":"Rectangle 55",width:2.537,height:2.537,rx:1,transform:"translate(9.018)"}),r.createElement("rect",{"data-name":"Rectangle 56",width:2.537,height:2.537,rx:1,transform:"translate(12.025)"}),r.createElement("rect",{"data-name":"Rectangle 57",width:2.537,height:2.537,rx:1,transform:"translate(15.031)"}),r.createElement("rect",{"data-name":"Rectangle 58",width:2.537,height:2.537,rx:1,transform:"translate(18.037)"}),r.createElement("rect",{"data-name":"Rectangle 59",width:2.537,height:2.537,rx:1,transform:"translate(21.042)"}),r.createElement("rect",{"data-name":"Rectangle 60",width:2.537,height:2.537,rx:1,transform:"translate(24.049)"}),r.createElement("rect",{"data-name":"Rectangle 61",width:2.537,height:2.537,rx:1,transform:"translate(27.055)"}),r.createElement("rect",{"data-name":"Rectangle 62",width:2.537,height:2.537,rx:1,transform:"translate(30.061)"})),r.createElement("path",{"data-name":"Path 55",d:"M39.482 7.883h3.28a.519.519 0 0 1 .519.519v1.5a.519.519 0 0 1-.519.519h-3.281a.519.519 0 0 1-.519-.521V8.403a.519.519 0 0 1 .519-.52Z",fillRule:"evenodd"})),r.createElement("g",{"data-name":"Group 7",transform:"translate(.728 14.084)",fill:"#4a4a4a"},r.createElement("rect",{"data-name":"Rectangle 63",width:2.537,height:2.537,rx:1}),r.createElement("rect",{"data-name":"Rectangle 64",width:2.537,height:2.537,rx:1,transform:"translate(3.006)"}),r.createElement("rect",{"data-name":"Rectangle 65",width:2.537,height:2.537,rx:1,transform:"translate(6.012)"}),r.createElement("rect",{"data-name":"Rectangle 66",width:2.537,height:2.537,rx:1,transform:"translate(9.018)"}),r.createElement("path",{"data-name":"Path 56",d:"M12.543 0h14.462a.519.519 0 0 1 .519.519v1.5a.519.519 0 0 1-.519.519H12.543a.519.519 0 0 1-.519-.52V.519A.519.519 0 0 1 12.543 0Zm15.97 0h1.874a.519.519 0 0 1 .519.519v1.5a.519.519 0 0 1-.519.519h-1.874a.519.519 0 0 1-.519-.519v-1.5A.519.519 0 0 1 28.513 0Z",fillRule:"evenodd"}),r.createElement("rect",{"data-name":"Rectangle 67",width:2.537,height:2.537,rx:1,transform:"translate(31.376)"}),r.createElement("rect",{"data-name":"Rectangle 68",width:2.537,height:2.537,rx:1,transform:"translate(34.382)"}),r.createElement("rect",{"data-name":"Rectangle 69",width:2.537,height:2.537,rx:1,transform:"translate(40.018)"}),r.createElement("path",{"data-name":"Path 57",d:"M37.199 1.08V.519A.519.519 0 0 1 37.718 0h1.499a.519.519 0 0 1 .519.519v.561Z"}),r.createElement("path",{"data-name":"Path 58",d:"M39.737 1.456v.561a.519.519 0 0 1-.519.519h-1.499a.519.519 0 0 1-.519-.519v-.561Z"})),r.createElement("rect",{"data-name":"Rectangle 70",width:42.273,height:1.127,rx:.564,transform:"translate(.915 .556)",fill:"#4a4a4a"}),r.createElement("rect",{"data-name":"Rectangle 71",width:2.37,height:.752,rx:.376,transform:"translate(1.949 .744)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 72",width:2.37,height:.752,rx:.376,transform:"translate(5.193 .744)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 73",width:2.37,height:.752,rx:.376,transform:"translate(7.688 .744)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 74",width:2.37,height:.752,rx:.376,transform:"translate(10.183 .744)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 75",width:2.37,height:.752,rx:.376,transform:"translate(12.679 .744)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 76",width:2.37,height:.752,rx:.376,transform:"translate(15.797 .744)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 77",width:2.37,height:.752,rx:.376,transform:"translate(18.292 .744)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 78",width:2.37,height:.752,rx:.376,transform:"translate(20.788 .744)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 79",width:2.37,height:.752,rx:.376,transform:"translate(23.283 .744)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 80",width:2.37,height:.752,rx:.376,transform:"translate(26.402 .744)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 81",width:2.37,height:.752,rx:.376,transform:"translate(28.897 .744)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 82",width:2.37,height:.752,rx:.376,transform:"translate(31.393 .744)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 83",width:2.37,height:.752,rx:.376,transform:"translate(34.512 .744)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 84",width:2.37,height:.752,rx:.376,transform:"translate(37.007 .744)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 85",width:2.37,height:.752,rx:.376,transform:"translate(39.502 .744)",fill:"#d8d8d8",opacity:.136})),r.createElement("path",{"data-name":"Path 59",d:"M302.996 425.895a2.583 2.583 0 0 0-.332.033c-.02-.078-.038-.156-.06-.234a2.594 2.594 0 1 0-2.567-4.455q-.086-.088-.174-.175a2.593 2.593 0 1 0-4.461-2.569c-.077-.022-.154-.04-.231-.06a2.6 2.6 0 1 0-5.128 0c-.077.02-.154.038-.231.06a2.594 2.594 0 1 0-4.461 2.569 10.384 10.384 0 1 0 17.314 9.992 2.592 2.592 0 1 0 .332-5.161",fill:"#44d860",fillRule:"evenodd"}),r.createElement("path",{"data-name":"Path 60",d:"M271.828 407.713h20.779v-10.389h-20.779Z",fill:"#3ecc5f",fillRule:"evenodd"}),r.createElement("path",{"data-name":"Path 61",d:"M297.801 403.818a1.3 1.3 0 1 0 0-2.6 1.338 1.338 0 0 0-.166.017l-.03-.117a1.3 1.3 0 0 0-.5-2.5 1.285 1.285 0 0 0-.783.269l-.087-.087a1.285 1.285 0 0 0 .263-.776 1.3 1.3 0 0 0-2.493-.509 5.195 5.195 0 1 0 0 10 1.3 1.3 0 0 0 2.493-.509 1.285 1.285 0 0 0-.263-.776l.087-.087a1.285 1.285 0 0 0 .783.269 1.3 1.3 0 0 0 .5-2.5c.011-.038.02-.078.03-.117a1.335 1.335 0 0 0 .166.017",fill:"#44d860",fillRule:"evenodd"}),r.createElement("path",{"data-name":"Path 62",d:"M302.997 365.507a1.41 1.41 0 0 1-.255-.026 1.309 1.309 0 0 1-.244-.073 1.349 1.349 0 0 1-.224-.119 1.967 1.967 0 0 1-.2-.161 1.52 1.52 0 0 1-.161-.2 1.282 1.282 0 0 1-.218-.722 1.41 1.41 0 0 1 .026-.255 1.5 1.5 0 0 1 .072-.244 1.364 1.364 0 0 1 .12-.223 1.252 1.252 0 0 1 .358-.358 1.349 1.349 0 0 1 .224-.119 1.309 1.309 0 0 1 .244-.073 1.2 1.2 0 0 1 .509 0 1.262 1.262 0 0 1 .468.192 1.968 1.968 0 0 1 .2.161 1.908 1.908 0 0 1 .161.2 1.322 1.322 0 0 1 .12.223 1.361 1.361 0 0 1 .1.5 1.317 1.317 0 0 1-.379.919 1.968 1.968 0 0 1-.2.161 1.346 1.346 0 0 1-.223.119 1.332 1.332 0 0 1-.5.1m10.389-.649a1.326 1.326 0 0 1-.92-.379 1.979 1.979 0 0 1-.161-.2 1.282 1.282 0 0 1-.218-.722 1.326 1.326 0 0 1 .379-.919 1.967 1.967 0 0 1 .2-.161 1.351 1.351 0 0 1 .224-.119 1.308 1.308 0 0 1 .244-.073 1.2 1.2 0 0 1 .509 0 1.262 1.262 0 0 1 .468.192 1.967 1.967 0 0 1 .2.161 1.326 1.326 0 0 1 .379.919 1.461 1.461 0 0 1-.026.255 1.323 1.323 0 0 1-.073.244 1.847 1.847 0 0 1-.119.223 1.911 1.911 0 0 1-.161.2 1.967 1.967 0 0 1-.2.161 1.294 1.294 0 0 1-.722.218",fillRule:"evenodd"}),r.createElement("g",{transform:"translate(466.3 278.56)",fill:"#61dafb"},r.createElement("path",{"data-name":"Path 330",d:"M263.668 117.179c0-5.827-7.3-11.35-18.487-14.775 2.582-11.4 1.434-20.477-3.622-23.382a7.861 7.861 0 0 0-4.016-1v4a4.152 4.152 0 0 1 2.044.466c2.439 1.4 3.5 6.724 2.672 13.574-.2 1.685-.52 3.461-.914 5.272a86.9 86.9 0 0 0-11.386-1.954 87.469 87.469 0 0 0-7.459-8.965c5.845-5.433 11.332-8.41 15.062-8.41V78c-4.931 0-11.386 3.514-17.913 9.611-6.527-6.061-12.982-9.539-17.913-9.539v4c3.712 0 9.216 2.959 15.062 8.356a84.687 84.687 0 0 0-7.405 8.947 83.732 83.732 0 0 0-11.4 1.972 54.136 54.136 0 0 1-.932-5.2c-.843-6.85.2-12.175 2.618-13.592a3.991 3.991 0 0 1 2.062-.466v-4a8 8 0 0 0-4.052 1c-5.039 2.9-6.168 11.96-3.568 23.328-11.153 3.443-18.415 8.947-18.415 14.757 0 5.828 7.3 11.35 18.487 14.775-2.582 11.4-1.434 20.477 3.622 23.382a7.882 7.882 0 0 0 4.034 1c4.931 0 11.386-3.514 17.913-9.611 6.527 6.061 12.982 9.539 17.913 9.539a8 8 0 0 0 4.052-1c5.039-2.9 6.168-11.96 3.568-23.328 11.111-3.42 18.373-8.943 18.373-14.752Zm-23.346-11.96a80.235 80.235 0 0 1-2.421 7.083 83.185 83.185 0 0 0-2.349-4.3 96.877 96.877 0 0 0-2.582-4.2c2.547.377 5.004.843 7.353 1.417Zm-8.212 19.1c-1.4 2.421-2.833 4.716-4.321 6.85a93.313 93.313 0 0 1-8.1.359c-2.708 0-5.415-.126-8.069-.341q-2.232-3.2-4.339-6.814-2.044-3.523-3.73-7.136a94.058 94.058 0 0 1 3.712-7.154c1.4-2.421 2.833-4.716 4.321-6.85a93.313 93.313 0 0 1 8.1-.359c2.708 0 5.415.126 8.069.341q2.232 3.2 4.339 6.814 2.044 3.523 3.73 7.136a101.198 101.198 0 0 1-3.712 7.15Zm5.792-2.331a76.525 76.525 0 0 1 2.474 7.136 80.22 80.22 0 0 1-7.387 1.434c.879-1.381 1.757-2.8 2.582-4.25a96.22 96.22 0 0 0 2.329-4.324Zm-18.182 19.128a73.921 73.921 0 0 1-4.985-5.738c1.614.072 3.263.126 4.931.126 1.685 0 3.353-.036 4.985-.126a69.993 69.993 0 0 1-4.931 5.738Zm-13.34-10.561c-2.546-.377-5-.843-7.352-1.417a80.235 80.235 0 0 1 2.421-7.083c.735 1.434 1.506 2.869 2.349 4.3s1.702 2.837 2.582 4.2Zm13.25-37.314a73.924 73.924 0 0 1 4.985 5.738 110.567 110.567 0 0 0-4.931-.126c-1.686 0-3.353.036-4.985.126a69.993 69.993 0 0 1 4.931-5.738ZM206.362 103.8a100.567 100.567 0 0 0-4.913 8.55 76.525 76.525 0 0 1-2.474-7.136 90.158 90.158 0 0 1 7.387-1.414Zm-16.227 22.449c-6.348-2.708-10.454-6.258-10.454-9.073s4.106-6.383 10.454-9.073c1.542-.663 3.228-1.255 4.967-1.811a86.122 86.122 0 0 0 4.034 10.92 84.9 84.9 0 0 0-3.981 10.866 53.804 53.804 0 0 1-5.021-1.826Zm9.647 25.623c-2.439-1.4-3.5-6.724-2.672-13.574.2-1.686.52-3.461.914-5.272a86.9 86.9 0 0 0 11.386 1.954 87.465 87.465 0 0 0 7.459 8.965c-5.845 5.433-11.332 8.41-15.062 8.41a4.279 4.279 0 0 1-2.026-.48Zm42.532-13.663c.843 6.85-.2 12.175-2.618 13.592a3.99 3.99 0 0 1-2.062.466c-3.712 0-9.216-2.959-15.062-8.356a84.689 84.689 0 0 0 7.405-8.947 83.731 83.731 0 0 0 11.4-1.972 50.194 50.194 0 0 1 .936 5.22Zm6.9-11.96c-1.542.663-3.228 1.255-4.967 1.811a86.12 86.12 0 0 0-4.034-10.92 84.9 84.9 0 0 0 3.981-10.866 56.777 56.777 0 0 1 5.039 1.829c6.348 2.708 10.454 6.258 10.454 9.073-.017 2.818-4.123 6.386-10.471 9.076Z"}),r.createElement("path",{"data-name":"Path 331",d:"M201.718 78.072Z"}),r.createElement("circle",{"data-name":"Ellipse 112",cx:8.194,cy:8.194,r:8.194,transform:"translate(211.472 108.984)"}),r.createElement("path",{"data-name":"Path 332",d:"M237.525 78.018Z"})))))}},4002:(e,a,t)=>{t.d(a,{Z:()=>F});var l,r,n,c,h,d,m,i,s,f,o,g,E,p,v,x,R,w,u,Z,M,y,P,b,j,q,V,A,H,G,N,O,_,S,k,z,B=t(7294);function D(){return D=Object.assign?Object.assign.bind():function(e){for(var a=1;a{let{title:a,titleId:t,...F}=e;return B.createElement("svg",D({xmlns:"http://www.w3.org/2000/svg",width:1129,height:663,viewBox:"0 0 1129 663","aria-labelledby":t},F),void 0===a?B.createElement("title",{id:t},"Focus on What Matters"):a?B.createElement("title",{id:t},a):null,l||(l=B.createElement("circle",{cx:321,cy:321,r:321,fill:"#f2f2f2"})),r||(r=B.createElement("ellipse",{cx:559,cy:635.5,rx:514,ry:27.5,fill:"#3f3d56"})),n||(n=B.createElement("ellipse",{cx:558,cy:627,rx:460,ry:22,opacity:.2})),c||(c=B.createElement("path",{fill:"#3f3d56",d:"M131 152.5h840v50H131z"})),h||(h=B.createElement("path",{d:"M131 608.83a21.67 21.67 0 0 0 21.67 21.67h796.66A21.67 21.67 0 0 0 971 608.83V177.5H131ZM949.33 117.5H152.67A21.67 21.67 0 0 0 131 139.17v38.33h840v-38.33a21.67 21.67 0 0 0-21.67-21.67Z",fill:"#3f3d56"})),d||(d=B.createElement("path",{d:"M949.33 117.5H152.67A21.67 21.67 0 0 0 131 139.17v38.33h840v-38.33a21.67 21.67 0 0 0-21.67-21.67Z",opacity:.2})),m||(m=B.createElement("circle",{cx:181,cy:147.5,r:13,fill:"#3f3d56"})),i||(i=B.createElement("circle",{cx:217,cy:147.5,r:13,fill:"#3f3d56"})),s||(s=B.createElement("circle",{cx:253,cy:147.5,r:13,fill:"#3f3d56"})),f||(f=B.createElement("rect",{x:168,y:213.5,width:337,height:386,rx:5.335,fill:"#606060"})),o||(o=B.createElement("rect",{x:603,y:272.5,width:284,height:22,rx:5.476,fill:"#2e8555"})),g||(g=B.createElement("rect",{x:537,y:352.5,width:416,height:15,rx:5.476,fill:"#2e8555"})),E||(E=B.createElement("rect",{x:537,y:396.5,width:416,height:15,rx:5.476,fill:"#2e8555"})),p||(p=B.createElement("rect",{x:537,y:440.5,width:416,height:15,rx:5.476,fill:"#2e8555"})),v||(v=B.createElement("rect",{x:537,y:484.5,width:416,height:15,rx:5.476,fill:"#2e8555"})),x||(x=B.createElement("rect",{x:865,y:552.5,width:88,height:26,rx:7.028,fill:"#3ecc5f"})),R||(R=B.createElement("path",{d:"M1053.103 506.116a30.114 30.114 0 0 0 3.983-15.266c0-13.797-8.544-24.98-19.083-24.98s-19.082 11.183-19.082 24.98a30.114 30.114 0 0 0 3.983 15.266 31.248 31.248 0 0 0 0 30.532 31.248 31.248 0 0 0 0 30.532 31.248 31.248 0 0 0 0 30.532 30.114 30.114 0 0 0-3.983 15.266c0 13.797 8.543 24.981 19.082 24.981s19.083-11.184 19.083-24.98a30.114 30.114 0 0 0-3.983-15.267 31.248 31.248 0 0 0 0-30.532 31.248 31.248 0 0 0 0-30.532 31.248 31.248 0 0 0 0-30.532Z",fill:"#3f3d56"})),w||(w=B.createElement("ellipse",{cx:1038.003,cy:460.318,rx:19.083,ry:24.981,fill:"#3f3d56"})),u||(u=B.createElement("ellipse",{cx:1038.003,cy:429.786,rx:19.083,ry:24.981,fill:"#3f3d56"})),Z||(Z=B.createElement("path",{d:"M1109.439 220.845a91.61 91.61 0 0 0 7.106-10.461l-50.14-8.235 54.228.403a91.566 91.566 0 0 0 1.746-72.426l-72.755 37.742 67.097-49.321A91.413 91.413 0 1 0 965.75 220.845a91.458 91.458 0 0 0-10.425 16.67l65.087 33.814-69.4-23.292a91.46 91.46 0 0 0 14.738 85.837 91.406 91.406 0 1 0 143.689 0 91.418 91.418 0 0 0 0-113.03Z",fill:"#3ecc5f",fillRule:"evenodd"})),M||(M=B.createElement("path",{d:"M946.188 277.36a91.013 91.013 0 0 0 19.562 56.514 91.406 91.406 0 1 0 143.689 0c12.25-15.553-163.25-66.774-163.25-56.515Z",opacity:.1})),y||(y=B.createElement("path",{d:"M330.12 342.936h111.474v45.12H330.12Z",fill:"#fff",fillRule:"evenodd"})),P||(P=B.createElement("path",{d:"M229.263 490.241a26.51 26.51 0 0 1-22.963-13.27 26.51 26.51 0 0 0 22.963 39.812h26.541V490.24Z",fill:"#3ecc5f",fillRule:"evenodd"})),b||(b=B.createElement("path",{d:"m348.672 350.07 92.922-5.807v-13.27a26.54 26.54 0 0 0-26.541-26.542H295.616l-3.318-5.746a3.83 3.83 0 0 0-6.635 0l-3.318 5.746-3.317-5.746a3.83 3.83 0 0 0-6.636 0l-3.317 5.746-3.318-5.746a3.83 3.83 0 0 0-6.635 0l-3.318 5.746c-.03 0-.056.004-.086.004l-5.497-5.495a3.83 3.83 0 0 0-6.407 1.717l-1.817 6.773-6.89-1.847a3.83 3.83 0 0 0-4.691 4.693l1.844 6.891-6.77 1.814a3.832 3.832 0 0 0-1.72 6.41l5.497 5.497c0 .028-.004.055-.004.085l-5.747 3.317a3.83 3.83 0 0 0 0 6.636l5.747 3.317-5.747 3.318a3.83 3.83 0 0 0 0 6.635l5.747 3.318-5.747 3.318a3.83 3.83 0 0 0 0 6.635l5.747 3.318-5.747 3.317a3.83 3.83 0 0 0 0 6.636l5.747 3.317-5.747 3.318a3.83 3.83 0 0 0 0 6.636l5.747 3.317-5.747 3.318a3.83 3.83 0 0 0 0 6.635l5.747 3.318-5.747 3.318a3.83 3.83 0 0 0 0 6.635l5.747 3.318-5.747 3.317a3.83 3.83 0 0 0 0 6.636l5.747 3.317-5.747 3.318a3.83 3.83 0 0 0 0 6.635l5.747 3.318-5.747 3.318a3.83 3.83 0 0 0 0 6.635l5.747 3.318-5.747 3.317a3.83 3.83 0 0 0 0 6.636l5.747 3.317-5.747 3.318a3.83 3.83 0 0 0 0 6.635l5.747 3.318a26.54 26.54 0 0 0 26.541 26.542h159.249a26.54 26.54 0 0 0 26.541-26.542V384.075l-92.922-5.807a14.126 14.126 0 0 1 0-28.197",fill:"#3ecc5f",fillRule:"evenodd"})),j||(j=B.createElement("path",{d:"M388.511 516.783h39.812V463.7h-39.812Z",fill:"#3ecc5f",fillRule:"evenodd"})),q||(q=B.createElement("path",{d:"M454.865 483.606a6.602 6.602 0 0 0-.848.085c-.05-.2-.099-.4-.154-.599a6.627 6.627 0 1 0-6.557-11.382q-.22-.225-.445-.446a6.624 6.624 0 1 0-11.397-6.564c-.196-.055-.394-.102-.59-.152a6.64 6.64 0 1 0-13.101 0c-.197.05-.394.097-.59.152a6.628 6.628 0 1 0-11.398 6.564 26.528 26.528 0 1 0 44.232 25.528 6.621 6.621 0 1 0 .848-13.186",fill:"#44d860",fillRule:"evenodd"})),V||(V=B.createElement("path",{d:"M401.782 437.158h39.812v-26.541h-39.812Z",fill:"#3ecc5f",fillRule:"evenodd"})),A||(A=B.createElement("path",{d:"M454.865 427.205a3.318 3.318 0 0 0 0-6.635 3.411 3.411 0 0 0-.424.042c-.026-.1-.049-.199-.077-.298a3.319 3.319 0 0 0-1.278-6.38 3.282 3.282 0 0 0-2 .688q-.11-.113-.224-.223a3.282 3.282 0 0 0 .672-1.983 3.318 3.318 0 0 0-6.37-1.299 13.27 13.27 0 1 0 0 25.541 3.318 3.318 0 0 0 6.37-1.3 3.282 3.282 0 0 0-.672-1.982q.114-.11.223-.223a3.282 3.282 0 0 0 2.001.688 3.318 3.318 0 0 0 1.278-6.38c.028-.098.05-.199.077-.298a3.413 3.413 0 0 0 .424.042",fill:"#44d860",fillRule:"evenodd"})),H||(H=B.createElement("path",{d:"M282.345 347.581a3.318 3.318 0 0 1-3.317-3.318 9.953 9.953 0 1 0-19.906 0 3.318 3.318 0 1 1-6.636 0 16.588 16.588 0 1 1 33.177 0 3.318 3.318 0 0 1-3.318 3.318",fillRule:"evenodd"})),G||(G=B.createElement("path",{d:"M335.428 516.783h79.625a26.54 26.54 0 0 0 26.541-26.542v-92.895H361.97a26.54 26.54 0 0 0-26.542 26.542Z",fill:"#ffff50",fillRule:"evenodd"})),N||(N=B.createElement("path",{d:"M421.714 438.485h-66.406a1.327 1.327 0 0 1 0-2.654h66.406a1.327 1.327 0 0 1 0 2.654m0 26.542h-66.406a1.327 1.327 0 1 1 0-2.654h66.406a1.327 1.327 0 0 1 0 2.654m0 26.541h-66.406a1.327 1.327 0 1 1 0-2.654h66.406a1.327 1.327 0 0 1 0 2.654m0-66.106h-66.406a1.327 1.327 0 0 1 0-2.655h66.406a1.327 1.327 0 0 1 0 2.655m0 26.294h-66.406a1.327 1.327 0 0 1 0-2.654h66.406a1.327 1.327 0 0 1 0 2.654m0 26.542h-66.406a1.327 1.327 0 0 1 0-2.655h66.406a1.327 1.327 0 0 1 0 2.655m19.88-122.607c-.016 0-.03-.008-.045-.007-4.1.14-6.04 4.241-7.753 7.86-1.786 3.783-3.168 6.242-5.432 6.167-2.506-.09-3.94-2.922-5.458-5.918-1.744-3.443-3.734-7.347-7.913-7.201-4.042.138-5.99 3.708-7.706 6.857-1.828 3.355-3.071 5.394-5.47 5.3-2.557-.093-3.916-2.395-5.488-5.06-1.753-2.967-3.78-6.304-7.878-6.19-3.973.137-5.925 3.166-7.648 5.84-1.822 2.826-3.098 4.549-5.527 4.447-2.618-.093-3.97-2.004-5.535-4.216-1.757-2.486-3.737-5.3-7.823-5.163-3.886.133-5.838 2.615-7.56 4.802-1.634 2.075-2.91 3.718-5.611 3.615a1.328 1.328 0 1 0-.096 2.654c4.004.134 6.032-2.389 7.793-4.628 1.562-1.985 2.91-3.698 5.564-3.789 2.556-.108 3.754 1.48 5.567 4.041 1.721 2.434 3.675 5.195 7.606 5.337 4.118.138 6.099-2.94 7.853-5.663 1.569-2.434 2.923-4.535 5.508-4.624 2.38-.088 3.674 1.792 5.5 4.885 1.722 2.916 3.671 6.22 7.68 6.365 4.147.143 6.15-3.477 7.895-6.682 1.511-2.77 2.938-5.388 5.466-5.475 2.38-.056 3.62 2.116 5.456 5.746 1.714 3.388 3.658 7.226 7.73 7.373l.224.004c4.066 0 5.996-4.08 7.704-7.689 1.511-3.198 2.942-6.21 5.397-6.334Z",fillRule:"evenodd"})),O||(O=B.createElement("path",{d:"M308.887 516.783h53.083V463.7h-53.083Z",fill:"#3ecc5f",fillRule:"evenodd"})),_||(_=B.createElement("path",{d:"M388.511 483.606a6.602 6.602 0 0 0-.848.085c-.05-.2-.098-.4-.154-.599a6.627 6.627 0 1 0-6.557-11.382q-.22-.225-.444-.446a6.624 6.624 0 1 0-11.397-6.564c-.197-.055-.394-.102-.59-.152a6.64 6.64 0 1 0-13.102 0c-.196.05-.394.097-.59.152a6.628 6.628 0 1 0-11.397 6.564 26.528 26.528 0 1 0 44.231 25.528 6.621 6.621 0 1 0 .848-13.186",fill:"#44d860",fillRule:"evenodd"})),S||(S=B.createElement("path",{d:"M308.887 437.158h53.083v-26.541h-53.083Z",fill:"#3ecc5f",fillRule:"evenodd"})),k||(k=B.createElement("path",{d:"M375.24 427.205a3.318 3.318 0 1 0 0-6.635 3.411 3.411 0 0 0-.423.042c-.026-.1-.05-.199-.077-.298a3.319 3.319 0 0 0-1.278-6.38 3.282 3.282 0 0 0-2.001.688q-.11-.113-.223-.223a3.282 3.282 0 0 0 .671-1.983 3.318 3.318 0 0 0-6.37-1.299 13.27 13.27 0 1 0 0 25.541 3.318 3.318 0 0 0 6.37-1.3 3.282 3.282 0 0 0-.671-1.982q.113-.11.223-.223a3.282 3.282 0 0 0 2.001.688 3.318 3.318 0 0 0 1.278-6.38c.028-.098.05-.199.077-.298a3.413 3.413 0 0 0 .423.042",fill:"#44d860",fillRule:"evenodd"})),z||(z=B.createElement("path",{d:"M388.511 329.334a3.603 3.603 0 0 1-.65-.067 3.344 3.344 0 0 1-.624-.185 3.447 3.447 0 0 1-.572-.306 5.027 5.027 0 0 1-.504-.411 3.887 3.887 0 0 1-.41-.504 3.275 3.275 0 0 1-.558-1.845 3.602 3.602 0 0 1 .067-.65 3.826 3.826 0 0 1 .184-.624 3.489 3.489 0 0 1 .307-.57 3.197 3.197 0 0 1 .914-.916 3.447 3.447 0 0 1 .572-.305 3.344 3.344 0 0 1 .624-.186 3.07 3.07 0 0 1 1.3 0 3.223 3.223 0 0 1 1.195.49 5.028 5.028 0 0 1 .504.412 4.88 4.88 0 0 1 .411.504 3.382 3.382 0 0 1 .306.571 3.478 3.478 0 0 1 .252 1.274 3.364 3.364 0 0 1-.969 2.349 5.027 5.027 0 0 1-.504.411 3.306 3.306 0 0 1-1.845.558m26.542-1.66a3.388 3.388 0 0 1-2.35-.968 5.042 5.042 0 0 1-.41-.504 3.275 3.275 0 0 1-.558-1.845 3.387 3.387 0 0 1 .967-2.349 5.026 5.026 0 0 1 .505-.411 3.447 3.447 0 0 1 .572-.305 3.343 3.343 0 0 1 .623-.186 3.07 3.07 0 0 1 1.3 0 3.224 3.224 0 0 1 1.195.49 5.026 5.026 0 0 1 .504.412 3.388 3.388 0 0 1 .97 2.35 3.726 3.726 0 0 1-.067.65 3.374 3.374 0 0 1-.186.623 4.715 4.715 0 0 1-.305.57 4.88 4.88 0 0 1-.412.505 5.026 5.026 0 0 1-.504.412 3.305 3.305 0 0 1-1.844.557",fillRule:"evenodd"})))}},3261:(e,a,t)=>{t.r(a),t.d(a,{default:()=>E});var l=t(512),r=t(9960),n=t(2263),c=t(2045),h=t(2503);const d={features:"features_t9lD",featureSvg:"featureSvg_GfXr"};var m=t(5893);const i=[{title:"Easy to Use",Svg:t(9722).Z,description:(0,m.jsx)(m.Fragment,{children:"Docusaurus was designed from the ground up to be easily installed and used to get your website up and running quickly."})},{title:"Focus on What Matters",Svg:t(4002).Z,description:(0,m.jsxs)(m.Fragment,{children:["Docusaurus lets you focus on your docs, and we'll do the chores. Go ahead and move your docs into the ",(0,m.jsx)("code",{children:"docs"})," directory."]})},{title:"Powered by React",Svg:t(8066).Z,description:(0,m.jsx)(m.Fragment,{children:"Extend or customize your website layout by reusing React. Docusaurus can be extended while reusing the same header and footer."})}];function s(e){let{Svg:a,title:t,description:r}=e;return(0,m.jsxs)("div",{className:(0,l.Z)("col col--4"),children:[(0,m.jsx)("div",{className:"text--center",children:(0,m.jsx)(a,{className:d.featureSvg,role:"img"})}),(0,m.jsxs)("div",{className:"text--center padding-horiz--md",children:[(0,m.jsx)(h.Z,{as:"h3",children:t}),(0,m.jsx)("p",{children:r})]})]})}function f(){return(0,m.jsx)("section",{className:d.features,children:(0,m.jsx)("div",{className:"container",children:(0,m.jsx)("div",{className:"row",children:i.map(((e,a)=>(0,m.jsx)(s,{...e},a)))})})})}const o={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"};function g(){const{siteConfig:e}=(0,n.Z)();return(0,m.jsx)("header",{className:(0,l.Z)("hero hero--primary",o.heroBanner),children:(0,m.jsxs)("div",{className:"container",children:[(0,m.jsx)(h.Z,{as:"h1",className:"hero__title",children:e.title}),(0,m.jsx)("p",{className:"hero__subtitle",children:e.tagline}),(0,m.jsx)("div",{className:o.buttons,children:(0,m.jsx)(r.Z,{className:"button button--secondary button--lg",to:"/docs/overview",children:"TaskWeaver Documents - 5min \u23f1\ufe0f"})})]})})}function E(){const{siteConfig:e}=(0,n.Z)();return(0,m.jsxs)(c.Z,{title:`Hello from ${e.title}`,description:"Description will go into a meta tag in ",children:[(0,m.jsx)(g,{}),(0,m.jsx)("main",{children:(0,m.jsx)(f,{})})]})}}}]); \ No newline at end of file diff --git a/assets/js/c4f5d8e4.902a52cf.js b/assets/js/c4f5d8e4.902a52cf.js new file mode 100644 index 00000000..22f35334 --- /dev/null +++ b/assets/js/c4f5d8e4.902a52cf.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[4195],{3261:(e,s,t)=>{t.r(s),t.d(s,{default:()=>p});var n=t(512),a=t(9960),i=t(2263),r=t(2045),c=t(2503);const o={features:"features_t9lD",featureSvg:"featureSvg_GfXr"};var d=t(5893);const l=[{title:"Support Rich Data Structure",Svg:t(1902).Z,description:(0,d.jsxs)(d.Fragment,{children:["TaskWeaver is designed to support rich data structure (e.g., ",(0,d.jsx)("code",{children:"pandas DataFrame"}),") in a stateful manner through the conversation."]})},{title:"Plugin Powered",Svg:t(181).Z,description:(0,d.jsxs)(d.Fragment,{children:["TaskWeaver leverages customized ",(0,d.jsx)("code",{children:"plugins"})," to extend the functionality of the Agent while supporting ad-hoc user queries."]})},{title:"Incorporate Domain Knowledge",Svg:t(684).Z,description:(0,d.jsx)(d.Fragment,{children:"Extend or customize your own Agent by incorporating Plugins and various Examples for domain-specific scenarios."})}];function u(e){let{Svg:s,title:t,description:a}=e;return(0,d.jsxs)("div",{className:(0,n.Z)("col col--4"),children:[(0,d.jsx)("div",{className:"text--center",children:(0,d.jsx)("img",{src:s,className:o.featureSvg})}),(0,d.jsxs)("div",{className:"text--center padding-horiz--md",children:[(0,d.jsx)(c.Z,{as:"h3",children:t}),(0,d.jsx)("p",{children:a})]})]})}function h(){return(0,d.jsx)("section",{className:o.features,children:(0,d.jsx)("div",{className:"container",children:(0,d.jsx)("div",{className:"row",children:l.map(((e,s)=>(0,d.jsx)(u,{...e},s)))})})})}const g={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"};function m(){const{siteConfig:e}=(0,i.Z)();return(0,d.jsx)("header",{className:(0,n.Z)("hero hero--primary",g.heroBanner),children:(0,d.jsxs)("div",{className:"container",children:[(0,d.jsx)(c.Z,{as:"h1",className:"hero__title",children:e.title}),(0,d.jsx)("p",{className:"hero__subtitle",children:e.tagline}),(0,d.jsx)("div",{className:g.buttons,children:(0,d.jsx)(a.Z,{className:"button button--secondary button--lg",to:"/docs/overview",children:"TaskWeaver Documents - 5min \u23f1\ufe0f"})})]})})}function p(){const{siteConfig:e}=(0,i.Z)();return(0,d.jsxs)(r.Z,{title:`Hello from ${e.title}`,description:"Description will go into a meta tag in ",children:[(0,d.jsx)(m,{}),(0,d.jsx)("main",{children:(0,d.jsx)(h,{})})]})}},1902:(e,s,t)=>{t.d(s,{Z:()=>n});const n=t.p+"assets/images/data-b0233cff3b2d3e7d1f4c7210bd827e4b.jpg"},684:(e,s,t)=>{t.d(s,{Z:()=>n});const n=t.p+"assets/images/domains-eb14d2a9596df0092bb60ad97746aba4.jpg"},181:(e,s,t)=>{t.d(s,{Z:()=>n});const n=t.p+"assets/images/plugins-95c30f6685a410abb928b259fef670f4.jpg"}}]); \ No newline at end of file diff --git a/assets/js/d9f32620.04472a88.js b/assets/js/d9f32620.04472a88.js deleted file mode 100644 index 1370b6f3..00000000 --- a/assets/js/d9f32620.04472a88.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[1914],{8123:(e,s,o)=>{o.r(s),o.d(s,{assets:()=>c,contentTitle:()=>r,default:()=>d,frontMatter:()=>a,metadata:()=>l,toc:()=>u});var t=o(5893),n=o(1151);const a={slug:"welcome",title:"Welcome",authors:["slorber","yangshun"],tags:["facebook","hello","docusaurus"]},r=void 0,l={permalink:"/TaskWeaver/blog/welcome",editUrl:"https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/blog/2021-08-26-welcome/index.md",source:"@site/blog/2021-08-26-welcome/index.md",title:"Welcome",description:"Docusaurus blogging features are powered by the blog plugin.",date:"2021-08-26T00:00:00.000Z",formattedDate:"August 26, 2021",tags:[{label:"facebook",permalink:"/TaskWeaver/blog/tags/facebook"},{label:"hello",permalink:"/TaskWeaver/blog/tags/hello"},{label:"docusaurus",permalink:"/TaskWeaver/blog/tags/docusaurus"}],readingTime:.405,hasTruncateMarker:!1,authors:[{name:"S\xe9bastien Lorber",title:"Docusaurus maintainer",url:"https://sebastienlorber.com",imageURL:"https://github.com/slorber.png",key:"slorber"},{name:"Yangshun Tay",title:"Front End Engineer @ Facebook",url:"https://github.com/yangshun",imageURL:"https://github.com/yangshun.png",key:"yangshun"}],frontMatter:{slug:"welcome",title:"Welcome",authors:["slorber","yangshun"],tags:["facebook","hello","docusaurus"]},unlisted:!1,nextItem:{title:"MDX Blog Post",permalink:"/TaskWeaver/blog/mdx-blog-post"}},c={authorsImageUrls:[void 0,void 0]},u=[];function i(e){const s={a:"a",code:"code",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,n.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://docusaurus.io/docs/blog",children:"Docusaurus blogging features"})," are powered by the ",(0,t.jsx)(s.a,{href:"https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-blog",children:"blog plugin"}),"."]}),"\n",(0,t.jsxs)(s.p,{children:["Simply add Markdown files (or folders) to the ",(0,t.jsx)(s.code,{children:"blog"})," directory."]}),"\n",(0,t.jsxs)(s.p,{children:["Regular blog authors can be added to ",(0,t.jsx)(s.code,{children:"authors.yml"}),"."]}),"\n",(0,t.jsx)(s.p,{children:"The blog post date can be extracted from filenames, such as:"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsx)(s.li,{children:(0,t.jsx)(s.code,{children:"2019-05-30-welcome.md"})}),"\n",(0,t.jsx)(s.li,{children:(0,t.jsx)(s.code,{children:"2019-05-30-welcome/index.md"})}),"\n"]}),"\n",(0,t.jsx)(s.p,{children:"A blog post folder can be convenient to co-locate blog post images:"}),"\n",(0,t.jsx)(s.p,{children:(0,t.jsx)(s.img,{alt:"Docusaurus Plushie",src:o(3217).Z+"",width:"1500",height:"500"})}),"\n",(0,t.jsx)(s.p,{children:"The blog supports tags as well!"}),"\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.strong,{children:"And if you don't want a blog"}),": just delete this directory, and use ",(0,t.jsx)(s.code,{children:"blog: false"})," in your Docusaurus config."]})]})}function d(e={}){const{wrapper:s}={...(0,n.a)(),...e.components};return s?(0,t.jsx)(s,{...e,children:(0,t.jsx)(i,{...e})}):i(e)}},3217:(e,s,o)=>{o.d(s,{Z:()=>t});const t=o.p+"assets/images/docusaurus-plushie-banner-a60f7593abca1e3eef26a9afa244e4fb.jpeg"},1151:(e,s,o)=>{o.d(s,{Z:()=>l,a:()=>r});var t=o(7294);const n={},a=t.createContext(n);function r(e){const s=t.useContext(a);return t.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function l(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:r(e.components),t.createElement(a.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/d9f32620.e8050201.js b/assets/js/d9f32620.e8050201.js new file mode 100644 index 00000000..43cad135 --- /dev/null +++ b/assets/js/d9f32620.e8050201.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[1914],{8123:(e,s,o)=>{o.r(s),o.d(s,{assets:()=>c,contentTitle:()=>r,default:()=>d,frontMatter:()=>a,metadata:()=>l,toc:()=>i});var t=o(5893),n=o(1151);const a={slug:"welcome",title:"Welcome",authors:["slorber","yangshun"],tags:["facebook","hello","docusaurus"]},r=void 0,l={permalink:"/TaskWeaver/blog/welcome",editUrl:"https://github.com/microsoft/TaskWeaver/tree/docs/website/blog/2021-08-26-welcome/index.md",source:"@site/blog/2021-08-26-welcome/index.md",title:"Welcome",description:"Docusaurus blogging features are powered by the blog plugin.",date:"2021-08-26T00:00:00.000Z",formattedDate:"August 26, 2021",tags:[{label:"facebook",permalink:"/TaskWeaver/blog/tags/facebook"},{label:"hello",permalink:"/TaskWeaver/blog/tags/hello"},{label:"docusaurus",permalink:"/TaskWeaver/blog/tags/docusaurus"}],readingTime:.405,hasTruncateMarker:!1,authors:[{name:"S\xe9bastien Lorber",title:"Docusaurus maintainer",url:"https://sebastienlorber.com",imageURL:"https://github.com/slorber.png",key:"slorber"},{name:"Yangshun Tay",title:"Front End Engineer @ Facebook",url:"https://github.com/yangshun",imageURL:"https://github.com/yangshun.png",key:"yangshun"}],frontMatter:{slug:"welcome",title:"Welcome",authors:["slorber","yangshun"],tags:["facebook","hello","docusaurus"]},unlisted:!1,nextItem:{title:"MDX Blog Post",permalink:"/TaskWeaver/blog/mdx-blog-post"}},c={authorsImageUrls:[void 0,void 0]},i=[];function u(e){const s={a:"a",code:"code",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,n.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://docusaurus.io/docs/blog",children:"Docusaurus blogging features"})," are powered by the ",(0,t.jsx)(s.a,{href:"https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-blog",children:"blog plugin"}),"."]}),"\n",(0,t.jsxs)(s.p,{children:["Simply add Markdown files (or folders) to the ",(0,t.jsx)(s.code,{children:"blog"})," directory."]}),"\n",(0,t.jsxs)(s.p,{children:["Regular blog authors can be added to ",(0,t.jsx)(s.code,{children:"authors.yml"}),"."]}),"\n",(0,t.jsx)(s.p,{children:"The blog post date can be extracted from filenames, such as:"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsx)(s.li,{children:(0,t.jsx)(s.code,{children:"2019-05-30-welcome.md"})}),"\n",(0,t.jsx)(s.li,{children:(0,t.jsx)(s.code,{children:"2019-05-30-welcome/index.md"})}),"\n"]}),"\n",(0,t.jsx)(s.p,{children:"A blog post folder can be convenient to co-locate blog post images:"}),"\n",(0,t.jsx)(s.p,{children:(0,t.jsx)(s.img,{alt:"Docusaurus Plushie",src:o(3217).Z+"",width:"1500",height:"500"})}),"\n",(0,t.jsx)(s.p,{children:"The blog supports tags as well!"}),"\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.strong,{children:"And if you don't want a blog"}),": just delete this directory, and use ",(0,t.jsx)(s.code,{children:"blog: false"})," in your Docusaurus config."]})]})}function d(e={}){const{wrapper:s}={...(0,n.a)(),...e.components};return s?(0,t.jsx)(s,{...e,children:(0,t.jsx)(u,{...e})}):u(e)}},3217:(e,s,o)=>{o.d(s,{Z:()=>t});const t=o.p+"assets/images/docusaurus-plushie-banner-a60f7593abca1e3eef26a9afa244e4fb.jpeg"},1151:(e,s,o)=>{o.d(s,{Z:()=>l,a:()=>r});var t=o(7294);const n={},a=t.createContext(n);function r(e){const s=t.useContext(a);return t.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function l(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:r(e.components),t.createElement(a.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/e273c56f.07ccc04f.js b/assets/js/e273c56f.07ccc04f.js deleted file mode 100644 index d45ba2cf..00000000 --- a/assets/js/e273c56f.07ccc04f.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[2362],{9954:(t,e,o)=>{o.r(e),o.d(e,{assets:()=>n,contentTitle:()=>u,default:()=>m,frontMatter:()=>r,metadata:()=>i,toc:()=>l});var s=o(5893),a=o(1151);const r={slug:"first-blog-post",title:"First Blog Post",authors:{name:"Gao Wei",title:"Docusaurus Core Team",url:"https://github.com/wgao19",image_url:"https://github.com/wgao19.png"},tags:["hola","docusaurus"]},u=void 0,i={permalink:"/TaskWeaver/blog/first-blog-post",editUrl:"https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/blog/2019-05-28-first-blog-post.md",source:"@site/blog/2019-05-28-first-blog-post.md",title:"First Blog Post",description:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet",date:"2019-05-28T00:00:00.000Z",formattedDate:"May 28, 2019",tags:[{label:"hola",permalink:"/TaskWeaver/blog/tags/hola"},{label:"docusaurus",permalink:"/TaskWeaver/blog/tags/docusaurus"}],readingTime:.12,hasTruncateMarker:!1,authors:[{name:"Gao Wei",title:"Docusaurus Core Team",url:"https://github.com/wgao19",image_url:"https://github.com/wgao19.png",imageURL:"https://github.com/wgao19.png"}],frontMatter:{slug:"first-blog-post",title:"First Blog Post",authors:{name:"Gao Wei",title:"Docusaurus Core Team",url:"https://github.com/wgao19",image_url:"https://github.com/wgao19.png",imageURL:"https://github.com/wgao19.png"},tags:["hola","docusaurus"]},unlisted:!1,prevItem:{title:"Long Blog Post",permalink:"/TaskWeaver/blog/long-blog-post"}},n={authorsImageUrls:[void 0]},l=[];function c(t){const e={p:"p",...(0,a.a)(),...t.components};return(0,s.jsx)(e.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"})}function m(t={}){const{wrapper:e}={...(0,a.a)(),...t.components};return e?(0,s.jsx)(e,{...t,children:(0,s.jsx)(c,{...t})}):c(t)}},1151:(t,e,o)=>{o.d(e,{Z:()=>i,a:()=>u});var s=o(7294);const a={},r=s.createContext(a);function u(t){const e=s.useContext(r);return s.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function i(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(a):t.components||a:u(t.components),s.createElement(r.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/e273c56f.ae2acd0e.js b/assets/js/e273c56f.ae2acd0e.js new file mode 100644 index 00000000..bad51618 --- /dev/null +++ b/assets/js/e273c56f.ae2acd0e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[2362],{9954:(t,e,o)=>{o.r(e),o.d(e,{assets:()=>n,contentTitle:()=>i,default:()=>c,frontMatter:()=>r,metadata:()=>u,toc:()=>l});var s=o(5893),a=o(1151);const r={slug:"first-blog-post",title:"First Blog Post",authors:{name:"Gao Wei",title:"Docusaurus Core Team",url:"https://github.com/wgao19",image_url:"https://github.com/wgao19.png"},tags:["hola","docusaurus"]},i=void 0,u={permalink:"/TaskWeaver/blog/first-blog-post",editUrl:"https://github.com/microsoft/TaskWeaver/tree/docs/website/blog/2019-05-28-first-blog-post.md",source:"@site/blog/2019-05-28-first-blog-post.md",title:"First Blog Post",description:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet",date:"2019-05-28T00:00:00.000Z",formattedDate:"May 28, 2019",tags:[{label:"hola",permalink:"/TaskWeaver/blog/tags/hola"},{label:"docusaurus",permalink:"/TaskWeaver/blog/tags/docusaurus"}],readingTime:.12,hasTruncateMarker:!1,authors:[{name:"Gao Wei",title:"Docusaurus Core Team",url:"https://github.com/wgao19",image_url:"https://github.com/wgao19.png",imageURL:"https://github.com/wgao19.png"}],frontMatter:{slug:"first-blog-post",title:"First Blog Post",authors:{name:"Gao Wei",title:"Docusaurus Core Team",url:"https://github.com/wgao19",image_url:"https://github.com/wgao19.png",imageURL:"https://github.com/wgao19.png"},tags:["hola","docusaurus"]},unlisted:!1,prevItem:{title:"Long Blog Post",permalink:"/TaskWeaver/blog/long-blog-post"}},n={authorsImageUrls:[void 0]},l=[];function m(t){const e={p:"p",...(0,a.a)(),...t.components};return(0,s.jsx)(e.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"})}function c(t={}){const{wrapper:e}={...(0,a.a)(),...t.components};return e?(0,s.jsx)(e,{...t,children:(0,s.jsx)(m,{...t})}):m(t)}},1151:(t,e,o)=>{o.d(e,{Z:()=>u,a:()=>i});var s=o(7294);const a={},r=s.createContext(a);function i(t){const e=s.useContext(r);return s.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function u(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(a):t.components||a:i(t.components),s.createElement(r.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/f04cdb7e.105f1904.js b/assets/js/f04cdb7e.105f1904.js new file mode 100644 index 00000000..6a08914f --- /dev/null +++ b/assets/js/f04cdb7e.105f1904.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[8905],{3995:(e,l,a)=>{a.r(l),a.d(l,{assets:()=>i,contentTitle:()=>s,default:()=>d,frontMatter:()=>o,metadata:()=>r,toc:()=>c});var t=a(5893),n=a(1151);const o={},s="Ollama",r={id:"llms/ollama",title:"Ollama",description:"How to use Ollama LLM API",source:"@site/docs/llms/ollama.md",sourceDirName:"llms",slug:"/llms/ollama",permalink:"/TaskWeaver/docs/llms/ollama",draft:!1,unlisted:!1,editUrl:"https://github.com/microsoft/TaskWeaver/tree/docs/website/docs/llms/ollama.md",tags:[],version:"current",frontMatter:{},sidebar:"documentSidebar",previous:{title:"LiteLLM",permalink:"/TaskWeaver/docs/llms/liteLLM"},next:{title:"Gemini",permalink:"/TaskWeaver/docs/llms/geni"}},i={},c=[{value:"How to use Ollama LLM API",id:"how-to-use-ollama-llm-api",level:2}];function m(e){const l={a:"a",code:"code",h1:"h1",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",...(0,n.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(l.h1,{id:"ollama",children:"Ollama"}),"\n",(0,t.jsx)(l.h2,{id:"how-to-use-ollama-llm-api",children:"How to use Ollama LLM API"}),"\n",(0,t.jsxs)(l.ol,{children:["\n",(0,t.jsxs)(l.li,{children:["Go to ",(0,t.jsx)(l.a,{href:"https://github.com/jmorganca/ollama",children:"Ollama"})," and follow the instructions to set up a LLM model on your local environment.\nWe recommend deploying the LLM with a parameter scale exceeding 13 billion for enhanced performance."]}),"\n",(0,t.jsxs)(l.li,{children:["Add following configuration to ",(0,t.jsx)(l.code,{children:"taskweaver_config.json"}),":"]}),"\n"]}),"\n",(0,t.jsx)(l.pre,{children:(0,t.jsx)(l.code,{className:"language-json",children:'{\n "llm.api_base": "http://localhost:11434",\n "llm.api_key": "ARBITRARY_STRING",\n "llm.api_type": "ollama",\n "llm.model": "llama2:13b"\n}\n'})}),"\n",(0,t.jsxs)(l.p,{children:["NOTE: ",(0,t.jsx)(l.code,{children:"llm.api_base"})," is the URL started in the Ollama LLM server and ",(0,t.jsx)(l.code,{children:"llm.model"})," is the model name of Ollama LLM.\n3. Start TaskWeaver and chat with TaskWeaver.\nYou can refer to the ",(0,t.jsx)(l.a,{href:"/TaskWeaver/docs/quickstart",children:"Quick Start"})," for more details."]})]})}function d(e={}){const{wrapper:l}={...(0,n.a)(),...e.components};return l?(0,t.jsx)(l,{...e,children:(0,t.jsx)(m,{...e})}):m(e)}},1151:(e,l,a)=>{a.d(l,{Z:()=>r,a:()=>s});var t=a(7294);const n={},o=t.createContext(n);function s(e){const l=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(l):{...l,...e}}),[l,e])}function r(e){let l;return l=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:s(e.components),t.createElement(o.Provider,{value:l},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/f04cdb7e.223cb7c3.js b/assets/js/f04cdb7e.223cb7c3.js deleted file mode 100644 index dd85aed6..00000000 --- a/assets/js/f04cdb7e.223cb7c3.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[8905],{3995:(e,l,a)=>{a.r(l),a.d(l,{assets:()=>i,contentTitle:()=>s,default:()=>d,frontMatter:()=>o,metadata:()=>r,toc:()=>c});var t=a(5893),n=a(1151);const o={},s="Ollama",r={id:"llms/ollama",title:"Ollama",description:"How to use Ollama LLM API",source:"@site/docs/llms/ollama.md",sourceDirName:"llms",slug:"/llms/ollama",permalink:"/TaskWeaver/docs/llms/ollama",draft:!1,unlisted:!1,editUrl:"https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/docs/llms/ollama.md",tags:[],version:"current",frontMatter:{},sidebar:"documentSidebar",previous:{title:"LiteLLM",permalink:"/TaskWeaver/docs/llms/liteLLM"},next:{title:"Gemini",permalink:"/TaskWeaver/docs/llms/geni"}},i={},c=[{value:"How to use Ollama LLM API",id:"how-to-use-ollama-llm-api",level:2}];function m(e){const l={a:"a",code:"code",h1:"h1",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",...(0,n.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(l.h1,{id:"ollama",children:"Ollama"}),"\n",(0,t.jsx)(l.h2,{id:"how-to-use-ollama-llm-api",children:"How to use Ollama LLM API"}),"\n",(0,t.jsxs)(l.ol,{children:["\n",(0,t.jsxs)(l.li,{children:["Go to ",(0,t.jsx)(l.a,{href:"https://github.com/jmorganca/ollama",children:"Ollama"})," and follow the instructions to set up a LLM model on your local environment.\nWe recommend deploying the LLM with a parameter scale exceeding 13 billion for enhanced performance."]}),"\n",(0,t.jsxs)(l.li,{children:["Add following configuration to ",(0,t.jsx)(l.code,{children:"taskweaver_config.json"}),":"]}),"\n"]}),"\n",(0,t.jsx)(l.pre,{children:(0,t.jsx)(l.code,{className:"language-json",children:'{\n "llm.api_base": "http://localhost:11434",\n "llm.api_key": "ARBITRARY_STRING",\n "llm.api_type": "ollama",\n "llm.model": "llama2:13b"\n}\n'})}),"\n",(0,t.jsxs)(l.p,{children:["NOTE: ",(0,t.jsx)(l.code,{children:"llm.api_base"})," is the URL started in the Ollama LLM server and ",(0,t.jsx)(l.code,{children:"llm.model"})," is the model name of Ollama LLM.\n3. Start TaskWeaver and chat with TaskWeaver.\nYou can refer to the ",(0,t.jsx)(l.a,{href:"/TaskWeaver/docs/quickstart",children:"Quick Start"})," for more details."]})]})}function d(e={}){const{wrapper:l}={...(0,n.a)(),...e.components};return l?(0,t.jsx)(l,{...e,children:(0,t.jsx)(m,{...e})}):m(e)}},1151:(e,l,a)=>{a.d(l,{Z:()=>r,a:()=>s});var t=a(7294);const n={},o=t.createContext(n);function s(e){const l=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(l):{...l,...e}}),[l,e])}function r(e){let l;return l=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:s(e.components),t.createElement(o.Provider,{value:l},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/f4f34a3a.8b40740b.js b/assets/js/f4f34a3a.8b40740b.js deleted file mode 100644 index d5cebe4f..00000000 --- a/assets/js/f4f34a3a.8b40740b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[8636],{743:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>c,contentTitle:()=>n,default:()=>d,frontMatter:()=>a,metadata:()=>u,toc:()=>l});var s=o(5893),r=o(1151);const a={slug:"mdx-blog-post",title:"MDX Blog Post",authors:["slorber"],tags:["docusaurus"]},n=void 0,u={permalink:"/TaskWeaver/blog/mdx-blog-post",editUrl:"https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/blog/2021-08-01-mdx-blog-post.mdx",source:"@site/blog/2021-08-01-mdx-blog-post.mdx",title:"MDX Blog Post",description:"Blog posts support Docusaurus Markdown features, such as MDX.",date:"2021-08-01T00:00:00.000Z",formattedDate:"August 1, 2021",tags:[{label:"docusaurus",permalink:"/TaskWeaver/blog/tags/docusaurus"}],readingTime:.175,hasTruncateMarker:!1,authors:[{name:"S\xe9bastien Lorber",title:"Docusaurus maintainer",url:"https://sebastienlorber.com",imageURL:"https://github.com/slorber.png",key:"slorber"}],frontMatter:{slug:"mdx-blog-post",title:"MDX Blog Post",authors:["slorber"],tags:["docusaurus"]},unlisted:!1,prevItem:{title:"Welcome",permalink:"/TaskWeaver/blog/welcome"},nextItem:{title:"Long Blog Post",permalink:"/TaskWeaver/blog/long-blog-post"}},c={authorsImageUrls:[void 0]},l=[];function i(e){const t={a:"a",admonition:"admonition",code:"code",p:"p",pre:"pre",...(0,r.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(t.p,{children:["Blog posts support ",(0,s.jsx)(t.a,{href:"https://docusaurus.io/docs/markdown-features",children:"Docusaurus Markdown features"}),", such as ",(0,s.jsx)(t.a,{href:"https://mdxjs.com/",children:"MDX"}),"."]}),"\n",(0,s.jsxs)(t.admonition,{type:"tip",children:[(0,s.jsx)(t.p,{children:"Use the power of React to create interactive blog posts."}),(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-js",children:"\n"})}),(0,s.jsx)("button",{onClick:()=>alert("button clicked!"),children:"Click me!"})]})]})}function d(e={}){const{wrapper:t}={...(0,r.a)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(i,{...e})}):i(e)}},1151:(e,t,o)=>{o.d(t,{Z:()=>u,a:()=>n});var s=o(7294);const r={},a=s.createContext(r);function n(e){const t=s.useContext(a);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function u(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:n(e.components),s.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/f4f34a3a.fb11a68c.js b/assets/js/f4f34a3a.fb11a68c.js new file mode 100644 index 00000000..6e37e2aa --- /dev/null +++ b/assets/js/f4f34a3a.fb11a68c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[8636],{743:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>d,frontMatter:()=>n,metadata:()=>l,toc:()=>u});var s=o(5893),r=o(1151);const n={slug:"mdx-blog-post",title:"MDX Blog Post",authors:["slorber"],tags:["docusaurus"]},a=void 0,l={permalink:"/TaskWeaver/blog/mdx-blog-post",editUrl:"https://github.com/microsoft/TaskWeaver/tree/docs/website/blog/2021-08-01-mdx-blog-post.mdx",source:"@site/blog/2021-08-01-mdx-blog-post.mdx",title:"MDX Blog Post",description:"Blog posts support Docusaurus Markdown features, such as MDX.",date:"2021-08-01T00:00:00.000Z",formattedDate:"August 1, 2021",tags:[{label:"docusaurus",permalink:"/TaskWeaver/blog/tags/docusaurus"}],readingTime:.175,hasTruncateMarker:!1,authors:[{name:"S\xe9bastien Lorber",title:"Docusaurus maintainer",url:"https://sebastienlorber.com",imageURL:"https://github.com/slorber.png",key:"slorber"}],frontMatter:{slug:"mdx-blog-post",title:"MDX Blog Post",authors:["slorber"],tags:["docusaurus"]},unlisted:!1,prevItem:{title:"Welcome",permalink:"/TaskWeaver/blog/welcome"},nextItem:{title:"Long Blog Post",permalink:"/TaskWeaver/blog/long-blog-post"}},c={authorsImageUrls:[void 0]},u=[];function i(e){const t={a:"a",admonition:"admonition",code:"code",p:"p",pre:"pre",...(0,r.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(t.p,{children:["Blog posts support ",(0,s.jsx)(t.a,{href:"https://docusaurus.io/docs/markdown-features",children:"Docusaurus Markdown features"}),", such as ",(0,s.jsx)(t.a,{href:"https://mdxjs.com/",children:"MDX"}),"."]}),"\n",(0,s.jsxs)(t.admonition,{type:"tip",children:[(0,s.jsx)(t.p,{children:"Use the power of React to create interactive blog posts."}),(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-js",children:"\n"})}),(0,s.jsx)("button",{onClick:()=>alert("button clicked!"),children:"Click me!"})]})]})}function d(e={}){const{wrapper:t}={...(0,r.a)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(i,{...e})}):i(e)}},1151:(e,t,o)=>{o.d(t,{Z:()=>l,a:()=>a});var s=o(7294);const r={},n=s.createContext(r);function a(e){const t=s.useContext(n);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),s.createElement(n.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/main.f205b142.js b/assets/js/main.b4f52c5a.js similarity index 79% rename from assets/js/main.f205b142.js rename to assets/js/main.b4f52c5a.js index a00924e3..1796bcff 100644 --- a/assets/js/main.f205b142.js +++ b/assets/js/main.b4f52c5a.js @@ -1,2 +1,2 @@ -/*! For license information please see main.f205b142.js.LICENSE.txt */ -(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[179],{1728:(e,t,n)=>{"use strict";function r(e){var t,n,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;ta});const a=function(){for(var e,t,n=0,a="";n{"use strict";n.d(t,{Z:()=>p});n(7294);var r=n(8356),a=n.n(r),o=n(6887);const i={"01a85c17":[()=>Promise.all([n.e(532),n.e(4013)]).then(n.bind(n,1223)),"@theme/BlogTagsListPage",1223],"17284fae":[()=>n.e(7402).then(n.bind(n,6444)),"@site/docs/example.md",6444],17896441:[()=>Promise.all([n.e(532),n.e(7779),n.e(7918)]).then(n.bind(n,8945)),"@theme/DocItem",8945],"1a4e3797":[()=>Promise.all([n.e(532),n.e(7920)]).then(n.bind(n,1473)),"@theme/SearchPage",1473],"1bba509c":[()=>n.e(4304).then(n.bind(n,4511)),"@site/docs/plugin/plugin_selection.md",4511],"1db64337":[()=>n.e(1372).then(n.bind(n,9674)),"@site/docs/overview.md",9674],"1f391b9e":[()=>Promise.all([n.e(532),n.e(7779),n.e(3085)]).then(n.bind(n,4247)),"@theme/MDXPage",4247],"2603e7ac":[()=>n.e(2930).then(n.bind(n,6600)),"@site/docs/run_pytest.md",6600],"276a1415":[()=>n.e(2277).then(n.t.bind(n,8210,19)),"~blog/default/task-weaver-blog-tags-hello-6c1.json",8210],"2aeb6ff3":[()=>n.e(3269).then(n.bind(n,6671)),"@site/docs/planner.md",6671],"2ce24e93":[()=>n.e(1766).then(n.t.bind(n,2721,19)),"~blog/default/task-weaver-blog-41c.json",2721],"2d150794":[()=>n.e(3982).then(n.t.bind(n,4971,19)),"~blog/default/task-weaver-blog-tags-hello-6c1-list.json",4971],"31db19d2":[()=>n.e(6011).then(n.bind(n,906)),"@site/docs/session.md",906],"393be207":[()=>n.e(7414).then(n.bind(n,1181)),"@site/src/pages/markdown-page.md",1181],"3ad3027d":[()=>n.e(4728).then(n.bind(n,4390)),"@site/docs/llms/geni.md",4390],"3d6402a8":[()=>Promise.all([n.e(532),n.e(889)]).then(n.bind(n,4497)),"@site/docs/llms/openai.mdx",4497],59362658:[()=>n.e(2267).then(n.bind(n,7797)),"@site/blog/2021-08-01-mdx-blog-post.mdx",7797],"5d7f3e2f":[()=>n.e(6910).then(n.bind(n,3616)),"@site/docs/configurations.md",3616],"5e95c892":[()=>n.e(9661).then(n.bind(n,1892)),"@theme/DocsRoot",1892],"5e9f5e1a":[()=>Promise.resolve().then(n.bind(n,6809)),"@generated/docusaurus.config",6809],"6875c492":[()=>Promise.all([n.e(532),n.e(7779),n.e(9677),n.e(8610)]).then(n.bind(n,1714)),"@theme/BlogTagsPostsPage",1714],"6b4ad289":[()=>n.e(7252).then(n.t.bind(n,3769,19)),"/home/runner/work/TaskWeaver/TaskWeaver/website/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json",3769],"73664a40":[()=>n.e(3514).then(n.bind(n,1985)),"@site/blog/2019-05-29-long-blog-post.md",1985],"7661071f":[()=>n.e(9642).then(n.bind(n,3174)),"@site/blog/2021-08-26-welcome/index.md?truncated=true",3174],"7743e38b":[()=>n.e(8961).then(n.t.bind(n,1721,19)),"~blog/default/task-weaver-blog-tags-facebook-765-list.json",1721],"78c602cd":[()=>n.e(2575).then(n.t.bind(n,6957,19)),"~blog/default/task-weaver-blog-tags-hola-f10-list.json",6957],"792477b0":[()=>n.e(9522).then(n.t.bind(n,8051,19)),"~blog/default/task-weaver-blog-archive-08b.json",8051],"7aaa2aa0":[()=>n.e(1572).then(n.t.bind(n,8201,19)),"~blog/default/task-weaver-blog-tags-facebook-765.json",8201],"7fc9262a":[()=>n.e(746).then(n.bind(n,5333)),"@site/docs/llms/liteLLM.md",5333],"8070e160":[()=>n.e(2651).then(n.bind(n,9759)),"@site/docs/quickstart.md",9759],"814f3328":[()=>n.e(2535).then(n.t.bind(n,5641,19)),"~blog/default/blog-post-list-prop-default.json",5641],"84aef7fb":[()=>n.e(8841).then(n.t.bind(n,291,19)),"~blog/default/task-weaver-blog-tags-docusaurus-e01-list.json",291],"8550895a":[()=>n.e(8892).then(n.bind(n,6279)),"@site/docs/plugin/embedding.md",6279],"8717b14a":[()=>n.e(948).then(n.bind(n,7106)),"@site/blog/2019-05-29-long-blog-post.md?truncated=true",7106],"8f0a7c30":[()=>n.e(664).then(n.bind(n,9600)),"@site/docs/taskweaver_as_a_lib.md",9600],"908ff8c6":[()=>n.e(4042).then(n.t.bind(n,8987,19)),"~blog/default/task-weaver-blog-tags-docusaurus-e01.json",8987],"925b3f96":[()=>n.e(9003).then(n.bind(n,3902)),"@site/blog/2019-05-28-first-blog-post.md?truncated=true",3902],"935f2afb":[()=>n.e(53).then(n.t.bind(n,1109,19)),"~docs/default/version-current-metadata-prop-751.json",1109],"9e4087bc":[()=>n.e(3608).then(n.bind(n,3169)),"@theme/BlogArchivePage",3169],"9fbcb257":[()=>n.e(8007).then(n.bind(n,1940)),"@site/docs/plugin/plugin_intro.md",1940],a4259125:[()=>Promise.all([n.e(532),n.e(419)]).then(n.bind(n,2897)),"@site/docs/llms/index.md",2897],a6aa9e1f:[()=>Promise.all([n.e(532),n.e(7779),n.e(9677),n.e(3089)]).then(n.bind(n,46)),"@theme/BlogListPage",46],a7bd4aaa:[()=>n.e(8518).then(n.bind(n,8564)),"@theme/DocVersionRoot",8564],a94703ab:[()=>Promise.all([n.e(532),n.e(4368)]).then(n.bind(n,2674)),"@theme/DocRoot",2674],bbe97ef6:[()=>n.e(5111).then(n.bind(n,8722)),"@site/docs/compression.md",8722],be4af720:[()=>n.e(8654).then(n.bind(n,3172)),"@site/docs/llms/qwen.md",3172],c4f5d8e4:[()=>Promise.all([n.e(532),n.e(4195)]).then(n.bind(n,3261)),"@site/src/pages/index.js",3261],ccc49370:[()=>Promise.all([n.e(532),n.e(7779),n.e(9677),n.e(6103)]).then(n.bind(n,5203)),"@theme/BlogPostPage",5203],d385135b:[()=>n.e(5870).then(n.t.bind(n,2776,19)),"/home/runner/work/TaskWeaver/TaskWeaver/website/.docusaurus/@easyops-cn/docusaurus-search-local/default/plugin-route-context-module-100.json",2776],d9a31669:[()=>n.e(7102).then(n.t.bind(n,4469,19)),"/home/runner/work/TaskWeaver/TaskWeaver/website/.docusaurus/docusaurus-plugin-content-blog/default/plugin-route-context-module-100.json",4469],d9f32620:[()=>n.e(1914).then(n.bind(n,8123)),"@site/blog/2021-08-26-welcome/index.md",8123],e273c56f:[()=>n.e(2362).then(n.bind(n,9954)),"@site/blog/2019-05-28-first-blog-post.md",9954],ea1bcbf0:[()=>n.e(1317).then(n.t.bind(n,8546,19)),"~blog/default/task-weaver-blog-tags-tags-49d.json",8546],f04cdb7e:[()=>n.e(8905).then(n.bind(n,3995)),"@site/docs/llms/ollama.md",3995],f10ee74f:[()=>n.e(9555).then(n.t.bind(n,5745,19)),"/home/runner/work/TaskWeaver/TaskWeaver/website/.docusaurus/docusaurus-plugin-content-pages/default/plugin-route-context-module-100.json",5745],f10efa27:[()=>n.e(1938).then(n.t.bind(n,1935,19)),"~blog/default/task-weaver-blog-tags-hola-f10.json",1935],f4f34a3a:[()=>n.e(8636).then(n.bind(n,743)),"@site/blog/2021-08-01-mdx-blog-post.mdx?truncated=true",743]};var l=n(5893);function s(e){let{error:t,retry:n,pastDelay:r}=e;return t?(0,l.jsxs)("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"},children:[(0,l.jsx)("p",{children:String(t)}),(0,l.jsx)("div",{children:(0,l.jsx)("button",{type:"button",onClick:n,children:"Retry"})})]}):r?(0,l.jsx)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"},children:(0,l.jsx)("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb",children:(0,l.jsxs)("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2",children:[(0,l.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,l.jsx)("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,l.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,l.jsx)("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,l.jsx)("circle",{cx:"22",cy:"22",r:"8",children:(0,l.jsx)("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"})})]})})}):null}var u=n(9670),c=n(226);function d(e,t){if("*"===e)return a()({loading:s,loader:()=>n.e(1772).then(n.bind(n,1772)),modules:["@theme/NotFound"],webpack:()=>[1772],render(e,t){const n=e.default;return(0,l.jsx)(c.z,{value:{plugin:{name:"native",id:"default"}},children:(0,l.jsx)(n,{...t})})}});const r=o[`${e}-${t}`],d={},p=[],f=[],h=(0,u.Z)(r);return Object.entries(h).forEach((e=>{let[t,n]=e;const r=i[n];r&&(d[t]=r[0],p.push(r[1]),f.push(r[2]))})),a().Map({loading:s,loader:d,modules:p,webpack:()=>f,render(t,n){const a=JSON.parse(JSON.stringify(r));Object.entries(t).forEach((t=>{let[n,r]=t;const o=r.default;if(!o)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof o&&"function"!=typeof o||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{o[e]=r[e]}));let i=a;const l=n.split(".");l.slice(0,-1).forEach((e=>{i=i[e]})),i[l[l.length-1]]=o}));const o=a.__comp;delete a.__comp;const i=a.__context;return delete a.__context,(0,l.jsx)(c.z,{value:i,children:(0,l.jsx)(o,{...a,...n})})}})}const p=[{path:"/TaskWeaver/blog",component:d("/TaskWeaver/blog","fbc"),exact:!0},{path:"/TaskWeaver/blog/archive",component:d("/TaskWeaver/blog/archive","a64"),exact:!0},{path:"/TaskWeaver/blog/first-blog-post",component:d("/TaskWeaver/blog/first-blog-post","c66"),exact:!0},{path:"/TaskWeaver/blog/long-blog-post",component:d("/TaskWeaver/blog/long-blog-post","b2b"),exact:!0},{path:"/TaskWeaver/blog/mdx-blog-post",component:d("/TaskWeaver/blog/mdx-blog-post","b81"),exact:!0},{path:"/TaskWeaver/blog/tags",component:d("/TaskWeaver/blog/tags","d7e"),exact:!0},{path:"/TaskWeaver/blog/tags/docusaurus",component:d("/TaskWeaver/blog/tags/docusaurus","804"),exact:!0},{path:"/TaskWeaver/blog/tags/facebook",component:d("/TaskWeaver/blog/tags/facebook","e10"),exact:!0},{path:"/TaskWeaver/blog/tags/hello",component:d("/TaskWeaver/blog/tags/hello","cfa"),exact:!0},{path:"/TaskWeaver/blog/tags/hola",component:d("/TaskWeaver/blog/tags/hola","9f2"),exact:!0},{path:"/TaskWeaver/blog/welcome",component:d("/TaskWeaver/blog/welcome","760"),exact:!0},{path:"/TaskWeaver/markdown-page",component:d("/TaskWeaver/markdown-page","982"),exact:!0},{path:"/TaskWeaver/search",component:d("/TaskWeaver/search","a6e"),exact:!0},{path:"/TaskWeaver/docs",component:d("/TaskWeaver/docs","13d"),routes:[{path:"/TaskWeaver/docs",component:d("/TaskWeaver/docs","5e2"),routes:[{path:"/TaskWeaver/docs",component:d("/TaskWeaver/docs","426"),routes:[{path:"/TaskWeaver/docs/compression",component:d("/TaskWeaver/docs/compression","d87"),exact:!0,sidebar:"documentSidebar"},{path:"/TaskWeaver/docs/configurations",component:d("/TaskWeaver/docs/configurations","27c"),exact:!0,sidebar:"documentSidebar"},{path:"/TaskWeaver/docs/example",component:d("/TaskWeaver/docs/example","23b"),exact:!0,sidebar:"documentSidebar"},{path:"/TaskWeaver/docs/llms/",component:d("/TaskWeaver/docs/llms/","b09"),exact:!0,sidebar:"documentSidebar"},{path:"/TaskWeaver/docs/llms/geni",component:d("/TaskWeaver/docs/llms/geni","772"),exact:!0,sidebar:"documentSidebar"},{path:"/TaskWeaver/docs/llms/liteLLM",component:d("/TaskWeaver/docs/llms/liteLLM","d7f"),exact:!0,sidebar:"documentSidebar"},{path:"/TaskWeaver/docs/llms/ollama",component:d("/TaskWeaver/docs/llms/ollama","9d4"),exact:!0,sidebar:"documentSidebar"},{path:"/TaskWeaver/docs/llms/openai",component:d("/TaskWeaver/docs/llms/openai","04e"),exact:!0,sidebar:"documentSidebar"},{path:"/TaskWeaver/docs/llms/qwen",component:d("/TaskWeaver/docs/llms/qwen","668"),exact:!0,sidebar:"documentSidebar"},{path:"/TaskWeaver/docs/overview",component:d("/TaskWeaver/docs/overview","cc3"),exact:!0,sidebar:"documentSidebar"},{path:"/TaskWeaver/docs/planner",component:d("/TaskWeaver/docs/planner","dfd"),exact:!0,sidebar:"documentSidebar"},{path:"/TaskWeaver/docs/plugin/embedding",component:d("/TaskWeaver/docs/plugin/embedding","c95"),exact:!0,sidebar:"documentSidebar"},{path:"/TaskWeaver/docs/plugin/plugin_intro",component:d("/TaskWeaver/docs/plugin/plugin_intro","940"),exact:!0,sidebar:"documentSidebar"},{path:"/TaskWeaver/docs/plugin/plugin_selection",component:d("/TaskWeaver/docs/plugin/plugin_selection","8f7"),exact:!0,sidebar:"documentSidebar"},{path:"/TaskWeaver/docs/quickstart",component:d("/TaskWeaver/docs/quickstart","1a5"),exact:!0,sidebar:"documentSidebar"},{path:"/TaskWeaver/docs/run_pytest",component:d("/TaskWeaver/docs/run_pytest","586"),exact:!0,sidebar:"documentSidebar"},{path:"/TaskWeaver/docs/session",component:d("/TaskWeaver/docs/session","2a5"),exact:!0,sidebar:"documentSidebar"},{path:"/TaskWeaver/docs/taskweaver_as_a_lib",component:d("/TaskWeaver/docs/taskweaver_as_a_lib","83a"),exact:!0,sidebar:"documentSidebar"}]}]}]},{path:"/TaskWeaver/",component:d("/TaskWeaver/","b87"),exact:!0},{path:"*",component:d("*")}]},8934:(e,t,n)=>{"use strict";n.d(t,{_:()=>o,t:()=>i});var r=n(7294),a=n(5893);const o=r.createContext(!1);function i(e){let{children:t}=e;const[n,i]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{i(!0)}),[]),(0,a.jsx)(o.Provider,{value:n,children:t})}},7221:(e,t,n)=>{"use strict";var r=n(7294),a=n(745),o=n(3727),i=n(405),l=n(412);const s=[n(2497),n(3310),n(8320),n(2295)];var u=n(723),c=n(6550),d=n(8790),p=n(5893);function f(e){let{children:t}=e;return(0,p.jsx)(p.Fragment,{children:t})}var h=n(5742),m=n(2263),g=n(4996),y=n(6668),b=n(1944),v=n(4711),w=n(9727),k=n(3320),x=n(8780),S=n(197);function E(){const{i18n:{currentLocale:e,defaultLocale:t,localeConfigs:n}}=(0,m.Z)(),r=(0,v.l)(),a=n[e].htmlLang,o=e=>e.replace("-","_");return(0,p.jsxs)(h.Z,{children:[Object.entries(n).map((e=>{let[t,{htmlLang:n}]=e;return(0,p.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:n},t)})),(0,p.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:"x-default"}),(0,p.jsx)("meta",{property:"og:locale",content:o(a)}),Object.values(n).filter((e=>a!==e.htmlLang)).map((e=>(0,p.jsx)("meta",{property:"og:locale:alternate",content:o(e.htmlLang)},`meta-og-${e.htmlLang}`)))]})}function T(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,m.Z)(),r=function(){const{siteConfig:{url:e,baseUrl:t,trailingSlash:n}}=(0,m.Z)(),{pathname:r}=(0,c.TH)();return e+(0,x.applyTrailingSlash)((0,g.Z)(r),{trailingSlash:n,baseUrl:t})}(),a=t?`${n}${t}`:r;return(0,p.jsxs)(h.Z,{children:[(0,p.jsx)("meta",{property:"og:url",content:a}),(0,p.jsx)("link",{rel:"canonical",href:a})]})}function C(){const{i18n:{currentLocale:e}}=(0,m.Z)(),{metadata:t,image:n}=(0,y.L)();return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsxs)(h.Z,{children:[(0,p.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,p.jsx)("body",{className:w.h})]}),n&&(0,p.jsx)(b.d,{image:n}),(0,p.jsx)(T,{}),(0,p.jsx)(E,{}),(0,p.jsx)(S.Z,{tag:k.HX,locale:e}),(0,p.jsx)(h.Z,{children:t.map(((e,t)=>(0,p.jsx)("meta",{...e},t)))})]})}const _=new Map;function L(e){if(_.has(e.pathname))return{...e,pathname:_.get(e.pathname)};if((0,d.f)(u.Z,e.pathname).some((e=>{let{route:t}=e;return!0===t.exact})))return _.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return _.set(e.pathname,t),{...e,pathname:t}}var j=n(8934),R=n(8940),P=n(469);function A(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r{const r=t.default?.[e]??t[e];return r?.(...n)}));return()=>a.forEach((e=>e?.()))}const N=function(e){let{children:t,location:n,previousLocation:r}=e;return(0,P.Z)((()=>{r!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const r=t.pathname===n.pathname,a=t.hash===n.hash,o=t.search===n.search;if(r&&a&&!o)return;const{hash:i}=t;if(i){const e=decodeURIComponent(i.substring(1)),t=document.getElementById(e);t?.scrollIntoView()}else window.scrollTo(0,0)}({location:n,previousLocation:r}),A("onRouteDidUpdate",{previousLocation:r,location:n}))}),[r,n]),t};function O(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,d.f)(u.Z,e))).flat();return Promise.all(t.map((e=>e.route.component.preload?.())))}class I extends r.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=l.Z.canUseDOM?A("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=A("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),O(n.pathname).then((()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})})).catch((e=>{console.warn(e),window.location.reload()})),!1}render(){const{children:e,location:t}=this.props;return(0,p.jsx)(N,{previousLocation:this.previousLocation,location:t,children:(0,p.jsx)(c.AW,{location:t,render:()=>e})})}}const D=I,F="__docusaurus-base-url-issue-banner-container",M="__docusaurus-base-url-issue-banner",B="__docusaurus-base-url-issue-banner-suggestion-container";function z(e){return`\ndocument.addEventListener('DOMContentLoaded', function maybeInsertBanner() {\n var shouldInsert = typeof window['docusaurus'] === 'undefined';\n shouldInsert && insertBanner();\n});\n\nfunction insertBanner() {\n var bannerContainer = document.createElement('div');\n bannerContainer.id = '${F}';\n var bannerHtml = ${JSON.stringify(function(e){return`\n\n`}(e)).replace(/{if("undefined"==typeof document)return void n();const r=document.createElement("link");r.setAttribute("rel","prefetch"),r.setAttribute("href",e),r.onload=()=>t(),r.onerror=()=>n();const a=document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode;a?.appendChild(r)}))}:function(e){return new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=()=>{200===r.status?t():n()},r.send(null)}))};var K=n(9670);const Y=new Set,X=new Set,J=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,ee={prefetch(e){if(!(e=>!J()&&!X.has(e)&&!Y.has(e))(e))return!1;Y.add(e);const t=(0,d.f)(u.Z,e).flatMap((e=>{return t=e.route.path,Object.entries(V).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,K.Z)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?G(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!J()&&!X.has(e))(e)&&(X.add(e),O(e))},te=Object.freeze(ee),ne=Boolean(!0);if(l.Z.canUseDOM){window.docusaurus=te;const e=document.getElementById("__docusaurus"),t=(0,p.jsx)(i.B6,{children:(0,p.jsx)(o.VK,{children:(0,p.jsx)(Z,{})})}),n=(e,t)=>{console.error("Docusaurus React Root onRecoverableError:",e,t)},l=()=>{if(ne)r.startTransition((()=>{a.hydrateRoot(e,t,{onRecoverableError:n})}));else{const o=a.createRoot(e,{onRecoverableError:n});r.startTransition((()=>{o.render(t)}))}};O(window.location.pathname).then(l)}},8940:(e,t,n)=>{"use strict";n.d(t,{_:()=>d,M:()=>p});var r=n(7294),a=n(6809);const o=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/TaskWeaver/docs","versions":[{"name":"current","label":"Next","isLast":true,"path":"/TaskWeaver/docs","mainDocId":"overview","docs":[{"id":"compression","path":"/TaskWeaver/docs/compression","sidebar":"documentSidebar"},{"id":"configurations","path":"/TaskWeaver/docs/configurations","sidebar":"documentSidebar"},{"id":"example","path":"/TaskWeaver/docs/example","sidebar":"documentSidebar"},{"id":"llms/geni","path":"/TaskWeaver/docs/llms/geni","sidebar":"documentSidebar"},{"id":"llms/index","path":"/TaskWeaver/docs/llms/","sidebar":"documentSidebar"},{"id":"llms/liteLLM","path":"/TaskWeaver/docs/llms/liteLLM","sidebar":"documentSidebar"},{"id":"llms/ollama","path":"/TaskWeaver/docs/llms/ollama","sidebar":"documentSidebar"},{"id":"llms/openai","path":"/TaskWeaver/docs/llms/openai","sidebar":"documentSidebar"},{"id":"llms/qwen","path":"/TaskWeaver/docs/llms/qwen","sidebar":"documentSidebar"},{"id":"overview","path":"/TaskWeaver/docs/overview","sidebar":"documentSidebar"},{"id":"planner","path":"/TaskWeaver/docs/planner","sidebar":"documentSidebar"},{"id":"plugin/embedding","path":"/TaskWeaver/docs/plugin/embedding","sidebar":"documentSidebar"},{"id":"plugin/plugin_intro","path":"/TaskWeaver/docs/plugin/plugin_intro","sidebar":"documentSidebar"},{"id":"plugin/plugin_selection","path":"/TaskWeaver/docs/plugin/plugin_selection","sidebar":"documentSidebar"},{"id":"quickstart","path":"/TaskWeaver/docs/quickstart","sidebar":"documentSidebar"},{"id":"run_pytest","path":"/TaskWeaver/docs/run_pytest","sidebar":"documentSidebar"},{"id":"session","path":"/TaskWeaver/docs/session","sidebar":"documentSidebar"},{"id":"taskweaver_as_a_lib","path":"/TaskWeaver/docs/taskweaver_as_a_lib","sidebar":"documentSidebar"}],"draftIds":[],"sidebars":{"documentSidebar":{"link":{"path":"/TaskWeaver/docs/overview","label":"overview"}}}}],"breadcrumbs":true}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en"}}}');var l=n(7529);const s=JSON.parse('{"docusaurusVersion":"3.0.1","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"3.0.1"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"3.0.1"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"3.0.1"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"3.0.1"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"3.0.1"},"@easyops-cn/docusaurus-search-local":{"type":"package","name":"@easyops-cn/docusaurus-search-local","version":"0.40.0"},"docusaurus-theme-mermaid":{"type":"package","name":"@docusaurus/theme-mermaid","version":"3.0.1"}}}');var u=n(5893);const c={siteConfig:a.default,siteMetadata:s,globalData:o,i18n:i,codeTranslations:l},d=r.createContext(c);function p(e){let{children:t}=e;return(0,u.jsx)(d.Provider,{value:c,children:t})}},4763:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var r=n(7294),a=n(412),o=n(5742),i=n(8780),l=n(2045),s=n(5893);function u(e){let{error:t,tryAgain:n}=e;return(0,s.jsxs)("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"},children:[(0,s.jsx)("h1",{style:{fontSize:"3rem"},children:"This page crashed"}),(0,s.jsx)("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"},children:"Try again"}),(0,s.jsx)(c,{error:t})]})}function c(e){let{error:t}=e;const n=(0,i.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,s.jsx)("p",{style:{whiteSpace:"pre-wrap"},children:n})}function d(e){let{error:t,tryAgain:n}=e;return(0,s.jsxs)(f,{fallback:()=>(0,s.jsx)(u,{error:t,tryAgain:n}),children:[(0,s.jsx)(o.Z,{children:(0,s.jsx)("title",{children:"Page Error"})}),(0,s.jsx)(l.Z,{children:(0,s.jsx)(u,{error:t,tryAgain:n})})]})}const p=e=>(0,s.jsx)(d,{...e});class f extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){a.Z.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){const e={error:t,tryAgain:()=>this.setState({error:null})};return(this.props.fallback??p)(e)}return e??null}}},412:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,a={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},5742:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});n(7294);var r=n(405),a=n(5893);function o(e){return(0,a.jsx)(r.ql,{...e})}},9960:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var r=n(7294),a=n(3727),o=n(8780),i=n(2263),l=n(3919),s=n(412),u=n(5893);const c=r.createContext({collectLink:()=>{}});var d=n(4996);function p(e,t){let{isNavLink:n,to:p,href:f,activeClassName:h,isActive:m,"data-noBrokenLinkCheck":g,autoAddBaseUrl:y=!0,...b}=e;const{siteConfig:{trailingSlash:v,baseUrl:w}}=(0,i.Z)(),{withBaseUrl:k}=(0,d.C)(),x=(0,r.useContext)(c),S=(0,r.useRef)(null);(0,r.useImperativeHandle)(t,(()=>S.current));const E=p||f;const T=(0,l.Z)(E),C=E?.replace("pathname://","");let _=void 0!==C?(L=C,y&&(e=>e.startsWith("/"))(L)?k(L):L):void 0;var L;_&&T&&(_=(0,o.applyTrailingSlash)(_,{trailingSlash:v,baseUrl:w}));const j=(0,r.useRef)(!1),R=n?a.OL:a.rU,P=s.Z.canUseIntersectionObserver,A=(0,r.useRef)(),N=()=>{j.current||null==_||(window.docusaurus.preload(_),j.current=!0)};(0,r.useEffect)((()=>(!P&&T&&null!=_&&window.docusaurus.prefetch(_),()=>{P&&A.current&&A.current.disconnect()})),[A,_,P,T]);const O=_?.startsWith("#")??!1,I=!_||!T||O;return I||g||x.collectLink(_),I?(0,u.jsx)("a",{ref:S,href:_,...E&&!T&&{target:"_blank",rel:"noopener noreferrer"},...b}):(0,u.jsx)(R,{...b,onMouseEnter:N,onTouchStart:N,innerRef:e=>{S.current=e,P&&e&&T&&(A.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(A.current.unobserve(e),A.current.disconnect(),null!=_&&window.docusaurus.prefetch(_))}))})),A.current.observe(e))},to:_,...n&&{isActive:m,activeClassName:h}})}const f=r.forwardRef(p)},5999:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u,I:()=>s});var r=n(7294),a=n(5893);function o(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=t?.[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,r.isValidElement)(e)))?n.map(((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var i=n(7529);function l(e){let{id:t,message:n}=e;if(void 0===t&&void 0===n)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return i[t??n]??n??t}function s(e,t){let{message:n,id:r}=e;return o(l({message:n,id:r}),t)}function u(e){let{children:t,id:n,values:r}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal children",t),new Error("The Docusaurus component only accept simple string values");const i=l({message:t,id:n});return(0,a.jsx)(a.Fragment,{children:o(i,r)})}},9935:(e,t,n)=>{"use strict";n.d(t,{m:()=>r});const r="default"},3919:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function a(e){return void 0!==e&&!r(e)}n.d(t,{Z:()=>a,b:()=>r})},4996:(e,t,n)=>{"use strict";n.d(t,{C:()=>i,Z:()=>l});var r=n(7294),a=n(2263),o=n(3919);function i(){const{siteConfig:{baseUrl:e,url:t}}=(0,a.Z)(),n=(0,r.useCallback)(((n,r)=>function(e,t,n,r){let{forcePrependBaseUrl:a=!1,absolute:i=!1}=void 0===r?{}:r;if(!n||n.startsWith("#")||(0,o.b)(n))return n;if(a)return t+n.replace(/^\//,"");if(n===t.replace(/\/$/,""))return t;const l=n.startsWith(t)?n:t+n.replace(/^\//,"");return i?e+l:l}(t,e,n,r)),[t,e]);return{withBaseUrl:n}}function l(e,t){void 0===t&&(t={});const{withBaseUrl:n}=i();return n(e,t)}},2263:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(8940);function o(){return(0,r.useContext)(a._)}},2389:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(8934);function o(){return(0,r.useContext)(a._)}},469:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(7294);const a=n(412).Z.canUseDOM?r.useLayoutEffect:r.useEffect},9670:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const r=e=>"object"==typeof e&&!!e&&Object.keys(e).length>0;function a(e){const t={};return function e(n,a){Object.entries(n).forEach((n=>{let[o,i]=n;const l=a?`${a}.${o}`:o;r(i)?e(i,l):t[l]=i}))}(e),t}},226:(e,t,n)=>{"use strict";n.d(t,{_:()=>o,z:()=>i});var r=n(7294),a=n(5893);const o=r.createContext(null);function i(e){let{children:t,value:n}=e;const i=r.useContext(o),l=(0,r.useMemo)((()=>function(e){let{parent:t,value:n}=e;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}const r={...t.data,...n?.data};return{plugin:t.plugin,data:r}}({parent:i,value:n})),[i,n]);return(0,a.jsx)(o.Provider,{value:l,children:t})}},143:(e,t,n)=>{"use strict";n.d(t,{Iw:()=>m,gA:()=>p,_r:()=>c,Jo:()=>g,zh:()=>d,yW:()=>h,gB:()=>f});var r=n(6550),a=n(2263),o=n(9935);function i(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,a.Z)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}const l=e=>e.versions.find((e=>e.isLast));function s(e,t){const n=function(e,t){const n=l(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,r.LX)(t,{path:e.path,exact:!1,strict:!1})))}(e,t),a=n?.docs.find((e=>!!(0,r.LX)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:a,alternateDocVersions:a?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(a.id):{}}}const u={},c=()=>i("docusaurus-plugin-content-docs")??u,d=e=>function(e,t,n){void 0===t&&(t=o.m),void 0===n&&(n={});const r=i(e),a=r?.[t];if(!a&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return a}("docusaurus-plugin-content-docs",e,{failfast:!0});function p(e){void 0===e&&(e={});const t=c(),{pathname:n}=(0,r.TH)();return function(e,t,n){void 0===n&&(n={});const a=Object.entries(e).sort(((e,t)=>t[1].path.localeCompare(e[1].path))).find((e=>{let[,n]=e;return!!(0,r.LX)(t,{path:n.path,exact:!1,strict:!1})})),o=a?{pluginId:a[0],pluginData:a[1]}:void 0;if(!o&&n.failfast)throw new Error(`Can't find active docs plugin for "${t}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(e).map((e=>e.path)).join(", ")}`);return o}(t,n,e)}function f(e){return d(e).versions}function h(e){const t=d(e);return l(t)}function m(e){const t=d(e),{pathname:n}=(0,r.TH)();return s(t,n)}function g(e){const t=d(e),{pathname:n}=(0,r.TH)();return function(e,t){const n=l(e);return{latestDocSuggestion:s(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},8320:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(4865),a=n.n(r);a().configure({showSpinner:!1});const o={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{a().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){a().done()}}},3310:(e,t,n)=>{"use strict";n.r(t);var r=n(2573),a=n(6809);!function(e){const{themeConfig:{prism:t}}=a.default,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{"php"===e&&n(6854),n(6726)(`./prism-${e}`)})),delete globalThis.Prism}(r.p1)},2503:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});n(7294);var r=n(512),a=n(5999),o=n(6668),i=n(9960);const l={anchorWithStickyNavbar:"anchorWithStickyNavbar_LWe7",anchorWithHideOnScrollNavbar:"anchorWithHideOnScrollNavbar_WYt5"};var s=n(5893);function u(e){let{as:t,id:n,...u}=e;const{navbar:{hideOnScroll:c}}=(0,o.L)();if("h1"===t||!n)return(0,s.jsx)(t,{...u,id:void 0});const d=(0,a.I)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof u.children?u.children:n});return(0,s.jsxs)(t,{...u,className:(0,r.Z)("anchor",c?l.anchorWithHideOnScrollNavbar:l.anchorWithStickyNavbar,u.className),id:n,children:[u.children,(0,s.jsx)(i.Z,{className:"hash-link",to:`#${n}`,"aria-label":d,title:d,children:"\u200b"})]})}},9471:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});n(7294);const r={iconExternalLink:"iconExternalLink_nPIU"};var a=n(5893);function o(e){let{width:t=13.5,height:n=13.5}=e;return(0,a.jsx)("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:r.iconExternalLink,children:(0,a.jsx)("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"})})}},2045:(e,t,n)=>{"use strict";n.d(t,{Z:()=>Pt});var r=n(7294),a=n(512),o=n(4763),i=n(1944),l=n(6550),s=n(5999),u=n(5936),c=n(5893);const d="__docusaurus_skipToContent_fallback";function p(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function f(){const e=(0,r.useRef)(null),{action:t}=(0,l.k6)(),n=(0,r.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(d);t&&p(t)}),[]);return(0,u.S)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&p(e.current)})),{containerRef:e,onClick:n}}const h=(0,s.I)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function m(e){const t=e.children??h,{containerRef:n,onClick:r}=f();return(0,c.jsx)("div",{ref:n,role:"region","aria-label":h,children:(0,c.jsx)("a",{...e,href:`#${d}`,onClick:r,children:t})})}var g=n(5281),y=n(9727);const b={skipToContent:"skipToContent_fXgn"};function v(){return(0,c.jsx)(m,{className:b.skipToContent})}var w=n(6668),k=n(9689);function x(e){let{width:t=21,height:n=21,color:r="currentColor",strokeWidth:a=1.2,className:o,...i}=e;return(0,c.jsx)("svg",{viewBox:"0 0 15 15",width:t,height:n,...i,children:(0,c.jsx)("g",{stroke:r,strokeWidth:a,children:(0,c.jsx)("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})})})}const S={closeButton:"closeButton_CVFx"};function E(e){return(0,c.jsx)("button",{type:"button","aria-label":(0,s.I)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"}),...e,className:(0,a.Z)("clean-btn close",S.closeButton,e.className),children:(0,c.jsx)(x,{width:14,height:14,strokeWidth:3.1})})}const T={content:"content_knG7"};function C(e){const{announcementBar:t}=(0,w.L)(),{content:n}=t;return(0,c.jsx)("div",{...e,className:(0,a.Z)(T.content,e.className),dangerouslySetInnerHTML:{__html:n}})}const _={announcementBar:"announcementBar_mb4j",announcementBarPlaceholder:"announcementBarPlaceholder_vyr4",announcementBarClose:"announcementBarClose_gvF7",announcementBarContent:"announcementBarContent_xLdY"};function L(){const{announcementBar:e}=(0,w.L)(),{isActive:t,close:n}=(0,k.nT)();if(!t)return null;const{backgroundColor:r,textColor:a,isCloseable:o}=e;return(0,c.jsxs)("div",{className:_.announcementBar,style:{backgroundColor:r,color:a},role:"banner",children:[o&&(0,c.jsx)("div",{className:_.announcementBarPlaceholder}),(0,c.jsx)(C,{className:_.announcementBarContent}),o&&(0,c.jsx)(E,{onClick:n,className:_.announcementBarClose})]})}var j=n(3163),R=n(2466);var P=n(902),A=n(3102);const N=r.createContext(null);function O(e){let{children:t}=e;const n=function(){const e=(0,j.e)(),t=(0,A.HY)(),[n,a]=(0,r.useState)(!1),o=null!==t.component,i=(0,P.D9)(o);return(0,r.useEffect)((()=>{o&&!i&&a(!0)}),[o,i]),(0,r.useEffect)((()=>{o?e.shown||a(!0):a(!1)}),[e.shown,o]),(0,r.useMemo)((()=>[n,a]),[n])}();return(0,c.jsx)(N.Provider,{value:n,children:t})}function I(e){if(e.component){const t=e.component;return(0,c.jsx)(t,{...e.props})}}function D(){const e=(0,r.useContext)(N);if(!e)throw new P.i6("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,a=(0,r.useCallback)((()=>n(!1)),[n]),o=(0,A.HY)();return(0,r.useMemo)((()=>({shown:t,hide:a,content:I(o)})),[a,o,t])}function F(e){let{header:t,primaryMenu:n,secondaryMenu:r}=e;const{shown:o}=D();return(0,c.jsxs)("div",{className:"navbar-sidebar",children:[t,(0,c.jsxs)("div",{className:(0,a.Z)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":o}),children:[(0,c.jsx)("div",{className:"navbar-sidebar__item menu",children:n}),(0,c.jsx)("div",{className:"navbar-sidebar__item menu",children:r})]})]})}var M=n(2949),B=n(2389);function z(e){return(0,c.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,c.jsx)("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"})})}function $(e){return(0,c.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,c.jsx)("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"})})}const U={toggle:"toggle_vylO",toggleButton:"toggleButton_gllP",darkToggleIcon:"darkToggleIcon_wfgR",lightToggleIcon:"lightToggleIcon_pyhR",toggleButtonDisabled:"toggleButtonDisabled_aARS"};function W(e){let{className:t,buttonClassName:n,value:r,onChange:o}=e;const i=(0,B.Z)(),l=(0,s.I)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the navbar color mode toggle"},{mode:"dark"===r?(0,s.I)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,s.I)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return(0,c.jsx)("div",{className:(0,a.Z)(U.toggle,t),children:(0,c.jsxs)("button",{className:(0,a.Z)("clean-btn",U.toggleButton,!i&&U.toggleButtonDisabled,n),type:"button",onClick:()=>o("dark"===r?"light":"dark"),disabled:!i,title:l,"aria-label":l,"aria-live":"polite",children:[(0,c.jsx)(z,{className:(0,a.Z)(U.toggleIcon,U.lightToggleIcon)}),(0,c.jsx)($,{className:(0,a.Z)(U.toggleIcon,U.darkToggleIcon)})]})})}const q=r.memo(W),H={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_X3D1"};function Q(e){let{className:t}=e;const n=(0,w.L)().navbar.style,r=(0,w.L)().colorMode.disableSwitch,{colorMode:a,setColorMode:o}=(0,M.I)();return r?null:(0,c.jsx)(q,{className:t,buttonClassName:"dark"===n?H.darkNavbarColorModeToggle:void 0,value:a,onChange:o})}var Z=n(1327);function V(){return(0,c.jsx)(Z.Z,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function G(){const e=(0,j.e)();return(0,c.jsx)("button",{type:"button","aria-label":(0,s.I)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle(),children:(0,c.jsx)(x,{color:"var(--ifm-color-emphasis-600)"})})}function K(){return(0,c.jsxs)("div",{className:"navbar-sidebar__brand",children:[(0,c.jsx)(V,{}),(0,c.jsx)(Q,{className:"margin-right--md"}),(0,c.jsx)(G,{})]})}var Y=n(9960),X=n(4996),J=n(3919);function ee(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}var te=n(9471);function ne(e){let{activeBasePath:t,activeBaseRegex:n,to:r,href:a,label:o,html:i,isDropdownLink:l,prependBaseUrlToHref:s,...u}=e;const d=(0,X.Z)(r),p=(0,X.Z)(t),f=(0,X.Z)(a,{forcePrependBaseUrl:!0}),h=o&&a&&!(0,J.Z)(a),m=i?{dangerouslySetInnerHTML:{__html:i}}:{children:(0,c.jsxs)(c.Fragment,{children:[o,h&&(0,c.jsx)(te.Z,{...l&&{width:12,height:12}})]})};return a?(0,c.jsx)(Y.Z,{href:s?f:a,...u,...m}):(0,c.jsx)(Y.Z,{to:d,isNavLink:!0,...(t||n)&&{isActive:(e,t)=>n?ee(n,t.pathname):t.pathname.startsWith(p)},...u,...m})}function re(e){let{className:t,isDropdownItem:n=!1,...r}=e;const o=(0,c.jsx)(ne,{className:(0,a.Z)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n,...r});return n?(0,c.jsx)("li",{children:o}):o}function ae(e){let{className:t,isDropdownItem:n,...r}=e;return(0,c.jsx)("li",{className:"menu__list-item",children:(0,c.jsx)(ne,{className:(0,a.Z)("menu__link",t),...r})})}function oe(e){let{mobile:t=!1,position:n,...r}=e;const a=t?ae:re;return(0,c.jsx)(a,{...r,activeClassName:r.activeClassName??(t?"menu__link--active":"navbar__link--active")})}var ie=n(6043),le=n(8596),se=n(2263);const ue={dropdownNavbarItemMobile:"dropdownNavbarItemMobile_S0Fm"};function ce(e,t){return e.some((e=>function(e,t){return!!(0,le.Mg)(e.to,t)||!!ee(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function de(e){let{items:t,position:n,className:o,onClick:i,...l}=e;const s=(0,r.useRef)(null),[u,d]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{const e=e=>{s.current&&!s.current.contains(e.target)&&d(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}}),[s]),(0,c.jsxs)("div",{ref:s,className:(0,a.Z)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":u}),children:[(0,c.jsx)(ne,{"aria-haspopup":"true","aria-expanded":u,role:"button",href:l.to?void 0:"#",className:(0,a.Z)("navbar__link",o),...l,onClick:l.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),d(!u))},children:l.children??l.label}),(0,c.jsx)("ul",{className:"dropdown__menu",children:t.map(((e,t)=>(0,r.createElement)(Ze,{isDropdownItem:!0,activeClassName:"dropdown__link--active",...e,key:t})))})]})}function pe(e){let{items:t,className:n,position:o,onClick:i,...s}=e;const u=function(){const{siteConfig:{baseUrl:e}}=(0,se.Z)(),{pathname:t}=(0,l.TH)();return t.replace(e,"/")}(),d=ce(t,u),{collapsed:p,toggleCollapsed:f,setCollapsed:h}=(0,ie.u)({initialState:()=>!d});return(0,r.useEffect)((()=>{d&&h(!d)}),[u,d,h]),(0,c.jsxs)("li",{className:(0,a.Z)("menu__list-item",{"menu__list-item--collapsed":p}),children:[(0,c.jsx)(ne,{role:"button",className:(0,a.Z)(ue.dropdownNavbarItemMobile,"menu__link menu__link--sublist menu__link--sublist-caret",n),...s,onClick:e=>{e.preventDefault(),f()},children:s.children??s.label}),(0,c.jsx)(ie.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:p,children:t.map(((e,t)=>(0,r.createElement)(Ze,{mobile:!0,isDropdownItem:!0,onClick:i,activeClassName:"menu__link--active",...e,key:t})))})]})}function fe(e){let{mobile:t=!1,...n}=e;const r=t?pe:de;return(0,c.jsx)(r,{...n})}var he=n(4711);function me(e){let{width:t=20,height:n=20,...r}=e;return(0,c.jsx)("svg",{viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0,...r,children:(0,c.jsx)("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"})})}const ge="iconLanguage_nlXk";var ye=n(1029),be=n(1728),ve=n(373),we=n(143),ke=n(22),xe=n(8202),Se=n(3926),Ee=n(1073),Te=n(2539),Ce=n(726);const _e='',Le='',je='',Re='',Pe='',Ae='',Ne='',Oe={searchBar:"searchBar_RVTs",dropdownMenu:"dropdownMenu_qbY6",searchBarLeft:"searchBarLeft_MXDe",suggestion:"suggestion_fB_2",cursor:"cursor_eG29",hitTree:"hitTree_kk6K",hitIcon:"hitIcon_a7Zy",hitPath:"hitPath_ieM4",noResultsIcon:"noResultsIcon_EBY5",hitFooter:"hitFooter_E9YW",hitWrapper:"hitWrapper_sAK8",hitTitle:"hitTitle_vyVt",hitAction:"hitAction_NqkB",hideAction:"hideAction_vcyE",noResults:"noResults_l6Q3",searchBarContainer:"searchBarContainer_NW3z",searchBarLoadingRing:"searchBarLoadingRing_YnHq",searchClearButton:"searchClearButton_qk4g",searchIndexLoading:"searchIndexLoading_EJ1f",searchHintContainer:"searchHintContainer_Pkmr",searchHint:"searchHint_iIMx",focused:"focused_OWtg",input:"input_FOTf",hint:"hint_URu1",suggestions:"suggestions_X8XU",dataset:"dataset_QiCy",empty:"empty_eITn"};function Ie(e){let{document:t,type:n,page:r,metadata:a,tokens:o,isInterOfTree:i,isLastOfTree:l}=e;const s=0===n,u=1===n,c=[];i?c.push(Ae):l&&c.push(Ne);const d=c.map((e=>`${e}`)),p=`${s?_e:u?Le:je}`,f=[`${(0,Ce.o)(t.t,(0,Ee.m)(a,"t"),o)}`];if(!i&&!l&&ye.H6){const e=r?(r.b??[]).concat(r.t).concat(t.s&&t.s!==r.t?t.s:[]):t.b;f.push(`${(0,Se.e)(e??[])}`)}else s||f.push(`${(0,Te.C)(r.t||(t.u.startsWith("/docs/api-reference/")?"API Reference":""),o)}`);const h=`${Re}`;return[...d,p,``,...f,"",h].join("")}function De(){return`${Pe}${(0,s.I)({id:"theme.SearchBar.noResultsText",message:"No results"})}`}var Fe=n(311),Me=n(51);async function Be(){const e=await Promise.all([n.e(8443),n.e(5525)]).then(n.t.bind(n,8443,23)),t=e.default;return t.noConflict?t.noConflict():e.noConflict&&e.noConflict(),t}const ze="_highlight";const $e=function(e){let{handleSearchBarToggle:t}=e;const n=(0,B.Z)(),{siteConfig:{baseUrl:a},i18n:{currentLocale:o}}=(0,se.Z)(),i=(0,we.gA)();let u=a;try{const{preferredVersion:e}=(0,ve.J)(i?.pluginId??ye.gQ);e&&!e.isLast&&(u=e.path+"/")}catch(F){if(ye.l9&&!(F instanceof P.i6))throw F}const d=(0,l.k6)(),p=(0,l.TH)(),f=(0,r.useRef)(null),h=(0,r.useRef)(new Map),m=(0,r.useRef)(!1),[g,y]=(0,r.useState)(!1),[b,v]=(0,r.useState)(!1),[w,k]=(0,r.useState)(""),x=(0,r.useRef)(null),S=(0,r.useRef)(""),[E,T]=(0,r.useState)("");(0,r.useEffect)((()=>{if(!Array.isArray(ye.Kc))return;let e="";if(p.pathname.startsWith(u)){const t=p.pathname.substring(u.length);let n;for(const e of ye.Kc){const r="string"==typeof e?e:e.path;if(t===r||t.startsWith(`${r}/`)){n=r;break}}n&&(e=n)}S.current!==e&&(h.current.delete(e),S.current=e),T(e)}),[p.pathname,u]);const C=!!ye.hG&&Array.isArray(ye.Kc)&&""===E,_=(0,r.useCallback)((async()=>{if(C||h.current.get(E))return;h.current.set(E,"loading"),x.current?.autocomplete.destroy(),y(!0);const[{wrappedIndexes:e,zhDictionary:t},n]=await Promise.all([(0,ke.w)(u,E),Be()]);if(x.current=n(f.current,{hint:!1,autoselect:!0,openOnFocus:!0,cssClasses:{root:(0,be.Z)(Oe.searchBar,{[Oe.searchBarLeft]:"left"===ye.pu}),noPrefix:!0,dropdownMenu:Oe.dropdownMenu,input:Oe.input,hint:Oe.hint,suggestions:Oe.suggestions,suggestion:Oe.suggestion,cursor:Oe.cursor,dataset:Oe.dataset,empty:Oe.empty}},[{source:(0,xe.v)(e,t,ye.qo),templates:{suggestion:Ie,empty:De,footer:e=>{let{query:t,isEmpty:n}=e;if(n&&(!E||!ye.pQ))return;const r=(e=>{let{query:t,isEmpty:n}=e;const r=document.createElement("a"),i=new URLSearchParams;let l;if(i.set("q",t),E){const e=E&&Array.isArray(ye.Kc)?ye.Kc.find((e=>"string"==typeof e?e===E:e.path===E)):E,t=e?(0,Me._)(e,o).label:E;l=ye.pQ&&n?(0,s.I)({id:"theme.SearchBar.seeAllOutsideContext",message:"See results outside {context}"},{context:t}):(0,s.I)({id:"theme.SearchBar.searchInContext",message:"See all results in {context}"},{context:t})}else l=(0,s.I)({id:"theme.SearchBar.seeAll",message:"See all results"});if(!E||!Array.isArray(ye.Kc)||ye.pQ&&n||i.set("ctx",E),u!==a){if(!u.startsWith(a))throw new Error(`Version url '${u}' does not start with base url '${a}', this is a bug of \`@easyops-cn/docusaurus-search-local\`, please report it.`);i.set("version",u.substring(a.length))}const c=`${a}search?${i.toString()}`;return r.href=c,r.textContent=l,r.addEventListener("click",(e=>{e.ctrlKey||e.metaKey||(e.preventDefault(),x.current?.autocomplete.close(),d.push(c))})),r})({query:t,isEmpty:n}),i=document.createElement("div");return i.className=Oe.hitFooter,i.appendChild(r),i}}}]).on("autocomplete:selected",(function(e,t){let{document:{u:n,h:r},tokens:a}=t;f.current?.blur();let o=n;if(ye.vc&&a.length>0){const e=new URLSearchParams;for(const t of a)e.append(ze,t);o+=`?${e.toString()}`}r&&(o+=r),d.push(o)})).on("autocomplete:closed",(()=>{f.current?.blur()})),h.current.set(E,"done"),y(!1),m.current){const e=f.current;e.value&&x.current?.autocomplete.open(),e.focus()}}),[C,E,u,a,d]);(0,r.useEffect)((()=>{if(!ye.vc)return;const e=n?new URLSearchParams(p.search).getAll(ze):[];setTimeout((()=>{const t=document.querySelector("article");if(!t)return;const n=new ye.vc(t);n.unmark(),0!==e.length&&n.mark(e),k(e.join(" ")),x.current?.autocomplete.setVal(e.join(" "))}))}),[n,p.search,p.pathname]);const[L,j]=(0,r.useState)(!1),R=(0,r.useCallback)((()=>{m.current=!0,_(),j(!0),t?.(!0)}),[t,_]),A=(0,r.useCallback)((()=>{j(!1),t?.(!1)}),[t]),N=(0,r.useCallback)((()=>{_()}),[_]),O=(0,r.useCallback)((e=>{k(e.target.value),e.target.value&&v(!0)}),[]),I=!!n&&/mac/i.test(navigator.userAgentData?.platform??navigator.platform);(0,r.useEffect)((()=>{if(!ye.AY)return;const e=e=>{!(I?e.metaKey:e.ctrlKey)||"k"!==e.key&&"K"!==e.key||(e.preventDefault(),f.current?.focus(),R())};return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)}}),[I,R]);const D=(0,r.useCallback)((()=>{const e=new URLSearchParams(p.search);e.delete(ze);const t=e.toString(),n=p.pathname+(""!=t?`?${t}`:"")+p.hash;n!=p.pathname+p.search+p.hash&&d.push(n),k(""),x.current?.autocomplete.setVal("")}),[p.pathname,p.search,p.hash,d]);return(0,c.jsxs)("div",{className:(0,be.Z)("navbar__search",Oe.searchBarContainer,{[Oe.searchIndexLoading]:g&&b,[Oe.focused]:L}),hidden:C,children:[(0,c.jsx)("input",{placeholder:(0,s.I)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"}),"aria-label":"Search",className:"navbar__search-input",onMouseEnter:N,onFocus:R,onBlur:A,onChange:O,ref:f,value:w}),(0,c.jsx)(Fe.Z,{className:Oe.searchBarLoadingRing}),ye.AY&&ye.t_&&(""!==w?(0,c.jsx)("button",{className:Oe.searchClearButton,onClick:D,children:"\u2715"}):n&&(0,c.jsxs)("div",{className:Oe.searchHintContainer,children:[(0,c.jsx)("kbd",{className:Oe.searchHint,children:I?"\u2318":"ctrl"}),(0,c.jsx)("kbd",{className:Oe.searchHint,children:"K"})]}))]})},Ue={navbarSearchContainer:"navbarSearchContainer_Bca1"};function We(e){let{children:t,className:n}=e;return(0,c.jsx)("div",{className:(0,a.Z)(n,Ue.navbarSearchContainer),children:t})}var qe=n(3438);const He=e=>e.docs.find((t=>t.id===e.mainDocId));const Qe={default:oe,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:r,queryString:a="",...o}=e;const{i18n:{currentLocale:i,locales:u,localeConfigs:d}}=(0,se.Z)(),p=(0,he.l)(),{search:f,hash:h}=(0,l.TH)(),m=[...n,...u.map((e=>{const n=`${`pathname://${p.createUrl({locale:e,fullyQualified:!1})}`}${f}${h}${a}`;return{label:d[e].label,lang:d[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===i?t?"menu__link--active":"dropdown__link--active":""}})),...r],g=t?(0,s.I)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):d[i].label;return(0,c.jsx)(fe,{...o,mobile:t,label:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(me,{className:ge}),g]}),items:m})},search:function(e){let{mobile:t,className:n}=e;return t?null:(0,c.jsx)(We,{className:n,children:(0,c.jsx)($e,{})})},dropdown:fe,html:function(e){let{value:t,className:n,mobile:r=!1,isDropdownItem:o=!1}=e;const i=o?"li":"div";return(0,c.jsx)(i,{className:(0,a.Z)({navbar__item:!r&&!o,"menu__list-item":r},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:r,...a}=e;const{activeDoc:o}=(0,we.Iw)(r),i=(0,qe.vY)(t,r),l=o?.path===i?.path;return null===i||i.unlisted&&!l?null:(0,c.jsx)(oe,{exact:!0,...a,isActive:()=>l||!!o?.sidebar&&o.sidebar===i.sidebar,label:n??i.id,to:i.path})},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:r,...a}=e;const{activeDoc:o}=(0,we.Iw)(r),i=(0,qe.oz)(t,r).link;if(!i)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return(0,c.jsx)(oe,{exact:!0,...a,isActive:()=>o?.sidebar===t,label:n??i.label,to:i.path})},docsVersion:function(e){let{label:t,to:n,docsPluginId:r,...a}=e;const o=(0,qe.lO)(r)[0],i=t??o.label,l=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(o).path;return(0,c.jsx)(oe,{...a,label:i,to:l})},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:r,dropdownItemsBefore:a,dropdownItemsAfter:o,...i}=e;const{search:u,hash:d}=(0,l.TH)(),p=(0,we.Iw)(n),f=(0,we.gB)(n),{savePreferredVersionName:h}=(0,ve.J)(n),m=[...a,...f.map((e=>{const t=p.alternateDocVersions[e.name]??He(e);return{label:e.label,to:`${t.path}${u}${d}`,isActive:()=>e===p.activeVersion,onClick:()=>h(e.name)}})),...o],g=(0,qe.lO)(n)[0],y=t&&m.length>1?(0,s.I)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):g.label,b=t&&m.length>1?void 0:He(g).path;return m.length<=1?(0,c.jsx)(oe,{...i,mobile:t,label:y,to:b,isActive:r?()=>!1:void 0}):(0,c.jsx)(fe,{...i,mobile:t,label:y,to:b,items:m,isActive:r?()=>!1:void 0})}};function Ze(e){let{type:t,...n}=e;const r=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),a=Qe[r];if(!a)throw new Error(`No NavbarItem component found for type "${t}".`);return(0,c.jsx)(a,{...n})}function Ve(){const e=(0,j.e)(),t=(0,w.L)().navbar.items;return(0,c.jsx)("ul",{className:"menu__list",children:t.map(((t,n)=>(0,r.createElement)(Ze,{mobile:!0,...t,onClick:()=>e.toggle(),key:n})))})}function Ge(e){return(0,c.jsx)("button",{...e,type:"button",className:"clean-btn navbar-sidebar__back",children:(0,c.jsx)(s.Z,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)",children:"\u2190 Back to main menu"})})}function Ke(){const e=0===(0,w.L)().navbar.items.length,t=D();return(0,c.jsxs)(c.Fragment,{children:[!e&&(0,c.jsx)(Ge,{onClick:()=>t.hide()}),t.content]})}function Ye(){const e=(0,j.e)();var t;return void 0===(t=e.shown)&&(t=!0),(0,r.useEffect)((()=>(document.body.style.overflow=t?"hidden":"visible",()=>{document.body.style.overflow="visible"})),[t]),e.shouldRender?(0,c.jsx)(F,{header:(0,c.jsx)(K,{}),primaryMenu:(0,c.jsx)(Ve,{}),secondaryMenu:(0,c.jsx)(Ke,{})}):null}const Xe={navbarHideable:"navbarHideable_m1mJ",navbarHidden:"navbarHidden_jGov"};function Je(e){return(0,c.jsx)("div",{role:"presentation",...e,className:(0,a.Z)("navbar-sidebar__backdrop",e.className)})}function et(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:o}}=(0,w.L)(),i=(0,j.e)(),{navbarRef:l,isNavbarVisible:d}=function(e){const[t,n]=(0,r.useState)(e),a=(0,r.useRef)(!1),o=(0,r.useRef)(0),i=(0,r.useCallback)((e=>{null!==e&&(o.current=e.getBoundingClientRect().height)}),[]);return(0,R.RF)(((t,r)=>{let{scrollY:i}=t;if(!e)return;if(i=l?n(!1):i+u{if(!e)return;const r=t.location.hash;if(r?document.getElementById(r.substring(1)):void 0)return a.current=!0,void n(!1);n(!0)})),{navbarRef:i,isNavbarVisible:t}}(n);return(0,c.jsxs)("nav",{ref:l,"aria-label":(0,s.I)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,a.Z)("navbar","navbar--fixed-top",n&&[Xe.navbarHideable,!d&&Xe.navbarHidden],{"navbar--dark":"dark"===o,"navbar--primary":"primary"===o,"navbar-sidebar--show":i.shown}),children:[t,(0,c.jsx)(Je,{onClick:i.toggle}),(0,c.jsx)(Ye,{})]})}var tt=n(9690);const nt="right";function rt(e){let{width:t=30,height:n=30,className:r,...a}=e;return(0,c.jsx)("svg",{className:r,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true",...a,children:(0,c.jsx)("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"})})}function at(){const{toggle:e,shown:t}=(0,j.e)();return(0,c.jsx)("button",{onClick:e,"aria-label":(0,s.I)({id:"theme.docs.sidebar.toggleSidebarButtonAriaLabel",message:"Toggle navigation bar",description:"The ARIA label for hamburger menu button of mobile navigation"}),"aria-expanded":t,className:"navbar__toggle clean-btn",type:"button",children:(0,c.jsx)(rt,{})})}const ot={colorModeToggle:"colorModeToggle_DEke"};function it(e){let{items:t}=e;return(0,c.jsx)(c.Fragment,{children:t.map(((e,t)=>(0,c.jsx)(tt.QW,{onError:t=>new Error(`A theme navbar item failed to render.\nPlease double-check the following navbar item (themeConfig.navbar.items) of your Docusaurus config:\n${JSON.stringify(e,null,2)}`,{cause:t}),children:(0,c.jsx)(Ze,{...e})},t)))})}function lt(e){let{left:t,right:n}=e;return(0,c.jsxs)("div",{className:"navbar__inner",children:[(0,c.jsx)("div",{className:"navbar__items",children:t}),(0,c.jsx)("div",{className:"navbar__items navbar__items--right",children:n})]})}function st(){const e=(0,j.e)(),t=(0,w.L)().navbar.items,[n,r]=function(e){function t(e){return"left"===(e.position??nt)}return[e.filter(t),e.filter((e=>!t(e)))]}(t),a=t.find((e=>"search"===e.type));return(0,c.jsx)(lt,{left:(0,c.jsxs)(c.Fragment,{children:[!e.disabled&&(0,c.jsx)(at,{}),(0,c.jsx)(V,{}),(0,c.jsx)(it,{items:n})]}),right:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(it,{items:r}),(0,c.jsx)(Q,{className:ot.colorModeToggle}),!a&&(0,c.jsx)(We,{children:(0,c.jsx)($e,{})})]})})}function ut(){return(0,c.jsx)(et,{children:(0,c.jsx)(st,{})})}function ct(e){let{item:t}=e;const{to:n,href:r,label:a,prependBaseUrlToHref:o,...i}=t,l=(0,X.Z)(n),s=(0,X.Z)(r,{forcePrependBaseUrl:!0});return(0,c.jsxs)(Y.Z,{className:"footer__link-item",...r?{href:o?s:r}:{to:l},...i,children:[a,r&&!(0,J.Z)(r)&&(0,c.jsx)(te.Z,{})]})}function dt(e){let{item:t}=e;return t.html?(0,c.jsx)("li",{className:"footer__item",dangerouslySetInnerHTML:{__html:t.html}}):(0,c.jsx)("li",{className:"footer__item",children:(0,c.jsx)(ct,{item:t})},t.href??t.to)}function pt(e){let{column:t}=e;return(0,c.jsxs)("div",{className:"col footer__col",children:[(0,c.jsx)("div",{className:"footer__title",children:t.title}),(0,c.jsx)("ul",{className:"footer__items clean-list",children:t.items.map(((e,t)=>(0,c.jsx)(dt,{item:e},t)))})]})}function ft(e){let{columns:t}=e;return(0,c.jsx)("div",{className:"row footer__links",children:t.map(((e,t)=>(0,c.jsx)(pt,{column:e},t)))})}function ht(){return(0,c.jsx)("span",{className:"footer__link-separator",children:"\xb7"})}function mt(e){let{item:t}=e;return t.html?(0,c.jsx)("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):(0,c.jsx)(ct,{item:t})}function gt(e){let{links:t}=e;return(0,c.jsx)("div",{className:"footer__links text--center",children:(0,c.jsx)("div",{className:"footer__links",children:t.map(((e,n)=>(0,c.jsxs)(r.Fragment,{children:[(0,c.jsx)(mt,{item:e}),t.length!==n+1&&(0,c.jsx)(ht,{})]},n)))})})}function yt(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?(0,c.jsx)(ft,{columns:t}):(0,c.jsx)(gt,{links:t})}var bt=n(9965);const vt={footerLogoLink:"footerLogoLink_BH7S"};function wt(e){let{logo:t}=e;const{withBaseUrl:n}=(0,X.C)(),r={light:n(t.src),dark:n(t.srcDark??t.src)};return(0,c.jsx)(bt.Z,{className:(0,a.Z)("footer__logo",t.className),alt:t.alt,sources:r,width:t.width,height:t.height,style:t.style})}function kt(e){let{logo:t}=e;return t.href?(0,c.jsx)(Y.Z,{href:t.href,className:vt.footerLogoLink,target:t.target,children:(0,c.jsx)(wt,{logo:t})}):(0,c.jsx)(wt,{logo:t})}function xt(e){let{copyright:t}=e;return(0,c.jsx)("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function St(e){let{style:t,links:n,logo:r,copyright:o}=e;return(0,c.jsx)("footer",{className:(0,a.Z)("footer",{"footer--dark":"dark"===t}),children:(0,c.jsxs)("div",{className:"container container-fluid",children:[n,(r||o)&&(0,c.jsxs)("div",{className:"footer__bottom text--center",children:[r&&(0,c.jsx)("div",{className:"margin-bottom--sm",children:r}),o]})]})})}function Et(){const{footer:e}=(0,w.L)();if(!e)return null;const{copyright:t,links:n,logo:r,style:a}=e;return(0,c.jsx)(St,{style:a,links:n&&n.length>0&&(0,c.jsx)(yt,{links:n}),logo:r&&(0,c.jsx)(kt,{logo:r}),copyright:t&&(0,c.jsx)(xt,{copyright:t})})}const Tt=r.memo(Et),Ct=(0,P.Qc)([M.S,k.pl,R.OC,ve.L5,i.VC,function(e){let{children:t}=e;return(0,c.jsx)(A.n2,{children:(0,c.jsx)(j.M,{children:(0,c.jsx)(O,{children:t})})})}]);function _t(e){let{children:t}=e;return(0,c.jsx)(Ct,{children:t})}var Lt=n(2503);function jt(e){let{error:t,tryAgain:n}=e;return(0,c.jsx)("main",{className:"container margin-vert--xl",children:(0,c.jsx)("div",{className:"row",children:(0,c.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,c.jsx)(Lt.Z,{as:"h1",className:"hero__title",children:(0,c.jsx)(s.Z,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed",children:"This page crashed."})}),(0,c.jsx)("div",{className:"margin-vert--lg",children:(0,c.jsx)(tt.Cw,{onClick:n,className:"button button--primary shadow--lw"})}),(0,c.jsx)("hr",{}),(0,c.jsx)("div",{className:"margin-vert--md",children:(0,c.jsx)(tt.aG,{error:t})})]})})})}const Rt={mainWrapper:"mainWrapper_z2l0"};function Pt(e){const{children:t,noFooter:n,wrapperClassName:r,title:l,description:s}=e;return(0,y.t)(),(0,c.jsxs)(_t,{children:[(0,c.jsx)(i.d,{title:l,description:s}),(0,c.jsx)(v,{}),(0,c.jsx)(L,{}),(0,c.jsx)(ut,{}),(0,c.jsx)("div",{id:d,className:(0,a.Z)(g.k.wrapper.main,Rt.mainWrapper,r),children:(0,c.jsx)(o.Z,{fallback:e=>(0,c.jsx)(jt,{...e}),children:t})}),!n&&(0,c.jsx)(Tt,{})]})}},1327:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});n(7294);var r=n(9960),a=n(4996),o=n(2263),i=n(6668),l=n(9965),s=n(5893);function u(e){let{logo:t,alt:n,imageClassName:r}=e;const o={light:(0,a.Z)(t.src),dark:(0,a.Z)(t.srcDark||t.src)},i=(0,s.jsx)(l.Z,{className:t.className,sources:o,height:t.height,width:t.width,alt:n,style:t.style});return r?(0,s.jsx)("div",{className:r,children:i}):i}function c(e){const{siteConfig:{title:t}}=(0,o.Z)(),{navbar:{title:n,logo:l}}=(0,i.L)(),{imageClassName:c,titleClassName:d,...p}=e,f=(0,a.Z)(l?.href||"/"),h=n?"":t,m=l?.alt??h;return(0,s.jsxs)(r.Z,{to:f,...p,...l?.target&&{target:l.target},children:[l&&(0,s.jsx)(u,{logo:l,alt:m,imageClassName:c}),null!=n&&(0,s.jsx)("b",{className:d,children:n})]})}},197:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});n(7294);var r=n(5742),a=n(5893);function o(e){let{locale:t,version:n,tag:o}=e;const i=t;return(0,a.jsxs)(r.Z,{children:[t&&(0,a.jsx)("meta",{name:"docusaurus_locale",content:t}),n&&(0,a.jsx)("meta",{name:"docusaurus_version",content:n}),o&&(0,a.jsx)("meta",{name:"docusaurus_tag",content:o}),i&&(0,a.jsx)("meta",{name:"docsearch:language",content:i}),n&&(0,a.jsx)("meta",{name:"docsearch:version",content:n}),o&&(0,a.jsx)("meta",{name:"docsearch:docusaurus_tag",content:o})]})}},9965:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(7294),a=n(512),o=n(2389),i=n(2949);const l={themedComponent:"themedComponent_mlkZ","themedComponent--light":"themedComponent--light_NVdE","themedComponent--dark":"themedComponent--dark_xIcU"};var s=n(5893);function u(e){let{className:t,children:n}=e;const u=(0,o.Z)(),{colorMode:c}=(0,i.I)();return(0,s.jsx)(s.Fragment,{children:(u?"dark"===c?["dark"]:["light"]:["light","dark"]).map((e=>{const o=n({theme:e,className:(0,a.Z)(t,l.themedComponent,l[`themedComponent--${e}`])});return(0,s.jsx)(r.Fragment,{children:o},e)}))})}function c(e){const{sources:t,className:n,alt:r,...a}=e;return(0,s.jsx)(u,{className:n,children:e=>{let{theme:n,className:o}=e;return(0,s.jsx)("img",{src:t[n],alt:r,className:o,...a})}})}},6043:(e,t,n)=>{"use strict";n.d(t,{u:()=>u,z:()=>y});var r=n(7294),a=n(412),o=n(469),i=n(1442),l=n(5893);const s="ease-in-out";function u(e){let{initialState:t}=e;const[n,a]=(0,r.useState)(t??!1),o=(0,r.useCallback)((()=>{a((e=>!e))}),[]);return{collapsed:n,setCollapsed:a,toggleCollapsed:o}}const c={display:"none",overflow:"hidden",height:"0px"},d={display:"block",overflow:"visible",height:"auto"};function p(e,t){const n=t?c:d;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function f(e){let{collapsibleRef:t,collapsed:n,animation:a}=e;const o=(0,r.useRef)(!1);(0,r.useEffect)((()=>{const e=t.current;function r(){const t=e.scrollHeight,n=a?.duration??function(e){if((0,i.n)())return 1;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(t);return{transition:`height ${n}ms ${a?.easing??s}`,height:`${t}px`}}function l(){const t=r();e.style.transition=t.transition,e.style.height=t.height}if(!o.current)return p(e,n),void(o.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(l(),requestAnimationFrame((()=>{e.style.height=c.height,e.style.overflow=c.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{l()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,a])}function h(e){if(!a.Z.canUseDOM)return e?c:d}function m(e){let{as:t="div",collapsed:n,children:a,animation:o,onCollapseTransitionEnd:i,className:s,disableSSRStyle:u}=e;const c=(0,r.useRef)(null);return f({collapsibleRef:c,collapsed:n,animation:o}),(0,l.jsx)(t,{ref:c,style:u?void 0:h(n),onTransitionEnd:e=>{"height"===e.propertyName&&(p(c.current,n),i?.(n))},className:s,children:a})}function g(e){let{collapsed:t,...n}=e;const[a,i]=(0,r.useState)(!t),[s,u]=(0,r.useState)(t);return(0,o.Z)((()=>{t||i(!0)}),[t]),(0,o.Z)((()=>{a&&u(t)}),[a,t]),a?(0,l.jsx)(m,{...n,collapsed:s}):null}function y(e){let{lazy:t,...n}=e;const r=t?g:m;return(0,l.jsx)(r,{...n})}},9689:(e,t,n)=>{"use strict";n.d(t,{nT:()=>m,pl:()=>h});var r=n(7294),a=n(2389),o=n(12),i=n(902),l=n(6668),s=n(5893);const u=(0,o.WA)("docusaurus.announcement.dismiss"),c=(0,o.WA)("docusaurus.announcement.id"),d=()=>"true"===u.get(),p=e=>u.set(String(e)),f=r.createContext(null);function h(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,l.L)(),t=(0,a.Z)(),[n,o]=(0,r.useState)((()=>!!t&&d()));(0,r.useEffect)((()=>{o(d())}),[]);const i=(0,r.useCallback)((()=>{p(!0),o(!0)}),[]);return(0,r.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=c.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;c.set(t),r&&p(!1),!r&&d()||o(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return(0,s.jsx)(f.Provider,{value:n,children:t})}function m(){const e=(0,r.useContext)(f);if(!e)throw new i.i6("AnnouncementBarProvider");return e}},2949:(e,t,n)=>{"use strict";n.d(t,{I:()=>y,S:()=>g});var r=n(7294),a=n(412),o=n(902),i=n(12),l=n(6668),s=n(5893);const u=r.createContext(void 0),c="theme",d=(0,i.WA)(c),p={light:"light",dark:"dark"},f=e=>e===p.dark?p.dark:p.light,h=e=>a.Z.canUseDOM?f(document.documentElement.getAttribute("data-theme")):f(e),m=e=>{d.set(f(e))};function g(e){let{children:t}=e;const n=function(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,l.L)(),[a,o]=(0,r.useState)(h(e));(0,r.useEffect)((()=>{t&&d.del()}),[t]);const i=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:a=!0}=r;t?(o(t),a&&m(t)):(o(n?window.matchMedia("(prefers-color-scheme: dark)").matches?p.dark:p.light:e),d.del())}),[n,e]);(0,r.useEffect)((()=>{document.documentElement.setAttribute("data-theme",f(a))}),[a]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==c)return;const t=d.get();null!==t&&i(f(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,i]);const s=(0,r.useRef)(!1);return(0,r.useEffect)((()=>{if(t&&!n)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>{window.matchMedia("print").matches||s.current?s.current=window.matchMedia("print").matches:i(null)};return e.addListener(r),()=>e.removeListener(r)}),[i,t,n]),(0,r.useMemo)((()=>({colorMode:a,setColorMode:i,get isDarkTheme(){return a===p.dark},setLightTheme(){i(p.light)},setDarkTheme(){i(p.dark)}})),[a,i])}();return(0,s.jsx)(u.Provider,{value:n,children:t})}function y(){const e=(0,r.useContext)(u);if(null==e)throw new o.i6("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},373:(e,t,n)=>{"use strict";n.d(t,{J:()=>v,L5:()=>y});var r=n(7294),a=n(143),o=n(9935),i=n(6668),l=n(3438),s=n(902),u=n(12),c=n(5893);const d=e=>`docs-preferred-version-${e}`,p={save:(e,t,n)=>{(0,u.WA)(d(e),{persistence:t}).set(n)},read:(e,t)=>(0,u.WA)(d(e),{persistence:t}).get(),clear:(e,t)=>{(0,u.WA)(d(e),{persistence:t}).del()}},f=e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}])));const h=r.createContext(null);function m(){const e=(0,a._r)(),t=(0,i.L)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[o,l]=(0,r.useState)((()=>f(n)));(0,r.useEffect)((()=>{l(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;function a(e){const t=p.read(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(p.clear(e,n),{preferredVersionName:null})}return Object.fromEntries(t.map((e=>[e,a(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[o,(0,r.useMemo)((()=>({savePreferredVersion:function(e,n){p.save(e,t,n),l((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function g(e){let{children:t}=e;const n=m();return(0,c.jsx)(h.Provider,{value:n,children:t})}function y(e){let{children:t}=e;return l.cE?(0,c.jsx)(g,{children:t}):(0,c.jsx)(c.Fragment,{children:t})}function b(){const e=(0,r.useContext)(h);if(!e)throw new s.i6("DocsPreferredVersionContextProvider");return e}function v(e){void 0===e&&(e=o.m);const t=(0,a.zh)(e),[n,i]=b(),{preferredVersionName:l}=n[e];return{preferredVersion:t.versions.find((e=>e.name===l))??null,savePreferredVersionName:(0,r.useCallback)((t=>{i.savePreferredVersion(e,t)}),[i,e])}}},1116:(e,t,n)=>{"use strict";n.d(t,{V:()=>u,b:()=>s});var r=n(7294),a=n(902),o=n(5893);const i=Symbol("EmptyContext"),l=r.createContext(i);function s(e){let{children:t,name:n,items:a}=e;const i=(0,r.useMemo)((()=>n&&a?{name:n,items:a}:null),[n,a]);return(0,o.jsx)(l.Provider,{value:i,children:t})}function u(){const e=(0,r.useContext)(l);if(e===i)throw new a.i6("DocsSidebarProvider");return e}},4477:(e,t,n)=>{"use strict";n.d(t,{E:()=>s,q:()=>l});var r=n(7294),a=n(902),o=n(5893);const i=r.createContext(null);function l(e){let{children:t,version:n}=e;return(0,o.jsx)(i.Provider,{value:n,children:t})}function s(){const e=(0,r.useContext)(i);if(null===e)throw new a.i6("DocsVersionProvider");return e}},3163:(e,t,n)=>{"use strict";n.d(t,{M:()=>p,e:()=>f});var r=n(7294),a=n(3102),o=n(7524),i=n(1980),l=n(6668),s=n(902),u=n(5893);const c=r.createContext(void 0);function d(){const e=function(){const e=(0,a.HY)(),{items:t}=(0,l.L)().navbar;return 0===t.length&&!e.component}(),t=(0,o.i)(),n=!e&&"mobile"===t,[s,u]=(0,r.useState)(!1);(0,i.Rb)((()=>{if(s)return u(!1),!1}));const c=(0,r.useCallback)((()=>{u((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&u(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:c,shown:s})),[e,n,c,s])}function p(e){let{children:t}=e;const n=d();return(0,u.jsx)(c.Provider,{value:n,children:t})}function f(){const e=r.useContext(c);if(void 0===e)throw new s.i6("NavbarMobileSidebarProvider");return e}},3102:(e,t,n)=>{"use strict";n.d(t,{HY:()=>s,Zo:()=>u,n2:()=>l});var r=n(7294),a=n(902),o=n(5893);const i=r.createContext(null);function l(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return(0,o.jsx)(i.Provider,{value:n,children:t})}function s(){const e=(0,r.useContext)(i);if(!e)throw new a.i6("NavbarSecondaryMenuContentProvider");return e[0]}function u(e){let{component:t,props:n}=e;const o=(0,r.useContext)(i);if(!o)throw new a.i6("NavbarSecondaryMenuContentProvider");const[,l]=o,s=(0,a.Ql)(n);return(0,r.useEffect)((()=>{l({component:t,props:s})}),[l,t,s]),(0,r.useEffect)((()=>()=>l({component:null,props:null})),[l]),null}},9727:(e,t,n)=>{"use strict";n.d(t,{h:()=>a,t:()=>o});var r=n(7294);const a="navigation-with-keyboard";function o(){(0,r.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(a),"mousedown"===e.type&&document.body.classList.remove(a)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(a),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},7524:(e,t,n)=>{"use strict";n.d(t,{i:()=>l});var r=n(7294),a=n(412);const o={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function l(){const[e,t]=(0,r.useState)((()=>"ssr"));return(0,r.useEffect)((()=>{function e(){t(function(){if(!a.Z.canUseDOM)throw new Error("getWindowSize() should only be called after React hydration");return window.innerWidth>i?o.desktop:o.mobile}())}return e(),window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e)}}),[]),e}},5281:(e,t,n)=>{"use strict";n.d(t,{k:()=>r});const r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",unlistedBanner:"theme-unlisted-banner",admonitionType:e=>`theme-admonition-${e}`},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:e=>`theme-doc-sidebar-item-category-level-${e}`,docSidebarItemLinkLevel:e=>`theme-doc-sidebar-item-link-level-${e}`},blog:{}}},1442:(e,t,n)=>{"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{n:()=>r})},3438:(e,t,n)=>{"use strict";n.d(t,{LM:()=>h,MN:()=>_,SN:()=>C,_F:()=>b,cE:()=>p,f:()=>w,jA:()=>m,lO:()=>S,oz:()=>E,s1:()=>x,vY:()=>T,xz:()=>f});var r=n(7294),a=n(6550),o=n(8790),i=n(143),l=n(373),s=n(4477),u=n(1116),c=n(7392),d=n(8596);const p=!!i._r;function f(e){const t=(0,s.E)();if(!e)return;const n=t.docs[e];if(!n)throw new Error(`no version doc found by id=${e}`);return n}function h(e){return"link"!==e.type||e.unlisted?"category"===e.type?function(e){if(e.href&&!e.linkUnlisted)return e.href;for(const t of e.items){const e=h(t);if(e)return e}}(e):void 0:e.href}function m(){const{pathname:e}=(0,a.TH)(),t=(0,u.V)();if(!t)throw new Error("Unexpected: cant find current sidebar in context");const n=k({sidebarItems:t.items,pathname:e,onlyCategories:!0}).slice(-1)[0];if(!n)throw new Error(`${e} is not associated with a category. useCurrentSidebarCategory() should only be used on category index pages.`);return n}const g=(e,t)=>void 0!==e&&(0,d.Mg)(e,t),y=(e,t)=>e.some((e=>b(e,t)));function b(e,t){return"link"===e.type?g(e.href,t):"category"===e.type&&(g(e.href,t)||y(e.items,t))}function v(e,t){switch(e.type){case"category":return b(e,t)||e.items.some((e=>v(e,t)));case"link":return!e.unlisted||b(e,t);default:return!0}}function w(e,t){return(0,r.useMemo)((()=>e.filter((e=>v(e,t)))),[e,t])}function k(e){let{sidebarItems:t,pathname:n,onlyCategories:r=!1}=e;const a=[];return function e(t){for(const o of t)if("category"===o.type&&((0,d.Mg)(o.href,n)||e(o.items))||"link"===o.type&&(0,d.Mg)(o.href,n)){return r&&"category"!==o.type||a.unshift(o),!0}return!1}(t),a}function x(){const e=(0,u.V)(),{pathname:t}=(0,a.TH)(),n=(0,i.gA)()?.pluginData.breadcrumbs;return!1!==n&&e?k({sidebarItems:e.items,pathname:t}):null}function S(e){const{activeVersion:t}=(0,i.Iw)(e),{preferredVersion:n}=(0,l.J)(e),a=(0,i.yW)(e);return(0,r.useMemo)((()=>(0,c.j)([t,n,a].filter(Boolean))),[t,n,a])}function E(e,t){const n=S(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.sidebars?Object.entries(e.sidebars):[])),r=t.find((t=>t[0]===e));if(!r)throw new Error(`Can't find any sidebar with id "${e}" in version${n.length>1?"s":""} ${n.map((e=>e.name)).join(", ")}".\nAvailable sidebar ids are:\n- ${t.map((e=>e[0])).join("\n- ")}`);return r[1]}),[e,n])}function T(e,t){const n=S(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.docs)),r=t.find((t=>t.id===e));if(!r){if(n.flatMap((e=>e.draftIds)).includes(e))return null;throw new Error(`Couldn't find any doc with id "${e}" in version${n.length>1?"s":""} "${n.map((e=>e.name)).join(", ")}".\nAvailable doc ids are:\n- ${(0,c.j)(t.map((e=>e.id))).join("\n- ")}`)}return r}),[e,n])}function C(e){let{route:t}=e;const n=(0,a.TH)(),r=(0,s.E)(),i=t.routes,l=i.find((e=>(0,a.LX)(n.pathname,e)));if(!l)return null;const u=l.sidebar,c=u?r.docsSidebars[u]:void 0;return{docElement:(0,o.H)(i),sidebarName:u,sidebarItems:c}}function _(e){return e.filter((e=>!("category"===e.type||"link"===e.type)||!!h(e)))}},9690:(e,t,n)=>{"use strict";n.d(t,{aG:()=>c,Ac:()=>u,Cw:()=>s,QW:()=>d});var r=n(7294),a=n(5999),o=n(8780);const i={errorBoundaryError:"errorBoundaryError_a6uf",errorBoundaryFallback:"errorBoundaryFallback_VBag"};var l=n(5893);function s(e){return(0,l.jsx)("button",{type:"button",...e,children:(0,l.jsx)(a.Z,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error",children:"Try again"})})}function u(e){let{error:t,tryAgain:n}=e;return(0,l.jsxs)("div",{className:i.errorBoundaryFallback,children:[(0,l.jsx)("p",{children:t.message}),(0,l.jsx)(s,{onClick:n})]})}function c(e){let{error:t}=e;const n=(0,o.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,l.jsx)("p",{className:i.errorBoundaryError,children:n})}class d extends r.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}},1980:(e,t,n)=>{"use strict";n.d(t,{Rb:()=>i,_X:()=>l});var r=n(7294),a=n(6550),o=n(902);function i(e){!function(e){const t=(0,a.k6)(),n=(0,o.zX)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}function l(e){return function(e){const t=(0,a.k6)();return(0,r.useSyncExternalStore)(t.listen,(()=>e(t)),(()=>e(t)))}((t=>null===e?null:new URLSearchParams(t.location.search).get(e)))}},7392:(e,t,n)=>{"use strict";function r(e,t){return void 0===t&&(t=(e,t)=>e===t),e.filter(((n,r)=>e.findIndex((e=>t(e,n)))!==r))}function a(e){return Array.from(new Set(e))}n.d(t,{j:()=>a,l:()=>r})},1944:(e,t,n)=>{"use strict";n.d(t,{FG:()=>f,d:()=>d,VC:()=>h});var r=n(7294),a=n(512),o=n(5742),i=n(226);function l(){const e=r.useContext(i._);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var s=n(4996),u=n(2263);var c=n(5893);function d(e){let{title:t,description:n,keywords:r,image:a,children:i}=e;const l=function(e){const{siteConfig:t}=(0,u.Z)(),{title:n,titleDelimiter:r}=t;return e?.trim().length?`${e.trim()} ${r} ${n}`:n}(t),{withBaseUrl:d}=(0,s.C)(),p=a?d(a,{absolute:!0}):void 0;return(0,c.jsxs)(o.Z,{children:[t&&(0,c.jsx)("title",{children:l}),t&&(0,c.jsx)("meta",{property:"og:title",content:l}),n&&(0,c.jsx)("meta",{name:"description",content:n}),n&&(0,c.jsx)("meta",{property:"og:description",content:n}),r&&(0,c.jsx)("meta",{name:"keywords",content:Array.isArray(r)?r.join(","):r}),p&&(0,c.jsx)("meta",{property:"og:image",content:p}),p&&(0,c.jsx)("meta",{name:"twitter:image",content:p}),i]})}const p=r.createContext(void 0);function f(e){let{className:t,children:n}=e;const i=r.useContext(p),l=(0,a.Z)(i,t);return(0,c.jsxs)(p.Provider,{value:l,children:[(0,c.jsx)(o.Z,{children:(0,c.jsx)("html",{className:l})}),n]})}function h(e){let{children:t}=e;const n=l(),r=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const o=`plugin-id-${n.plugin.id}`;return(0,c.jsx)(f,{className:(0,a.Z)(r,o),children:t})}},902:(e,t,n)=>{"use strict";n.d(t,{D9:()=>l,Qc:()=>c,Ql:()=>u,i6:()=>s,zX:()=>i});var r=n(7294),a=n(469),o=n(5893);function i(e){const t=(0,r.useRef)(e);return(0,a.Z)((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function l(e){const t=(0,r.useRef)();return(0,a.Z)((()=>{t.current=e})),t.current}class s extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?\w+)/)?.groups.name??""} is called outside the <${e}>. ${t??""}`}}function u(e){const t=Object.entries(e);return t.sort(((e,t)=>e[0].localeCompare(t[0]))),(0,r.useMemo)((()=>e),t.flat())}function c(e){return t=>{let{children:n}=t;return(0,o.jsx)(o.Fragment,{children:e.reduceRight(((e,t)=>(0,o.jsx)(t,{children:e})),n)})}}},8596:(e,t,n)=>{"use strict";n.d(t,{Mg:()=>i,Ns:()=>l});var r=n(7294),a=n(723),o=n(2263);function i(e,t){const n=e=>(!e||e.endsWith("/")?e:`${e}/`)?.toLowerCase();return n(e)===n(t)}function l(){const{baseUrl:e}=(0,o.Z)().siteConfig;return(0,r.useMemo)((()=>function(e){let{baseUrl:t,routes:n}=e;function r(e){return e.path===t&&!0===e.exact}function a(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(r)||e(t.filter(a).flatMap((e=>e.routes??[])))}(n)}({routes:a.Z,baseUrl:e})),[e])}},2466:(e,t,n)=>{"use strict";n.d(t,{Ct:()=>m,OC:()=>c,RF:()=>f,o5:()=>h});var r=n(7294),a=n(412),o=n(2389),i=n(469),l=n(902),s=n(5893);const u=r.createContext(void 0);function c(e){let{children:t}=e;const n=function(){const e=(0,r.useRef)(!0);return(0,r.useMemo)((()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}})),[])}();return(0,s.jsx)(u.Provider,{value:n,children:t})}function d(){const e=(0,r.useContext)(u);if(null==e)throw new l.i6("ScrollControllerProvider");return e}const p=()=>a.Z.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function f(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=d(),a=(0,r.useRef)(p()),o=(0,l.zX)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=p();o(e,a.current),a.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[o,n,...t])}function h(){const e=d(),t=function(){const e=(0,r.useRef)({elem:null,top:0}),t=(0,r.useCallback)((t=>{e.current={elem:t,top:t.getBoundingClientRect().top}}),[]),n=(0,r.useCallback)((()=>{const{current:{elem:t,top:n}}=e;if(!t)return{restored:!1};const r=t.getBoundingClientRect().top-n;return r&&window.scrollBy({left:0,top:r}),e.current={elem:null,top:0},{restored:0!==r}}),[]);return(0,r.useMemo)((()=>({save:t,restore:n})),[n,t])}(),n=(0,r.useRef)(void 0),a=(0,r.useCallback)((r=>{t.save(r),e.disableScrollEvents(),n.current=()=>{const{restored:r}=t.restore();if(n.current=void 0,r){const t=()=>{e.enableScrollEvents(),window.removeEventListener("scroll",t)};window.addEventListener("scroll",t)}else e.enableScrollEvents()}}),[e,t]);return(0,i.Z)((()=>{queueMicrotask((()=>n.current?.()))})),{blockElementScrollPositionUntilNextRender:a}}function m(){const e=(0,r.useRef)(null),t=(0,o.Z)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function r(){const a=document.documentElement.scrollTop;(n&&a>e||!n&&at&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},3320:(e,t,n)=>{"use strict";n.d(t,{HX:()=>r,os:()=>a});n(2263);const r="default";function a(e,t){return`docs-${e}-${t}`}},12:(e,t,n)=>{"use strict";n.d(t,{Nk:()=>c,WA:()=>u});var r=n(7294);const a="localStorage";function o(e){let{key:t,oldValue:n,newValue:r,storage:a}=e;if(n===r)return;const o=document.createEvent("StorageEvent");o.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,a),window.dispatchEvent(o)}function i(e){if(void 0===e&&(e=a),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,l||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),l=!0),null}var t}let l=!1;const s={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function u(e,t){if("undefined"==typeof window)return function(e){function t(){throw new Error(`Illegal storage API usage for storage key "${e}".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.`)}return{get:t,set:t,del:t,listen:t}}(e);const n=i(t?.persistence);return null===n?s:{get:()=>{try{return n.getItem(e)}catch(t){return console.error(`Docusaurus storage error, can't get key=${e}`,t),null}},set:t=>{try{const r=n.getItem(e);n.setItem(e,t),o({key:e,oldValue:r,newValue:t,storage:n})}catch(r){console.error(`Docusaurus storage error, can't set ${e}=${t}`,r)}},del:()=>{try{const t=n.getItem(e);n.removeItem(e),o({key:e,oldValue:t,newValue:null,storage:n})}catch(t){console.error(`Docusaurus storage error, can't delete key=${e}`,t)}},listen:t=>{try{const r=r=>{r.storageArea===n&&r.key===e&&t(r)};return window.addEventListener("storage",r),()=>window.removeEventListener("storage",r)}catch(r){return console.error(`Docusaurus storage error, can't listen for changes of key=${e}`,r),()=>{}}}}}function c(e,t){const n=(0,r.useRef)((()=>null===e?s:u(e,t))).current(),a=(0,r.useCallback)((e=>"undefined"==typeof window?()=>{}:n.listen(e)),[n]);return[(0,r.useSyncExternalStore)(a,(()=>"undefined"==typeof window?null:n.get()),(()=>null)),n]}},4711:(e,t,n)=>{"use strict";n.d(t,{l:()=>i});var r=n(2263),a=n(6550),o=n(8780);function i(){const{siteConfig:{baseUrl:e,url:t,trailingSlash:n},i18n:{defaultLocale:i,currentLocale:l}}=(0,r.Z)(),{pathname:s}=(0,a.TH)(),u=(0,o.applyTrailingSlash)(s,{trailingSlash:n,baseUrl:e}),c=l===i?e:e.replace(`/${l}/`,"/"),d=u.replace(e,"");return{createUrl:function(e){let{locale:n,fullyQualified:r}=e;return`${r?t:""}${function(e){return e===i?`${c}`:`${c}${e}/`}(n)}${d}`}}}},5936:(e,t,n)=>{"use strict";n.d(t,{S:()=>i});var r=n(7294),a=n(6550),o=n(902);function i(e){const t=(0,a.TH)(),n=(0,o.D9)(t),i=(0,o.zX)(e);(0,r.useEffect)((()=>{n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},6668:(e,t,n)=>{"use strict";n.d(t,{L:()=>a});var r=n(2263);function a(){return(0,r.Z)().siteConfig.themeConfig}},8802:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[a]=e.split(/[#?]/),o="/"===a||a===r?a:(i=a,n?function(e){return e.endsWith("/")?e:`${e}/`}(i):function(e){return e.endsWith("/")?e.slice(0,-1):e}(i));var i;return e.replace(a,o)}},4143:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=void 0,t.getErrorCausalChain=function e(t){return t.cause?[t,...e(t.cause)]:[t]}},8780:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=t.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="__blog-post-container";var a=n(8802);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(a).default}});var o=n(4143);Object.defineProperty(t,"getErrorCausalChain",{enumerable:!0,get:function(){return o.getErrorCausalChain}})},311:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});n(7294);var r=n(1728);const a={loadingRing:"loadingRing_RJI3","loading-ring":"loading-ring_FB5o"};var o=n(5893);function i(e){let{className:t}=e;return(0,o.jsxs)("div",{className:(0,r.Z)(a.loadingRing,t),children:[(0,o.jsx)("div",{}),(0,o.jsx)("div",{}),(0,o.jsx)("div",{}),(0,o.jsx)("div",{})]})}},22:(e,t,n)=>{"use strict";n.d(t,{w:()=>l});var r=n(1336),a=n.n(r),o=n(1029);const i=new Map;function l(e,t){const n=`${e}${t}`;let r=i.get(n);return r||(r=async function(e,t){{const n=`${e}${o.J.replace("{dir}",t?`-${t.replace(/\//g,"-")}`:"")}`;if(new URL(n,location.origin).origin!==location.origin)throw new Error("Unexpected version url");const r=await(await fetch(n)).json(),i=r.map(((e,t)=>{let{documents:n,index:r}=e;return{type:t,documents:n,index:a().Index.load(r)}})),l=r.reduce(((e,t)=>{for(const n of t.index.invertedIndex)/\p{Unified_Ideograph}/u.test(n[0][0])&&e.add(n[0]);return e}),new Set);return{wrappedIndexes:i,zhDictionary:Array.from(l)}}return{wrappedIndexes:[],zhDictionary:[]}}(e,t),i.set(n,r)),r}},8202:(e,t,n)=>{"use strict";n.d(t,{v:()=>s});var r=n(1336),a=n.n(r);var o=n(1029);function i(e){return l(e).concat(l(e.filter((e=>{const t=e[e.length-1];return!t.trailing&&t.maybeTyping})),!0))}function l(e,t){return e.map((e=>({tokens:e.map((e=>e.value)),term:e.map((e=>({value:e.value,presence:a().Query.presence.REQUIRED,wildcard:(t?e.trailing||e.maybeTyping:e.trailing)?a().Query.wildcard.TRAILING:a().Query.wildcard.NONE})))})))}function s(e,t,n){return function(r,l){const s=function(e,t){if(1===t.length&&["ja","jp","th"].includes(t[0]))return a()[t[0]].tokenizer(e).map((e=>e.toString()));let n=/[^-\s]+/g;return t.includes("zh")&&(n=/\w+|\p{Unified_Ideograph}+/gu),e.toLowerCase().match(n)||[]}(r,o.dK);if(0===s.length)return void l([]);const u=function(e,t){const n=function(e,t){const n=[];return function e(r,a){if(0===r.length)return void n.push(a);const o=r[0];if(/\p{Unified_Ideograph}/u.test(o)){const n=function(e,t){const n=[];return function e(r,a){let o=0,i=!1;for(const l of t)if(r.substr(0,l.length)===l){const t={missed:a.missed,term:a.term.concat({value:l})};r.length>l.length?e(r.substr(l.length),t):n.push(t),i=!0}else for(let t=l.length-1;t>o;t-=1){const s=l.substr(0,t);if(r.substr(0,t)===s){o=t;const l={missed:a.missed,term:a.term.concat({value:s,trailing:!0})};r.length>t?e(r.substr(t),l):n.push(l),i=!0;break}}i||(r.length>0?e(r.substr(1),{missed:a.missed+1,term:a.term}):a.term.length>0&&n.push(a))}(e,{missed:0,term:[]}),n.sort(((e,t)=>{const n=e.missed>0?1:0,r=t.missed>0?1:0;return n!==r?n-r:e.term.length-t.term.length})).map((e=>e.term))}(o,t);for(const t of n){const n=a.concat(...t);e(r.slice(1),n)}}else{const t=a.concat({value:o});e(r.slice(1),t)}}(e,[]),n}(e,t);if(0===n.length)return[{tokens:e,term:e.map((e=>({value:e,presence:a().Query.presence.REQUIRED,wildcard:a().Query.wildcard.LEADING|a().Query.wildcard.TRAILING})))}];for(const a of n)a[a.length-1].maybeTyping=!0;const r=[];for(const i of o.dK)if("en"===i)o._k||r.unshift(a().stopWordFilter);else{const e=a()[i];e.stopWordFilter&&r.unshift(e.stopWordFilter)}let l;if(r.length>0){const e=e=>r.reduce(((e,t)=>e.filter((e=>t(e.value)))),e);l=[];const t=[];for(const r of n){const n=e(r);l.push(n),n.length0&&t.push(n)}n.push(...t)}else l=n.slice();const s=[];for(const a of l)if(a.length>2)for(let e=a.length-1;e>=0;e-=1)s.push(a.slice(0,e).concat(a.slice(e+1)));return i(n).concat(i(s))}(s,t),c=[];e:for(const{term:t,tokens:a}of u)for(const{documents:r,index:o,type:i}of e)if(c.push(...o.query((e=>{for(const n of t)e.term(n.value,{wildcard:n.wildcard,presence:n.presence})})).slice(0,n).filter((e=>!c.some((t=>t.document.i.toString()===e.ref)))).slice(0,n-c.length).map((t=>{const n=r.find((e=>e.i.toString()===t.ref));return{document:n,type:i,page:0!==i&&e[0].documents.find((e=>e.i===n.p)),metadata:t.matchData.metadata,tokens:a,score:t.score}}))),c.length>=n)break e;!function(e){e.forEach(((e,t)=>{e.index=t})),e.sort(((t,n)=>{let r=t.type>0&&t.page?e.findIndex((e=>e.document===t.page)):t.index,a=n.type>0&&n.page?e.findIndex((e=>e.document===n.page)):n.index;return-1===r&&(r=t.index),-1===a&&(a=n.index),r===a?0===t.type?-1:0===n.type?1:t.index-n.index:r-a}))}(c),function(e){e.forEach(((t,n)=>{n>0&&t.page&&e.some((e=>e.document===t.page))&&(n{"use strict";function r(e){return e.join(" \u203a ")}n.d(t,{e:()=>r})},1690:(e,t,n)=>{"use strict";function r(e){return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}n.d(t,{X:()=>r})},1073:(e,t,n)=>{"use strict";function r(e,t){const n=[];for(const r of Object.values(e))r[t]&&n.push(...r[t].position);return n.sort(((e,t)=>e[0]-t[0]||t[1]-e[1]))}n.d(t,{m:()=>r})},2539:(e,t,n)=>{"use strict";n.d(t,{C:()=>a});var r=n(1690);function a(e,t,n){const o=[];for(const i of t){const n=e.toLowerCase().indexOf(i);if(n>=0){n>0&&o.push(a(e.substr(0,n),t)),o.push(`${(0,r.X)(e.substr(n,i.length))}`);const l=n+i.length;l${(0,r.X)(e)}`:(0,r.X)(e):o.join("")}},726:(e,t,n)=>{"use strict";n.d(t,{o:()=>s});var r=n(1690),a=n(2539);const o=/\w+|\p{Unified_Ideograph}/u;function i(e){const t=[];let n=0,r=e;for(;r.length>0;){const a=r.match(o);if(!a){t.push(r);break}a.index>0&&t.push(r.substring(0,a.index)),t.push(a[0]),n+=a.index+a[0].length,r=e.substring(n)}return t}var l=n(1029);function s(e,t,n,o){void 0===o&&(o=l.Hk);const{chunkIndex:s,chunks:u}=function(e,t,n){const o=[];let l=0,s=0,u=-1;for(;ls){const t=i(e.substring(s,c)).map((e=>({html:(0,r.X)(e),textLength:e.length})));for(const e of t)o.push(e)}-1===u&&(u=o.length),s=c+d,o.push({html:(0,a.C)(e.substring(c,s),n,!0),textLength:d})}}if(s({html:(0,r.X)(e),textLength:e.length})));for(const e of t)o.push(e)}return{chunkIndex:u,chunks:o}}(e,t,n),c=u.slice(0,s),d=u[s],p=[d.html],f=u.slice(s+1);let h=d.textLength,m=0,g=0,y=!1,b=!1;for(;h0){const e=c.pop();h+e.textLength<=o?(p.unshift(e.html),m+=e.textLength,h+=e.textLength):(y=!0,c.length=0)}else{if(!(f.length>0))break;{const e=f.shift();h+e.textLength<=o?(p.push(e.html),g+=e.textLength,h+=e.textLength):(b=!0,f.length=0)}}return(y||c.length>0)&&p.unshift("\u2026"),(b||f.length>0)&&p.push("\u2026"),p.join("")}},51:(e,t,n)=>{"use strict";function r(e,t){if("string"==typeof e)return{label:e,path:e};{const{label:n,path:r}=e;return"string"==typeof n?{label:n,path:r}:Object.prototype.hasOwnProperty.call(n,t)?{label:n[t],path:r}:{label:r,path:r}}}n.d(t,{_:()=>r})},1029:(e,t,n)=>{"use strict";n.d(t,{vc:()=>o,gQ:()=>f,H6:()=>u,hG:()=>g,l9:()=>h,dK:()=>r,_k:()=>a,pu:()=>p,AY:()=>c,t_:()=>d,Kc:()=>m,J:()=>i,Hk:()=>s,qo:()=>l,pQ:()=>y});n(1336);const r=["en"],a=!1,o=null,i="search-index{dir}.json?_=3795e376",l=8,s=50,u=!1,c=!0,d=!0,p="right",f=void 0,h=!0,m=[{label:"Documents",path:"docs"},{label:"Blog",path:"blogs"}],g=!0,y=!1},9318:(e,t,n)=>{"use strict";n.d(t,{lX:()=>w,q_:()=>C,ob:()=>f,PP:()=>L,Ep:()=>p});var r=n(7462);function a(e){return"/"===e.charAt(0)}function o(e,t){for(var n=t,r=n+1,a=e.length;r=0;p--){var f=i[p];"."===f?o(i,p):".."===f?(o(i,p),d++):d&&(o(i,p),d--)}if(!u)for(;d--;d)i.unshift("..");!u||""===i[0]||i[0]&&a(i[0])||i.unshift("");var h=i.join("/");return n&&"/"!==h.substr(-1)&&(h+="/"),h};var l=n(8776);function s(e){return"/"===e.charAt(0)?e:"/"+e}function u(e){return"/"===e.charAt(0)?e.substr(1):e}function c(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function d(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function p(e){var t=e.pathname,n=e.search,r=e.hash,a=t||"/";return n&&"?"!==n&&(a+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(a+="#"===r.charAt(0)?r:"#"+r),a}function f(e,t,n,a){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",r="",a=t.indexOf("#");-1!==a&&(r=t.substr(a),t=t.substr(0,a));var o=t.indexOf("?");return-1!==o&&(n=t.substr(o),t=t.substr(0,o)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),o.state=t):(void 0===(o=(0,r.Z)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(l){throw l instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):l}return n&&(o.key=n),a?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=i(o.pathname,a.pathname)):o.pathname=a.pathname:o.pathname||(o.pathname="/"),o}function h(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,a){if(null!=e){var o="function"==typeof e?e(t,n):e;"string"==typeof o?"function"==typeof r?r(o,a):a(!0):a(!1!==o)}else a(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;rt?n.splice(t,n.length-t,a):n.push(a),d({action:r,location:a,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",a=f(e,t,m(),w.location);c.confirmTransitionTo(a,r,n,(function(e){e&&(w.entries[w.index]=a,d({action:r,location:a}))}))},go:v,goBack:function(){v(-1)},goForward:function(){v(1)},canGo:function(e){var t=w.index+e;return t>=0&&t{"use strict";var r=n(9864),a={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},l={};function s(e){return r.isMemo(e)?i:l[e.$$typeof]||a}l[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},l[r.Memo]=i;var u=Object.defineProperty,c=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,h=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(h){var a=f(n);a&&a!==h&&e(t,a,r)}var i=c(n);d&&(i=i.concat(d(n)));for(var l=s(t),m=s(n),g=0;g{"use strict";e.exports=function(e,t,n,r,a,o,i,l){if(!e){var s;if(void 0===t)s=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var u=[n,r,a,o,i,l],c=0;(s=new Error(t.replace(/%s/g,(function(){return u[c++]})))).name="Invariant Violation"}throw s.framesToPop=1,s}}},5826:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},1336:(e,t,n)=>{var r,a;!function(){var o,i,l,s,u,c,d,p,f,h,m,g,y,b,v,w,k,x,S,E,T,C,_,L,j,R,P,A,N,O,I=function(e){var t=new I.Builder;return t.pipeline.add(I.trimmer,I.stopWordFilter,I.stemmer),t.searchPipeline.add(I.stemmer),e.call(t,t),t.build()};I.version="2.3.9",I.utils={},I.utils.warn=(o=this,function(e){o.console&&console.warn&&console.warn(e)}),I.utils.asString=function(e){return null==e?"":e.toString()},I.utils.clone=function(e){if(null==e)return e;for(var t=Object.create(null),n=Object.keys(e),r=0;r0){var s=I.utils.clone(t)||{};s.position=[i,l],s.index=a.length,a.push(new I.Token(n.slice(i,o),s))}i=o+1}}return a},I.tokenizer.separator=/[\s\-]+/,I.Pipeline=function(){this._stack=[]},I.Pipeline.registeredFunctions=Object.create(null),I.Pipeline.registerFunction=function(e,t){t in this.registeredFunctions&&I.utils.warn("Overwriting existing registered function: "+t),e.label=t,I.Pipeline.registeredFunctions[e.label]=e},I.Pipeline.warnIfFunctionNotRegistered=function(e){e.label&&e.label in this.registeredFunctions||I.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},I.Pipeline.load=function(e){var t=new I.Pipeline;return e.forEach((function(e){var n=I.Pipeline.registeredFunctions[e];if(!n)throw new Error("Cannot load unregistered function: "+e);t.add(n)})),t},I.Pipeline.prototype.add=function(){Array.prototype.slice.call(arguments).forEach((function(e){I.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)}),this)},I.Pipeline.prototype.after=function(e,t){I.Pipeline.warnIfFunctionNotRegistered(t);var n=this._stack.indexOf(e);if(-1==n)throw new Error("Cannot find existingFn");n+=1,this._stack.splice(n,0,t)},I.Pipeline.prototype.before=function(e,t){I.Pipeline.warnIfFunctionNotRegistered(t);var n=this._stack.indexOf(e);if(-1==n)throw new Error("Cannot find existingFn");this._stack.splice(n,0,t)},I.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);-1!=t&&this._stack.splice(t,1)},I.Pipeline.prototype.run=function(e){for(var t=this._stack.length,n=0;n1&&(oe&&(n=a),o!=e);)r=n-t,a=t+Math.floor(r/2),o=this.elements[2*a];return o==e||o>e?2*a:ol?u+=2:i==l&&(t+=n[s+1]*r[u+1],s+=2,u+=2);return t},I.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},I.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,n=0;t0){var o,i=a.str.charAt(0);i in a.node.edges?o=a.node.edges[i]:(o=new I.TokenSet,a.node.edges[i]=o),1==a.str.length&&(o.final=!0),r.push({node:o,editsRemaining:a.editsRemaining,str:a.str.slice(1)})}if(0!=a.editsRemaining){if("*"in a.node.edges)var l=a.node.edges["*"];else{l=new I.TokenSet;a.node.edges["*"]=l}if(0==a.str.length&&(l.final=!0),r.push({node:l,editsRemaining:a.editsRemaining-1,str:a.str}),a.str.length>1&&r.push({node:a.node,editsRemaining:a.editsRemaining-1,str:a.str.slice(1)}),1==a.str.length&&(a.node.final=!0),a.str.length>=1){if("*"in a.node.edges)var s=a.node.edges["*"];else{s=new I.TokenSet;a.node.edges["*"]=s}1==a.str.length&&(s.final=!0),r.push({node:s,editsRemaining:a.editsRemaining-1,str:a.str.slice(1)})}if(a.str.length>1){var u,c=a.str.charAt(0),d=a.str.charAt(1);d in a.node.edges?u=a.node.edges[d]:(u=new I.TokenSet,a.node.edges[d]=u),1==a.str.length&&(u.final=!0),r.push({node:u,editsRemaining:a.editsRemaining-1,str:c+a.str.slice(2)})}}}return n},I.TokenSet.fromString=function(e){for(var t=new I.TokenSet,n=t,r=0,a=e.length;r=e;t--){var n=this.uncheckedNodes[t],r=n.child.toString();r in this.minimizedNodes?n.parent.edges[n.char]=this.minimizedNodes[r]:(n.child._str=r,this.minimizedNodes[r]=n.child),this.uncheckedNodes.pop()}},I.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},I.Index.prototype.search=function(e){return this.query((function(t){new I.QueryParser(e,t).parse()}))},I.Index.prototype.query=function(e){for(var t=new I.Query(this.fields),n=Object.create(null),r=Object.create(null),a=Object.create(null),o=Object.create(null),i=Object.create(null),l=0;l1?1:e},I.Builder.prototype.k1=function(e){this._k1=e},I.Builder.prototype.add=function(e,t){var n=e[this._ref],r=Object.keys(this._fields);this._documents[n]=t||{},this.documentCount+=1;for(var a=0;a=this.length)return I.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},I.QueryLexer.prototype.width=function(){return this.pos-this.start},I.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},I.QueryLexer.prototype.backup=function(){this.pos-=1},I.QueryLexer.prototype.acceptDigitRun=function(){var e,t;do{t=(e=this.next()).charCodeAt(0)}while(t>47&&t<58);e!=I.QueryLexer.EOS&&this.backup()},I.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(I.QueryLexer.TERM)),e.ignore(),e.more())return I.QueryLexer.lexText},I.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(I.QueryLexer.EDIT_DISTANCE),I.QueryLexer.lexText},I.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(I.QueryLexer.BOOST),I.QueryLexer.lexText},I.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(I.QueryLexer.TERM)},I.QueryLexer.termSeparator=I.tokenizer.separator,I.QueryLexer.lexText=function(e){for(;;){var t=e.next();if(t==I.QueryLexer.EOS)return I.QueryLexer.lexEOS;if(92!=t.charCodeAt(0)){if(":"==t)return I.QueryLexer.lexField;if("~"==t)return e.backup(),e.width()>0&&e.emit(I.QueryLexer.TERM),I.QueryLexer.lexEditDistance;if("^"==t)return e.backup(),e.width()>0&&e.emit(I.QueryLexer.TERM),I.QueryLexer.lexBoost;if("+"==t&&1===e.width())return e.emit(I.QueryLexer.PRESENCE),I.QueryLexer.lexText;if("-"==t&&1===e.width())return e.emit(I.QueryLexer.PRESENCE),I.QueryLexer.lexText;if(t.match(I.QueryLexer.termSeparator))return I.QueryLexer.lexTerm}else e.escapeCharacter()}},I.QueryParser=function(e,t){this.lexer=new I.QueryLexer(e),this.query=t,this.currentClause={},this.lexemeIdx=0},I.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=I.QueryParser.parseClause;e;)e=e(this);return this.query},I.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},I.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},I.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},I.QueryParser.parseClause=function(e){var t=e.peekLexeme();if(null!=t)switch(t.type){case I.QueryLexer.PRESENCE:return I.QueryParser.parsePresence;case I.QueryLexer.FIELD:return I.QueryParser.parseField;case I.QueryLexer.TERM:return I.QueryParser.parseTerm;default:var n="expected either a field or a term, found "+t.type;throw t.str.length>=1&&(n+=" with value '"+t.str+"'"),new I.QueryParseError(n,t.start,t.end)}},I.QueryParser.parsePresence=function(e){var t=e.consumeLexeme();if(null!=t){switch(t.str){case"-":e.currentClause.presence=I.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=I.Query.presence.REQUIRED;break;default:var n="unrecognised presence operator'"+t.str+"'";throw new I.QueryParseError(n,t.start,t.end)}var r=e.peekLexeme();if(null==r){n="expecting term or field, found nothing";throw new I.QueryParseError(n,t.start,t.end)}switch(r.type){case I.QueryLexer.FIELD:return I.QueryParser.parseField;case I.QueryLexer.TERM:return I.QueryParser.parseTerm;default:n="expecting term or field, found '"+r.type+"'";throw new I.QueryParseError(n,r.start,r.end)}}},I.QueryParser.parseField=function(e){var t=e.consumeLexeme();if(null!=t){if(-1==e.query.allFields.indexOf(t.str)){var n=e.query.allFields.map((function(e){return"'"+e+"'"})).join(", "),r="unrecognised field '"+t.str+"', possible fields: "+n;throw new I.QueryParseError(r,t.start,t.end)}e.currentClause.fields=[t.str];var a=e.peekLexeme();if(null==a){r="expecting term, found nothing";throw new I.QueryParseError(r,t.start,t.end)}if(a.type===I.QueryLexer.TERM)return I.QueryParser.parseTerm;r="expecting term, found '"+a.type+"'";throw new I.QueryParseError(r,a.start,a.end)}},I.QueryParser.parseTerm=function(e){var t=e.consumeLexeme();if(null!=t){e.currentClause.term=t.str.toLowerCase(),-1!=t.str.indexOf("*")&&(e.currentClause.usePipeline=!1);var n=e.peekLexeme();if(null!=n)switch(n.type){case I.QueryLexer.TERM:return e.nextClause(),I.QueryParser.parseTerm;case I.QueryLexer.FIELD:return e.nextClause(),I.QueryParser.parseField;case I.QueryLexer.EDIT_DISTANCE:return I.QueryParser.parseEditDistance;case I.QueryLexer.BOOST:return I.QueryParser.parseBoost;case I.QueryLexer.PRESENCE:return e.nextClause(),I.QueryParser.parsePresence;default:var r="Unexpected lexeme type '"+n.type+"'";throw new I.QueryParseError(r,n.start,n.end)}else e.nextClause()}},I.QueryParser.parseEditDistance=function(e){var t=e.consumeLexeme();if(null!=t){var n=parseInt(t.str,10);if(isNaN(n)){var r="edit distance must be numeric";throw new I.QueryParseError(r,t.start,t.end)}e.currentClause.editDistance=n;var a=e.peekLexeme();if(null!=a)switch(a.type){case I.QueryLexer.TERM:return e.nextClause(),I.QueryParser.parseTerm;case I.QueryLexer.FIELD:return e.nextClause(),I.QueryParser.parseField;case I.QueryLexer.EDIT_DISTANCE:return I.QueryParser.parseEditDistance;case I.QueryLexer.BOOST:return I.QueryParser.parseBoost;case I.QueryLexer.PRESENCE:return e.nextClause(),I.QueryParser.parsePresence;default:r="Unexpected lexeme type '"+a.type+"'";throw new I.QueryParseError(r,a.start,a.end)}else e.nextClause()}},I.QueryParser.parseBoost=function(e){var t=e.consumeLexeme();if(null!=t){var n=parseInt(t.str,10);if(isNaN(n)){var r="boost must be numeric";throw new I.QueryParseError(r,t.start,t.end)}e.currentClause.boost=n;var a=e.peekLexeme();if(null!=a)switch(a.type){case I.QueryLexer.TERM:return e.nextClause(),I.QueryParser.parseTerm;case I.QueryLexer.FIELD:return e.nextClause(),I.QueryParser.parseField;case I.QueryLexer.EDIT_DISTANCE:return I.QueryParser.parseEditDistance;case I.QueryLexer.BOOST:return I.QueryParser.parseBoost;case I.QueryLexer.PRESENCE:return e.nextClause(),I.QueryParser.parsePresence;default:r="Unexpected lexeme type '"+a.type+"'";throw new I.QueryParseError(r,a.start,a.end)}else e.nextClause()}},void 0===(a="function"==typeof(r=function(){return I})?r.call(t,n,t,e):r)||(e.exports=a)}()},2497:(e,t,n)=>{"use strict";n.r(t)},2295:(e,t,n)=>{"use strict";n.r(t)},4865:function(e,t,n){var r,a;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'
'};function a(e,t,n){return en?n:e}function o(e){return 100*(-1+e)}function i(e,t,n){var a;return(a="translate3d"===r.positionUsing?{transform:"translate3d("+o(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+o(e)+"%,0)"}:{"margin-left":o(e)+"%"}).transition="all "+t+"ms "+n,a}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=a(e,r.minimum,1),n.status=1===e?null:e;var o=n.render(!t),u=o.querySelector(r.barSelector),c=r.speed,d=r.easing;return o.offsetWidth,l((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(u,i(e,c,d)),1===e?(s(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout((function(){s(o,{transition:"all "+c+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),c)}),c)):setTimeout(t,c)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*a(Math.random()*t,.1,.95)),t=a(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");c(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var a,i=t.querySelector(r.barSelector),l=e?"-100":o(n.status||0),u=document.querySelector(r.parent);return s(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(a=t.querySelector(r.spinnerSelector))&&f(a),u!=document.body&&c(u,"nprogress-custom-parent"),u.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&f(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var l=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),s=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,a=e.length,o=t.charAt(0).toUpperCase()+t.slice(1);a--;)if((r=e[a]+o)in n)return r;return t}function a(e){return e=n(e),t[e]||(t[e]=r(e))}function o(e,t,n){t=a(t),e.style[t]=n}return function(e,t){var n,r,a=arguments;if(2==a.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&o(e,n,r);else o(e,a[1],a[2])}}();function u(e,t){return("string"==typeof e?e:p(e)).indexOf(" "+t+" ")>=0}function c(e,t){var n=p(e),r=n+t;u(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=p(e);u(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function p(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function f(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(a="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=a)},4779:(e,t,n)=>{var r=n(5826);e.exports=f,e.exports.parse=o,e.exports.compile=function(e,t){return l(o(e,t),t)},e.exports.tokensToFunction=l,e.exports.tokensToRegExp=p;var a=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function o(e,t){for(var n,r=[],o=0,i=0,l="",c=t&&t.delimiter||"/";null!=(n=a.exec(e));){var d=n[0],p=n[1],f=n.index;if(l+=e.slice(i,f),i=f+d.length,p)l+=p[1];else{var h=e[i],m=n[2],g=n[3],y=n[4],b=n[5],v=n[6],w=n[7];l&&(r.push(l),l="");var k=null!=m&&null!=h&&h!==m,x="+"===v||"*"===v,S="?"===v||"*"===v,E=n[2]||c,T=y||b;r.push({name:g||o++,prefix:m||"",delimiter:E,optional:S,repeat:x,partial:k,asterisk:!!w,pattern:T?u(T):w?".*":"[^"+s(E)+"]+?"})}}return i{e.exports&&(e.exports={core:{meta:{path:"components/prism-core.js",option:"mandatory"},core:"Core"},themes:{meta:{path:"themes/{id}.css",link:"index.html?theme={id}",exclusive:!0},prism:{title:"Default",option:"default"},"prism-dark":"Dark","prism-funky":"Funky","prism-okaidia":{title:"Okaidia",owner:"ocodia"},"prism-twilight":{title:"Twilight",owner:"remybach"},"prism-coy":{title:"Coy",owner:"tshedor"},"prism-solarizedlight":{title:"Solarized Light",owner:"hectormatos2011 "},"prism-tomorrow":{title:"Tomorrow Night",owner:"Rosey"}},languages:{meta:{path:"components/prism-{id}",noCSS:!0,examplesPath:"examples/prism-{id}",addCheckAll:!0},markup:{title:"Markup",alias:["html","xml","svg","mathml","ssml","atom","rss"],aliasTitles:{html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",ssml:"SSML",atom:"Atom",rss:"RSS"},option:"default"},css:{title:"CSS",option:"default",modify:"markup"},clike:{title:"C-like",option:"default"},javascript:{title:"JavaScript",require:"clike",modify:"markup",optional:"regex",alias:"js",option:"default"},abap:{title:"ABAP",owner:"dellagustin"},abnf:{title:"ABNF",owner:"RunDevelopment"},actionscript:{title:"ActionScript",require:"javascript",modify:"markup",owner:"Golmote"},ada:{title:"Ada",owner:"Lucretia"},agda:{title:"Agda",owner:"xy-ren"},al:{title:"AL",owner:"RunDevelopment"},antlr4:{title:"ANTLR4",alias:"g4",owner:"RunDevelopment"},apacheconf:{title:"Apache Configuration",owner:"GuiTeK"},apex:{title:"Apex",require:["clike","sql"],owner:"RunDevelopment"},apl:{title:"APL",owner:"ngn"},applescript:{title:"AppleScript",owner:"Golmote"},aql:{title:"AQL",owner:"RunDevelopment"},arduino:{title:"Arduino",require:"cpp",alias:"ino",owner:"dkern"},arff:{title:"ARFF",owner:"Golmote"},armasm:{title:"ARM Assembly",alias:"arm-asm",owner:"RunDevelopment"},arturo:{title:"Arturo",alias:"art",optional:["bash","css","javascript","markup","markdown","sql"],owner:"drkameleon"},asciidoc:{alias:"adoc",title:"AsciiDoc",owner:"Golmote"},aspnet:{title:"ASP.NET (C#)",require:["markup","csharp"],owner:"nauzilus"},asm6502:{title:"6502 Assembly",owner:"kzurawel"},asmatmel:{title:"Atmel AVR Assembly",owner:"cerkit"},autohotkey:{title:"AutoHotkey",owner:"aviaryan"},autoit:{title:"AutoIt",owner:"Golmote"},avisynth:{title:"AviSynth",alias:"avs",owner:"Zinfidel"},"avro-idl":{title:"Avro IDL",alias:"avdl",owner:"RunDevelopment"},awk:{title:"AWK",alias:"gawk",aliasTitles:{gawk:"GAWK"},owner:"RunDevelopment"},bash:{title:"Bash",alias:["sh","shell"],aliasTitles:{sh:"Shell",shell:"Shell"},owner:"zeitgeist87"},basic:{title:"BASIC",owner:"Golmote"},batch:{title:"Batch",owner:"Golmote"},bbcode:{title:"BBcode",alias:"shortcode",aliasTitles:{shortcode:"Shortcode"},owner:"RunDevelopment"},bbj:{title:"BBj",owner:"hyyan"},bicep:{title:"Bicep",owner:"johnnyreilly"},birb:{title:"Birb",require:"clike",owner:"Calamity210"},bison:{title:"Bison",require:"c",owner:"Golmote"},bnf:{title:"BNF",alias:"rbnf",aliasTitles:{rbnf:"RBNF"},owner:"RunDevelopment"},bqn:{title:"BQN",owner:"yewscion"},brainfuck:{title:"Brainfuck",owner:"Golmote"},brightscript:{title:"BrightScript",owner:"RunDevelopment"},bro:{title:"Bro",owner:"wayward710"},bsl:{title:"BSL (1C:Enterprise)",alias:"oscript",aliasTitles:{oscript:"OneScript"},owner:"Diversus23"},c:{title:"C",require:"clike",owner:"zeitgeist87"},csharp:{title:"C#",require:"clike",alias:["cs","dotnet"],owner:"mvalipour"},cpp:{title:"C++",require:"c",owner:"zeitgeist87"},cfscript:{title:"CFScript",require:"clike",alias:"cfc",owner:"mjclemente"},chaiscript:{title:"ChaiScript",require:["clike","cpp"],owner:"RunDevelopment"},cil:{title:"CIL",owner:"sbrl"},cilkc:{title:"Cilk/C",require:"c",alias:"cilk-c",owner:"OpenCilk"},cilkcpp:{title:"Cilk/C++",require:"cpp",alias:["cilk-cpp","cilk"],owner:"OpenCilk"},clojure:{title:"Clojure",owner:"troglotit"},cmake:{title:"CMake",owner:"mjrogozinski"},cobol:{title:"COBOL",owner:"RunDevelopment"},coffeescript:{title:"CoffeeScript",require:"javascript",alias:"coffee",owner:"R-osey"},concurnas:{title:"Concurnas",alias:"conc",owner:"jasontatton"},csp:{title:"Content-Security-Policy",owner:"ScottHelme"},cooklang:{title:"Cooklang",owner:"ahue"},coq:{title:"Coq",owner:"RunDevelopment"},crystal:{title:"Crystal",require:"ruby",owner:"MakeNowJust"},"css-extras":{title:"CSS Extras",require:"css",modify:"css",owner:"milesj"},csv:{title:"CSV",owner:"RunDevelopment"},cue:{title:"CUE",owner:"RunDevelopment"},cypher:{title:"Cypher",owner:"RunDevelopment"},d:{title:"D",require:"clike",owner:"Golmote"},dart:{title:"Dart",require:"clike",owner:"Golmote"},dataweave:{title:"DataWeave",owner:"machaval"},dax:{title:"DAX",owner:"peterbud"},dhall:{title:"Dhall",owner:"RunDevelopment"},diff:{title:"Diff",owner:"uranusjr"},django:{title:"Django/Jinja2",require:"markup-templating",alias:"jinja2",owner:"romanvm"},"dns-zone-file":{title:"DNS zone file",owner:"RunDevelopment",alias:"dns-zone"},docker:{title:"Docker",alias:"dockerfile",owner:"JustinBeckwith"},dot:{title:"DOT (Graphviz)",alias:"gv",optional:"markup",owner:"RunDevelopment"},ebnf:{title:"EBNF",owner:"RunDevelopment"},editorconfig:{title:"EditorConfig",owner:"osipxd"},eiffel:{title:"Eiffel",owner:"Conaclos"},ejs:{title:"EJS",require:["javascript","markup-templating"],owner:"RunDevelopment",alias:"eta",aliasTitles:{eta:"Eta"}},elixir:{title:"Elixir",owner:"Golmote"},elm:{title:"Elm",owner:"zwilias"},etlua:{title:"Embedded Lua templating",require:["lua","markup-templating"],owner:"RunDevelopment"},erb:{title:"ERB",require:["ruby","markup-templating"],owner:"Golmote"},erlang:{title:"Erlang",owner:"Golmote"},"excel-formula":{title:"Excel Formula",alias:["xlsx","xls"],owner:"RunDevelopment"},fsharp:{title:"F#",require:"clike",owner:"simonreynolds7"},factor:{title:"Factor",owner:"catb0t"},false:{title:"False",owner:"edukisto"},"firestore-security-rules":{title:"Firestore security rules",require:"clike",owner:"RunDevelopment"},flow:{title:"Flow",require:"javascript",owner:"Golmote"},fortran:{title:"Fortran",owner:"Golmote"},ftl:{title:"FreeMarker Template Language",require:"markup-templating",owner:"RunDevelopment"},gml:{title:"GameMaker Language",alias:"gamemakerlanguage",require:"clike",owner:"LiarOnce"},gap:{title:"GAP (CAS)",owner:"RunDevelopment"},gcode:{title:"G-code",owner:"RunDevelopment"},gdscript:{title:"GDScript",owner:"RunDevelopment"},gedcom:{title:"GEDCOM",owner:"Golmote"},gettext:{title:"gettext",alias:"po",owner:"RunDevelopment"},gherkin:{title:"Gherkin",owner:"hason"},git:{title:"Git",owner:"lgiraudel"},glsl:{title:"GLSL",require:"c",owner:"Golmote"},gn:{title:"GN",alias:"gni",owner:"RunDevelopment"},"linker-script":{title:"GNU Linker Script",alias:"ld",owner:"RunDevelopment"},go:{title:"Go",require:"clike",owner:"arnehormann"},"go-module":{title:"Go module",alias:"go-mod",owner:"RunDevelopment"},gradle:{title:"Gradle",require:"clike",owner:"zeabdelkhalek-badido18"},graphql:{title:"GraphQL",optional:"markdown",owner:"Golmote"},groovy:{title:"Groovy",require:"clike",owner:"robfletcher"},haml:{title:"Haml",require:"ruby",optional:["css","css-extras","coffeescript","erb","javascript","less","markdown","scss","textile"],owner:"Golmote"},handlebars:{title:"Handlebars",require:"markup-templating",alias:["hbs","mustache"],aliasTitles:{mustache:"Mustache"},owner:"Golmote"},haskell:{title:"Haskell",alias:"hs",owner:"bholst"},haxe:{title:"Haxe",require:"clike",optional:"regex",owner:"Golmote"},hcl:{title:"HCL",owner:"outsideris"},hlsl:{title:"HLSL",require:"c",owner:"RunDevelopment"},hoon:{title:"Hoon",owner:"matildepark"},http:{title:"HTTP",optional:["csp","css","hpkp","hsts","javascript","json","markup","uri"],owner:"danielgtaylor"},hpkp:{title:"HTTP Public-Key-Pins",owner:"ScottHelme"},hsts:{title:"HTTP Strict-Transport-Security",owner:"ScottHelme"},ichigojam:{title:"IchigoJam",owner:"BlueCocoa"},icon:{title:"Icon",owner:"Golmote"},"icu-message-format":{title:"ICU Message Format",owner:"RunDevelopment"},idris:{title:"Idris",alias:"idr",owner:"KeenS",require:"haskell"},ignore:{title:".ignore",owner:"osipxd",alias:["gitignore","hgignore","npmignore"],aliasTitles:{gitignore:".gitignore",hgignore:".hgignore",npmignore:".npmignore"}},inform7:{title:"Inform 7",owner:"Golmote"},ini:{title:"Ini",owner:"aviaryan"},io:{title:"Io",owner:"AlesTsurko"},j:{title:"J",owner:"Golmote"},java:{title:"Java",require:"clike",owner:"sherblot"},javadoc:{title:"JavaDoc",require:["markup","java","javadoclike"],modify:"java",optional:"scala",owner:"RunDevelopment"},javadoclike:{title:"JavaDoc-like",modify:["java","javascript","php"],owner:"RunDevelopment"},javastacktrace:{title:"Java stack trace",owner:"RunDevelopment"},jexl:{title:"Jexl",owner:"czosel"},jolie:{title:"Jolie",require:"clike",owner:"thesave"},jq:{title:"JQ",owner:"RunDevelopment"},jsdoc:{title:"JSDoc",require:["javascript","javadoclike","typescript"],modify:"javascript",optional:["actionscript","coffeescript"],owner:"RunDevelopment"},"js-extras":{title:"JS Extras",require:"javascript",modify:"javascript",optional:["actionscript","coffeescript","flow","n4js","typescript"],owner:"RunDevelopment"},json:{title:"JSON",alias:"webmanifest",aliasTitles:{webmanifest:"Web App Manifest"},owner:"CupOfTea696"},json5:{title:"JSON5",require:"json",owner:"RunDevelopment"},jsonp:{title:"JSONP",require:"json",owner:"RunDevelopment"},jsstacktrace:{title:"JS stack trace",owner:"sbrl"},"js-templates":{title:"JS Templates",require:"javascript",modify:"javascript",optional:["css","css-extras","graphql","markdown","markup","sql"],owner:"RunDevelopment"},julia:{title:"Julia",owner:"cdagnino"},keepalived:{title:"Keepalived Configure",owner:"dev-itsheng"},keyman:{title:"Keyman",owner:"mcdurdin"},kotlin:{title:"Kotlin",alias:["kt","kts"],aliasTitles:{kts:"Kotlin Script"},require:"clike",owner:"Golmote"},kumir:{title:"KuMir (\u041a\u0443\u041c\u0438\u0440)",alias:"kum",owner:"edukisto"},kusto:{title:"Kusto",owner:"RunDevelopment"},latex:{title:"LaTeX",alias:["tex","context"],aliasTitles:{tex:"TeX",context:"ConTeXt"},owner:"japborst"},latte:{title:"Latte",require:["clike","markup-templating","php"],owner:"nette"},less:{title:"Less",require:"css",optional:"css-extras",owner:"Golmote"},lilypond:{title:"LilyPond",require:"scheme",alias:"ly",owner:"RunDevelopment"},liquid:{title:"Liquid",require:"markup-templating",owner:"cinhtau"},lisp:{title:"Lisp",alias:["emacs","elisp","emacs-lisp"],owner:"JuanCaicedo"},livescript:{title:"LiveScript",owner:"Golmote"},llvm:{title:"LLVM IR",owner:"porglezomp"},log:{title:"Log file",optional:"javastacktrace",owner:"RunDevelopment"},lolcode:{title:"LOLCODE",owner:"Golmote"},lua:{title:"Lua",owner:"Golmote"},magma:{title:"Magma (CAS)",owner:"RunDevelopment"},makefile:{title:"Makefile",owner:"Golmote"},markdown:{title:"Markdown",require:"markup",optional:"yaml",alias:"md",owner:"Golmote"},"markup-templating":{title:"Markup templating",require:"markup",owner:"Golmote"},mata:{title:"Mata",owner:"RunDevelopment"},matlab:{title:"MATLAB",owner:"Golmote"},maxscript:{title:"MAXScript",owner:"RunDevelopment"},mel:{title:"MEL",owner:"Golmote"},mermaid:{title:"Mermaid",owner:"RunDevelopment"},metafont:{title:"METAFONT",owner:"LaeriExNihilo"},mizar:{title:"Mizar",owner:"Golmote"},mongodb:{title:"MongoDB",owner:"airs0urce",require:"javascript"},monkey:{title:"Monkey",owner:"Golmote"},moonscript:{title:"MoonScript",alias:"moon",owner:"RunDevelopment"},n1ql:{title:"N1QL",owner:"TMWilds"},n4js:{title:"N4JS",require:"javascript",optional:"jsdoc",alias:"n4jsd",owner:"bsmith-n4"},"nand2tetris-hdl":{title:"Nand To Tetris HDL",owner:"stephanmax"},naniscript:{title:"Naninovel Script",owner:"Elringus",alias:"nani"},nasm:{title:"NASM",owner:"rbmj"},neon:{title:"NEON",owner:"nette"},nevod:{title:"Nevod",owner:"nezaboodka"},nginx:{title:"nginx",owner:"volado"},nim:{title:"Nim",owner:"Golmote"},nix:{title:"Nix",owner:"Golmote"},nsis:{title:"NSIS",owner:"idleberg"},objectivec:{title:"Objective-C",require:"c",alias:"objc",owner:"uranusjr"},ocaml:{title:"OCaml",owner:"Golmote"},odin:{title:"Odin",owner:"edukisto"},opencl:{title:"OpenCL",require:"c",modify:["c","cpp"],owner:"Milania1"},openqasm:{title:"OpenQasm",alias:"qasm",owner:"RunDevelopment"},oz:{title:"Oz",owner:"Golmote"},parigp:{title:"PARI/GP",owner:"Golmote"},parser:{title:"Parser",require:"markup",owner:"Golmote"},pascal:{title:"Pascal",alias:"objectpascal",aliasTitles:{objectpascal:"Object Pascal"},owner:"Golmote"},pascaligo:{title:"Pascaligo",owner:"DefinitelyNotAGoat"},psl:{title:"PATROL Scripting Language",owner:"bertysentry"},pcaxis:{title:"PC-Axis",alias:"px",owner:"RunDevelopment"},peoplecode:{title:"PeopleCode",alias:"pcode",owner:"RunDevelopment"},perl:{title:"Perl",owner:"Golmote"},php:{title:"PHP",require:"markup-templating",owner:"milesj"},phpdoc:{title:"PHPDoc",require:["php","javadoclike"],modify:"php",owner:"RunDevelopment"},"php-extras":{title:"PHP Extras",require:"php",modify:"php",owner:"milesj"},"plant-uml":{title:"PlantUML",alias:"plantuml",owner:"RunDevelopment"},plsql:{title:"PL/SQL",require:"sql",owner:"Golmote"},powerquery:{title:"PowerQuery",alias:["pq","mscript"],owner:"peterbud"},powershell:{title:"PowerShell",owner:"nauzilus"},processing:{title:"Processing",require:"clike",owner:"Golmote"},prolog:{title:"Prolog",owner:"Golmote"},promql:{title:"PromQL",owner:"arendjr"},properties:{title:".properties",owner:"Golmote"},protobuf:{title:"Protocol Buffers",require:"clike",owner:"just-boris"},pug:{title:"Pug",require:["markup","javascript"],optional:["coffeescript","ejs","handlebars","less","livescript","markdown","scss","stylus","twig"],owner:"Golmote"},puppet:{title:"Puppet",owner:"Golmote"},pure:{title:"Pure",optional:["c","cpp","fortran"],owner:"Golmote"},purebasic:{title:"PureBasic",require:"clike",alias:"pbfasm",owner:"HeX0R101"},purescript:{title:"PureScript",require:"haskell",alias:"purs",owner:"sriharshachilakapati"},python:{title:"Python",alias:"py",owner:"multipetros"},qsharp:{title:"Q#",require:"clike",alias:"qs",owner:"fedonman"},q:{title:"Q (kdb+ database)",owner:"Golmote"},qml:{title:"QML",require:"javascript",owner:"RunDevelopment"},qore:{title:"Qore",require:"clike",owner:"temnroegg"},r:{title:"R",owner:"Golmote"},racket:{title:"Racket",require:"scheme",alias:"rkt",owner:"RunDevelopment"},cshtml:{title:"Razor C#",alias:"razor",require:["markup","csharp"],optional:["css","css-extras","javascript","js-extras"],owner:"RunDevelopment"},jsx:{title:"React JSX",require:["markup","javascript"],optional:["jsdoc","js-extras","js-templates"],owner:"vkbansal"},tsx:{title:"React TSX",require:["jsx","typescript"]},reason:{title:"Reason",require:"clike",owner:"Golmote"},regex:{title:"Regex",owner:"RunDevelopment"},rego:{title:"Rego",owner:"JordanSh"},renpy:{title:"Ren'py",alias:"rpy",owner:"HyuchiaDiego"},rescript:{title:"ReScript",alias:"res",owner:"vmarcosp"},rest:{title:"reST (reStructuredText)",owner:"Golmote"},rip:{title:"Rip",owner:"ravinggenius"},roboconf:{title:"Roboconf",owner:"Golmote"},robotframework:{title:"Robot Framework",alias:"robot",owner:"RunDevelopment"},ruby:{title:"Ruby",require:"clike",alias:"rb",owner:"samflores"},rust:{title:"Rust",owner:"Golmote"},sas:{title:"SAS",optional:["groovy","lua","sql"],owner:"Golmote"},sass:{title:"Sass (Sass)",require:"css",optional:"css-extras",owner:"Golmote"},scss:{title:"Sass (SCSS)",require:"css",optional:"css-extras",owner:"MoOx"},scala:{title:"Scala",require:"java",owner:"jozic"},scheme:{title:"Scheme",owner:"bacchus123"},"shell-session":{title:"Shell session",require:"bash",alias:["sh-session","shellsession"],owner:"RunDevelopment"},smali:{title:"Smali",owner:"RunDevelopment"},smalltalk:{title:"Smalltalk",owner:"Golmote"},smarty:{title:"Smarty",require:"markup-templating",optional:"php",owner:"Golmote"},sml:{title:"SML",alias:"smlnj",aliasTitles:{smlnj:"SML/NJ"},owner:"RunDevelopment"},solidity:{title:"Solidity (Ethereum)",alias:"sol",require:"clike",owner:"glachaud"},"solution-file":{title:"Solution file",alias:"sln",owner:"RunDevelopment"},soy:{title:"Soy (Closure Template)",require:"markup-templating",owner:"Golmote"},sparql:{title:"SPARQL",require:"turtle",owner:"Triply-Dev",alias:"rq"},"splunk-spl":{title:"Splunk SPL",owner:"RunDevelopment"},sqf:{title:"SQF: Status Quo Function (Arma 3)",require:"clike",owner:"RunDevelopment"},sql:{title:"SQL",owner:"multipetros"},squirrel:{title:"Squirrel",require:"clike",owner:"RunDevelopment"},stan:{title:"Stan",owner:"RunDevelopment"},stata:{title:"Stata Ado",require:["mata","java","python"],owner:"RunDevelopment"},iecst:{title:"Structured Text (IEC 61131-3)",owner:"serhioromano"},stylus:{title:"Stylus",owner:"vkbansal"},supercollider:{title:"SuperCollider",alias:"sclang",owner:"RunDevelopment"},swift:{title:"Swift",owner:"chrischares"},systemd:{title:"Systemd configuration file",owner:"RunDevelopment"},"t4-templating":{title:"T4 templating",owner:"RunDevelopment"},"t4-cs":{title:"T4 Text Templates (C#)",require:["t4-templating","csharp"],alias:"t4",owner:"RunDevelopment"},"t4-vb":{title:"T4 Text Templates (VB)",require:["t4-templating","vbnet"],owner:"RunDevelopment"},tap:{title:"TAP",owner:"isaacs",require:"yaml"},tcl:{title:"Tcl",owner:"PeterChaplin"},tt2:{title:"Template Toolkit 2",require:["clike","markup-templating"],owner:"gflohr"},textile:{title:"Textile",require:"markup",optional:"css",owner:"Golmote"},toml:{title:"TOML",owner:"RunDevelopment"},tremor:{title:"Tremor",alias:["trickle","troy"],owner:"darach",aliasTitles:{trickle:"trickle",troy:"troy"}},turtle:{title:"Turtle",alias:"trig",aliasTitles:{trig:"TriG"},owner:"jakubklimek"},twig:{title:"Twig",require:"markup-templating",owner:"brandonkelly"},typescript:{title:"TypeScript",require:"javascript",optional:"js-templates",alias:"ts",owner:"vkbansal"},typoscript:{title:"TypoScript",alias:"tsconfig",aliasTitles:{tsconfig:"TSConfig"},owner:"dkern"},unrealscript:{title:"UnrealScript",alias:["uscript","uc"],owner:"RunDevelopment"},uorazor:{title:"UO Razor Script",owner:"jaseowns"},uri:{title:"URI",alias:"url",aliasTitles:{url:"URL"},owner:"RunDevelopment"},v:{title:"V",require:"clike",owner:"taggon"},vala:{title:"Vala",require:"clike",optional:"regex",owner:"TemplarVolk"},vbnet:{title:"VB.Net",require:"basic",owner:"Bigsby"},velocity:{title:"Velocity",require:"markup",owner:"Golmote"},verilog:{title:"Verilog",owner:"a-rey"},vhdl:{title:"VHDL",owner:"a-rey"},vim:{title:"vim",owner:"westonganger"},"visual-basic":{title:"Visual Basic",alias:["vb","vba"],aliasTitles:{vba:"VBA"},owner:"Golmote"},warpscript:{title:"WarpScript",owner:"RunDevelopment"},wasm:{title:"WebAssembly",owner:"Golmote"},"web-idl":{title:"Web IDL",alias:"webidl",owner:"RunDevelopment"},wgsl:{title:"WGSL",owner:"Dr4gonthree"},wiki:{title:"Wiki markup",require:"markup",owner:"Golmote"},wolfram:{title:"Wolfram language",alias:["mathematica","nb","wl"],aliasTitles:{mathematica:"Mathematica",nb:"Mathematica Notebook"},owner:"msollami"},wren:{title:"Wren",owner:"clsource"},xeora:{title:"Xeora",require:"markup",alias:"xeoracube",aliasTitles:{xeoracube:"XeoraCube"},owner:"freakmaxi"},"xml-doc":{title:"XML doc (.net)",require:"markup",modify:["csharp","fsharp","vbnet"],owner:"RunDevelopment"},xojo:{title:"Xojo (REALbasic)",owner:"Golmote"},xquery:{title:"XQuery",require:"markup",owner:"Golmote"},yaml:{title:"YAML",alias:"yml",owner:"hason"},yang:{title:"YANG",owner:"RunDevelopment"},zig:{title:"Zig",owner:"RunDevelopment"}},plugins:{meta:{path:"plugins/{id}/prism-{id}",link:"plugins/{id}/"},"line-highlight":{title:"Line Highlight",description:"Highlights specific lines and/or line ranges."},"line-numbers":{title:"Line Numbers",description:"Line number at the beginning of code lines.",owner:"kuba-kubula"},"show-invisibles":{title:"Show Invisibles",description:"Show hidden characters such as tabs and line breaks.",optional:["autolinker","data-uri-highlight"]},autolinker:{title:"Autolinker",description:"Converts URLs and emails in code to clickable links. Parses Markdown links in comments."},wpd:{title:"WebPlatform Docs",description:'Makes tokens link to WebPlatform.org documentation. The links open in a new tab.'},"custom-class":{title:"Custom Class",description:"This plugin allows you to prefix Prism's default classes (.comment can become .namespace--comment) or replace them with your defined ones (like .editor__comment). You can even add new classes.",owner:"dvkndn",noCSS:!0},"file-highlight":{title:"File Highlight",description:"Fetch external files and highlight them with Prism. Used on the Prism website itself.",noCSS:!0},"show-language":{title:"Show Language",description:"Display the highlighted language in code blocks (inline code does not show the label).",owner:"nauzilus",noCSS:!0,require:"toolbar"},"jsonp-highlight":{title:"JSONP Highlight",description:"Fetch content with JSONP and highlight some interesting content (e.g. GitHub/Gists or Bitbucket API).",noCSS:!0,owner:"nauzilus"},"highlight-keywords":{title:"Highlight Keywords",description:"Adds special CSS classes for each keyword for fine-grained highlighting.",owner:"vkbansal",noCSS:!0},"remove-initial-line-feed":{title:"Remove initial line feed",description:"Removes the initial line feed in code blocks.",owner:"Golmote",noCSS:!0},"inline-color":{title:"Inline color",description:"Adds a small inline preview for colors in style sheets.",require:"css-extras",owner:"RunDevelopment"},previewers:{title:"Previewers",description:"Previewers for angles, colors, gradients, easing and time.",require:"css-extras",owner:"Golmote"},autoloader:{title:"Autoloader",description:"Automatically loads the needed languages to highlight the code blocks.",owner:"Golmote",noCSS:!0},"keep-markup":{title:"Keep Markup",description:"Prevents custom markup from being dropped out during highlighting.",owner:"Golmote",optional:"normalize-whitespace",noCSS:!0},"command-line":{title:"Command Line",description:"Display a command line with a prompt and, optionally, the output/response from the commands.",owner:"chriswells0"},"unescaped-markup":{title:"Unescaped Markup",description:"Write markup without having to escape anything."},"normalize-whitespace":{title:"Normalize Whitespace",description:"Supports multiple operations to normalize whitespace in code blocks.",owner:"zeitgeist87",optional:"unescaped-markup",noCSS:!0},"data-uri-highlight":{title:"Data-URI Highlight",description:"Highlights data-URI contents.",owner:"Golmote",noCSS:!0},toolbar:{title:"Toolbar",description:"Attach a toolbar for plugins to easily register buttons on the top of a code block.",owner:"mAAdhaTTah"},"copy-to-clipboard":{title:"Copy to Clipboard Button",description:"Add a button that copies the code block to the clipboard when clicked.",owner:"mAAdhaTTah",require:"toolbar",noCSS:!0},"download-button":{title:"Download Button",description:"A button in the toolbar of a code block adding a convenient way to download a code file.",owner:"Golmote",require:"toolbar",noCSS:!0},"match-braces":{title:"Match braces",description:"Highlights matching braces.",owner:"RunDevelopment"},"diff-highlight":{title:"Diff Highlight",description:"Highlights the code inside diff blocks.",owner:"RunDevelopment",require:"diff"},"filter-highlight-all":{title:"Filter highlightAll",description:"Filters the elements the highlightAll and highlightAllUnder methods actually highlight.",owner:"RunDevelopment",noCSS:!0},treeview:{title:"Treeview",description:"A language with special styles to highlight file system tree structures.",owner:"Golmote"}}})},2885:(e,t,n)=>{const r=n(9901),a=n(9642),o=new Set;function i(e){void 0===e?e=Object.keys(r.languages).filter((e=>"meta"!=e)):Array.isArray(e)||(e=[e]);const t=[...o,...Object.keys(Prism.languages)];a(r,e,t).load((e=>{if(!(e in r.languages))return void(i.silent||console.warn("Language does not exist: "+e));const t="./prism-"+e;delete n.c[n(6500).resolve(t)],delete Prism.languages[e],n(6500)(t),o.add(e)}))}i.silent=!1,e.exports=i},6854:()=>{!function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,a,o){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(a,(function(e){if("function"==typeof o&&!o(e))return e;for(var a,l=i.length;-1!==n.code.indexOf(a=t(r,l));)++l;return i[l]=e,a})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var a=0,o=Object.keys(n.tokenStack);!function i(l){for(var s=0;s=o.length);s++){var u=l[s];if("string"==typeof u||u.content&&"string"==typeof u.content){var c=o[a],d=n.tokenStack[c],p="string"==typeof u?u:u.content,f=t(r,c),h=p.indexOf(f);if(h>-1){++a;var m=p.substring(0,h),g=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),y=p.substring(h+f.length),b=[];m&&b.push.apply(b,i([m])),b.push(g),y&&b.push.apply(b,i([y])),"string"==typeof u?l.splice.apply(l,[s,1].concat(b)):u.content=b}}else u.content&&i(u.content)}return l}(n.tokens)}}}})}(Prism)},6726:(e,t,n)=>{var r={"./":2885};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=6726},6500:(e,t,n)=>{var r={"./":2885};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=6500},9642:e=>{"use strict";var t=function(){var e=function(){};function t(e,t){Array.isArray(e)?e.forEach(t):null!=e&&t(e,0)}function n(e){for(var t={},n=0,r=e.length;n "));var l={},s=e[r];if(s){function u(t){if(!(t in e))throw new Error(r+" depends on an unknown component "+t);if(!(t in l))for(var i in a(t,o),l[t]=!0,n[t])l[i]=!0}t(s.require,u),t(s.optional,u),t(s.modify,u)}n[r]=l,o.pop()}}return function(e){var t=n[e];return t||(a(e,r),t=n[e]),t}}function a(e){for(var t in e)return!0;return!1}return function(o,i,l){var s=function(e){var t={};for(var n in e){var r=e[n];for(var a in r)if("meta"!=a){var o=r[a];t[a]="string"==typeof o?{title:o}:o}}return t}(o),u=function(e){var n;return function(r){if(r in e)return r;if(!n)for(var a in n={},e){var o=e[a];t(o&&o.alias,(function(t){if(t in n)throw new Error(t+" cannot be alias for both "+a+" and "+n[t]);if(t in e)throw new Error(t+" cannot be alias of "+a+" because it is a component.");n[t]=a}))}return n[r]||r}}(s);i=i.map(u),l=(l||[]).map(u);var c=n(i),d=n(l);i.forEach((function e(n){var r=s[n];t(r&&r.require,(function(t){t in d||(c[t]=!0,e(t))}))}));for(var p,f=r(s),h=c;a(h);){for(var m in p={},h){var g=s[m];t(g&&g.modify,(function(e){e in d&&(p[e]=!0)}))}for(var y in d)if(!(y in c))for(var b in f(y))if(b in c){p[y]=!0;break}for(var v in h=p)c[v]=!0}var w={getIds:function(){var e=[];return w.load((function(t){e.push(t)})),e},load:function(t,n){return function(t,n,r,a){var o=a?a.series:void 0,i=a?a.parallel:e,l={},s={};function u(e){if(e in l)return l[e];s[e]=!0;var a,c=[];for(var d in t(e))d in n&&c.push(d);if(0===c.length)a=r(e);else{var p=i(c.map((function(e){var t=u(e);return delete s[e],t})));o?a=o(p,(function(){return r(e)})):r(e)}return l[e]=a}for(var c in n)u(c);var d=[];for(var p in s)d.push(l[p]);return i(d)}(f,c,t,n)}};return w}}();e.exports=t},2703:(e,t,n)=>{"use strict";var r=n(414);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,i){if(i!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return n.PropTypes=n,n}},5697:(e,t,n)=>{e.exports=n(2703)()},414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},4448:(e,t,n)=>{"use strict";var r=n(7294),a=n(3840);function o(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n
\n

Your Docusaurus site did not load properly.

\n

A very common reason is a wrong site baseUrl configuration.

\n

Current configured baseUrl = ${e} ${"/"===e?" (default value)":""}

\n

We suggest trying baseUrl =

\n