From 4f786a8ecd912884f7787cb3911d4a88a673111a Mon Sep 17 00:00:00 2001 From: Dimitri Kennedy Date: Sat, 19 Oct 2024 10:55:23 -0400 Subject: [PATCH 1/3] remove model validation so we dont fall behind - update deps to support latest and avoid mismatch issues with zod coming from latest oai --- bun.lockb | Bin 287771 -> 285067 bytes package.json | 14 +++++++------- src/constants/providers.ts | 25 +++++++------------------ src/instructor.ts | 17 ----------------- tests/mode.test.ts | 28 ++-------------------------- tests/zod-type.test.ts | 2 +- 6 files changed, 17 insertions(+), 69 deletions(-) diff --git a/bun.lockb b/bun.lockb index 981b7ec2ae5ff199edc453a2bb0cdc39f7ebd61f..1caaa38f8e188a94c6ebc1f389f2726568f85da7 100755 GIT binary patch delta 50483 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%0AF+qf-IrqsI|= zn!|R_dhfF;b_Kos$YysiaQCKg12iZ0;icH=PAyNdDs~6iUK92Ny~Yad3Hm>JnuD*E z_*|O5^JWe!3I*mWWLJ?D?>o5J8uwDVfBhD%r2Nilfo}-4Bf6%&2K#RHc)H=$v2SsU z@Y>+9`!d;|!|Us0v@IoSTR2y3b64SMN8q!i<#v>s;@o{U6Qv5{amVs)cN$H9vHf0$ zr?RWtpF{7$Q`xobkEE*XINxkO? z>MZlQc&eE*nYZIKGhiT|k~`bxJ$ULB`{xtBw_dhd97+#VdBv$Py-!U-cxoE=M8;_i zUS~Wf?hm|Ccr=ZA-SldBGV57wHJ-Az@1=o{@di67Y0re$Jf4wwbWm!t|9iY^bnod3Qv8>$CaZ} zqHvS}dmLkZ7*E@>z5e{w_G|YnTi7{@fHUao;rsFaTBNTlk)7Kn1~=~Y^HX4KN)(PW zXp^~YAzskQdt|bIFCL%K+}=6rfYUF|4}p5%sXET%)opH^GaS$3sTTIbO`zHv9#3mK zWzx3fKo7k0Q_Op-ReF>kNW+vDXYPI}QE#4~GK_Nuo;&L}J2{|9! z$G;QqPRj7-;yFL+dt4#Ao|-nN@ve3}R`I}h!z+S))_)fsDfQ^yY~7(q3L^0 z4$h8o6W(Cr?1Az>jpwYc{}37mcT!#bzVq3N-46c~cvssw|3+vishpqnEjxUEvU2A* zg4dlmeyThsCGrR>!~R*pEJ7;K*#W-BYmdhuunOxRbvABiP2P;BHOX+bPmbP-*G1Ry zs>cd$Z8iNWe)Hh3;wu$JfV^IQjTIZf>h({y61=(_FMBzD2iKQXe46Xa`tZA8h0}I&^ zEpGgUR%o`%FSNDbOW&L!?RnnLB=2`_`;Y|gU zW99GD+uy9vewXi8|EqvEu)6RNR&j5;{5?6mWEFoDs|tLKRn#Z0J?`31vFe%6UH=QL zUa~6Zgv%?i%BSc%0?PP5Zi1g(d)l?XWA&0%2IpMsr4;#*SQS`_H|0}Bj%yVkjW1in z<+4h5vEvun0hLh)AbW|MP*xYlx%M*GHoz)fLoEM1jd@dsmt&Pa0ju~HuAhjljNcy1 zKTk*Al)e)-Li4W+0bP*p+MsK@+6h?auI+`@>q4vRdc&3BRap7`Tz?=|T|C6KH()jE zv$0Ay8f(vg1r#2mx4&7TTsMB48!xL2#$#3RM671_9ISfaHmqL%WEFM08!ua=u378? zS!H~;>;LaqrC;J+w-l=i-RoX|p;gOQ!WH!}Z@O-k&t3ln?AL`>Em`C8|39n>eALZP zR{mPw6;9wWfNH+MP4G|FYaRPBrjbT;qnk=r*=%xsS+CXqrv}!rpK25}BIa#3#XD{a zS#9=5u|gm6rW}sR`G2uW_mO+uCs@_@bN9M`u+Gk=2&MVbO(?63zHal~K#}WtFbB%j>xOf5$4H7}9Gf>bm({=2~m%FBcanK?4^w z#OigS)rC#rvhi4@Z{eoD!c8wLp6L3r3bt{5Sq0nirXfqkDt%gn$GY~{n)V&OhZ69T zRat#p|DUY#xZ2HQpqoxshq$3wbylWpZ*c96SiNLb_He95ZJfQsIsrR_DQ?0Gt){~a zxH6vU#>>ht#45vCu73+w6}b(om#osw#|kZQ`Crz(!wXa)!98w*3#~G+;Ij8(Rp9+t zB`tCN2VMUmtkONKNY~0=>~g8zHM9Snv9>)$zBv{y$koJ!y>9u+IJ-V^#Yj3dP#n-2_omO~$IaQ{2?D@(W!5LaSV- zx%{83X6h{Bm86I_XZPME-sFzwn`-#bJLK@bAO_ zzYqWa7a#sjw>sXuuA@IY_;a(NCw}>5!3b@RHlTXPo8G!#L}jqO+U-7m9heo|I8_?-!rVy_+7V`}7**xb}HZ)G(|ZG8F1&HGf; z>vQ#kOTO^N-kIC__{Z&!zmU+T!CR-!7Th`X$07TCwLW4Uc|GT<>!+T6lNsZ^-VBZL zMw^{6-mAQoO&}H!6${9Z1q93vf$akI;s8}mC=QSt2RI-QZQ?Ek#9m5h_N9R8rd(jJ zKw@1$O;cDGFtaY;m_Tila2X)}GQi@?0Cmg}fx`k_>H%WR!g_!O^#CUY;!J9NKuUdY zbW#8LbLV&N+wGZ*b@y5yj0-k?ZgzaDu}e0tjC{=dN0pX=nCw5R^=SM1>Gtof`FYyl z%i1kixAMr#RbIXQmek8$Em&|W`;iMepsscm_Z2yz&HfuMI{L!!3D5Vhdh4>mP3pgY z-2)vT`lZg#ca9jgVe^s!SI*wOZqcH;aqriNFZf`^&(VXX2d<8P^)qilXl}<{D~>1e7%dG%{xdP74fg1ZZMP8v)ig0z@|k zG&7lv0Ye)Db_z5%fhK^cCV>1VfCRHcV7oxQrhqFAYL3ff zn$-4~8_Y798%>4GFw?CAX1FPlxyhW88DTOyVn&+PGFj$~%qTM`8Ix^FWkwrs3MR*7 z%8W6aWX766DuqU+Qi1$bDiAU|1hxy*>jW5YLY)A)od5>}@=aVCAT|v!I}I?=lnd+? zNbC%lYzjLAW_AV~6DTkVT>$Z20E@c-rkNuGhXuN%17?_o>3{|4fRh4+hCg<~JO~0- z1_857g}@1c{#^mHO-Wb4@~(ih0!1dH8=y}&Kv_4y9CJqCw7~H0fO)30J79fxK=hS> z`6ly9z|boJI|c4AfgXUU9)SEFfQ4pSz}6N9yQ*pF>6hx%wuMg z%sLYoKp{~BC?tOXg_N2d0^0@Z4Fo)HLIVN00|5sF%1qoKK_LF1OgX^2(KNaS zv&j_7JZ%ojY&HqkVxBQ`WVVSD zyxi;%*beCT^4!bsdcE$6ZntmfH(Su` zrXCvxc+->%>=j5H4mfBEhXZB~2OJZ4+a%lsh`$N2_$I)+=7_*yfi5Ee@0*1q01HL{ zP6`|`sUra?BLOQ%0zNPm0w)CeX913xk}SaTEWlZTk4?rXK%Y^7vQdEJ=8V8;f#KPJ z&rE4HV0|_qdNkk*lQ|kNbTnY6z*i=a1Bl82ROfZQ>F0|F;a z+*m;DSitPDfbUJYz+QpGT)-()m;zNMNA;8b(h``~H_ac)%&fC}f zt64Y>uwWc1PL3nR8Iw95kTM>yay;O7Qz39dpno3VtSQL@EYAa+1^E8-n7;Ym>r9_~ zNLfBfyyi?kNlpt4p8$w3r4s<_Cjg=+0{kX(B4Fr5z)pe6CNK#QH3^VE2@o(l1hxy* zn+&LGLX!cxlK}?=qD|ZsK&@F)6TL1?H5>4D}K3=LJ=Uo z2(Y*a(7_xLI9#L&Qp^NNHVcaZ3yMi`vX~U9CUp)VWe#BF96*|>5I7;we=eYlDVYmc zJ{NFSAZRk?0s71Xl+6QlGiL-&3k<&vaHT1|4Y2+;K=gb-Pm?(xFmyg(r$BELxE&C6 zJ0SmdK!({Nuw9_u9e}G$=ng>c9e@J@{Y~5gK;-@Urd(jJK;lBcAXB&yFmoZ` zn839r;Z8vOoq)x60*06)0*3{z{z4qcmjZH3=2F1WrGT9R zV@+TgAZi&Pe;FWTb_i@2sCN%wyb0X{$h`+}Kp@}5S%6pzFxvu5H01(&1rqNCOg4r0 z0%qO|I3`eF67B=U-v?NHA7Gj}B5+us%l&{EX5syS1@{9^3KW`D14uD|l?E`&R0y09 z=)W8=+mtK^EME>dD^O%IN&tOI0A(eBIp&POX@TJn0Opy}2LS6I07O3sm~S#41Ppx; zuv6d;6IcO=S^>yk0a$2u2y7Rqw-T_(gjND_R{{^4?R{<8U0^Dbg2pksZvKnB_!qtEUs{tnkN=)h_fRsl7D<1(o zXetCw2=reASZPYu0G6)-oE3Q3WIPJ!^C+O~QNU_*M&Pu-@U?(7rgSY}{aQfuV}P|L z^D)5C#{fG8)|tRMK-4-w{yIRZ*&(o9px%1G<0iBokh>mmK%mUTl>%Z*0kca1PnmLo zy#k3F0GmwV2Efb>fMWuiO~T`V_{RZ@9|vqPM+6QFba?`>%`AKZu;2;6Nr4?EwG5C_ z23T1Jc+OM^oDk^$Bw(j0c@nVvNx)fw7fr@ffId$F%ANx3HfID*3k=@~c*&G*1gzf( zh~5Nv#bj;*4BZ6SDe#&JJPn9?8j$}qpxo>b*e+0SGhn|7Z3g6S1{@GLVB($u#6AO< z{S4quQ!cPqAaM)epeft}n7IXTOyF&kuoV!$6|i_K;9YY>;IKfKZGiX9!fk*B+W;p8 zj+oT#fRyckmD>RymmM!1?s&3_{M}@0OY;^I3RG+ z#JvcJeGxGGMZou_Twt$2;x51`Q@9H-a~I&4z>g+jHz0mDVDWCi&*q50VSz4t0Kb}r zdjJde08R>=F{v*BQeFbAddVEM~{vjE?pUeos#9Y9`zl)XX{ zuQ~GyNlpt4e-#j6N?!%6e-#k@8o+NdUjqz%4X{(7vI*=3MC}FS?*# z7pV6R;0hCZ2ax*?;DA7)iF+3i`z~PiyMWfFTwt$2;(LH3Q}`ZW=6ir+0_{w~`+)fO z0gK-UbTCH*4hwWS3`jN$4+9n)2AmW~HK|7cDMtV+j{wq4g}@1c{zm~_OvzEe@}q#W z0zs4U0ie$ZfU*w&-OL$*(*nak1YBuKKLo7*5Did0}MR|*eTH41U>>peFVt= z2#{fR2y7Rq_c7oq6Z#mC`!V2vKz|eW2_W_p!0b-|15CNVUV+5pfI+74IAG>+z%hYq zO~R*u_)h_gKLrdiM+6QFbomT$y;=AfZwo#HoD|43shZ{ofI#C`*q{S9EEDHqr)koYZNvMKx) zF!Ni$F@XY;a1s!I60rCrV4681a9E(rcYqmY;dg)q-vLev6q?lU0V&@DR(=ndWhw+t z2=xB}Fx!;;09gJ5;H*HA$v6e*a|%#)3NXi<5jZU{{6Bzsru096_5T4x{|K0GGJgaN z{SmNJ;0_b`2@v%YApa-8LbF3)yFk640gFuNXF%@HfCB=HP24Yl*k1s%e*r8p{eK6nG$p?Smj4boEAX(%_yf@A4?x);fYs)Vz-fWuX8~(W=~=+~vw-Mx zfVC#`9AM}Q6xapMX-cLts1LzIr~+ANPfP*WZ`xi@xswUYUvW`sfR< zkG}8%o-*YEdj%4GfK8^*2bk#t923}V5+VTc5rD-JfGy^Tz+r(dk$`PxVI*KdB;cgL z4wLE!r1$|V{eb68g}@1c{*?ebO-Uud@=AcS0xz13%78wV0cDi|yUiJa(*nbz056%+ zD8TwCKy(1`ipdNBh6VsT1zt0ODuAdefcz?ea5eIx%a0hj($|5)8MP>Hj3)h`h&0b zj~>`~>HPUOOY+|iuB*nl3&o!b@S}&OvC!VDDNHHb~f}?_W8^CQg97Jq*HvuCcY?t^R8qp7GqcG z`NqDeI6Iw(Z@KcZQ}}<{sNId|B-;OH*(2MQHTA9Y`SnHMfZ`u_3jQQW z=D%kCm&|MQrZV~4R(JNb^E&Om@ZIX#t!Z@l|AKjMqT3EW(^OY2Z9{hVO(Q#%Q4k>* z75;BWw!PKNSItS+vV$+mx9;|BAI16V+k`uKW=CILf9*wXRerSdo0RN}s*`p%%x&ji z?OB}c`_&g$vfTcyZo3b{|1Xo%#@!8lzkAJJZ3%koT-agZKUSY_XlGGCzdN*Q9lu|% zdh-_yG-%=fNTI*k9rQK-tCzMZwodpzM##)Mduxj&tkaHjj)PzvjnX}TTt)$XEi*QufU^&tJ?vtBp4 zOuwV7-?G+gn9Gz#-v`laxLHOPMK=+}Kl}HXYuFJU&qz19F4uSL^vZIXev7rC0IyLl zQ5KIC>vlJx ze)PyU&h6J7F1rjb=&}VatB2p!WeZ(aAHS!|?sQoL{9Z0wyMz9$! z)7K-_n~l-UE?erRYXa-)vSlu73cJ!}_qePXtcS}i82{{VyYtl&r~mJB6E-J8-?Y&$ z<=^inj3@k)JD$tkbP2FuT~^|<7O=-%_JDis6|kCa_pg8{nvL2M3)9?rSmO`(B%(MM zu68eO1*_*?tY61eur+GvvPWIk26nl7?OK;5!G=(pCgWo+YfJcP!kUchu&PWuwf`9x z>id_)q-wz`bJUg0^QNM5RxGSsAe%Vj&TY6*V~!83)hmeunv|ub zLznd+d<(2GR^KvJI;{qM14xrmzf>yLOY^TkP_K_&*qd-?mwn>0KClihJMOX!n7;IM zIrdYR^(Cx7B%q1>nai#sJj!MIW~vJAhXPz1ukrr^s4nb}ULl~Fe8Nqr9+=1#n#mO| z#}PI--0yZ^)*-fn?u*)40kj9&P~W4#qemN z=@tGS>=445Xl=3jF03xO4s}%RdFlJGV%MYkFiqtDxNIn4eY;c>`A3&=N-6T3#nDXG zcV+qKxdHjy41aMG-U#!6yc^DO<0xGE7D~-g!RjN zS7Oy5`-^g8T&NjZ$xS$xaQJU(RCZY|OkaZ21l2DEt1=;!0@DNyxNIEZNl25iip$0; zOgc@x@GlbQ5iY9cLVcB38RjD|OfP+lSZo5)U#rmTBA0Pavg8%#={w(a=qJGhubDdZUrcW)aq0Pz4&hOnx>}1)8{Q zHsR4OYwEIF@iq2J*UV)U?HQ{#!OLA(OjtD*YYyX|XAaW0H&y%a_oU|%R(GqS`mVHE zHxH@O#i*srZX>L8%0u6wR=W8vQ~Fx1T=3}yI-HM7( zG151nXCQr*`X)32jYL^!6v{@UQ4Si5bok3aI`HWLn2#nPo#Av4*12ss(kXWY8j1Ax zQEv6}*Uhx|6{ERG2ep&L(svVAARVnNq~ny1Px?mn3bYbU#h-vCqDg2R8jtdjzT6r_T~RmG9qCxbF{;SZ zlRz)j8}&i@&TkTGi`t>~=r#(_S9cT8e+d7Gbd351>FBf`l_DLPojDfBdY25muW z(PL;Gx)UuzcSSH|7ZX^9=A+xu9q48>4vj|x&|!K)DSg7 zjZqWS3?-l|P)n4ETA|jcEo!e}(=kRTlx;{S5S=)7q1|W?(sAci^cpHh`_O*$I?`$8 z4fH0`DdrHGh$bODFchGvXd0T1W}um<5Z#Q1&*JSCbSo-C#Ym4cYiRLfD4Xz;Sp5x@ z>(KRRD9S|FqVA}iMx-PCah`jS{+N&cz|X90Srxv@-l7Dq*EygR>HDwxuIy~|Fg^Pa z(q^SE_D)7)Q7#H0eT7(GGtNe%k-oEhBhn!!1NB8cC`Shz9cc8o46eYoL`_gr)J${i zasqx-3Hgw|_;ldlwx>ZzG-Wb)H|3 zO3|Ze4Z0WIhweuPl^{KsJcw2x9YE%wx#$3u(;pu?gY;*Yik9ok0&!Xqh^Ju4+CxA}~^q^)v zQIK#~<2~t1E?UJ@SVd0_!wyFS&>*Dm+Uva18rur#uK+Yh)lm&p3+Y&)8>)^IYsf=? ztf3t3L;I1A7@LXPg!I?8`l72)KXg0QSg6MZJ+Dh$9VPq$`Vc*#IMVeYtUG%Hq%V)pBi$I3M}c#Qy9-@}{v^H)+E1EA zXgZpSPU$|mRTrR1NDs1cs4lt;U5?_>5aO;wPm}R8XbakooogJS-S8{PZR3Ftrf56TnKjBJ9 z&m+gtN%S513h9CA3-k_p4;?}0^E7ck_zH@2nGS?udktZoyLHZPgLIzCran4P>-bz7 zy+(1W<8%~`XR>%k;BO+oji@VW8lX6&BGm*Prvt985Y{ zNcz)y;ri)#trM+$o&9DIC)R>IFGec&L$nOtW2T+*H3=vS9Vg?=>Qlb7Dtpxelys3k(K}}FYR3F8n>Sz`v-HhxKv5ine^d{H7f%YNgRgU%|J=@nqRLVm# zyNtTnOHsJYIA)mr=|c@*G^&OI$dB}Cs1EkBQP|3;Dyo7mLe)`CL?-s95V6=x(8Z_@ z(x(s9+y3N1_DNKR)*;=t??$(2h3np`Cj_0t$09w>4nhr41EdOsUusc5bQMZK@u&%E zj2fZKkxRk z)#Y&{rtoX%DYKR=iZ&8FfcB$Eq={Aw)j-jx8VVpkdL7mGIvaDiTMokBLYKm|Y3o#6 z3)Mi?k-A2^zn(QJBQ;SIvl3yy{%T|d0j-@sF=x>q=y&uTI)T1IU!c#C`u#Jc_I-*z zK_8=c(MRY5bQHafG=~nM_t6n_7`=y-_8lbto_bz^4^eA$3>`;bA{FvAszBeMZ_!Eg zJ^BruMn9la=vVX$`WdMbKcfGjpWLwQ8FUW$Xsp+5v`^>$NTdi!txrX|HwBP-A{tu_ zRYgPa^#GzSR6*)ih1GlNCH0UVNItTZBvXP`FlY39ABEAQi5PwLuqFM!qT{tN0Em*$sy)FD`|BwYV!%o}Ew- zrJIs7zN$rOE>@9}lFBN%!m5(m`1fk6O5))(7y2qX92Xt{RZ;z_KGHQVFS^jN!@5`< z9IlA0nCgDD%XRTUq)Z1PWgN~_>B5DGg|AnIl#d29^E_t}YUGq*IAJ&=O&evd&epL> zJ*A#eCbG&%)9S+XiqlNd>=0M@@9`J=c_Y^Wi{7xT{{jNLRy#?UX%}0;eTg; z_f?q-nS4!IE!wGAt*@d{HY!Hy6|s3}E?S7Rzb(Mtfo@0h(QR({ zF6?5YbW70PNa^*Iw*ozg9zZJm9&|st4=vM!aTr>F60{r{v>L5(?RxAw^cY%;O3@~? z5j};<&=crMSL%VP^iTjrAwT*Z_AB}YX-H3DPf@<-2Lj(C-CjPz9!Bq@x6y9&26_P< zLI;p`_t&xe(LVGldIi0VwjtHWI zMd8G8T&Rrep-WLX1D$>1@O8EcXQ0Ow6?iGvTt-;W_!m}6=@hRDDlb(~1&cMnHbQ#z zX{-+*6zGD|P)pPTU5=U|o%EVwRoeul4;A#`LK0H?PN+3%g%Xjj*R?9}3O6jjjT_c= z;WR0P+xi&)4g@r5+F{$Hjwl(au(l`_DU*I=+8=c$JP3s=(UWj@)D0VtYAWzZXYHR_N0p$v2t>Wh>vT+!zU zA3|@TgXj&k550*FpjT1RE4;mqcB5VB1+*3E6OPSDJ@5>A8a;tZ(Rwr=-G*|}t!ON* z)R0X_)6li3GL@Z(oq&d+_N2K1I~ZjmDqUoMl6yT)M1JUI(M;4E|7PrLbPLi`#9XWj(@+(Ha< z5wseuME9b*&;oP^x*e%Si_k)JC(^Zdqs3?i(ltxb5~Rs`4_b!eDa*n>h>CJ4`~d>@ zp%QdIT8@kxmR*G&Mh_u%-x{Q@dlX558fwpV> zwL@*gIo~CO)gu>Xs*9dQY9SZdKb{cVg~Ai^MZ#j5)vutJk>WLhm1Ylm35lue#h=so zYe@)d*1v`{6q?0*Q90U=l<|e>l%bfGmX_6pD@ge$t(KW863$!KDDSXuS4`vI4228O zMd1YE3M)>9yo=PjaQr)jmFe3^OHn-#UWSJWE8Y9(2+}ij9IAybe7>#~e!w1ij#RvE zyTxqvM_g_WMMYfFu|rC$HaAZkZAT<_{Op_FJ&JbM@TPZZ*Q#y1Rw8&wEq5R_#r3R75)`pNZ6tx)-OM>{K$m@*Oqp1XLo) z9E^%ctW0X0cBbBK5g{`n5OHA)?@YSGko4cNHxe_znNMkqAkA@zOG6{J8x6-fy`J_y=p|9 zce+Wair2{uuNu)hLX}!lH6k(K*3gq}Ua1=KX5GnE><`t72b_6n%kz<=9-#F0^hFW_ zV4kWL(XRFi67aA1^KYNMbXUW(2Yq}|{^x2Djp{xIWzdRSJn-bwM{mxX#g$2|+O}$| zk5!VQBjSA9tC)V#5&i1sR^_ft!UyYY`})%P&yOczn^yDzi{5OGriu$p{)~vY`!9-U zU$=y`YU|g7vS$rk6o0FoHmMcc;7BvzB3d=x9P5dhY35xNaYbM^y`YY8BdeQ(O4Go6 zBNK1@)g!JbO1g-fKWVPQl6&#|8pHDPZu73N>zkyeK1PgM^25usC#`t@^|yWA`yiT8 z`JoA+Nm&I21(lZ0&R*VWrq3JBZ5R(q{436U@jL&Dk50yuo8}Pxwh7GT#n%sdr~mN( zlvg`$7i14;7xP?o2DC2|pMS;c3(rk#x2kTpNOee35)<&f8s>-U5wUg8xG7HmHY<0} z(0kYVyq`kUi2+lyRz%!@cxtCYMrXdX=b`GW{624ONF7K=tQs@q?QfgjJh4V5r8CPl zxvwRLkF$!Cs+{_!MX!q^ecm8Mz5Re$R3jp;?t7G>-sH>G8z(jHag#yRF41(j!MoyvUcWv(i8LLYc8_IQsDHm5eZ!Drop<%H3$~j*#YER+JnT&3_?AdF zc^k})n9Cj@KV5Zo>phRe?R)8BuIlKNNnb3j84=56YVl?NP;f`5;7>0$ACa)`KU9EC zK=aJW!gsokX<3ULBTUa)OuIWxVJ+6*aJp69Ql;Yhdcjq9{YDMikuhz}HODELZ*BZ8 zv)mjEVLYaF?TEMzvtv1Ka@CodIpfc@KTyI|Nv-Iu_MU54&+4I?aj%%zw^H6CCfUia z(9Et)xy#KajBi(6^JVRbwjB{U>%Y>i zHgA%kpk< zAAMgC^TRe$Xp)lRVzZ3Qy^YM{n7S=UrCqFvpHOPpo# z!Zo3neCOU?N&-zv`lP!_jEm^++t=f9 zW+N%;R^pLMi#+zX-;%D`*D>d>6qo)#m0fv2jamP{_dYR%DNE`0+&0+>x7^B-7G!Is zh$P7pBHP#!CCk`_@qNiYG)4&1h}T-y!4U75*9e1m?E9FpjP3oL<+>Poe?R{m&+~lF z_k7QHKj%F6iS{`u)fG=oV|t|rS3y8x-1JJ-+uT~QdGrwrGKP$f;69l;v1TF#I`e)D zXcDds>tw&&;DK=?{Oc^U^xNe@^PLrYD^JZC4?5`xey>Yxa_=>7e$Lv7*k|VVr3YOC z7VOxPs$!TLRM~|OW1?_es~sANL|J$(Ykk$~?Veh?#!|dMrqFWMb21gE$^aeA$JGGM z&!A=o_#M#@gAxk+*<}E=ekiLEd(!*P-rjZKg%$TLDj<5m0A4UK9!PuNee>7+geMZv z6oomtJ1Jh?#~^ydy!1<#_ASr#+|$g=k5N;aQjAh5_D)7kX=*WQxLWl14I`9N9mvwu zV$^W8Fi0|_%2*k=v*r4xWrtk1u)=kv$LDOIsp`%~O=-F^YJ{#FbV5`1z?P;fqeke; zLA8}Cxv_ZE@2mZv?6Qo@m8ZwADxo^YVQI=UYPjjA$B>gHP4AEs+gC5hA8(-< zS&-(cC|ccAD|$EudM%)AH#qpo04jD<`m51_A{vg|9i6*bXY&XOYl=7m=Nn0pHDDIA zX)qdf8E`B>+n4F?6y}uqgHG$)$OJdVI)YXL;9V#QH8*yOa?JR3BM2dZvfN%usPe^* zP$1o}p@gs;)6!iDF+Bkd=5=#dZ;O7Fb}E`P!y|!pknsKNB{lbkF8t;XJn<1}%AT$? zRI1TwccqJ34=5Ie^hdMGU!1xn7bp~&ECBeDe@)C9#yzSgYQOfhub0xq3fxCh2_E2k zQ#Q5G45HR()Om8Wq0gH=3mw#1<$QRvq*#}-YC$O3l*^h8qzzZ9m2JjG5Q$pNM^`4N z=wGfhsN<Ji4N;W^(eTyxNMM8rD`E)qvI_LF@=vd9ssc_n$z?=-r(XYJ-DB0Bk{K z?9M-Z$~5o5X2N0}+)t2Ey92<+@m=h($n8KC=wo6Nq|&$JU`DSnoccjw^-f*2fsA!9 zjDt5wzLxA=a+SCxL=@KpGbf==L zzQW{Mp1do!b}oSi<&9lMku#a>JTQ%p-2{I8mcS`tEmt$|z(C9@o5qO3*3MyhLwnti ztt1mZEb*mzV5oQim}3n}YWHl+7y*+3`4rtQsrz%WJ!1BMn0iBcH|? zU;?G3!unS2S2AYSO`jtLAnQsri7-0=ZAEWJ!H zv_>??2-aKl6buYmy4x))VQ&#AFnb5>j#LN$ei&Y2gkbxTjVG>BX;*7BQ^?IvmIQIQ ztu6zV&%sCAaY0LW6}GJ;n1wlMHc%Gp_dVsJF%$vE_;sHYT<`H+S62QT8=2U2&-J9s zo{EF%mgFb(>+p^Vn@_Mhj|F3h@)@4670>$L$4-w~;>LAZa+ z%~`G0N5ni$vp+_!X*Wx(?YR*MgV8pjU9cOKfMYe%?S#!`{6^)Rm4d<0tLOm$rmX#Sk_ zg)aFA*IHyHT~c_)+o`=DQvTO%sQ7ww#4K|_G7HRnEsX`Xn9%~&gZZ``#I!X@RKr^; zoF6iF>UL~_m=`3avt5y#TEdA0_mZMr87NQ?wX=fsrMY}CHS_4^RxoGBiWn(%d50qX zkchicik~G|Is^4lKjQYejP?L)c-}+Ir~N@c`>+vV-MFy1^Sm==#a8eQ^Y#1U*2>8V zw{ykP9^RBJVwxd1WAx2)Iv0xqxy9<=8mDAl+O4g>;%O*7A$)v%vrT;>9E$*K=HF0C z+_reY2li+l!A#(T$8Rfl1sTFczh?^OL};X9=i5L9c>cY%L5 zEtwMWg$)-Z3JMDyYcK!uKlVhdZfDlE2{Q z?ZcFM&0T~cqyO4k6EZ8aH9fXUSpo_ozcw&$K5aWnZliS8&ZT|qR%3GOhC2OT8^uNU zdK7)$R!K*7HLop--JsEeoJ+vbyVk9)U*qJOG=g-*#-%zHfQsPc{%?8r<2y`aoXB*R zMU{h5U1U>yFveI%(H>GMZinGix4A z_U*8#^hWZrwm98CGTy5*I-s;+S$r@?XDO)jjGs3<$8@x|kSa%S+Cf8$+hNzb?HG{& z9B!O^HR7J{F5aIPM*^kwCVhMGw}&D-D2_CM{r?BbZV%VHI97CZD{0)TPA|6`DCd#T znM7}nrQ-HT=}&-Q#lae{pTkzJd+q~-Twj&a7xRQac7Pzf(UoQ5Ltc(GrBs^hpxZiK5x17AU9?K2$lL>SWV;JTF zU=P5Vw9Y3zuG`+V0Hl<)YiUnMFtZgvws+aty84h-VL_)Xz}=JrfZ+rHtgz@eFa6r% zMf;;HfDb68rU|QXDZAiQCueh8|7@)U<0{jUg~I(R%9cOry&o%2KvsnGgyBzLXaV{`gANk&I!W z{cIYAgrNv3NBzQJBzCkU3<$p5)Qcq+w!@~20sr{pUuD{QwtUPd!mZ7h!o$%kkTO~0 zP6e#Vr#s=8RwR0{3gXq;J1goJ_%o-FY%U^~2;eGGmk4;21Fen#BiK*g9fAF@5mkgz zHl`T!lkX?4uyiX=4;T=WvyN0k40fQ;>dVD{_4@pFoAWF*NHY~N+m5D3Dn6JBD`-vG zvxG6!zK}CsHM~8!fRv|Tam!r(?z27@mJbP)~B z?W{PO{=RmeXkI(ZMe}z*Oj-~$U}G)m2yk%GA4H#ahM+?zz6-c>nlJL<0-D*Z-l@ZE zSs`WB2u~cqU0`aX7Y;XXYdLq^I)Z5vx@x27NEdL|j9%bMZI&gb*)VoP)z=lf;^2V` z1>=^X#!*6gFcFWk+}A2o8t&o4VHAa}*P082!q$X$T(@XU0^6XG0`;IbQHY)&Ie?IW z@)Q~kCN@$=H0X^Wr>G5aXz^za=wWxI1^`uifX_us1fREanoc`hZr)AUh+NQTQbG?UL;Vr}W|_b0KD)eg zP}Ri%Fsnf2y@)vNOsXEMWaut0qouKMZ*TfB7X02>Cg`RV&Dydl`xa!2>G2(%XUnNo zFF3mco$d)qHd(=6kWc^C>Eh9|+uEY~_rc;0hOddD@SfZ?8BQym*T~co^(QcNF=~)E1f-4+=#zd@ze~?@b$vqo=HQ>9ZH( zQ&LYp)WY7-)h}y=D$1v{JbXKHDH1NSrl&Vbl%8}20DLRlE&)3yZPp6A&VTNFet!Cj z9gsbC4~a_CBy;qu_m^AT}mH=jxDXYI?R|e~AO)6~#G3-KIV-1(6 zUTw8b?9tRZl+&e-I><^8!0|UiN@ySGJrw{1&-B1*xdR>Zy0TTF3?k=p=t4i}J)E)u zRBz!`BR2q_F0;8ZZO5@Wf)bA6npo2*08F*M5vpmvb5_&~yT04Z0Fx#NPimv9P44TB zUo5Tpx%r7VX5o~GS#Z|vXn%jjiXswW9jRnY;`dpjR{d5K2tnb|;h}RD?lt!}nncI4 zY^M$E-cLj-h=<5nEo9R=xWvZq9xDu zn2cVZ;WhmND%gmXcr#}38|V?ECj?0~`$6%ER$+kZ$t~T-?v!r()zjn``c9%AbIiaT2*liMVt=-k+w)G1OSmln{dZ9QKqWy&I zxaqtnd*tFn{gt+;dn*i3TKvDde!@JmDQ^JGqhPbJ#FU8(+y3%ReO3-}y?n|%glN?d z{lk`Z<+N)RAE#_4ei=eQ;5dPu zC+E<2NlK{UKU;*$dM!vCU$}f#noj#O?lAp7*g}SZAfap(*98uTE)*BP{tYCU!{CtE zmcj=rUg4<#u&wWrGupq-UsrPi04x{5U_Kn(Ry!3~R_>JYItBW0BhjPmahnKhb<7vX zA#1gDj{kF&t1tvk+m{L_0ni-)JqRYO%Jd2P!QmVRm;3u8s00A)XZSPRV&GhX3#t8w z->TZ(XUkb&!0ohp5G?UbKJ6aFs=|D7PDA@RpB~~GI|DZ9AX9}hCZKUAKg3FHQ%V7M zGIHWumhs~idupAbIMLq0@a8CbJQyi1k>(`>#os~EQ&BSfC50~HmOB1>A%?s~HQPtI zZs^Oo;mI^KxTuN9@q%j990lYEK6n~o1vLQNmtjOItzEq4eu$8E28{@*vr3-o1` z(Uw9}Ff~rdp3+j3NE}d}Nb|7Q`UQdz31k;?$ ze4088ajO++N8?P*Q={D}xS3vNLEVxTB_-&{-r9f)`Ox~0ota3$J7*?UDRj8ff=R|A z3VXI`<4t>pV@m(W*GSl$opjfCQ@{wstKWAE);wOU|K(}Jka1uQb$~bG)eAgf-egR8 zVzc?hY$ifeBX3rym7_T$Ag^bT1zUebOibQ=Ve5ArIe?pjLM0<$D}R5n2ekRRVkX&) zMEwy*aU;Qa85)Bt!`}VEA)F50?ssqGqyoI{gZ*TqH};$O!I7uIrci{??2cE$zD*y% z4j-h;NHK}M0egxYg_VIgD3EV2up;i&C@@7uf=05{fuDcfyn85U;5?2k&DW9f3viQ9 zozNJHfV0KyTIOg@Z@Cei1sr1@xHCnR{ssK(W)Us@f}K+o(MepZRdDddB1B=87JtTv zEI7`&!>c4l{Kf``pvRXiRW$0}10rzszjR>6wrv|cfs<=vYYHC?u~fky8~_JFheVeC zeZr=IeUZ9pz20dntmgto~4aQ@TBPRu$&nwmV-Y#I(L!EY)yu%~k+n1tv%&u0} z#H_mtZ9-R^_#GLKDson_Fqh2Wx$!%9*)Z2-i+o6q^T18bf#OmX7in+i?WtULOY$bj z)ALlNi>~-Ig-t*t6KO(3=K=ES!%(iK{7bAGvo_bXPBrdk2}+*LR-wo=oSTZ^PIuD~ zyCp@DHq2pP#CyYO3;!P*jV`4_FOnUR?XYHKIjxl3B$JY$Whg!2$qe`Y-1unH%N;&= z6r7=inHl+?=~O04!3^0?#vJ4=ITe|gJJY1en2JohW{jM}D7rBj_Lo6wCOr9_1gbmr z3$4h6;H1imGeLhC-N{t4`J1ZN#q7g9_*a}pi>4|;bZ)BBM7OUzSx-}(-9AH^!qjr? zG5Jj_9QVKx*DTgN^_ibjFGug?P93HxE^gL{$1Eh5M5nIpmg}mw!v%BGjOx*!zp2*r zk{itctofF?!kLfG-1hQ7L}bo>T(dgpKcglOwC&rWY&g$PT(7?YX1lAtM z6kMIA;FQpdw)D1gC&w8|yD~flQvVrBgwETScFa)v)1r-vTCjYk5~U^QnM!Pd?`$Q} z3Y`kAt=#ZuEEHF&yjQ7F@MgX;)kHfFE6&&`K6h9dNTD;82)cVtsZbDdL@8QIR!0<7 N!CQnhDbZ@#e*q}A*x&#F delta 52028 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 diff --git a/package.json b/package.json index d291daf..94c1ddd 100644 --- a/package.json +++ b/package.json @@ -51,15 +51,15 @@ }, "homepage": "https://github.com/instructor-ai/instructor-js#readme", "dependencies": { - "zod-stream": "1.0.3", - "zod-validation-error": "^2.1.0" + "zod-stream": "2.0.0", + "zod-validation-error": "^3.4.0" }, "peerDependencies": { - "openai": ">=4.28.0", - "zod": ">=3.22.4" + "openai": ">=4.58.0", + "zod": ">=3.23.8" }, "devDependencies": { - "@anthropic-ai/sdk": "0.22.0", + "@anthropic-ai/sdk": "0.29.2", "@changesets/changelog-github": "^0.5.0", "@changesets/cli": "^2.27.1", "@ianvs/prettier-plugin-sort-imports": "4.1.0", @@ -75,8 +75,8 @@ "eslint-plugin-only-warn": "^1.1.0", "eslint-plugin-prettier": "^5.1.2", "husky": "^8.0.3", - "llm-polyglot": "2.0.0", - "openai": "4.50.0", + "llm-polyglot": "2.2.0", + "openai": "4.68.1", "prettier": "latest", "ts-inference-check": "^0.3.0", "tsup": "^8.0.1", diff --git a/src/constants/providers.ts b/src/constants/providers.ts index 02c835a..123b0cc 100644 --- a/src/constants/providers.ts +++ b/src/constants/providers.ts @@ -107,32 +107,21 @@ export const PROVIDER_SUPPORTED_MODES_BY_MODEL = { [MODE.MD_JSON]: ["*"] }, [PROVIDERS.TOGETHER]: { - [MODE.MD_JSON]: ["*"], - [MODE.JSON_SCHEMA]: [ - "mistralai/Mixtral-8x7B-Instruct-v0.1", - "mistralai/Mistral-7B-Instruct-v0.1", - "togethercomputer/CodeLlama-34b-Instruct" - ], - [MODE.TOOLS]: [ - "mistralai/Mixtral-8x7B-Instruct-v0.1", - "mistralai/Mistral-7B-Instruct-v0.1", - "togethercomputer/CodeLlama-34b-Instruct" - ] + [MODE.MD_JSON]: ["*"] + // [MODE.JSON_SCHEMA]: ["*"] + // [MODE.TOOLS]: ["*"] }, [PROVIDERS.ANYSCALE]: { - [MODE.MD_JSON]: ["*"], - [MODE.JSON_SCHEMA]: [ - "mistralai/Mistral-7B-Instruct-v0.1", - "mistralai/Mixtral-8x7B-Instruct-v0.1" - ], - [MODE.TOOLS]: ["mistralai/Mistral-7B-Instruct-v0.1", "mistralai/Mixtral-8x7B-Instruct-v0.1"] + [MODE.MD_JSON]: ["*"] + // [MODE.JSON_SCHEMA]: ["*"] + // [MODE.TOOLS]: ["*"] }, [PROVIDERS.ANTHROPIC]: { [MODE.MD_JSON]: ["*"], [MODE.TOOLS]: ["*"] }, [PROVIDERS.GROQ]: { - [MODE.TOOLS]: ["mixtral-8x7b-32768", "gemma-7b-it"], + [MODE.TOOLS]: ["*"], [MODE.MD_JSON]: ["*"] } } diff --git a/src/instructor.ts b/src/instructor.ts index c5568c0..435065d 100644 --- a/src/instructor.ts +++ b/src/instructor.ts @@ -19,7 +19,6 @@ import { Provider, PROVIDER_PARAMS_TRANSFORMERS, PROVIDER_SUPPORTED_MODES, - PROVIDER_SUPPORTED_MODES_BY_MODEL, PROVIDERS } from "./constants/providers" import { iterableTee } from "./lib" @@ -89,20 +88,6 @@ class Instructor { } } - private validateModelModeSupport( - params: ChatCompletionCreateParamsWithModel - ) { - if (this.provider !== PROVIDERS.OAI) { - const modelSupport = PROVIDER_SUPPORTED_MODES_BY_MODEL[this.provider][this.mode] - - if (!modelSupport.includes("*") && !modelSupport.includes(params.model)) { - throw new Error( - `Model ${params.model} is not supported by provider ${this.provider} in mode ${this.mode}` - ) - } - } - } - private log(level: LogLevel, ...args: T) { if (this.logger) { this.logger(level, ...args) @@ -419,8 +404,6 @@ class Instructor { params: P, requestOptions?: ClientTypeChatCompletionRequestOptions ): Promise> => { - this.validateModelModeSupport(params) - if (this.isChatCompletionCreateParamsWithModel(params)) { if (params.stream) { return this.chatCompletionStream(params, requestOptions) as ReturnTypeBasedOnParams< diff --git a/tests/mode.test.ts b/tests/mode.test.ts index 6629123..30f9482 100644 --- a/tests/mode.test.ts +++ b/tests/mode.test.ts @@ -4,11 +4,10 @@ import OpenAI from "openai" import { z } from "zod" import { type Mode } from "zod-stream" -import { MODE, Provider, PROVIDER_SUPPORTED_MODES_BY_MODEL, PROVIDERS } from "@/constants/providers" +import { Provider, PROVIDER_SUPPORTED_MODES_BY_MODEL, PROVIDERS } from "@/constants/providers" const default_oai_model = "gpt-4o" -const default_anyscale_model = "mistralai/Mixtral-8x7B-Instruct-v0.1" -const default_together_model = "mistralai/Mixtral-8x7B-Instruct-v0.1" +const default_together_model = "meta-llama/Llama-3.2-90B-Vision-Instruct-Turbo" const default_groq_model = "llama3-70b-8192" const provider_config = { @@ -16,10 +15,6 @@ const provider_config = { baseURL: "https://api.openai.com/v1", apiKey: process.env.OPENAI_API_KEY }, - [PROVIDERS.ANYSCALE]: { - baseURL: "https://api.endpoints.anyscale.com/v1", - apiKey: process.env.ANYSCALE_API_KEY - }, [PROVIDERS.TOGETHER]: { baseURL: "https://api.together.xyz", apiKey: process.env.TOGETHER_API_KEY @@ -55,25 +50,6 @@ const createTestCases = (): { Object.entries(PROVIDER_SUPPORTED_MODES_BY_MODEL).forEach( ([provider, modesByModel]: [Provider, Record]) => { - if (provider === PROVIDERS.ANYSCALE) { - Object.entries(modesByModel).forEach(([mode, models]: [Mode, string[]]) => { - if (mode === MODE.MD_JSON) { - // Skip MD_JSON for Anyscale - its somewhat supported but super flakey - return - } - - if (models.includes("*")) { - testCases.push({ - model: default_anyscale_model, - mode, - provider - }) - } else { - models.forEach(model => testCases.push({ model, mode, provider })) - } - }) - } - if (provider === PROVIDERS.TOGETHER) { Object.entries(modesByModel).forEach(([mode, models]: [Mode, string[]]) => { if (models.includes("*")) { diff --git a/tests/zod-type.test.ts b/tests/zod-type.test.ts index b2d0815..22b0b54 100644 --- a/tests/zod-type.test.ts +++ b/tests/zod-type.test.ts @@ -15,7 +15,7 @@ async function extractUser({ schema }) { }) const user = await client.chat.completions.create({ - messages: [{ role: "user", content: "do nothing" }], + messages: [{ role: "user", content: "do nothing - return nothing." }], model: "gpt-4o", response_model: { schema: schema, name: "User" } }) From a43c88d0ddaa1924524ff5be465c8a1c40503e0c Mon Sep 17 00:00:00 2001 From: Dimitri Kennedy Date: Sat, 19 Oct 2024 11:04:30 -0400 Subject: [PATCH 2/3] change set --- .changeset/silly-bikes-float.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .changeset/silly-bikes-float.md diff --git a/.changeset/silly-bikes-float.md b/.changeset/silly-bikes-float.md new file mode 100644 index 0000000..00e96a7 --- /dev/null +++ b/.changeset/silly-bikes-float.md @@ -0,0 +1,7 @@ +--- +"@instructor-ai/instructor": major +--- + +Updating core openai/zod stream/zod/anthropic dependencies to latest - updating tests and support validation to better handle changes without warning unnecessarily. + +Peer dependencies will need to be updated to match the latest - which is the reason for the major. From 000a1c8a827c0d262436945e91ae05c7635f7f29 Mon Sep 17 00:00:00 2001 From: Dimitri Kennedy Date: Sat, 19 Oct 2024 11:09:49 -0400 Subject: [PATCH 3/3] change to minor --- .changeset/silly-bikes-float.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.changeset/silly-bikes-float.md b/.changeset/silly-bikes-float.md index 00e96a7..8c47a65 100644 --- a/.changeset/silly-bikes-float.md +++ b/.changeset/silly-bikes-float.md @@ -1,7 +1,7 @@ --- -"@instructor-ai/instructor": major +"@instructor-ai/instructor": minor --- Updating core openai/zod stream/zod/anthropic dependencies to latest - updating tests and support validation to better handle changes without warning unnecessarily. -Peer dependencies will need to be updated to match the latest - which is the reason for the major. +Peer dependencies will likely need to be updated to match the latest.