From 2281200985e8129d73e2ceb09fea88f70ed8c410 Mon Sep 17 00:00:00 2001 From: Farouk Adeleke Date: Sun, 19 Oct 2025 20:03:29 -0400 Subject: [PATCH] Complete Migration --- agent/__pycache__/constants.cpython-310.pyc | Bin 2398 -> 2398 bytes agent/__pycache__/helpers.cpython-310.pyc | Bin 2501 -> 2457 bytes .../__pycache__/hill_climbing.cpython-310.pyc | Bin 2379 -> 2427 bytes agent/__pycache__/index.cpython-310.pyc | Bin 0 -> 2919 bytes agent/__pycache__/models.cpython-310.pyc | Bin 3268 -> 3272 bytes agent/__pycache__/modules.cpython-310.pyc | Bin 5090 -> 5191 bytes agent/__pycache__/utils.cpython-310.pyc | Bin 5557 -> 5554 bytes agent/index.py | 5 +++-- agent/models.py | 10 ++++++++++ main.py | 12 ++++++------ 10 files changed, 19 insertions(+), 8 deletions(-) create mode 100644 agent/__pycache__/index.cpython-310.pyc diff --git a/agent/__pycache__/constants.cpython-310.pyc b/agent/__pycache__/constants.cpython-310.pyc index 46f0c3e91257818a196ea8cf84e7b24c595cdda3..8b7a0a1e74202847f3b5a4b0ed3b658ed2b0e998 100644 GIT binary patch delta 22 ccmca7bWeykpO=@50SJ_qJX4r2pO=@50SJ_Ox*vQw;$arV+G)CvicNy&`e`FEcY{jI{C?Wtt^jnB8pO=@50SJ_UpkT8Gt1^?dI8bGA z50GGLVB%zAWMX9d%fbqxK`bVAga`{n><62TWHF+X3nr!FaoOInq4V z-7~Vt%$_K~mn4UreUO1%{FfTJ<>VibgC9v;)k7``L^J5>>h9`S)mK$r_4^@#@8^I1 z_winzkbhz0>SsgaZ7Aw5KsezvCk2gZ!D2=UXWYuI!jA32i5=6nbGPtf&+ty}7eO2V zPq>?hMKA6ZQ5=~uFYgzFcwl%x9~Pr{RIJ5o#d^F>$sNK29zG*H6zt53uR*)VBWOp0 zLVJVvACU3jYd8@ZGd=oHifL6WvRv@JxhQMBcBN;(DredJYud?f9DOE4eMgi+rgbI% zSn(zoy6Zi7lIG22@0jY*c~@4I_l0Wm8v3rkm*x3>o)w>D<^0~F&Wh|*NH~U%jjBv@ zZGVs{6z$DLop7}{N%CTB>GgLG-raln!BMimcXV*)-u=4=4=(%e9v$4@JGy)C@PQs( z$bASM2Z#FyQ@rTa&w|F=P}Ct1L1M~D%pQVqVoTV<;cS<1D|QWU?-Jp~z6gZ9Nnp%@ zb{O|W1iTA;KOPv~gE>B^H8|JC>S~<=PhYJTqLfur3ptrr)jSuIxhS$S+rG7PdwZ6r z>R7Y9IK6R24%sxD%op|cZS4urFK9xC)3g@zN@haoL6JU9GFUT3-6`!afDz?X9FB+D zPm(e%M3U$*NeW{s;G-n@v`O=BM2e-kc^P5BSD-?fH;xY zfM_c#YdOH?29U3ayoo%LZ{MFhR6?rBEaf7f>`c??v6#UAX*Qjt2rwK1RXl!kQX`zU zs|y%xKe^ROOtO-Tr#p)iIfNB)YlSBXNkk($GR2JipJ@Y-!cRQ~a%oxthUFAY#9~K) zVYvmo9eV-{3ud*^tegsK#y%%A%3ba~i{db_1DlVyFI*mgWN#Bas;hg#o%uZC{bx=b z@c|z`BXR$8Vv~3PAXwAajH9eT(D{`+HO{1o?oS&jK@*8lz@fgjkm5;JH7Y?XgBO7{ zr_9`>BM4a!N)L+qJCK^3kw>(pGn$c>{e%9EQc|-s(vrlgZBsk7+mc5X6sM(+JSaYt zfYZM^AQb}NgSrQG1a$B}!L_s+%LbeNTk25c>!*1)g4)#yUIQq+wsrSO~5MMoJ~ekaQ|}qSvwl_I)A>bkAwk zK$t_*$XiH$gXA`lBl&BfV&V!Chn;9ov?8T;SJ@|n#}Z@$Q@&Uc$4 z3NAk6F_4u}zGqJO-RLce@`vN=+U>Hh zL>);?CEDxW1Iol*6K0K&$dx%@+&_kA8U)7fohC6DX}3OEz@x3Z2Ige#G<60uFudvj wlAEei$nM>v!8{er1HtG6k8%Y$t5B=`-R>yALnA7@-H2d@@A5n#!`kqF07i_@% literal 0 HcmV?d00001 diff --git a/agent/__pycache__/models.cpython-310.pyc b/agent/__pycache__/models.cpython-310.pyc index d6f8f20408b439d5931964b07d2104569063d6dd..372dac3866a02fac645705989c0237ad1c637ed0 100644 GIT binary patch delta 112 zcmX>ic|wvmpO=@50SJ_hc|?*opO=@50SJ~Ae$5cr$Xm_KF975fvjGVyW+_G%#>ump*E6zi_GXb`VwBsQ z!N$nQs4+QUht=Tm} z<&Yq_af;@Egg{)$0f{O%F2D(i8`nJ`#ElylP{{-H|Fa=>PuQAI|NqTDGyijcoBMG- z=V!BK0)Dd}{Mq<=WIK1Mq&cj`+Q~|?%`2QF9L-5?SM0YmhqsDtt75fFl@dv;B%G9^ zf1Gf1H*t69BdszFjNzETm`6+*n6#4tCIid~uo(d+>*RpR9WkR0SxeaY?O#WdzY}od z{)12>!?MlB>@uk01VEI&)eSq{@WrOvazqO05rCb9m_d0)e#6%0ED&)8xMe078KR6( zlIt-oMw3`QVeL*Pzayly`wRbsNKYT#oWv_mBRqmIh43iC9Kt-pG(rv`kFbD15jaBZ z!?84r(kTEu72xgY45NKlhP3}2E0D6*6Q|?@eL`+##+kv4q`YYSP@aHeQSMr!*7R=O zd9C4h*Bha*q;AgU)pP2R^I)_nm(26&VUR?eE*Y9%y)mG}&K_NwTD1*PK&y)gMFh-K zoJ<|0$XI^A?smea?}-fVU^Z-BJc07SeR3l`z1R;K9f?wRe6djz&JrjpVw%z^MvQ-c z2pVBM&g4&Nd-ExRF)0V*oZ6=TKHYVtK>`1T1uOkzWM3Hz7Z?hUFJoV+=Df z&}6CwRpULq`+fFPQs@(LC(8Bw+bgQ$a9)K0utOty?n0#1YvDjrR87pwt!5C`{dVU{ z7c2v;DNjIE4mlJ<7790uF8~##ZhP-~{)T50u^`)poApb;3f!_;+}~Lw)NJ6BVi{nE zh|4JVgS-Lim#_kCGI)p6eM$;Yes;)vt9ChJcm1X(o`+p{XS_Ii7UwC_+Cbt^MOxDf z#dVZ;t%M5ZK{W`4cm|Iz z$e)Xo*30Wvj4kbZRX^)J$?*(Da z3j?`QntvrOQL5p#I<5%f4+(xlB4e$&?$yGsa0PyQ<8k0G`%bszsyR~+3^=O1ot58~ Mrc;`gx2*Eaze$oU6951J delta 1636 zcmah}&2Jk;6yKR$&wltL_QrA2Bs6hDNtT2r1o6>QN+B&3f+i9H3AqAm<=w^(>s@Ph zO+PL{f*Yr3gg|gbK-3e8IB)_^To7lpC&WKcE(nR%3h&K^+C8z+{PgDcUi{v?`Mvph z>5s)yR4iHweD&LZwab(HrL*ITrv_R#*T{8QgAv73JZ-<>yrX!zpwhJ)c6YonPLwN( z$2|Qb#nXLdxB8*lm;lD`Okm7orUs1V<$=iqGYK(Mz!bb9FvVl$gh#d&r?mh3)VG5~ zy;OxtQZ-I^I@WBuVHhQD(uu;j+2j-8;x+W=xB5x1pS;rX1CKMLCjkx=UPrqwzSFj6 zDq!M@3jmg)kt(f{Dw!v|a=4oNfe`!fF8i2hQ{WbJg^9gKz~GM}oJ5#IIF0Za!Xm;v zLJ^^a;2=wBK5-1@GYEK?>?%~WG=%d2X|dUC1#TR- z{2%~X3{yXaA+iyVgN0Wa8vq7eet|A&9NDbdVBjb26pCWqoE5(nzPO6D@)ZDw@h8xh z1z_L#Dgs_*YWVNFLElY${v>iTzJNj0yrT2d9;V;yaL-> zupY`;hO5P#n@%m&cB4+nU&Q~yAxYK14^z_*`(2+y^HR0z-o!z2z}1CF9H&(6gbCk3 zi@Cj?A9`6uvY{`F&nwHz_)f{TWNJ7ITc?x>ayX<}SH+)|Dm#bqjLWJ5Ui>0Nn* zSCN%6K{;K96>kDiYCVuBi1a=)$||EYXWY|FJX?)2GDS*Y6$W;Wks4TN(<6;p5LqG? zM6-J}-S~k1Eq<}{&oLrRH{LCv=lO j_c^|$*$l9&k=GA=IZiV5NTsseQ(~@K*QssT`P%fq9_c4q diff --git a/agent/__pycache__/utils.cpython-310.pyc b/agent/__pycache__/utils.cpython-310.pyc index d5d51f00c4529ed64812ca80a33dc29e9aab12bc..b003ec864791b1f4d62ec9012271c19025e59f54 100644 GIT binary patch delta 287 zcmXAiKTE@47{uRun#3d~X?{nwuFnW(CYc@5N5W<`Xi zdb7WfU(u8Hj1Dp-JaFHALW@tw&vC%yec*^cy*?7Y_iIy`o^_TIafn+=a(6gsBu0{J zA*G9m8xzqqB~B_Fu^~vb$Pk7|bI@&FEQofUqaennS`I8kXCrELL?usCT}Yx~ePE68 zUOvMmmkaN>QQw6&@W8wBiaNhMkgL2_++tOHL{IIM=Fwc#54Nyjql9gQk#vH*Q8tDI W`Zu`)IVnwPR;+29W%szJQ~ delta 270 zcmdm_y;YkxpO=@50SJ~Ae$9BWk(Y;+QFgNw>r6&Q)y-SjB$*hEH=pBp%qZ#sR8p)4 zB$$|47@2^O>mLux^HwDz369VaQ@! zz*NG#kg-U=gr$Tzg|V5bUt;ooUb)Htc|{r3CyVlFGe&H7AgE7^e`2 G5-$LX>^+G9 diff --git a/agent/index.py b/agent/index.py index 5fe2607..8e4e9d8 100644 --- a/agent/index.py +++ b/agent/index.py @@ -1,6 +1,6 @@ from modaic import PrecompiledAgent, PrecompiledConfig from .modules import TweetGeneratorModule, TweetEvaluatorModule -from .models import EvaluationResult +from .models import EvaluationResult, FinalResult from .hill_climbing import HillClimbingOptimizer from typing import Optional, List from .utils import get_dspy_lm @@ -50,7 +50,7 @@ class TweetOptimizerAgent(PrecompiledAgent): input_text: str, iterations: Optional[int] = None, patience: Optional[int] = None, - ) -> str: + ) -> FinalResult: """Run full optimization process.""" max_iterations = iterations or self.max_iterations patience_limit = patience or self.patience @@ -97,6 +97,7 @@ class TweetOptimizerAgent(PrecompiledAgent): results.update({"final_tweet": best_tweet, "best_score": best_score}) self.reset() + results = FinalResult(**results) return results diff --git a/agent/models.py b/agent/models.py index 81b5308..fea59e8 100644 --- a/agent/models.py +++ b/agent/models.py @@ -23,6 +23,16 @@ class CategoryEvaluation(BaseModel): ) return score +class FinalResult(BaseModel): + """Pydantic model for final tweet optimization result.""" + initial_text: str = Field(description="The initial tweet text") + final_tweet: str = Field(description="The final optimized tweet") + best_score: float = Field(description="The best score for the final tweet") + iterations_run: int = Field(description="The number of iterations run") + early_stopped: bool = Field(description="Whether the optimization early stopped") + scores_history: List[List[int]] = Field(description="The history of scores") + improvement_count: int = Field(description="The number of improvements found") + class EvaluationResult(BaseModel): """Pydantic model for tweet evaluation results.""" diff --git a/main.py b/main.py index 90b10eb..5fa4dde 100644 --- a/main.py +++ b/main.py @@ -19,12 +19,12 @@ def main(): iterations=10, # Reduced for testing patience=8, ) - print(f"Initial text: {results['initial_text']}") - print(f"Final tweet: {results['final_tweet']}") - print(f"Best score: {results['best_score']:.2f}") - print(f"Iterations run: {results['iterations_run']}") - print(f"Improvements found: {results['improvement_count']}") - print(f"Early stopped: {results['early_stopped']}") + print(f"Initial text: {results.initial_text}") + print(f"Final tweet: {results.final_tweet}") + print(f"Best score: {results.best_score:.2f}") + print(f"Iterations run: {results.iterations_run}") + print(f"Improvements found: {results.improvement_count}") + print(f"Early stopped: {results.early_stopped}") except Exception as e: print(f"Error in optimization: {e}")