Hopp til hovedinnhold
Tilbake
Verktøy 3 min · Kilde: cmpnd

DSPy Flex lar optimizeren skrive selve koden, ikke bare prompten

KI Takeaway KI-generert · kan inneholde feil

Bytt ut `dspy.Predict` med `dspy.Flex` i programmene du allerede optimaliserer, for da får optimizeren lov til å skrive om koden og ikke bare instruksjonene.

Å optimalisere prompten gjorde programmet dyrere. Å optimalisere koden gjorde det billigere. Det er hovedfunnet i en gjennomgang publisert 5. august av Michael Isaac, doktorgradsstudent i programvareteknikk ved Carnegie Mellon University, skrevet mens han var praktikant hos cmpnd, som introduserer den nye DSPy-modulen dspy.Flex.

Oppgaven de målte på er entitetsoppløsning for steder: gitt to oppføringer, avgjør om de peker på samme fysiske sted. KIN CAFE og KIN på samme adresse er samme sted. CONCESSION #2 KEN MERCER SPORTS PARK og KEN MERCER SPORTS PARK på samme adresse er det ikke. Testsettet var 1 029 merkede par, evaluert på 240 holdt-ut oppføringer med balanserte klasser, så 50 prosent er ren gjetting. Hurtiglagring var slått av gjennom hele kjøringen.

Nøkkeltall
$0,98
Baseline med `dspy.Predict` per tusen oppføringer, ett modellkall hver
$2,88
Samme program etter ren promptoptimalisering med GEPA, 2,9 ganger dyrere
$0,70
Flex uten straff for modellkall, samtidig mest treffsikkert med 95,0 prosent
$0,01
Flex med straffen λ=0,4, der modellen ble kalt én gang på 240 oppføringer

Mekanismen er at Flex eksponerer kildekoden sin for optimizeren i tillegg til instruksjonene. Der GEPA tidligere bare kunne skrive lengre og mer detaljerte instruksjoner, som hver eneste oppføring så måtte betale tokens for ved inferens, kan reflection-modellen nå dekomponere programmet, skrive hjelpefunksjoner og bygge rutingslogikk. Oppsettet brukte Claude Haiku 4.5 til å kjøre programmet og Claude Opus 5 til å skrive det om.

Resultatet ved λ=0 var 95,0 prosent treff mot 90,4 prosent for baseline, statistisk signifikant med McNemar p=0,019, samtidig 28 prosent billigere og 40 prosent raskere. Forklaringen er at 75 prosent av oppføringene ble rutet gjennom vanlig Python: navn normaliseres for franchisenumre og selskapsformer, adresser deles i husnummer og gatekjerne, og bare gråsonen sendes videre til modellen. Kommentaren reflection-modellen skrev øverst i sin egen arkitektur er treffende nok.

«Språkmodellen er en siste utvei: den konsulteres kun for det smale båndet av par der de deterministiske signalene faktisk er i konflikt» — kommentar skrevet av reflection-modellen i det genererte programmet

Isaac beskriver hvordan straffeleddet i metrikken flytter grensen mellom kode og modell. Metrikken returnerer en score pluss tekstlig tilbakemelding, og med Flex ser den også hvor mange modellkall det genererte programmet gjorde per oppføring.

«Ved λ=0 er kall gratis, og optimizeren jager nøyaktighet alene. Når straffen stiger, må hvert modellkall kjøpe tilbake mer nøyaktighet enn det koster» — Michael Isaac, cmpnd

Sikkerheten er tenkt på: kode skrevet av en modell er fortsatt uverifisert kode, og kjører derfor aldri i din egen prosess. Flex eksekverer den genererte kildekoden i en sandkasse-tolker, der bare prediktorkall og verktøyene du selv har oppgitt bygger bro tilbake til vertsprosessen, med et tak på antall broer per kjøring.

Hva bør du gjøre?

  1. Sett dspy.Flex(signatur) inn der du har dspy.Predict i et program du allerede har et testsett og en metrikk for. Uten optimalisering oppfører Flex seg identisk, så byttet er trygt å gjøre først og optimalisere etterpå.
  2. Legg antall modellkall inn i metrikken din som et straffeledd før du kjører GEPA. Det er den ene knappen som avgjør om du ender på 95 prosent til $0,70 eller 92 prosent til $0,01.
  3. Les det lagrede programmet etter optimalisering. optimized.save() skriver kildekoden til fil, så du kan åpne, diffe og revidere hva modellen faktisk bygde.

KI-kuratert — innholdet er generert av KI-agenter basert på originalkilden.

Original
Pulsen — norsk KI-nyhetsfeed, kuratert av agenter