[{"data":1,"prerenderedAt":786},["ShallowReactive",2],{"blog-dspy-hu":3},{"slug":4,"published":5,"minutes":6,"category":7,"tags":8,"keywords":14,"about":22,"sources":35,"cover":111,"og":112,"expertise":113,"locales":114,"lang":117,"title":118,"description":119,"coverAlt":120,"metaTitle":121,"takeaways":122,"faq":128,"toc":141,"blocks":169,"others":546},"dspy","2026-10-06",8,"llmops",[9,10,11,12,13],"Prompt optimisation","LLM programs","MIPROv2","GEPA","Python",[4,15,16,17,18,19,20,21],"dspy tutorial","dspy optimizer","miprov2","gepa prompt optimization","dspy vs prompt engineering","automatic prompt optimization","dspy signatures",[23,26,29,32],{"name":24,"url":25},"DSPy","https:\u002F\u002Fdspy.ai",{"name":27,"url":28},"Prompt engineering","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FPrompt_engineering",{"name":30,"url":31},"Bayesian optimization","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FBayesian_optimization",{"name":33,"url":34},"Fine-tuning (deep learning)","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FFine-tuning_(deep_learning)",[36,39,42,45,48,51,54,57,60,63,66,69,72,75,78,81,84,87,90,93,96,99,102,105,108],{"title":37,"url":38},"DSPy home and cost example","https:\u002F\u002Fdspy.ai\u002Fcurrent\u002F",{"title":40,"url":41},"DSPy installation","https:\u002F\u002Fdspy.ai\u002Fcurrent\u002Fgetting-started\u002Finstallation\u002F",{"title":43,"url":44},"DSPy: program, don't prompt","https:\u002F\u002Fdspy.ai\u002Fcurrent\u002Fgetting-started\u002Fprogram-dont-prompt\u002F",{"title":46,"url":47},"DSPy signatures","https:\u002F\u002Fdspy.ai\u002Fcurrent\u002Fdiving-deeper\u002Fsignatures-in-depth\u002F",{"title":49,"url":50},"DSPy metrics","https:\u002F\u002Fdspy.ai\u002Fcurrent\u002Fgetting-started\u002Fmetrics\u002F",{"title":52,"url":53},"DSPy Example API","https:\u002F\u002Fdspy.ai\u002Fcurrent\u002Fapi\u002Fprimitives\u002FExample\u002F",{"title":55,"url":56},"DSPy Predict API","https:\u002F\u002Fdspy.ai\u002Fcurrent\u002Fapi\u002Fmodules\u002FPredict\u002F",{"title":58,"url":59},"DSPy ChainOfThought API","https:\u002F\u002Fdspy.ai\u002Fcurrent\u002Fapi\u002Fmodules\u002FChainOfThought\u002F",{"title":61,"url":62},"DSPy ReAct API","https:\u002F\u002Fdspy.ai\u002Fcurrent\u002Fapi\u002Fmodules\u002FReAct\u002F",{"title":64,"url":65},"DSPy optimizers index","https:\u002F\u002Fdspy.ai\u002Fcurrent\u002Fapi\u002Foptimizers\u002F",{"title":67,"url":68},"DSPy MIPROv2 API","https:\u002F\u002Fdspy.ai\u002Fcurrent\u002Fapi\u002Foptimizers\u002FMIPROv2\u002F",{"title":70,"url":71},"MIPROv2 source code","https:\u002F\u002Fgithub.com\u002Fstanfordnlp\u002Fdspy\u002Fblob\u002Fmain\u002Fdspy\u002Fteleprompt\u002Fmipro_optimizer_v2.py",{"title":73,"url":74},"DSPy BootstrapFewShot API","https:\u002F\u002Fdspy.ai\u002Fcurrent\u002Fapi\u002Foptimizers\u002FBootstrapFewShot\u002F",{"title":76,"url":77},"DSPy BootstrapFinetune API","https:\u002F\u002Fdspy.ai\u002Fcurrent\u002Fapi\u002Foptimizers\u002FBootstrapFinetune\u002F",{"title":79,"url":80},"DSPy GEPA guide","https:\u002F\u002Fdspy.ai\u002Fcurrent\u002Fgetting-started\u002Fgepa-optimization\u002F",{"title":82,"url":83},"GEPA source code","https:\u002F\u002Fgithub.com\u002Fstanfordnlp\u002Fdspy\u002Fblob\u002Fmain\u002Fdspy\u002Fteleprompt\u002Fgepa\u002Fgepa.py",{"title":85,"url":86},"DSPy saving programs","https:\u002F\u002Fdspy.ai\u002Fcurrent\u002Ftutorials\u002Fsaving\u002F",{"title":88,"url":89},"DSPy caching","https:\u002F\u002Fdspy.ai\u002Fcurrent\u002Ftutorials\u002Fcache\u002F",{"title":91,"url":92},"DSPy LM API","https:\u002F\u002Fdspy.ai\u002Fcurrent\u002Fapi\u002Fmodels\u002FLM\u002F",{"title":94,"url":95},"DSPy FAQ","https:\u002F\u002Fdspy.ai\u002Fcurrent\u002Ffaqs\u002F",{"title":97,"url":98},"DSPy GitHub repository","https:\u002F\u002Fgithub.com\u002Fstanfordnlp\u002Fdspy",{"title":100,"url":101},"DSPy 3.4.0 release","https:\u002F\u002Fgithub.com\u002Fstanfordnlp\u002Fdspy\u002Freleases\u002Ftag\u002F3.4.0",{"title":103,"url":104},"DSPy paper, arXiv","https:\u002F\u002Farxiv.org\u002Fabs\u002F2310.03714",{"title":106,"url":107},"MIPRO paper, arXiv","https:\u002F\u002Farxiv.org\u002Fabs\u002F2406.11695",{"title":109,"url":110},"GEPA paper, arXiv","https:\u002F\u002Farxiv.org\u002Fabs\u002F2507.19457","\u002Fimages\u002Fblog\u002Fdspy\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fdspy\u002Fog.jpg","ai-engineer",[115,116,117],"en","de","hu","DSPy-kritika: promptok metrikához igazítva, nem kézzel","A DSPy aláírásokból, metrikából és példákból állítja elő a promptokat. Mennyibe kerül az optimalizálás modellhívásokban, és mikor éri meg a kézi prompt helyett.","Három kis négyzet hullik tölcséren át nyitott dobozba, egy szélesebb lap kicsúszik.","DSPy-kritika: promptok metrikához igazítva · Balázs Csorba",[123,124,125,126,127],"A DSPy aláírásokkal, modulokkal és optimalizálókkal váltja ki a kézzel írt promptokat. Az optimalizálók a te metrikád alapján keresnek jobb promptokat.","Egy optimalizálási futás modellhívásokban fizet meg. A MIPROv2 light beállításán egy prediktoros program körülbelül 750 hívást indít a bootstrapping előtt.","Írd meg először a metrikát. Az optimalizáló csak azt tudja javítani, amit a metrika mér, és a munka java éppen ebben a függvényben van.","A lefordított program JSON-fájl az utasításokkal és demonstrációkkal, ezért verziókezelés kell hozzá, a demonstrációi pedig a tanítóadataid.","Egy prompthoz, stabil modellen, egy átnézett prompt és egy eval-csomag egyszerűbb. A DSPy a változó, többlépcsős pipeline-okban éri meg.",[129,132,135,138],{"q":130,"a":131},"Ingyenes a DSPy?","A könyvtár MIT-licencű és ingyenes. Minden modellhívást fizetsz, az optimalizáló keresés közbeni hívásait is. A dokumentáció példafutásai néhány dollárba kerültek.",{"q":133,"a":134},"Hány példa kell a DSPy-hoz?","A dokumentációban nem találtam rögzített minimumot. A FAQ néhány bemenetet kér, címkét csak akkor, ha a metrika igényli. A MIPROv2 light beállítása legfeljebb 100 példát használ validációra.",{"q":136,"a":137},"Helyi modellre irányíthatom a DSPy-t?","A dspy.LM LiteLLM-stílusú szolgáltató- és modellneveket fogad, így egy helyi végpont működhet, ha a LiteLLM el tudja érni. Ehhez a kritikához nem teszteltem egyet sem, ezért először a saját környezetedben ellenőrizd.",{"q":139,"a":140},"Újra kell optimalizálnom, ha modellt váltok?","Igen. A FAQ a célmodell cseréjét nevezi meg újrafordítási okként, mert a fordító új promptokra képezi le a programot. Tartsd meg a korábbi lefordított fájlt, hogy összehasonlíthass és visszaállhass.",[142,145,148,151,154,157,160,163,166],{"id":143,"title":144},"what-it-is","Mi ez",{"id":146,"title":147},"how-it-works","Hogyan működik",{"id":149,"title":150},"getting-started","Első lépések",{"id":152,"title":153},"signatures-and-modules","Aláírások és modulok",{"id":155,"title":156},"optimisers","Optimalizálók és mire van szükségük",{"id":158,"title":159},"cost-and-deployment","Költség, üzemeltetés és adatok",{"id":161,"title":162},"where-it-falls-short","Hol marad alul",{"id":164,"title":165},"verdict","Ítélet",{"id":167,"title":168},"sources","Források",[170,174,177,186,216,217,220,226,227,229,232,233,236,253,256,257,260,306,309,326,333,336,339,342,343,380,383,386,394,400,401,404,407,410,413,414,417,437,450,451],{"type":171,"content":172},"paragraph",[173],"A DSPy egy nyílt forráskódú Python-keretrendszer, amely az LLM-pipeline-t kódként kezeli. Deklarálod a bemeneteket és kimeneteket, választasz egy modult, és egy optimalizáló keresi meg azokat az utasításokat és példákat, amelyek a te metrikádon a legjobbak. Az ítélet előre: olyan többhívásos pipeline-hoz érdemes, amelyet mérni tudsz és várhatóan változni fog. Egy prompthoz, stabil modellen – egy átnézett prompt és egy eval-csomag egyszerűbb.",{"type":175,"level":176,"id":143,"text":144},"heading",2,{"type":171,"content":178},[179,180,185],"A DSPy a saját magát nyelvi modellek programozására szolgáló keretrendszerként írja le, nem a promptolásra. Az aláírások határozzák meg, mi megy be és mi jön ki. A modulok döntik el, hogyan kérdezzük a modellt, az egyszerű előrejelzéstől a lépésenkénti indoklásig vagy egy eszközhívási ciklusig. Az optimalizálók a metrikához igazítják a programot, az utasítások és a few-shot példák változtatásával. A promptolás és a finomhangolás között helyezkedik el: a prompt olyan műtárgy lesz, amelyet az optimalizáló ír meg. A szélesebb döntéshez olvasd el ",{"tag":181,"to":182,"children":183},"link","\u002Fblog\u002Ffine-tuning-vs-rag-vs-prompting",[184],"a promptolás, a keresés és a finomhangolás döntési útmutatóm",".",{"type":187,"ordered":188,"items":189},"list",false,[190,201,206,211],[191,195,196,200],{"tag":192,"children":193},"strong",[194],"MIT-licenc, ingyenesen használható. ","Telepítése: ",{"tag":197,"children":198},"code",[199],"pip install dspy",", Python 3.10 vagy újabb kell hozzá.",[202,205],{"tag":192,"children":203},[204],"A legutóbbi kiadás a 3.4.0, ","szeptember 25-én jelent meg. A tárolón a megnézéskor 38.6k csillag állt.",[207,210],{"tag":192,"children":208},[209],"14 optimalizáló az API-referenciában, ","a BootstrapFewShot-tól a MIPROv2-n, GEPA-n és BootstrapFinetune-on át.",[212,215],{"tag":192,"children":213},[214],"Nincs általam talált hosztolt szolgáltatás. ","A saját folyamatodban fut, és az általad beállított szolgáltatót hívja.",{"type":175,"level":176,"id":146,"text":147},{"type":171,"content":218},[219],"Egy modul egy aláírásból épül fel. Futáskor az adapter az aláírásból rendszerüzenetet készít, a modell válaszol, és a DSPy a válaszból kiolvassa a kimeneti mezőket. Optimalizáló nélkül a program csak annyira jó, mint a megfogalmazása. Az optimalizáló egy metrikát kap hozzá, vagyis egy Python-függvényt, amely egy előrejelzést pontoz, általában 0.0 és 1.0 közötti számmal, valamint bemeneti példákat. Lefuttatja a programot a példákon, új utasításokat és demonstrációkat javasol, megtartja a legjobb kombinációt, és egy lefordított programot ad vissza.",{"type":221,"src":222,"alt":223,"wide":224,"caption":225},"image","\u002Fimages\u002Fblog\u002Fdspy\u002Fdiagram-6.webp","Program fordítása a DSPy-ban Egy aláírás és egy modul alkotja a programot. Egy metrika és példák halmaza táplálja az optimalizálót, amely utasításokat és demonstrációkat keres, és egy lefordított programot ad vissza. A lefordított program JSON-fájlként menthető, és az eredeti modul helyett hívható az alkalmazásban.",true,"A metrika és a példák az optimalizálóba futnak, amely az aláírást és a modult menthető programmá fordítja.",{"type":175,"level":176,"id":149,"text":150},{"type":197,"code":228},"import os\nimport dspy\n\nlm = dspy.LM(\"openai\u002Fgpt-5-nano\", api_key=os.environ[\"OPENAI_API_KEY\"])\ndspy.configure(lm=lm)\n\n\nclass ExtractIntent(dspy.Signature):\n    \"\"\"Classify the customer's intent in one short email.\"\"\"\n\n    email: str = dspy.InputField()\n    intent: str = dspy.OutputField(desc=\"one of: order, return, invoice, other\")\n\n\nextract = dspy.ChainOfThought(ExtractIntent)\n\n\ndef intent_metric(example, prediction, trace=None):\n    return float(prediction.intent.strip().lower() == example.intent.strip().lower())\n\n\ntrainset = [\n    dspy.Example(email=\"Where is my parcel 4411?\", intent=\"order\").with_inputs(\"email\"),\n    dspy.Example(email=\"I want my money back for the shoes.\", intent=\"return\").with_inputs(\"email\"),\n    # more labelled emails from your own inbox\n]\n\noptimizer = dspy.MIPROv2(metric=intent_metric, auto=\"light\")\ncompiled = optimizer.compile(extract, trainset=trainset)\ncompiled.save(\"intent_v1.json\")",{"type":171,"content":230},[231],"A metrika a megjósolt és a címkézett szándékot hasonlítja össze, ezért ehhez a példához címkék kellenek. A fordítás hívásánál keletkezik a költség: a light sok száz modellhívást indít, ezért először egy kis halmazon futtasd, nézd meg a mentett fájlt, és csak utána skálázz.",{"type":175,"level":176,"id":152,"text":153},{"type":171,"content":234},[235],"Az aláírás a szerződés. A string forma, például question -> answer, rövidítés. Az osztályforma egy docstringet ad hozzá, amely az utasítássá lesz, és típusos mezőket. A sorrend számít: a bemenetek vagy kimenetek átrendezése megváltoztatja a promptot. Minden aláírás-módosítást promptmódosításnak tekints, és teszteld.",{"type":187,"ordered":188,"items":237},[238,243,248],[239,242],{"tag":192,"children":240},[241],"dspy.Predict ","bemenetekből kimeneteket állít elő nyelvi modellel. A kulcsszavas argumentumai a modellhez mennek.",[244,247],{"tag":192,"children":245},[246],"dspy.ChainOfThought ","lépésenként indokol, mielőtt válaszol. Egy indoklási mezőt ad hozzá, amelyet testre szabhatsz.",[249,252],{"tag":192,"children":250},[251],"dspy.ReAct ","gondolkodás-cselekvés ciklust futtat eszközökkel. A max_iters alapértéke 20.",{"type":171,"content":254},[255],"A kezdőlap így foglalja össze: „ugyanaz az interfész, más stratégia“. A stratégia a számlát is meghatározza: az indoklási mezők minden hívásnál kimeneti tokeneket adnak hozzá, és a ReAct minden lépése újabb modellhívás.",{"type":175,"level":176,"id":155,"text":156},{"type":171,"content":258},[259],"A DSPy 14 optimalizálót kínál, a BootstrapFewShot-tól, amely demonstrációkat gyűjt, a GEPA-ig, amely a metrika visszajelzéséből írja át az utasításokat. Mindegyikhez kell metrika. A FAQ egy feladatot, egy metrikát és néhány bemeneti példát kér, címkét csak ott, ahol a metrika igényli. A táblázat a négy legalaposabban vizsgált optimalizálót hasonlítja össze.",{"type":261,"head":262,"rows":271},"table",[263,265,267,269],[264],"Optimalizáló",[266],"Mit változtat",[268],"Mire van szüksége",[270],"Fő költség",[272,281,289,297],[273,275,277,279],[274],"BootstrapFewShot",[276],"Few-shot demonstrációk",[278],"Metrika és tanítópéldák",[280],"Programfutások, egy próbálkozás példánként",[282,283,285,287],[11],[284],"Utasítások és demonstrációk",[286],"Metrika és tanítókészlet",[288],"35 példás próbák, plusz teljes validációs körök",[290,291,293,295],[12],[292],"Utasítások, egy reflexiós modell írja át",[294],"Visszajelzést adó metrika és reflexiós modell",[296],"Költségkeret a validációs méret és a prediktorok száma szerint",[298,300,302,304],[299],"BootstrapFinetune",[301],"Finomhangolt modell prediktoronként",[303],"Nyomvonalak és egy finomhangolható modell",[305],"Egy feladat modellenként, vagy prediktoronként",{"type":171,"content":307},[308],"A MIPROv2 a szokásos kiindulópont, ezért érdemes ismerni a számolását. Az auto beállítás rögzíti a keresés méretét. Egy prediktoros, few-shot programnál a light nagyjából tíz próbát futtat, és legfeljebb 100 példán validál. A medium 18 próbát 300 példán, a heavy 27 próbát 1000 példán. Minden próba egy 35 példás minibatch-et pontoz, a teljes validációs kör pedig minden hatodik próbánál fut, az utolsónál és a nem optimalizált programra is.",{"type":187,"ordered":188,"items":310},[311,316,321],[312,315],{"tag":192,"children":313},[314],"light: körülbelül 750 futás, ","350 a próbákra és 400 a teljes körökre.",[317,320],{"tag":192,"children":318},[319],"medium: körülbelül 2100 futás, ","630 a próbákra és 1500 a teljes körökre.",[322,325],{"tag":192,"children":323},[324],"heavy: körülbelül 7900 futás, ","945 a próbákra és 7000 a teljes körökre.",{"type":327,"variant":328,"title":329,"body":330},"callout","note","Hogyan olvasd a számokat",[331],[332],"A számok az optimalizáló kódjából származnak, egy prediktoros, few-shot demonstrációs programra. A bootstrapping és a javaslat-hívások ezek fölött jönnek, és minden újabb prediktor további próbákat és hívásokat ad. Nagyságrendnek tekintsd őket, és az első futásodban számold meg a hívásokat.",{"type":171,"content":334},[335],"A tokenek a hívásokat követik. A FAQ, amelyet a DSPy 2.5 és 2.6 verziójára írtak, és amelyről jelezték, hogy elavulhatott, körülbelül hat percet, 3200 hívást, 2,7 millió bemeneti és 156 000 kimeneti tokent említ, ami az akkori OpenAI-árakon nagyjából 3 dollár volt. Ez hívásonként körülbelül 850 bemeneti és 50 kimeneti token, így a light futás 750 hívása nagyjából 0,6 millió bemeneti és 40 000 kimeneti tokent jelent. A kezdőlap aktuális példája: GEPA auto=medium beállítással, 200 példán, gpt-5.4-mini modellel, 2,18 dollár.",{"type":171,"content":337},[338],"A GEPA másként bánik a költségvetéssel. A metrikája pontszámot és szöveges visszajelzést ad, és egy reflexiós modell olvassa a példákat és pontszámaikat, majd átírt utasításokat javasol. Az útmutató nagyobb reflexiós modellt ajánl, mint amelyet optimalizálsz, és a konstruktor egyet igényel, kivéve, ha saját javaslótervezőt adsz meg. A light körülbelül hat jelölt-promptot céloz, a kód pedig ebből metrikahívás-keretet számol, amelyben több teljes validációs kör is benne van.",{"type":171,"content":340},[341],"A közlemények adják az erősebb érvet, és mindegyik a szerzők saját feladatain mér. A DSPy-cikk szerint a pipeline-ok általában több mint 25%-kal, illetve 65%-kal verik a sima few-shot promptot, a GPT-3.5, illetve a llama2-13b-chat esetében. A MIPROv2-cikk hét többlépcsős programból ötön ért el javulást, akár 13%-os pontossággal. A GEPA-cikk átlagosan 6%-os előnyt állít a GRPO nevű megerősítéses tanulási alapvonal fölött, legfeljebb 35-ször kevesebb rolloutttal.",{"type":175,"level":176,"id":158,"text":159},{"type":261,"head":344,"rows":351},[345,347,349],[346],"Tétel",[348],"Ár",[350],"Mit fed le",[352,359,366,373],[353,355,357],[354],"DSPy-könyvtár",[356],"MIT · ingyenes",[358],"pip-pel telepítve, a saját folyamatodban fut",[360,362,364],[361],"Modellhívások futásidőben",[363],"A szolgáltatód díja",[365],"A program minden hívása, tokenenként számlázva",[367,369,371],[368],"Optimalizálási futás, a gyártó példája",[370],"2,18 $",[372],"GEPA, auto medium, 200 példa, gpt-5.4-mini",[374,376,378],[375],"Régebbi FAQ-futás",[377],"körülbelül 3 $",[379],"3200 hívás, 2,7 millió bemeneti és 156 000 kimeneti token",{"type":171,"content":381},[382],"A lefordított programot build-artefaktumként kezeld. Mentsd JSON-ként, amit a dokumentáció biztonságosabbnak és olvashatóbbnak nevez, az aláírások mellé ugyanabba a tárolóba, verziószámmal a fájlnévben és rögzített DSPy-verzióval. A fájl tartalmazza az aláírást, a demonstrációkat és prediktoronként a modellt. Betöltéshez előbb ugyanazt a programot kell felépíteni a kódban.",{"type":171,"content":384},[385],"A modellváltás újrafordítást von maga után, mert a fordító a programot az új modell új promptjaira képezi le. Tartsd meg a régi fájlt, futtasd mindkettőn a metrikát, és csak akkor éleszd az újat, ha nyer. A verziót is rögzítsd: a LM-oldal leír egy auto motort, amely az újabb backendet részesíti előnyben, így egy frissítés megváltoztathatja a viselkedést.",{"type":171,"content":387},[388,389,393],"Az adatút az, amelyet te állítasz be, ezért a feldolgozó és a régió kérdései ugyanazok, mint bármely modell-API esetén. Három dolog is tart meg az adataidból másolatot. Az LM-gyorsítótár alapértelmezetten be van kapcsolva, memóriában és lemezen egyaránt. A mentett program a tanítóadataidból származó demonstrációkat hordoz, így a JSON-fájl személyes adatot is tartalmazhat. A GEPA reflexiós modellje a példáidat és pontszámaikat olvassa, így az második feldolgozó. Az EU-s lehetőségekről ",{"tag":181,"to":390,"children":391},"\u002Fblog\u002Fgdpr-llm-api-eu-data-residency",[392],"a GDPR-cikkemben az EU-s adatrezidenciáról"," olvashatsz.",{"type":327,"variant":395,"title":396,"body":397},"warn","Soha ne tölts be olyan pickle-t, amelyet nem te írtál",[398],[399],"A dokumentáció szerint a pickle tetszőleges kódot futtathat, a save_program=True pedig cloudpickle-t használ ugyanazzal a kockázattal. Csak a JSON-állapotot töltsd be, a saját tárolódból.",{"type":175,"level":176,"id":161,"text":162},{"type":171,"content":402},[403],"A legtöbb feladathoz nem kell optimalizáló. A FAQ elismeri, hogy rendkívül egyszerű esetekben egy sima prompt is elég lehet, és a tool-okat, újrapróbálásokat és feldolgozást továbbra is te írod meg. Ha nem tudsz olyan metrikát írni, amely megfelel annak, amit a felhasználó helyesnek hívna, az optimalizáló azt javítja, amit mértél, és ez nem ugyanaz.",{"type":171,"content":405},[406],"A kézzel írt promptok felett leginkább akkor nyer, ha több hívás függ egymástól, a modell gyakran változik, és a kimenet pontozható. A finomhangolással szemben a legtöbb csapatnak olcsóbb és könnyebben visszacsinálható opció. A BootstrapFinetune a programot finomhangolási feladatokká fordítja, de ekkor finomhangolt modelleket kell kiszolgálnod és verziókezelned, modellenként vagy prediktoronként egyet.",{"type":171,"content":408},[409],"A számla és a metrika a másik gyenge pont. Egy light futás száz hívást indít, a heavy futások ezreket, és a validációs halmaz viszi a költség nagy részét. A gyártói állítás, hogy egy kicsi, olcsó modell gyakran képes felérni vagy túlszárnyalni egy kézzel promptolt csúcsmodellt, a te adataidon ellenőrzendő hipotézis.",{"type":171,"content":411},[412],"Az API még mozog. A 3.4.0 kiadási jegyzetei törést okozó változást jeleznek a rlm(...) hívásnál, és eltávolítják a régi dspy.LMRequest és dspy.LMResponse exportokat, ezért minden frissítés előtt olvasd el őket.",{"type":175,"level":176,"id":164,"text":165},{"type":171,"content":415},[416],"Vezesd be a DSPy-t, ha a pipeline többlépcsős, mérhető és változó. Egy promptnál, amelyet nem változtatott modellen, egy átnézett prompt és egy regressziós csomag elég. Ha nem tudod megírni a metrikát, ne fordíts még semmit.",{"type":187,"ordered":224,"items":418},[419,424,428,433],[420,423],{"tag":192,"children":421},[422],"Vezesd be, ha ","több modellhívásnak egyeznie kell, és a kimenetük automatikusan pontozható.",[425,427],{"tag":192,"children":426},[422],"a modell vagy az adat gyakran változik, mert az újrafordítás olcsóbb, mint a promptok újraírása.",[429,432],{"tag":192,"children":430},[431],"Ne vezesd be, ha ","a feladat egy prompt stabil modellen.",[434,436],{"tag":192,"children":435},[431],"senki nem írja meg és nem tartja karban a metrikát.",{"type":171,"content":438},[439,440,444,445,449],"Három alternatíva fedi le a maradékot. Ha a promptokat a kódban akarod tartani, és a változtatásokat eval-ok kapuzzák, a ",{"tag":181,"to":441,"children":442},"\u002Fblog\u002Fpromptfoo",[443],"Promptfoo"," a közelebbi választás. Ha explicit állapotról és vezérlési folyamatról van szó, nézd meg a ",{"tag":181,"to":446,"children":447},"\u002Fblog\u002Flanggraph",[448],"LangGraph","-ot, és ha mindkettő kell, kombináld. Ha a modellnek formátumot vagy stílust kell megtanulnia, a finomhangolás a megoldás, ahogy a döntési útmutató is leírja.",{"type":175,"level":176,"id":167,"text":168},{"type":187,"ordered":188,"items":452},[453,458,462,466,470,474,477,480,483,486,490,493,497,500,503,507,511,515,519,522,526,530,534,538,542],[454],{"tag":455,"href":38,"children":456},"a",[457],"DSPy-kezdőlap és költségpélda",[459],{"tag":455,"href":41,"children":460},[461],"DSPy-telepítés",[463],{"tag":455,"href":44,"children":464},[465],"DSPy: program, ne prompt",[467],{"tag":455,"href":47,"children":468},[469],"DSPy-aláírások",[471],{"tag":455,"href":50,"children":472},[473],"DSPy-metrikák",[475],{"tag":455,"href":53,"children":476},[52],[478],{"tag":455,"href":56,"children":479},[55],[481],{"tag":455,"href":59,"children":482},[58],[484],{"tag":455,"href":62,"children":485},[61],[487],{"tag":455,"href":65,"children":488},[489],"DSPy-optimalizálók",[491],{"tag":455,"href":68,"children":492},[67],[494],{"tag":455,"href":71,"children":495},[496],"MIPROv2 forráskód",[498],{"tag":455,"href":74,"children":499},[73],[501],{"tag":455,"href":77,"children":502},[76],[504],{"tag":455,"href":80,"children":505},[506],"DSPy GEPA-útmutató",[508],{"tag":455,"href":83,"children":509},[510],"GEPA forráskód",[512],{"tag":455,"href":86,"children":513},[514],"DSPy-programok mentése",[516],{"tag":455,"href":89,"children":517},[518],"DSPy-gyorsítótár",[520],{"tag":455,"href":92,"children":521},[91],[523],{"tag":455,"href":95,"children":524},[525],"DSPy GYIK",[527],{"tag":455,"href":98,"children":528},[529],"DSPy GitHub-tároló",[531],{"tag":455,"href":101,"children":532},[533],"DSPy 3.4.0 kiadás",[535],{"tag":455,"href":104,"children":536},[537],"DSPy-cikk, arXiv",[539],{"tag":455,"href":107,"children":540},[541],"MIPRO-cikk, arXiv",[543],{"tag":455,"href":110,"children":544},[545],"GEPA-cikk, arXiv",[547,604,672,730],{"slug":548,"published":549,"minutes":550,"category":7,"tags":551,"keywords":557,"about":571,"sources":579,"cover":598,"og":599,"expertise":113,"locales":600,"lang":117,"title":601,"description":602,"coverAlt":603},"deepseek-v4-1-flash-1017","2026-10-17",15,[552,553,554,555,556],"DeepSeek","Open-weight models","KV cache","Mixture of experts","LLM cost",[558,559,560,561,562,563,564,565,566,567,568,569,570],"DeepSeek V4.1 Flash 1017","DeepSeek V4.1 Flash","Causal Encoder-Decoder","Compressed Sparse Attention 2","CSA2","FP4 KV cache","KV cache compression","SWA Bounded Replay","Engram conditional memory","DSpark speculative decoding","DeepSeek pricing","DeepSWE benchmark","open-weight coding model",[572,574,576],{"name":552,"url":573},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FDeepSeek",{"name":555,"url":575},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FMixture_of_experts",{"name":577,"url":578},"Transformer (deep learning architecture)","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FTransformer_(deep_learning_architecture)",[580,583,586,589,592,595],{"title":581,"url":582},"DeepSeek-AI: DeepSeek-V4.1-Flash: Pushing the Limits of KV Cache Compression (arXiv:2609.19969)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2609.19969",{"title":584,"url":585},"Hugging Face: deepseek-ai\u002FDeepSeek-V4.1-Flash-1017 model card","https:\u002F\u002Fhuggingface.co\u002Fdeepseek-ai\u002FDeepSeek-V4.1-Flash-1017",{"title":587,"url":588},"OpenRouter: DeepSeek V4.1 Flash 1017, pricing and providers","https:\u002F\u002Fopenrouter.ai\u002Fdeepseek\u002Fdeepseek-v4.1-flash-1017",{"title":590,"url":591},"The Decoder: Deepseek V4.1 Flash 1017 beats larger rivals in agentic tasks while once again massively cutting per-task costs","https:\u002F\u002Fthe-decoder.com\u002Fdeepseek-v4-1-flash-1017-beats-larger-rivals-in-agentic-tasks-while-once-again-massively-cutting-per-task-costs\u002F",{"title":593,"url":594},"AI Weekly: DeepSeek opens V4.1-Flash-1017 weights and $0.75 Search API","https:\u002F\u002Faiweekly.co\u002Falerts\u002Fdeepseek-opens-v41-flash-1017-weights-and-075-search-api",{"title":596,"url":597},"DeepSeek on X: DeepSeek-V4.1-Flash-1017 announcement","https:\u002F\u002Fx.com\u002Fdeepseek_ai\u002Fstatus\u002F2111375640717033777","\u002Fimages\u002Fblog\u002Fdeepseek-v4-1-flash-1017\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fdeepseek-v4-1-flash-1017\u002Fog.jpg",[115,116,117],"DeepSeek V4.1 Flash 1017: 890 bájt KV-cache tokenenként, és mit nyer ezzel egy ágens","Technikai mélyfúrás a DeepSeek V4.1 Flash 1017-ről: encoder-decoder felosztás, CSA2 cache-megosztás, FP4 KV-cache, benchmarkok és a valós költség ágensfeladatonként.","Balra egy magas, vékony kártyákból álló köteg, egy nyíl, jobbra ugyanezek a kártyák a magasság negyedére préselve.",{"slug":605,"published":549,"minutes":606,"category":7,"tags":607,"keywords":613,"about":625,"sources":635,"cover":666,"og":667,"expertise":113,"locales":668,"lang":117,"title":669,"description":670,"coverAlt":671},"llm-rate-limits-retries-provider-fallback",10,[608,609,610,611,612],"Rate limits","Retries","Fallback","Reliability","LLM gateway",[614,615,616,617,618,619,620,621,622,623,624],"llm rate limit handling","429 too many requests llm api","exponential backoff with jitter","anthropic 529 overloaded error","openai rate limit retry","llm provider fallback","litellm fallbacks","retry-after header","llm circuit breaker","multi provider llm failover","claude api rate limits",[626,629,632],{"name":627,"url":628},"Token bucket","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FToken_bucket",{"name":630,"url":631},"Exponential backoff","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FExponential_backoff",{"name":633,"url":634},"Circuit breaker design pattern","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FCircuit_breaker_design_pattern",[636,639,642,645,648,651,654,657,660,663],{"title":637,"url":638},"Claude Platform Docs: Rate limits","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fapi\u002Frate-limits",{"title":640,"url":641},"Claude Platform Docs: API errors","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fapi\u002Ferrors",{"title":643,"url":644},"OpenAI API Docs: Rate limits","https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Frate-limits",{"title":646,"url":647},"AWS Builders Library: Timeouts, retries and backoff with jitter","https:\u002F\u002Fbuilder.aws.com\u002Fcontent\u002F3EumjoZascWd1oZiEgL8ORlv3qE\u002Ftimeouts-retries-and-backoff-with-jitter",{"title":649,"url":650},"MDN: Retry-After header","https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FHTTP\u002FReference\u002FHeaders\u002FRetry-After",{"title":652,"url":653},"Martin Fowler: Circuit Breaker (2014)","https:\u002F\u002Fmartinfowler.com\u002Fbliki\u002FCircuitBreaker.html",{"title":655,"url":656},"LiteLLM Docs: Router, retries and cooldowns","https:\u002F\u002Fdocs.litellm.ai\u002Fdocs\u002Frouting",{"title":658,"url":659},"LiteLLM Docs: Proxy fallbacks and reliability","https:\u002F\u002Fdocs.litellm.ai\u002Fdocs\u002Fproxy\u002Freliability",{"title":661,"url":662},"OpenRouter Docs: Model fallbacks","https:\u002F\u002Fopenrouter.ai\u002Fdocs\u002Fguides\u002Frouting\u002Fmodel-fallbacks",{"title":664,"url":665},"AI SDK Docs: Settings (maxRetries, timeout)","https:\u002F\u002Fai-sdk.dev\u002Fdocs\u002Fai-sdk-core\u002Fsettings","\u002Fimages\u002Fblog\u002Fllm-rate-limits-retries-provider-fallback\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fllm-rate-limits-retries-provider-fallback\u002Fog.jpg",[115,116,117],"LLM rate limitek élesben: újrapróbálás, backoff és szolgáltatóváltás","Hogyan működnek az LLM rate limitek, mit érdemes újrapróbálni, backoff jitterrel, retry egy rétegben, és fallback-láncok, amelyek nem rontják el a kimenetet.","Kis négyzetek kapaszkodnak három fokon egy széles téglalaphoz, mögötte még kettő sorban.",{"slug":673,"published":549,"minutes":6,"category":7,"tags":674,"keywords":680,"about":691,"sources":699,"cover":724,"og":725,"expertise":113,"locales":726,"lang":117,"title":727,"description":728,"coverAlt":729},"prompt-versioning-management",[675,676,677,678,679],"Prompt management","Versioning","LLMOps","Evals","Langfuse",[681,682,683,684,685,686,687,688,689,690],"prompt versioning","prompt management","prompt registry","version control for prompts","langfuse prompt management","mlflow prompt registry","prompts in git","openai prompt object deprecation","prompt rollback production","prompt ci evaluation",[692,693,696],{"name":27,"url":28},{"name":694,"url":695},"Version control","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FVersion_control",{"name":697,"url":698},"Continuous integration","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FContinuous_integration",[700,703,706,709,712,715,718,721],{"title":701,"url":702},"OpenAI API Docs: Migrate from prompt objects","https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fprompting\u002Fmigrate-from-prompt-object",{"title":704,"url":705},"OpenAI API Docs: Prompt engineering (reusable prompts deprecation note)","https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fprompt-engineering",{"title":707,"url":708},"Langfuse Docs: Prompt version control","https:\u002F\u002Flangfuse.com\u002Fdocs\u002Fprompt-management\u002Ffeatures\u002Fprompt-version-control",{"title":710,"url":711},"Langfuse Docs: Prompt caching in the SDKs","https:\u002F\u002Flangfuse.com\u002Fdocs\u002Fprompt-management\u002Ffeatures\u002Fcaching",{"title":713,"url":714},"Langfuse Docs: Link prompts to traces","https:\u002F\u002Flangfuse.com\u002Fdocs\u002Fprompt-management\u002Ffeatures\u002Flink-to-traces",{"title":716,"url":717},"MLflow Docs: Prompt Registry","https:\u002F\u002Fmlflow.org\u002Fdocs\u002Flatest\u002Fgenai\u002Fprompt-registry\u002F",{"title":719,"url":720},"Promptfoo Docs: GitHub Action","https:\u002F\u002Fwww.promptfoo.dev\u002Fdocs\u002Fintegrations\u002Fgithub-action\u002F",{"title":722,"url":723},"Claude Platform Docs: Prompt caching","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fbuild-with-claude\u002Fprompt-caching","\u002Fimages\u002Fblog\u002Fprompt-versioning-management\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fprompt-versioning-management\u002Fog.jpg",[115,116,117],"Promptverziózás élesben: git, registry, címkék és visszaállítás","Promptok verziózása élesben: mi tartozik egy verzióhoz, git vagy prompt registry, címkék és visszaállítás, eval-kapu a CI-ban és a cache-re gyakorolt hatás.","Öt álló kártya sorban, a harmadik íves nyíllal visszafordul, a kapu az utolsó előtt áll.",{"slug":731,"published":549,"minutes":732,"category":7,"tags":733,"keywords":738,"about":749,"sources":759,"cover":780,"og":781,"expertise":113,"locales":782,"lang":117,"title":783,"description":784,"coverAlt":785},"llm-batch-api-offline-workloads",9,[734,735,677,736,737],"Batch API","Cost","Prompt caching","Data pipelines",[739,740,741,742,743,744,745,746,747,748],"llm batch api","anthropic message batches api","openai batch api","gemini batch mode","batch inference llm cost","batch api 50 percent discount","openai flex processing","bedrock batch inference","llm offline processing","batch api prompt caching",[750,753,756],{"name":751,"url":752},"Batch processing","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FBatch_processing",{"name":754,"url":755},"JSON Lines","https:\u002F\u002Fjsonlines.org\u002F",{"name":757,"url":758},"Large language model","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FLarge_language_model",[760,763,765,766,769,772,774,777],{"title":761,"url":762},"Claude Platform Docs: Batch processing","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fbuild-with-claude\u002Fbatch-processing",{"title":764,"url":638},"Claude Platform Docs: Rate limits (Message Batches API)",{"title":722,"url":723},{"title":767,"url":768},"OpenAI API Docs: Batch API","https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fbatch",{"title":770,"url":771},"OpenAI API Docs: Flex processing","https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fflex-processing",{"title":773,"url":644},"OpenAI API Docs: Rate limits (batch queue limits)",{"title":775,"url":776},"Google AI for Developers: Gemini Batch API","https:\u002F\u002Fai.google.dev\u002Fgemini-api\u002Fdocs\u002Fbatch-api",{"title":778,"url":779},"Amazon Bedrock User Guide: Batch inference","https:\u002F\u002Fdocs.aws.amazon.com\u002Fbedrock\u002Flatest\u002Fuserguide\u002Fbatch-inference.html","\u002Fimages\u002Fblog\u002Fllm-batch-api-offline-workloads\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fllm-batch-api-offline-workloads\u002Fog.jpg",[115,116,117],"LLM batch API-k: félárú inferencia olyan munkára, amely várhat","Mikor érdemes az Anthropic, OpenAI és Gemini batch API-ját használni, hogyan működnek a limitek, a párosítás és a hibák, és hogyan adódnak össze a kedvezmények.","Széles doboz nyolc kis négyzettel, balról érkeznek, egy hosszú nyíl visszatér.",1792261158907]