Ruka hadi maudhui makuu
Mafunzo ya AI

Kagua Miito ya Zana ya Mawakala wa AI kwa ToolReplay

Mafunzo haya yanaeleza jinsi ya kusakinisha ToolReplay, kuandaa nakala za JSONL zenye masharti madhubuti na faili za upeo, kuendesha ukaguzi wa replay, scope, seal na verify, kutafsiri ripoti zinazoweza kuzalishwa kwa uthabiti, kuunganisha ukaguzi kwenye CI, na kuelewa mfumo wa usalama pamoja na vikwazo vya mradi.

Kagua Miito ya Zana ya Mawakala wa AI kwa ToolReplay

ToolReplay Hufanya Nini

ToolReplay hukagua miito ya zana za mawakala wa AI iliyorekodiwa bila kuziendesha zana halisi. Huchunguza nakala ya mawasiliano ili kutambua matatizo matatu: majibu yasiyo na uamuzi thabiti, miito inayojirudia bila ulazima, na miito iliyo nje ya ruhusa zilizotangazwa za wakala. Pia inaweza kufunga nakala ya mawasiliano katika mnyororo wa heshi wa SHA-256 na kuthibitisha kuwa faili iliyofungwa haijahaririwa.

Kwa kuwa ToolReplay hurudia majibu yaliyorekodiwa badala ya kufanya miito ya moja kwa moja, ukaguzi ni salama, hauna madhara ya pembeni, unaweza kurudiwa kwa matokeo yaleyale, na unaweza kutumika hata zana za awali hazipatikani.

Sakinisha na Endesha ToolReplay

ToolReplay inahitaji Python 3.11 au mpya zaidi na haina vitegemezi vya wakati wa uendeshaji kutoka kwa wahusika wengine. Haifikii mtandao.

Kutoka kwenye nakala ya msimbo wa chanzo, endesha moduli moja kwa moja:

python -m toolreplay version

Pia unaweza kusakinisha hati ya koni:

pip install .
toolreplay version

Njia zote mbili huchapisha toleo lililosakinishwa, kama vile:

toolreplay 0.6.0

Elewa Muundo wa Nakala ya Mawasiliano

Nakala ya mawasiliano ni faili ya JSON Lines. Kila mstari usio tupu huwakilisha mwito mmoja wa zana na lazima uwe na sehemu nne haswa:

  • index: nambari kamili inayoanza 0 na kuongezeka kwa 1 haswa.
  • tool: jina la zana iliyoitwa.
  • args: kitu chenye hoja za zana.
  • response: kitu chenye jibu la zana lililorekodiwa.

Rekodi halali inaonekana hivi:

{"index": 4, "tool": "write_file", "args": {"path": "docs/intro.md", "text": "edited"}, "response": {"ok": true}}

Uchanganuzi ni mkali kimakusudi. Sehemu zisizojulikana, sehemu zinazokosekana, aina za vitu zisizo halali, faharasa zisizo nambari kamili, na faharasa zisizo katika mpangilio husababisha hitilafu kubwa. Thamani za boolean hazikubaliwi kama nambari kamili ingawa Python huchukulia bool kama aina ndogo ya int.

ToolReplay hulinganisha miito kwa kutumia JSON sanifu: jina la zana na hoja husimbwa kwa funguo zilizopangwa na bila nafasi zisizo za lazima. Kwa hivyo, vitu vya hoja vyenye mpangilio tofauti wa funguo bado huwakilisha mwito uleule. Majibu hutumia usimbaji huohuo sanifu ToolReplay inapokagua uthabiti.

Endesha Ukaguzi wa Marudio

Amri ya replay hukagua nakala ya mawasiliano dhidi ya majibu yake yaliyorekodiwa. Jaribu sampuli yenye matatizo iliyojumuishwa kwenye hazina:

python -m toolreplay replay samples/session-dirty.jsonl

Amri hutoa ripoti bainifu yenye mistari:

calls: 6
divergence: index 5
findings: 2
index 2: redundant-call: tool 'read_file' repeats the identical call at index 1 with no state change between them
index 5: non-determinism: tool 'search' returned a different response than the identical call at index 3

Kichwa husomwa kutoka juu kwenda chini. calls: 6 inamaanisha kuwa rekodi sita halali zilichanganuliwa. divergence: index 5 hutambulisha sehemu ya kwanza ambapo utekelezaji wa kimatokeo thabiti ungetofautiana na rekodi. findings: 2 huhesabu matokeo yanayofuata.

Matokeo hupangwa kwa faharasa kisha kwa aina, hivyo ukaguzi unaorudiwa wa ingizo lilelile hutoa matokeo yanayofanana byte kwa byte.

Ukosefu wa Uthabiti

ToolReplay hukumbuka jibu la kwanza kwa kila mwito sanifu. Ikiwa mwito uleule baadaye una jibu lililorekodiwa tofauti, huripoti ukosefu wa uthabiti. Katika sampuli, mwito wa search wa install unaonekana kwenye faharasa 3 na 5, lakini majibu yanaonyesha idadi tofauti ya matokeo. Faharasa 5 inakuwa sehemu ya kutofautiana.

Hili ni muhimu kwa mawakala kwa sababu uamuzi uliotegemea jibu la kwanza unaweza kubadilika ikiwa jibu la pili lingerudishwa. Matokeo hayo yanaonyesha kuwa kikao kinategemea taarifa isiyo thabiti ndani ya rekodi.

Miito Inayojirudia Bila Ulazima

Мwito unaojirudia huwa usio wa lazima tu wakati hakuna tukio lililorekodiwa kati ya miito hiyo miwili ambalo lingeweza kubadilisha hali. Vigeuzi chaguo-msingi ni write_file, delete_file, create_file, move_file, na run_command. Mwito mwingine wowote kati ya miito inayofanana pia huchukuliwa kwa tahadhari kuwa huenda ulibadilisha hali.

Katika sampuli, read_file husoma docs/intro.md kwenye faharasa 1 na 2 bila mabadiliko ya hali kati yao, kwa hiyo faharasa 2 huwekwa alama. Usomaji wa baadaye baada ya mwito wa write_file hautachukuliwa kuwa unaojirudia bila ulazima.

Angalia Ruhusa za Wakala

Tumia scope unapokuwa na tamko la ruhusa za wakala:

python -m toolreplay scope samples/session-dirty.jsonl samples/scope.json

Sampuli hutoa:

calls: 6
findings: 1
index 4: permission-overreach: tool 'write_file' is not in the declared scope for agent 'docs-reader'

Replay na scope ni amri tofauti kimakusudi. Replay hutathmini kikao dhidi yake chenyewe na huhitaji nakala ya mawasiliano pekee. Scope hulinganisha kila mwito na faili tofauti la ruhusa.

Faili la scope ni kitu kimoja cha JSON chenye jina la wakala na orodha kamili ya zana zinazoruhusiwa:

{"agent": "docs-reader", "allowed_tools": ["read_file", "list_dir", "search"]}

Majina ya zana hulinganishwa kwa usahihi na kwa kuzingatia herufi kubwa na ndogo. Sehemu zinazokosekana, aina zisizo sahihi, au maingizo yasiyo ya maandishi hukataliwa. Ukaguzi wa scope hutegemea jina; hauchunguzi hoja wala kuamua kama zana iliyoruhusiwa inalenga njia iliyoruhusiwa.

Funga Nakala ya Mawasiliano

Amri ya seal hubadilisha nakala ya mawasiliano kuwa faili ya JSONL yenye mnyororo wa heshi:

python -m toolreplay seal samples/session-dirty.jsonl > sealed.jsonl

Kila kiungo kilichofungwa kina sehemu za rekodi asilia pamoja na prev na digest. Kiungo cha kwanza hutumia herufi 64 za heksadesimali zenye thamani sifuri kama digest yake ya awali. Kila digest ya baadaye ya SHA-256 inajumuisha digest ya awali na baiti za kanoni za rekodi ya sasa, ikiwemo faharasa yake, zana, hoja, na jibu.

Kwa kuwa kila kiungo kinategemea kiungo kinachotangulia, kubadilisha rekodi ya awali hubadilisha digest ya rekodi hiyo na digest zote zinazofuata. Kwa hivyo, mnyororo hufanya mabadiliko yaonekane na kubainisha mahali kiungo cha kwanza kilichovunjika kinapotokea.

Thibitisha Faili Lililofungwa

Thibitisha mnyororo kamili kwa:

python -m toolreplay verify sealed.jsonl

Faili ambalo halijabadilishwa linaripoti:

chain: intact

Ikiwa jibu lililorekodiwa au sehemu nyingine yoyote ya mnyororo imebadilishwa, uthibitishaji huripoti kiungo cha kwanza kilichovunjika pamoja na digest inayotarajiwa na iliyopatikana:

chain: broken
first broken link: index 3
expected: 34d19a9dfb112baa07afa37994ddcbbebe2973674385f3942340653d08d205bd
found: 40aadf3b8156217f0b5b1d95010b6b79f82a26ccf5e780aed0f5f311f865028a

Kufunga hugundua mabadiliko yaliyofanywa baada ya kufunga, yakiwemo mabadiliko ya mpangilio, faharasa, zana, hoja, na majibu. Si sahihi ya kidijitali: mtu yeyote anayeweza kuhariri faili anaweza pia kuifunga upya. Uthibitishaji wa asili ungehitaji kusaini digest ya mwisho kwa ufunguo unaodhibitiwa nje ya ToolReplay.

Tumia ToolReplay katika CI

Misimbo ya kutoka ya ToolReplay inafanya ifae kwa vizuizi vya ujenzi:

  • 0: ukaguzi ni safi au mnyororo umekamilika.
  • 1: matokeo yamepatikana au mnyororo umevunjika.
  • 2: hitilafu ya matumizi imetokea, kama ingizo lisilo sahihi au faili lililokosekana.

Endesha uchezaji upya na ukaguzi wa mipaka moja kwa moja katika kazi ya CI:

python -m toolreplay replay session.jsonl
python -m toolreplay scope session.jsonl scope.json

Msimbo wa kutoka 1 unamaanisha kuwa zana imekamilisha ukaguzi wake na imepata jambo la kuripoti. Msimbo wa kutoka 2 unamaanisha kuwa ukaguzi haukuweza kuendeshwa, hivyo uotomatishaji unaweza kutofautisha ingizo lisilo sahihi na matokeo halisi.

Kwa ulinganishaji unaoweza kurudiwa, funga kila utekelezaji na ulinganishe matokeo:

python -m toolreplay seal run-a.jsonl > run-a.sealed.jsonl
python -m toolreplay seal run-b.jsonl > run-b.sealed.jsonl
git --no-pager diff --no-index run-a.sealed.jsonl run-b.sealed.jsonl

Kwa kuwa ripoti hazina mihuri ya muda wala thamani za nasibu, maingizo yanayofanana hutoa matokeo yanayofanana. Mstari wa kwanza uliotiwa muhuri unaotofautiana huonyesha mahali utekelezaji miwili ilipoacha kukubaliana, huku digest iliyobadilika ikionyesha kuwa viungo vinavyofuata vinategemea tofauti hiyo.

Matumizi ya Juu na Mipaka ya Vitendo

  • Weka nakala za mawasiliano katika muundo unaofaa kuongezwa. JSON Lines humruhusu mtayarishaji kuongeza rekodi moja kwa kila mwito na hurahisisha kukagua mabadiliko katika udhibiti wa matoleo.
  • Hifadhi majibu yaliyorekodiwa. Uchezaji upya hauiti zana halisi; unaweza tu kugundua matatizo yanayowakilishwa katika nakala ya mawasiliano.
  • Tafsiri urudiaji kwa tahadhari. Orodha chaguo-msingi ya vigeuzaji ni thabiti, na zana maalum zinazobadilisha hali ambazo hazipo kwenye orodha hiyo huchukuliwa kuwa za kusoma pekee katika uchanganuzi wa urudiaji.
  • Kumbuka mpaka wa ulinganishaji. Kutobainika kunagunduliwa tu mwito uleule wa kanoni unapojirudia. Miito tofauti yenye majibu yanayohusiana kimaana haitathminiwi kwa usawa.
  • Tenganisha mamlaka na ulengaji. Ukaguzi wa mipaka hukagua majina ya zana pekee. Huwezi kugundua zana iliyoruhusiwa ikitumika kwenye rasilimali iliyokatazwa.
  • Tumia kufunga kwa uadilifu, si utambulisho. Mnyororo huonyesha ikiwa faili lilibadilika baada ya kufungwa, lakini hauthibitishi ni nani aliyeunda mnyororo.

Endesha Seti ya Majaribio

Mradi hutumia mfumo wa unittest wa maktaba ya kawaida ya Python na hauna utegemezi wa majaribio wa wahusika wengine. Kutoka kwenye mzizi wa hazina, endesha:

python -m unittest discover -s tests

Majaribio yanashughulikia uchanganuzi mkali wa nakala za mawasiliano, usimbaji wa kanoni, uundaji wa mnyororo wa heshi na ugunduzi wa udukuzi, matokeo ya uchezaji upya, utekelezaji wa mipaka, tabia ya CLI, na misimbo ya kutoka.

Hitimisho

ToolReplay hutoa mtiririko maalum wa ukaguzi kwa vipindi vya mawakala wa AI. Anza na replay ili kupata tabia isiyolingana au inayopoteza rasilimali, tumia scope kukagua ruhusa za zana zilizotangazwa, na tumia seal pamoja na verify kugundua mabadiliko baada ya kurekodi. Uthibitishaji wake mkali wa ingizo na ripoti zake za kuaminika hufanya iwe ya vitendo kwa utatuzi, ukaguzi, udhibiti wa matoleo, na utekelezaji wa CI.