Promptfoo vai DeepEval: drošības skenēšana sacenšas ar Python testiem

|Autors: QUASA redakcija|5 min lasīšanai
Promptfoo vai DeepEval: drošības skenēšana sacenšas ar Python testiem

Ja CI procesā galvenais ir atklāt Python lietotnes atbilžu kvalitātes regresijas, piemērotāks sākumpunkts ir DeepEval. Tā pytest tipa testi ļauj vērtēt gala rezultātu, aģenta trajektoriju un atsevišķus komponentus. Šīs pārbaudes var iekļaut lietotnes testu kopā, kurā izstrādātāji jau izseko koda izmaiņu sekām.

Ja galvenais uzdevums ir regulāri meklēt uzvedņu injekcijas un citas ļaunprātīgas ievades, piemērotāks ir Promptfoo. Tā sarkanās komandas konfigurācija nosaka pārbaudāmo mērķi, uzbrukuma ievadju ģeneratorus, stratēģijas un sistēmas paredzēto uzdevumu; pēc tam pārbaudes var ģenerēt, izpildīt un pārskatīt. Abi rīki iederas CI procesā, taču tie palīdz atbildēt uz atšķirīgiem jautājumiem par lietotnes uzvedību.

Izvēles matrica: vide, pārbaude un rezultāts

  • Programmēšanas vide. Python komandai DeepEval ļauj rakstīt kvalitātes pārbaudes pazīstamā testu formā un turēt tās līdzās lietotnes kodam. Promptfoo ir ērts, ja uzvednes, modeļu varianti un pārbaudes ir vieglāk aprakstāmi konfigurācijā un darbināmi no komandrindas.
  • Drošības pārbaudes. Promptfoo ir skaidrāka izvēle, ja jārada ļaunprātīgi pieprasījumi un atkārtoti jāmeklē ievainojamības. DeepEval piedāvā arī drošības metrikas, taču atbildes novērtēšana un mērķtiecīga uzbrukuma ievades ģenerēšana ir dažādi uzdevumi.
  • Aģenta trajektorija. Ja kļūda var rasties rīka izsaukumā, informācijas izgūšanā vai nevajadzīgā starpsolī, DeepEval ļauj vērtēt darbību secību, neaprobežojoties ar gala atbildi. Tas ir svarīgi komandai, kurai jāatrod kļūdas vieta, nevis tikai jākonstatē neveiksmīgs iznākums.
  • Lokāla izpilde. Abus rīkus var darbināt komandas vidē, taču datu ceļu nosaka arī izmantotais modelis, uzbrukumu ģenerators un vērtētājs. Lokāli palaista komanda pati par sevi negarantē, ka ievade paliek lokāli.
  • CI integrācija. Abi rīki var dot signālu par neveiksmīgu pārbaudi. Izšķirošais ir tas, vai šis signāls komandai nozīmē neatļautu uzvedību, atbildes kvalitātes kritumu vai kļūdu aģenta darbības gaitā.

Ko dod Promptfoo drošības skenēšana

Promptfoo sarkanās komandas plūsmā pārbaudāmo sistēmu sasaista ar uzbrukumu veidiem un veidu, kā šīs ievades tai nogādāt. Tādējādi viena konfigurācija var aptvert vairākus iespējamos atteices veidus, piemēram, mēģinājumu ar uzvednes injekciju mainīt lietotnes norādīto uzdevumu. Komandai, kas maina uzvednes vai piekļuvi rīkiem, šāda konfigurācija dod atkārtojamu drošības pārbaudes pamatu.

Skenējuma apjoms tomēr nav tas pats, kas tā lēmumu kvalitāte. Ja sistēmas paredzētais uzdevums aprakstīts pārāk vispārīgi vai vērtētājs kļūdaini klasificē atbildi, lielāks ģenerēto ievadju daudzums šo trūkumu neizlabo. Drošības slieksnim vajadzīgi konkrēti pieņemamas un nepieņemamas rīcības piemēri; citādi neveiksmju sarakstā būs grūti atšķirt reālu risku no vērtēšanas kļūdas.

Promptfoo var izmantot arī parastai uzvedņu un modeļu rezultātu vērtēšanai. Tāpēc izvēle nav starp rīku, kas pārbauda tikai drošību, un rīku, kas pārbauda tikai kvalitāti. Atšķirība kļūst būtiska tad, kad komandai vajadzīga īpaša plūsma ļaunprātīgu ievadju veidošanai un atkārtotai skenēšanai.

Kad jāvērtē aģenta darbību secība

Aģents var sniegt pieņemamu gala atbildi, lai gan ceļā izmantojis nepareizu rīku vai lieki atkārtojis darbību. DeepEval trajektorijas vērtēšana aptver visu darbību secību, savukārt komponenta pārbaude var vērtēt vienu rīka izsaukumu, izgūšanas soli vai citu izpildes daļu. Lai šo atšķirību izmantotu, aģenta izpildei jāveido trase ar starpsoļiem.

Šis sadalījums maina neveiksmīga testa skaidrojumu. Gala rezultāta pārbaude atbild, vai lietotne izpildīja uzdevumu; trajektorijas pārbaude vērtē, kā tā līdz rezultātam nonāca; komponenta pārbaude palīdz sašaurināt kļūdas vietu. Python aģentam ar vairākiem rīkiem tā ir konkrēta priekšrocība, jo līdzīgas gala atbildes var rasties pa atšķirīgiem ceļiem.

Vienkāršai jautājumu un atbilžu lietotnei, kuras iekšējā darbību gaita nav izvēles jautājums, pietiekama var būt gala rezultāta pārbaude. Aģenta trasēšana prasa papildu darbu, tāpēc tās vērtību nosaka tas, vai komanda tiešām vēlas apturēt kļūdainu starpsoli arī tad, kad lietotājam redzamā atbilde šķiet pieņemama.

CI un lokāla izpilde: kur atrodas īstā robeža

Promptfoo CI integrācijas norādes nošķir parasto uzvedņu vērtēšanu no sarkanās komandas skenēšanas, rāda izpildes konteksta marķēšanu un rezultātu saglabāšanu JSON vai JUnit XML formātā. Tas ļauj drošības skenējumu piesaistīt konkrētai izmaiņai un nodot rezultātu CI pārskatiem. DeepEval savukārt iederas Python testu izpildē: scenārijs, metrika un pieņemšanas slieksnis paliek cieši saistīti ar lietotnes kodu.

Abos gadījumos jānošķir testa palaišanas vieta no vietas, kur apstrādā testa datus. DeepEval pārbaudes darbojas komandas vidē, bet metrika, kas izmanto LLM vērtētāju, var prasīt modeļa pakalpojuma atslēgu. Promptfoo uzbrukumu ģenerēšanai un vērtēšanai var izmantot ārēju modeli vai savu pakalpojumu; izvēlētā konfigurācija nosaka, kur nonāk ievade. Komandai ar datu pārsūtīšanas ierobežojumiem šis jautājums ir tikpat svarīgs kā komandrindas ērtums.

CI slieksnis jāsaista ar pārbaudes mērķi. Zināmam regresijas scenārijam var prasīt stabilu sagaidāmo uzvedību, bet ģenerētā drošības skenējumā kļūdu kopums var mainīties līdz ar ievadēm un vērtētāju. Atsevišķi CI posmi ar atšķirīgiem pieņemšanas kritērijiem ir saprātīga izvēle komandai, kurai vajadzīga gan regulāra drošības pārbaude, gan Python lietotnes kvalitātes regresiju kontrole.

Ātrāk uzrakstīts tests vēl nav uzticamāks tests

ScrollTest praktiskajā salīdzinājumā autors raksta, ka viņa studenti pirmo Promptfoo vērtēšanu palaida trīsreiz ātrāk nekā pirmo DeepEval testu. Tas raksturo konkrētas mācību grupas sākotnējo pieredzi. Šis novērojums nemēra abu rīku testu izpildes ātrumu vai to, cik pareizi vērtētāji atpazīst reālas kļūmes.

Automātiskā testa vērtība CI procesā ir atkarīga no tā, ko tas atzīmē kā neveiksmi. Precīzi formulētu prasību var pārbaudīt ar noteiktu nosacījumu; atbildes atbilstībai vai drošumam bieži vajadzīgs vērtēšanas modelis un piemēri, pret kuriem tā lēmumu salīdzināt. Ja vērtētājs regulāri noraida pieņemamas atbildes, tests kavē izmaiņas bez skaidra ieguvuma. Ja tas palaiž garām neatļautu darbību, veiksmīgs CI rezultāts rada maldīgu drošības sajūtu.

Tāpēc rīka izvēli nosaka dārgākā kļūme, ko komandai jāspēj atklāt. Mērķtiecīgai ļaunprātīgu ievadju skenēšanai priekšrocība ir Promptfoo; Python lietotnes uzvedības, aģenta trajektorijas un komponentu regresijām — DeepEval. Ja produktam svarīgi abi riski, atsevišķas pārbaudes ar skaidriem sliekšņiem dod precīzāku atbildi nekā mēģinājums visu pakļaut vienam kopīgam vērtējumam.

Lasiet arī:

Dalīties:

Abonējiet mūsu jaunumu vēstuli

Saņemiet jaunākās Web3, MI un kriptovalūtu ziņas tieši savā e-pastā.

0