From eac6492fa046919dbbae72416a4e801d6f97ec52 Mon Sep 17 00:00:00 2001 From: Cursor Date: Sat, 21 Mar 2026 12:17:32 +0100 Subject: [PATCH] =?UTF-8?q?fix(llm):=20Local-Override=20Routing=20?= =?UTF-8?q?=E2=80=94=20Homelab-Fragen=20immer=20lokal,=20auch=20mit=20Kost?= =?UTF-8?q?en-Keywords?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit _LOCAL_OVERRIDES pruefen vor _WEB_TRIGGERS: api kosten, guthaben, container, feed, backup, etc. gehen immer ans lokale Modell. --- .../__pycache__/llm.cpython-311.pyc | Bin 26528 -> 26857 bytes homelab-ai-bot/llm.py | 9 +++++++++ 2 files changed, 9 insertions(+) diff --git a/homelab-ai-bot/__pycache__/llm.cpython-311.pyc b/homelab-ai-bot/__pycache__/llm.cpython-311.pyc index 26faf0520f64f264ded98cb46d25342c9f94ac4d..ef3052c80d9ab45d24e81d8091dcfe3fac98178e 100644 GIT binary patch delta 2708 zcmZXVYj6|S700!bELnaiPA~y%jAaP6W#b3714>gH6Jrw_^N8&spoA=I-79%*X;;0w zGT_eCWs**tCT&7*n$k8TOdd^XXeXeSW~Oa2C2eNX%+#b$dOx(2PkDS|rXMnse(CwI z91LVN`t7;roO|}}Ip^LzyQF>mz7~D8y1K$g*XpmmX|?8WWzbJ1C85Qqc?6(2U(29TUZnC zVD-#T|1i?kLHs zJX3IIjA?GE3Omm&VHaF3R3v3vu3=gvh8)*$3yun<`An9^!K|HeRM_ES-b`^7nl@5% zg}e%;IcF-A<2hTLP?Z_Z44#^CEz>Df`WAgYQoQ|gNuh!{!^|Rtkv6kjh10gk@L5}h zGr~w4mZ2*0!p?DbhU2-8G0)xkg)r`&?z}3eNjcZd=T*5;NL$8Cj;qKqTd=&~4*BN{ z*Us50LhH{uDI?1lDmD}>S}%`L4i+LgPVeQ3VP<+lu`l?-#=WO*bo`TE?}781PHO%*F`@xqXc=TwMkQQF^&nZ$M?ktVY#2+_zAH= z&sA0FUV`dZyOQ!sa>5LCO;1tHc9xQ*Tct zRwxin+$)dvZr2=ny0_u(L!?mQV}`IyE2APh)gr4?3F6hIXPB69YgqY7Z*!-B#l>_@ zIMsB=qOV`2te=Dr@M&?N?_{7Z0r!w|f;v2R&MzK@8Luvm$bW5bYru0ek* zQQ;i*i;>~t5gALY)&}IZL{9<{Rb=>hisxO^w&LYtkTl|(02Zu5IzR3TgG!k$(EFfM z^R7tBvx&Of&<-kKICJ7ONt=rACO)hTJ&vhk^3tv*ZA@O>wW9_r72gJ)0G=$i3=e57 z*E=j85F?~lT2Aby`z^gDPmSE8rQ~}f-P?AMHSQPV2(lM)KpcgPSt_be3=i!*pzqx| zv1fQII#zDoy;U=0YIpzr2yjkQWmz+4x+6EHj0{sMVmJ;plVQ1(&m)NZDuJH3 zQnT+s`(63b?oS7ha8>2ncD7V#la)&+Xq_fyV)VYm z(@>lOzDH2C8Sd&1Rf?*iFIUVFUh{{HJRMm~9Dwsld2uuzdH|v$KNxMMB$bbCJ~#-) z4}l*6UJ1)er`#A6KLCD1P*tU~OE;;3oa>|Mteu(@&%o>Z0QQx5Sw1?pv4%rj>9c3$ zuf|%nbMoI~+aoWL$!R3WrakqI)Va(1KT5r!A2Zz<9f@+pKgeZU@z9>hsP?!#e|T-> z8N_@ZNEDY2PixgjNv4$RP#u*64|OkogG3c#9Ov8T76tPSEk(nRL(shftgP{;7^0L@ zVunZ^vr z-!H5PfU#N8lDvUVcRE%Qim43O^EQzEqfd$WOrpZtAJ^_!utp?7%~JEoTd&}L1w1h zQmIbEgogKCxb!i_3FIZ^v+^&~H?ffA1LA+Aqipz`X97OoHCe}&Zm;!U^OY~-im&F{ N9mS8>Fa1Hx{y#;F&^`bF delta 2259 zcmZXVYfKbZ6vy}OE-T1GT2N$pxT3Jk!tz+wBBIv%0EETHf`o3x>A3d-E4wVcGrmv@ zTHE@iZS3tUwKlY=Z*6NYYjJ zq_=_EyKG8Ba*o4GlHs%u%hD?4gZ-Gi>%BmTSDaI7$rW*3sUwP*?dvS@ODC@ZY9(}s zgvT?^y|6ThG2cRRRea(@^e?`3iVx-h0__M~Va1tQDo<=Rm>N$|7UN5$=VuYB+9ub0 zUo}9AMOAf`Zy6S$zn;{ZJT(!EX>m<8qH!iytNjViS4sb`V!T@3E_t@vVJBtcd`*y) zi@$108dpoF>4@tCybY3bMB|3;L`Hd~l4h$KrRs1(H3p-@Lwvn-{vnpv{w>o5>WUnh z*aSx&zCrXhbd%NMOhc{Q;O`CH1>G=P0UIFoNGN%{S+oTMnb?<=jhBm;gN>w5Tnv_w zmEu~^?Y7c&Az*q2F>6tUYa=|HMDwD;SyoMlpaZv(kwtqQZj7+$(s$|xi=VLb7P#?z zyjA?S*hjjB(o|Fc!=0>9sMFuV24jpb@vKu^yiz>Z6evM1Gh@w;2pch?iD4z3TTOZa zIl9EjCb!QjoReyXW)h~SO9v{3D^)dzrVsIb((F#&YPyl>(y=rsuC19*g5vI)Cv&k! zZU9?>ZOKr}D&l=GIf{eVNxMnnyk7pFK0_B;n@CvPZmla+q*t-?Cy=BOvV*rnt`|*h z#l$Om+UiNKIMBAN4Us2^nHG!2qejcrsz^t-nW5==R5!F?Lzb)+DGo}=)RQgP4(kq) zz4qT{QByO^NF-uvM2p4LC{0y(Cqgj#N-3{|jLGHC0~*i^1SQP;L2a1Em`WKNQ909@ z#v_A#kLYV(nTgj1-v#UzC)?e52$ke+`A>K=$wo_LDc8c(E+QN2 z#u8FAU6dJGGhciyryiA5i}O=0K7!bzz%gJCFr|Y~j|1o; zKLMPw$yWhC4beKgPeJMf&H$eRp8=f`N(uiK@^`?)z2(-eUx6bDoD(WeGPmATm&uw7#h7qtO$9EQipr8|IxTM!1zxx;9~OFrlPcR^rM^O z7%M?@hN{v;L{+UvGiSsS0|U|F0nWsYNK+dsWM&L7BP7j?r_M-38aV~5(YETc1nNq_ zDwqoCbD#-WEJkVX*lsCW$?i?$X1Gwi$wO#5qQi#uHQ?*uSdS&n&2oTECyhpoR44Yq vbs4}zr9NVKaaa$2Cw-~>9BqxU<@~y|5&6^iIc&DuVm-T(4D=`MPQ?BXa`+ds diff --git a/homelab-ai-bot/llm.py b/homelab-ai-bot/llm.py index c6c5f36d..5ef217a5 100644 --- a/homelab-ai-bot/llm.py +++ b/homelab-ai-bot/llm.py @@ -27,6 +27,15 @@ OLLAMA_MODELS = {MODEL_LOCAL, MODEL_VISION, FALLBACK_MODEL} PASSTHROUGH_TOOLS = {"get_temperaturen", "get_energie", "get_heizung"} +_LOCAL_OVERRIDES = [ + "api kosten", "api-kosten", "guthaben", "openrouter", + "container", "status", "fehler", "logs", "service", + "backup", "feed", "memory", "gedaechtnis", "gedächtnis", + "mail", "seafile", "forgejo", "grafana", "prometheus", + "savetv", "save.tv", "filmtipp", "aufnahme", + "wordpress", "matomo", "tailscale", + "unsere api", "meine api", "die api", +] _WEB_TRIGGERS = [ "recherche", "recherchiere", "suche im internet", "web search", "preis", "preise", "kostet", "kosten", "price",