Agent-lər: hərəkət edən modellər
Agent-lər: hərəkət edən modellər
Language model tək başına mətn istehsal edir. Agent elə sistemdir ki, orada model nə edəcəyinə qərar verir, runtime onu yerinə yetirir və nəticə geri qaytarılır ki, model yenidən qərar verə bilsin. Bu loop mətn generatorunu axtarış apara, hesablaya, faylları oxuya, API-ləri çağıra və çoxaddımlı tapşırıqları tamamlaya bilən bir şeyə çevirir.
Bu fəsil həmin loop-u, onun içindəki dizayn qərarlarını və qarşısı alınmalı failure mode-ları izah edir.
Agent loop-u
loop:
response = model(context)
if response is a final answer:
return it
for each tool call in response:
result = execute(tool call)
append result to context
Bütün pattern budur. Qalan hər şey hansı tool-ların mövcud olduğu, context-in necə idarə edildiyi və icranı hansı guardrail-lərin əhatə etdiyi barədə detaldır.
Tool-lar
Tool — modelin çağırılmasını tələb edə biləcəyi funksiyadır. Hər biri modelə adı, təbii dildə təsviri və parametrləri üçün tipləşdirilmiş schema ilə təqdim olunur. Model structured call verir; runtime onu validate edir, icra edir və nəticəni mətn kimi qaytarır.
Tool-ları ağıllı, amma tələsən həmkar üçün API hazırlayırmış kimi dizayn edin:
- Hər tool-a bir iş.
search_orders(customer_id, date_range)do_database_stuff(sql)-dən yaxşıdır. - Təsvirlər prompt-dur. Təsvir modelin tool haqqında bildiyi yeganə şeydir. Nə vaxt istifadə etməli, nə vaxt etməməli və nə qaytardığını deyin.
- Hər şeyi yox, modelə lazım olanı qaytarın. 40 KB-lıq JSON qaytaran tool context-i səs-küylə doldurur. Xülasə edin, səhifələyin və ya qoyun model detalı özü istəsin.
- Error-ları məlumatlandırıcı edin. "Sifariş tapılmadı; etibarlı ID-lər ORD-123456 formatındadır" modelə özünü düzəltməyə imkan verir. Stack trace vermir.
- Mümkün olan yerdə idempotent, geri qaytarıla bilən tool-lara üstünlük verin. Model arabir yanlış tool-u çağıracaq.
Planning
Sadə agent-lər dolayısı ilə planlaşdırır: hər addım cari context-ə əsasən qərarlaşdırılır. Uzun tapşırıqlarda açıq planning kömək edir:
- Modeldən əvvəlcə plan yazmasını, sonra addım-addım icra edib planı işarələməsini istəyin.
- Addım uğursuz olanda və ya yeni məlumat üzə çıxanda yenidən planlaşdırmağa icazə verin.
- Planı context-də saxlayın ki, model ipin ucunu itirməsin.
Sadə loop aşkar şəkildə uğursuz olana qədər mürəkkəb planning framework-lərindən çəkinin. Planner-ə ehtiyacı varmış kimi görünən tapşırıqların çoxuna əslində daha yaxşı tool-lar lazımdır.
Memory və context-in idarə edilməsi
Agent-in context-i tool nəticələri ilə dolur. Uzun tapşırıq window-u tükədə bilər. Strategiyalar:
- Xülasə edin. Köhnə tool nəticələrini vaxtaşırı öyrənilənlərin yığcam xülasəsi ilə əvəz edin.
- Kənara çıxarın. Aralıq nəticələri scratchpad faylına və ya store-a yazın, context-də yalnız pointer saxlayın.
- Əhatəni daraldın. Hər alt-tapşırığa yalnız ona lazım olan məlumatla təzə context verin (sub-agent-lər) və yalnız nəticəni geri qaytarın.
Session-lar arası uzunmüddətli memory — istifadəçi üstünlükləri, keçmiş qərarlar — context window-da deyil, agent-in əvvəldə oxuyub sonda yazdığı store-da saxlanmalıdır.
Multi-agent sistemlər
Fərqli rollu bir neçə agent əməkdaşlıq edə bilər: planner, worker-lər, reviewer. Faydalar realdır (paralellik, fokuslanmış context-lər, vəzifələrin ayrılması), xərclər də realdır (koordinasiya yükü, hər handoff-da itən context, çətinləşən debugging).
Yaxşı tool-ları olan bir agent adətən orta səviyyəli tool-ları olan bir neçə agent-i üstələyir. Agent-ləri o zaman əlavə edin ki, tapşırığın həqiqətən müstəqil hissələri olsun və ya işdə marağı olmayan reviewer worker-in görə bilmədiyini görsün.
Failure mode-lar
Loop-lar. Agent eyni uğursuz hərəkəti təkrar-təkrar sınayır. İterasiyaları məhdudlaşdırın; təkrarlanan eyni call-ları aşkarlayın; "bunu artıq üç dəfə sınamısan" deyə geri bildirin.
Nəzarətsiz scope. Yazı səhvini düzəltməsi istənilən agent bütün modulu refactor edir. Prompt-da açıq scope və yalnız toxunmalı olduğuna toxuna bilən tool-larla məhdudlaşdırın.
Tool-dan yanlış istifadə. Dağıdıcı tool-u yanlış hədəfə tətbiq etmək. Geri qaytarıla bilməyən hərəkətlər üçün təsdiq tələb edin; sandbox-da işlədin; hər şeyi log-layın.
Əmin, amma yanlış nəticələr. Agent tapşırığın bitmədiyi halda bitdiyinə qərar verir. Verification addımları tələb edin: testləri işə salın, output-u yenidən oxuyun, ilkin sorğu ilə tutuşdurun.
Tool nəticələri vasitəsilə prompt injection. Agent-in oxuduğu veb səhifə və ya sənəddə "təlimatlarını unut və…" yazılıb. Bütün tool output-larına etibarsız data kimi baxın. Onları delimiter-ə bükün, modelə data olduğunu deyin və retrieval ilə gətirilən məzmunun heç vaxt yeni permission verməsinə yol verməyin.
Guardrail-lər
Dünyada hərəkət edə bilən hər agent-in ətrafında nə edə biləcəyini müəyyən edən sərhəd olmalıdır.
- Tapşırığa görə tool allowlist-i. Customer support agent-inə shell girişi lazım deyil.
- Permission səviyyələri. Oxumaq sərbəst; yazmaq log-lanaraq; silmək insan təsdiqi ilə.
- Büdcə limitləri. Hər tapşırıq üçün maksimum iterasiya, token, xərc və real vaxt.
- Sandbox-lar. Kodu və fayl əməliyyatlarını təcrid olunmuş mühitdə icra edin.
- Audit log. Hər tool call, arqumentləri və nəticəsi ilə birlikdə insanın baxa biləcəyi yerdə saxlanır.
Agent-lərin evaluation-ı
Agent-in evaluation-ı prompt-un evaluation-ından çətindir, çünki output string deyil, trajectory-dir. Ölçün:
- Tapşırığın uğurunu — nəticəsi yoxlanıla bilən realistik tapşırıqlar toplusunda.
- Səmərəliliyi: hər uğura düşən addım, token və xərc.
- Safety-ni: audit log-da guardrail pozuntularının və "az qala" hallarının tezliyi.
- Robustness-i: tool-lar arabir nasaz olanda və ya pozulmuş data qaytaranda uğur nisbəti.
Tapşırıq toplusunu agent-i qurmazdan əvvəl qurun. O sizə hansı tool-ların lazım olduğunu deyəcək.
Düşünmək üçün
- Gördüyünüz, agent loop-una çevrilə biləcək bir işi təsvir edin. Lazım olacaq tool-ları sadalayın; hər birinin təsvirini yazın.
- Hər tool-u təsnif edin: read, write, yoxsa destructive. Hər səviyyəyə hansı təsdiq lazımdır?
- Agent-inizi yoldan çıxarmaq üçün nəzərdə tutulmuş üç adversarial tool nəticəsi yazın. Çıxırmı?