From e24963abe1e67fe1413063199679d3231551ceb3 Mon Sep 17 00:00:00 2001 From: T3782834 Date: Mon, 31 Aug 2026 21:11:51 -0300 Subject: [PATCH] ajuste no guardraild COE --- .../__pycache__/__init__.cpython-313.pyc | Bin 1501 -> 1502 bytes .../__pycache__/base.cpython-313.pyc | Bin 1375 -> 1376 bytes .../__pycache__/config_loader.cpython-313.pyc | Bin 9160 -> 9161 bytes .../__pycache__/custom_rails.cpython-313.pyc | Bin 4404 -> 4405 bytes .../framework_llm_client.cpython-313.pyc | Bin 17783 -> 17784 bytes .../__pycache__/llm_rails.cpython-313.pyc | Bin 5923 -> 5924 bytes .../output_supervisor.cpython-313.pyc | Bin 24306 -> 24307 bytes .../parallel_executor.cpython-313.pyc | Bin 21862 -> 21863 bytes .../__pycache__/pipeline.cpython-313.pyc | Bin 10889 -> 10890 bytes .../__pycache__/rail_action.cpython-313.pyc | Bin 654 -> 655 bytes .../__pycache__/rail_decision.cpython-313.pyc | Bin 1605 -> 1606 bytes .../__pycache__/rail_result.cpython-313.pyc | Bin 1004 -> 1005 bytes .../__pycache__/rails.cpython-313.pyc | Bin 41639 -> 41640 bytes .../__pycache__/__init__.cpython-313.pyc | Bin 2994 -> 2995 bytes .../__pycache__/_compat.cpython-313.pyc | Bin 2445 -> 2446 bytes .../contestation_validation.cpython-313.pyc | Bin 2177 -> 2178 bytes .../__pycache__/contracts.cpython-313.pyc | Bin 6901 -> 6902 bytes .../__pycache__/input_size.cpython-313.pyc | Bin 3649 -> 3650 bytes .../__pycache__/llm_adapter.cpython-313.pyc | Bin 3799 -> 3800 bytes .../__pycache__/llm_client.cpython-313.pyc | Bin 7454 -> 7455 bytes .../__pycache__/llm_rails.cpython-313.pyc | Bin 8894 -> 8895 bytes .../output_sanitization.cpython-313.pyc | Bin 13910 -> 13911 bytes .../__pycache__/pipeline.cpython-313.pyc | Bin 12661 -> 12662 bytes .../__pycache__/__init__.cpython-313.pyc | Bin 473 -> 474 bytes .../__pycache__/_context.cpython-313.pyc | Bin 5871 -> 5872 bytes .../ausencia_oferta_proativa.cpython-313.pyc | Bin 11265 -> 11266 bytes .../__pycache__/coerencia.cpython-313.pyc | Bin 9485 -> 4158 bytes .../__pycache__/dlex_in.cpython-313.pyc | Bin 1304 -> 1305 bytes .../__pycache__/dlex_out.cpython-313.pyc | Bin 1815 -> 1816 bytes .../__pycache__/fallback.cpython-313.pyc | Bin 17652 -> 17653 bytes .../__pycache__/fraseologia.cpython-313.pyc | Bin 7633 -> 7634 bytes .../__pycache__/out_of_scope.cpython-313.pyc | Bin 17493 -> 17494 bytes .../prompts/__pycache__/pinj.cpython-313.pyc | Bin 8424 -> 8425 bytes .../__pycache__/ragsec.cpython-313.pyc | Bin 1120 -> 1121 bytes .../__pycache__/revprec.cpython-313.pyc | Bin 5411 -> 5412 bytes .../prompts/__pycache__/tox.cpython-313.pyc | Bin 644 -> 645 bytes .../toxicidade_output.cpython-313.pyc | Bin 928 -> 929 bytes .../calibrated/prompts/coerencia.py | 170 ++++++------------ .../__pycache__/__init__.cpython-313.pyc | Bin 1663 -> 1664 bytes .../rails/__pycache__/alcada.cpython-313.pyc | Bin 4999 -> 5000 bytes .../rails/__pycache__/anatel.cpython-313.pyc | Bin 9148 -> 9149 bytes .../__pycache__/confirmation.cpython-313.pyc | Bin 11042 -> 11043 bytes .../rails/__pycache__/dlex_in.cpython-313.pyc | Bin 3279 -> 3280 bytes .../__pycache__/dlex_out.cpython-313.pyc | Bin 3331 -> 3332 bytes .../rails/__pycache__/ragsec.cpython-313.pyc | Bin 5462 -> 5463 bytes .../rails/__pycache__/revprec.cpython-313.pyc | Bin 5470 -> 5471 bytes .../rails/__pycache__/tox.cpython-313.pyc | Bin 8293 -> 8294 bytes .../__pycache__/__init__.cpython-313.pyc | Bin 533 -> 534 bytes .../rules/__pycache__/alcada.cpython-313.pyc | Bin 1881 -> 1882 bytes .../__pycache__/pinj_patterns.cpython-313.pyc | Bin 3730 -> 3731 bytes .../__pycache__/tox_blocklist.cpython-313.pyc | Bin 1506 -> 1507 bytes 51 files changed, 50 insertions(+), 120 deletions(-) diff --git a/libs/agent_framework/src/agent_framework/guardrails/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/__init__.cpython-313.pyc index 1f07db370f44e3209ab36199c2bb56061fc022f0..d3fa4e7a71cc96f834932eefe8903efe8cd52035 100644 GIT binary patch delta 37 rcmcc1eUF>_GcPX}0}!~0PTR=+k%gy9KR2&LKUv?gxU_gOJL@$7&3OxK delta 36 qcmcb|eV3d2GcPX}0}wDin7WbsBMWz>er{fgeu}Nk-LwRyH!6ouS7pZ-#6HE^HR>s)&K&+4H*Cc diff --git a/libs/agent_framework/src/agent_framework/guardrails/__pycache__/llm_rails.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/llm_rails.cpython-313.pyc index cdea82b957d50717b396760a17bca20bac021f90..ddedee0ccb4721dec7a0e8dcf7a5d3118fe2617d 100644 GIT binary patch delta 38 scmZ3iw?vQoGcPX}0}!~0PTR;mnVF|rKR2&LKUv?gxU_ilO6DqI0L>f=R{#J2 delta 37 rcmZ3Yw^)z+GcPX}0}wDin7WaBGBbCTer{fgeu}M()qNyj%=G;3hh4BexqXPqTh*UWtCPzGHD|@#Yv-t^fc5J`5HB delta 39 tcmaF9it*VhM()qNyj%=G!1!S5Ms7D&?k4@*yb}Esecxcu&9SUp0RaAA3+Mm< diff --git a/libs/agent_framework/src/agent_framework/guardrails/__pycache__/pipeline.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/pipeline.cpython-313.pyc index ae8f2f984655b5c9385f149d41b5974a51e6f030..892395c349d4c23396f9f15bcefb9ee2a2916d6d 100644 GIT binary patch delta 38 scmeAS?F!}o%*)Hg00eHL(>8KHX6C8V&&?~*Pu6!VE-l{tlX-#~0N6eZIRF3v delta 37 rcmeAQ?F{Aq%*)Hg00fK=rf%eZ%*pPN^rpQ7&@?78_D^8_^j)8MFGxF5x=jN5@C+j;FmlkhsW#nW80JkIx4gdfE delta 37 rcmeBY?PKNs%*)Hg00fK=rf%fUXXLKY&&?~*Pto@c_T1dY$jJx*wlE3c diff --git a/libs/agent_framework/src/agent_framework/guardrails/__pycache__/rail_decision.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/rail_decision.cpython-313.pyc index 465ba4bdcd5d2e77377d69aaa3b36a3b49138e3c..41e348e4cf9be56a7634f18f3b6210c0b4f796be 100644 GIT binary patch delta 38 scmX@gbBu@kGcPX}0}!~0PTR;`&dgJoSC~$KR2&LKSkd+*mH9q^A08e$@2>$ diff --git a/libs/agent_framework/src/agent_framework/guardrails/__pycache__/rail_result.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/rail_result.cpython-313.pyc index 3911e77130014d5407cf4be54f790cc14b4fb6cf..fa803349638e34f54ba3ca82b28b0a335823510b 100644 GIT binary patch delta 38 scmaFE{+6BlGcPX}0}!~0PTRUWtCPzGHD|@#btcn>hgY&13^V`$ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/__init__.cpython-313.pyc index 98d8f3101f121df1fad8fb26274e3a34306a900a..21efb858d21ad2d69621879002430b15b5a36df0 100644 GIT binary patch delta 38 scmdlazFD06GcPX}0}!~0PTR;Gz{%69pPN^rpRDg#Tw1(2jnjt-0L60(m;e9( delta 37 rcmdlizDb<>GcPX}0}wDin7WZWfRnpLKR2&LKSkd+*mH9_rw8L?VdH7h&&?~*Pu6!VE-l`?iS0HM0Ktq4W&i*H delta 37 rcmeAZ?iJ?#%*)Hg00fK=rf%e(!^YjLpPN^rpQ7&@?74X}+ifNQz(or< diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/contestation_validation.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/contestation_validation.cpython-313.pyc index 8bd2436aa58a5f48572a8e1012cf143ec9725122..bce60815c6de5c69ba929ea8b4592268dbdd8c04 100644 GIT binary patch delta 38 scmZn^Y!c-D%*)Hg00eHL(>8LevGPpO&&?~*Pu6!VE-l_{!|KWm0J1{~*8l(j delta 37 rcmZn?Y!u}F%*)Hg00fK=rf%d`W96Q#pPN^rpQ7&@?77*N)s-0lv407v diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/contracts.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/contracts.cpython-313.pyc index 8ba7c9b87a92a1a582a566efb83a8c2bf412c2c8..9316b89e5f749fab5365b6386c819854b7a2c03c 100644 GIT binary patch delta 38 scmexr`puO4GcPX}0}!~0PTR6r`m diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/input_size.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/input_size.cpython-313.pyc index 07f1a5e1f547056f2cbbd0b576cce12271f1d1aa..9a271452c6d9be370d8cb875d151a6e4d115dda6 100644 GIT binary patch delta 38 scmX>ob4Z5!GcPX}0}!~0PTR=+mxZTYKR2&LKUv?gxU_h)FsmLX0M_dY`~Uy| delta 37 rcmX>kb5Mr+GcPX}0}wDin7WbsFAH~@er{fgeu}fP=eTKR2&LKSkd+*mH9`M<5#j(>DtW diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/llm_client.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/llm_client.cpython-313.pyc index 7580f5306f99dcf09b30e5bb2fe55f05859f0e8b..5044c0010d00e1fa0e80b9e8c8e11abdd164ec6e 100644 GIT binary patch delta 38 scmbPdHQ$Q+GcPX}0}!~0PTR;G#lh3ApPN^rpRDg#Tw1)jfMcBq0LxViJ^%m! delta 37 rcmbPlHP4FsGcPX}0}wDin7WZWii5jNKR2&LKSkd+*mH9s$2t)J$=eGM diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/llm_rails.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/llm_rails.cpython-313.pyc index 9e3f1fee657db9869c3e5d6673d762e188d5b382..156e566959c917871b3950a65c7aeda06f050723 100644 GIT binary patch delta 38 scmdnzy5E)iGcPX}0}!~0PTRD!|jKpPN^rpRDg#Tw1)@TEI#X0P1!Nc>n+a delta 37 rcmeyC^fih5GcPX}0}wDin7WZ$Re-xiKR2&LKSkd+*mJXufR!Qu=q(FN diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/__init__.cpython-313.pyc index e33099c79196ba75400381ace6a74e64af35fd0f..f2432c29a61751b053021d7c75068b1e14b4e382 100644 GIT binary patch delta 37 rcmcb~e2ba;GcPX}0}!~2PTR=M&&boOpPN^rpRDg#Tv|L?m2nFIx}^$x delta 36 qcmcb`e3O~`GcPX}0}wDin7WahpOL#qKR2&LKSkd+*mJTP;}!t9g$hgn diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/_context.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/_context.cpython-313.pyc index 994dffb4c0ece8e431c288af04997fda2b2715fd..8110ec9443424d919694d262b7bee081e99745b0 100644 GIT binary patch delta 38 scmaE_`$3ocGcPX}0}!~2PTR=6g@vbAKR2&LKUv?gxU_ilDHc^B0Opzt?f?J) delta 37 rcmeyM`(Bs(GcPX}0}wDin7WaB3k!FTer{fgeu}8K1)Z&?|pPN^rpRDg#Tw1(&yOtLt0M)AtvH$=8 delta 37 rcmZpQXpG?g%*)Hg00fK=rf%e3sKq@;KR2&LKSkd+*mLs^EiXm@)0Yc_ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/coerencia.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/coerencia.cpython-313.pyc index 202251c49d712606c534e33396caba912a421583..131939a251faa6dd8d41f03c74d841e2c54a7d9d 100644 GIT binary patch literal 4158 zcma)9&u`pB6t0ku+36_;GiU$G|yCvHI%;>!1)y}RDDl&;dP?H$j&`QG<^@6Cf}o(VjB z-hcl4y-GKq!iW9`3wA+x{iXhLfAJ-6ueImf#Zjxh zQfw`F-W6+-EEkaxR_a)6Uf#MYUJs43<=r&YQaF{AKc=}3C5_Q(R`B33)+)_ayBh?T ztCy^DnMorhibRS`*-??^QYe>OrE|G1)PZ)n5>Ag&y^HBETWHdKWt|MQNo6do3Jbhg z-riSnkV>&DV_vjg>m9KbE0LBz84;;aV0quTi&b9WG5#`X%O4Y!TjM%d z858GnsAC<;NOc0`LX*)fB2}aEK9(1zz)m@IXJQ>9VxAXc_7StPLWZ=BuGn%;Iu5{< zzbHpLMG&D%gfxLQMXqcImyR}nd5L2v1GLkgi#fz7^Vw<44UfvclkmsPqu9Z%? zPGHpts5siTItUderM(b#CMoZw00an1yf{==+TJiWHwz`Lz(N*FAZVAVu)If!blu=j zqF&n{KP}S~0a4g41i7Z4C0v1@{)02P05|<>{wc4&aLvQ_;u}k^cx%EKcldFS#{Ww>IY(QqaJdiNsvDX1ddEe^Lh&`aQYiuHO@Ua6z zg>j)%tks}!rod_j7>`GE#naK+Hw#IFBTdvV?}4`n?J8Jk(>l6ZUSY8(!EX#hCKx<| zQIvN;IZ+;_6iW!iL(oU9i=CadogGTf&d#}=oo-OP0NH1HV7 z>k|13w#zRsBh?kpA$~+9Zx(tzI7>;0DO%a^1ENc98*gF=Z(!yYA}Jzbeu9+5wa_6N zN*hv)HLNzaevc5V1l%x$iTogS_J$$RAf=4bv~UAU>8)o#8glHWVM!GdwJljrN)^R) zO)?0B*;A9K4suDNDDVeEYfMDD-Y;*%O3ZYZ^Y%4yC-Q`e>tTxkGScK4llN$sH4vB+ zZzVd1St1h_7>!^B4YQoC#RSWcaP4@&oNrOUkwPAa8g#9|BlkO72OgIVmCHG+~s;iU$ ziJ)|g_o({Dgr`-z)51(bs<5x32a+b<=cK9F1RT{tZh-VP&>w|h=6VjSA|>%wCr+EzS%q&~aCzmegr(&|xnB zaL8#E(VT!N@VL&r;xp_Ikb#)^9o+yV#&X5@%3b)5C;=;z=z&Oo0eS>9U8b)5Xt)3? z!K@q@Fx?*)Jx7oq_vSfALX6-ZC9jF{IWZwmRr@-XOlWoosL|;l>_=n@R>s|kDFAKo zgiRo^3CbK5n3lHq`>k);kq{?X1`V?rgjO@+0h*f;2OI&;49(*{x*hT$1g8!pXw7Vb zFySO19Ei_7539~{9RXTocy&>L_$SS8hp@&xObixIOgzN^05aDwYO6=2LO5>2XMy3S z)u^2)EeHvYsrL<4uj8hJh^J;_dT`J3-l(YCF{;wXyjYxlTda{GKVlw2k4kB6XEUNS zW%!u)X>+-WAP@XC%h!LrQ*&(23VU--IE_{(v%n$+14?uX|DjUODVULUf_Z&LpqM5K zrrFK`*lm!%JY?$wU9A$U)butu29g3+s-7??ZZ~S@q*knwm$IwyxYdfJrPuW)t`az`fwA;w?#k~Hsyy$x5m0UG8#73QvYV;Bv4+;0zPyma*qRGz3$ zjlD52q3+>?^3V@GXT#%zd()QL^-xUp5Jxi=^{R6Q9^t?XXVtQseKvk}Sm-#ys>%+k z0rn|GdJ6ws8(+7)qZhiTUp@N7_g*{u!-XSnq3i$VFWp)`@|IToBk7+%**fyhFSQpnvy9ItxgMnS7(X_s$ zLzJcSzdeDk@rkz*6BV&~+n&ZP4o{wY9$!a`zVH9F@RZ;B`;6zm{Lk{czTe{4{sr+E B;jaJy literal 9485 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 diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/dlex_in.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/dlex_in.cpython-313.pyc index bf1fa94f61a1ff2b5fdb13efb251cb6d7a62dd4e..a91ffe5f8b8357e8235e37eb6b4c91fcda0b166e 100644 GIT binary patch delta 38 scmbQiHIs|`GcPX}0}!~2PTR=+mzk$WKR2&LKUv?gxU_h)FbgXq0LA|bSpWb4 delta 37 rcmbQqHG_-$GcPX}0}wDin7WbsFEe+yer{fgeu}k diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/dlex_out.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/dlex_out.cpython-313.pyc index 44e390ec420a9fe41c52e1b4f663296bf086fe20..57a065b5fe502b8553b4afdbe70d6e2836e1b92e 100644 GIT binary patch delta 38 scmbQvH-nG+GcPX}0}!~2PTRNk-JKsyGK7auS7pZ-#6HE^F;X+RR94N43_`^ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/fraseologia.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/fraseologia.cpython-313.pyc index 5de3ef667f85eed0972102ff24b6c65678f7e368..885cc2c65719877c91f3ce4d0a041cc7360edac5 100644 GIT binary patch delta 38 scmca;eaV{pGcPX}0}!~2PTR;GEWzW*=-9# diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/out_of_scope.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/out_of_scope.cpython-313.pyc index 78d880247278d53fbb4f8e73bdcff812d0dc9e50..2ca4865343d197b7efaa4f320492fb950c00825d 100644 GIT binary patch delta 40 ucmccG!Fa8Mk^3_*FBbz4xQkBP$bHX=XQF;?UWtCPzGHD|@#Zg1iHraT4-Ihu delta 39 tcmccC!FaWUk^3_*FBbz4Fg}>Nk^7z#_XPdiyb}Esecxcu&0n1o836;S4MG3_ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/pinj.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/pinj.cpython-313.pyc index 2ecfb0c92f1f04b5300b79d75c6ce0379785683a..5d759dfdd23e6b995325ed072129b58acb4585f4 100644 GIT binary patch delta 38 scmaFi_|lR4GcPX}0}!~2PTR;`CC}5TpPN^rpRDg#Tw1(&f_wxc0OuzQ=l}o! delta 37 rcmaFq_`;FN}jtzKR2&LKSkd+*mLtl`3Ob;8J!GV*lj=jN5@C+j;FmljWMXZ#BQtF8*& delta 36 qcmZo=ZDHm9%*)Hg00fK=rf%deWaMtw&&?~*Pto@c_MF_o_!j`G*9xux diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/toxicidade_output.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/toxicidade_output.cpython-313.pyc index 559b82a4514467d27c9454e794e9ecf5185f3621..f49141f04b6cf9ad8dd85ed64594fff3567d77c7 100644 GIT binary patch delta 38 scmZ3$zL1^!GcPX}0}!~2PTREKR2&LKUv?gxU_h4Ig=(M0KKpZRsaA1 delta 37 rcmZ3;zJQ(kGcPX}0}wDin7WZWk%@b%er{fgeu} str: - """Monta o prompt do rail COER. + """Monta o prompt semântico do rail COER. Args: text: fala do cliente a classificar. - context: bloco de histórico já formatado por - ``prompts._context.format_context_block`` (para este rail a última - fala do agente é PRESERVADA — é a pergunta pendente). + context: histórico já formatado, incluindo a pergunta pendente do agente + quando disponível. Returns: Prompt cuja resposta esperada é um único caractere: ``1`` ou ``0``. """ - return f"""Você filtra a fala do CLIENTE no atendimento de fatura do provedor. A fala vem de -transcrição de voz e pode chegar truncada ou trocada. O atendimento é em português: -frase inteira em INGLÊS é STT quebrado, não cliente bilíngue — responda 0 mesmo que -ela se entenda ou responda à pergunta do agente; só não vale quando o agente pediu o -NOME do item, que é em inglês. + return f"""Você é o guardrail de COERÊNCIA SEMÂNTICA da fala do CLIENTE em uma conversa. -PRIMEIRO olhe o histórico. Se o agente terminou com uma pergunta e a fala SÓ responde a ela -(sim/não, "ainda não", nome de serviço, valor, uma das opções oferecidas), responda 1 -— mesmo curta, estranha ou com o nome deformado pelo STT. Se não há pergunta pendente, -julgue a fala sozinha pelos casos abaixo, sem dar desconto. +Sua única responsabilidade é decidir se a fala contém significado conversacional +recuperável o suficiente para que as próximas camadas do sistema possam trabalhar. -Responda 0 (descartar) SÓ nestes dois casos: +NÃO tente decidir aqui: +- qual é a intenção do cliente; +- se a intenção mudou em relação ao turno anterior; +- se uma transação deve continuar, ser abandonada ou encerrada; +- se faltam parâmetros para executar uma ação; +- se um valor, nome, data ou outro parâmetro é válido; +- se a solicitação pertence ao escopo do atendimento; +- se uma ação é permitida por regra de negócio; +- se a fala precisa de clarification ou desambiguação posterior. -(a) NÃO DÁ PARA ENTENDER — você não conseguiria dizer em uma frase, SEM INVENTAR, o - que o cliente quer, responde ou reclama: transcrição quebrada, frase cortada no - meio, palavra ou letra solta, frase que soa completa mas cujo pedido não faz - sentido, ou fala dirigida a OUTRA PESSOA (o cliente conversando com quem está do - lado, sem falar com o atendimento). Palavra do domínio (plano, fatura, valor, - cpf) dentro de frase sem sentido não salva a fala. Fala VAGA não é - incompreensível: se ela aponta para o que está na tela ("esse aí", "isso aqui", - "esse negócio", "os valores"), responda 1 — perguntar qual item é do fluxo. - E se a última fala do agente pediu um NOME de item/serviço, nenhuma fala curta - é incompreensível: ela é a tentativa de dizer o nome, por mais estranha que - soe → 1 (reconhecê-lo é da etapa seguinte, que tem a fatura). +Essas responsabilidades pertencem ao router, ao estado transacional, aos validadores +e ao mecanismo de clarification. Portanto, uma fala pode ser compreensível mesmo +sendo incompleta para execução, contendo negação, discordância, reclamação, múltiplas +intenções, informalidade, erro gramatical ou referência que precise ser resolvida pelo +contexto. -(b) NEGAÇÃO AMBÍGUA — a fala começa com "não" E PEDE ALGO depois; entender o que ela - pede não a salva, quem decide é o teste. Faça o teste: tire - esse "não" do início e olhe SÓ o que sobra na fala — nunca complete com a ação - que o agente ofereceu. Se não sobra pedido nenhum ("não", "não sanou"), é - resposta ao agente → 1, seja qual for a pergunta pendente. Se o que sobra é - pedido de ação do atendente (cancelar, tirar cobrança, - ajustar/diminuir a fatura, transferir para atendente, encerrar a conta, - parcelar), sobram duas leituras opostas — recusa ("não quero cancelar") ou - pedido ("não, quero cancelar") — e a vírgula que decidiria não veio na - transcrição: responda 0. Vale para qualquer verbo ("não quero/preciso/posso", - "não quero que vocês...", "não cancela"). - Responda 1 se: vem vírgula, "porque" ou "mas" depois do "não"; há sujeito antes - do "não" ("eu não quero cancelar"); a fala segue dizendo qual leitura vale; ou o - que sobra sem o "não" não é ação do atendente (pagar, reconhecer, entender, - mudar de plano). +Use o histórico somente para interpretar elipses, respostas curtas e referências ao +turno anterior. Nunca complete a fala inventando uma intenção que não esteja apoiada +pela própria fala ou pelo contexto imediato. -Responda 1 em TODO o resto, inclusive: -- pedido, queixa, dúvida ou desabafo que você entende, mesmo com erro de transcrição, - gíria, xingamento, número solto ou assunto fora de fatura (outros filtros cuidam); -- nome de serviço estranho ou deformado, inclusive quando o agente pediu para repetir - o nome do serviço; -- pedido de tempo, "alô?", agradecimento, despedida. +Responda 1 quando for possível identificar, sem inventar, pelo menos um conteúdo +conversacional útil: uma intenção, pergunta, resposta, afirmação, negação, reclamação, +referência, escolha, valor, nome, pedido de esclarecimento, encerramento ou mudança de +assunto. Não exija que esse conteúdo já seja suficiente para executar uma ferramenta. -Dúvida se entendeu a fala → 1. Pergunta ou pedido claro dirigido ao atendimento, mesmo -fora do assunto de fatura → 1. Dúvida entre as duas leituras da negação → 0. +Responda 0 somente quando, mesmo considerando o contexto imediato, não houver +significado conversacional recuperável com segurança — por exemplo, transcrição +fragmentada, palavras desconexas, fala cortada antes de formar qualquer relação +semântica, ou conversa paralela sem solicitação dirigida ao atendimento. -Exemplos (ilustram a regra, não são lista de falas): -- "não quero parcelar a fatura" → 0 (sem a vírgula, pode ser "não, quero parcelar"); - idem no condicional, "não gostaria de parcelar a fatura" -- "eu não quero parcelar a fatura" → 1 (o "eu" antes do "não" fecha a leitura) -- "não quero parcelar, quero só entender o valor" → 1 (a fala diz qual leitura vale) -- "não vou pagar essa multa" → 1 (pagar não é ação do atendente: a queixa é a mesma) -- "não", depois de "sanou sua dúvida?" → 1 (responde a pergunta pendente) -- "deixe zero", depois de "qual o nome do serviço?" → 1 (pode ser o nome que o STT - deformou — "Deezer"; reconhecer o nome é da etapa seguinte, que tem a fatura) -- "não quero entender porque a conta subiu tanto" → 1 (entender é dúvida, não ação) -- "olha o menino ali pegando o negócio lá" → 0 (não dá para dizer o que o cliente quer) -- "bota dois planos um em cima do outro pra cá" → 0 (soa ordem, não quer dizer nada) -- "está cobrando um" → 0 (cortada no meio: não dá para saber de quê) +Critério decisivo: +- compreensível mas incompleto/ambíguo para a regra de negócio -> 1; +- compreensível mas com possível mudança de intenção -> 1; +- compreensível mas sem todos os parâmetros -> 1; +- compreensível e contendo negação/discordância -> 1; +- impossível determinar qualquer conteúdo conversacional sem inventar -> 0. + +Na dúvida entre "há significado, mas outra camada precisa esclarecer" e "não há +significado recuperável", escolha 1. O COER deve bloquear apenas incompreensibilidade +semântica real, não incerteza de negócio. ------------------------------------{context} Fala do cliente: {text} ------------------------------------ -Responda APENAS um caractere: 1 (aproveitável) ou 0 (descartar). +Responda APENAS um caractere: 1 (semanticamente compreensível) ou 0 +(semanticamente incompreensível). """ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/__init__.cpython-313.pyc index f9f55c7c6c4d81f4369ecccc7225dcf273d61e5f..b332bab4d00cab4250fdd2a81a0bcb8cf3fea6db 100644 GIT binary patch delta 37 rcmey*)48LyX5;D9&&?~*Pu6!VE-l{7$lk^S0LZBd+yDRo delta 37 rcmeBBZ&&C3%*)Hg00fK=rf%eZ&BooKpPN^rpQ7&@?75kVy^RL|#@Pz3 diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/anatel.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/anatel.cpython-313.pyc index eb605b6325954a3774133677838d83c3471c1a35..31ea4b6ed35ad7daec8311567381ad0e33af15fd 100644 GIT binary patch delta 38 scmdnvzSo`mGcPX}0}!~2PTR=+m7AwiKR2&LKUv?gxU_gPH_t|K0OGm}+5i9m delta 37 rcmdn%zQ>*WGcPX}0}wDin7WbsD>rwCer{fgeu}vc|nr!PKR2&LKUv?gxU_ilb=Dtj0NQU1W&i*H delta 37 rcmca0d0vwHGcPX}0}wDin7WbsAS-vLer{fgeu}8J+Vdd%8&&?~*Pu6!VE-l`Ci&c{y0K<{9 delta 37 rcmZpXYL?>u%*)Hg00fK=rf%du!phyHpPN^rpQ7&@?78_it0p@D!Sf2* diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/ragsec.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/ragsec.cpython-313.pyc index c107f02a6521eaaea1e182ea3795497beef95c1b..e62ed4203d02d6511df08bda5482a1847331580f 100644 GIT binary patch delta 38 scmcbnbzO`5GcPX}0}!~2PTR{+}3-`flg diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/revprec.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/revprec.cpython-313.pyc index f742b40f46d3ff7c058d89c38ea3accf606e643c..0de4a468c3e4783adb72d0d20318804a98821f20 100644 GIT binary patch delta 38 scmcbobzh77GcPX}0}!~2PTR=+lAWhZKR2&LKUv?gxU_ilfA)A@0On2%XaE2J delta 36 qcmcbwbx(`?GcPX}0}wDin7WbsB|CSger{fgeu}Cg+E diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/rules/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rules/__pycache__/__init__.cpython-313.pyc index 3c02887e2def32b57f401c3f12020a87e0239b6d..2eb99a90f94e3de337a5595fe7899195aac41509 100644 GIT binary patch delta 37 rcmbQrGL41%GcPX}0}!~2PTR;G!N}9CpPN^rpRDg#Tv|Lik8wEwt>g-L delta 36 qcmbQnGL?nqABW&sPgt diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/rules/__pycache__/pinj_patterns.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rules/__pycache__/pinj_patterns.cpython-313.pyc index 19e6f53704451575318f16b23a9d46e8890fdcf4..414c3b868d4160b2590b7ab9556742cef4f6c609 100644 GIT binary patch delta 38 scmbOvJ6V?dGcPX}0}!~2PTR=6f{SN@er{fgezLw}acS}9eOy