Orchestration: LangChain, LangGraph və LlamaIndex
Orchestration: LangChain, LangGraph və LlamaIndex
Fəsil 1-dəki agent loop-u on sətir idi. Production-da isə onun ətrafında prompt template-ləri, model abstraksiyası, tool binding, memory, retriever-lər, structured output, retry, streaming, trace və checkpoint lazımdır. Orchestration framework-ləri məhz bu təkrarlanan qatı verir ki, komanda loop-u yox, tapşırığı yazsın. Bu fəsil üç geniş yayılmış framework-ə pattern səviyyəsində baxır: komponentləri bir-birinə bağlamaq üçün LangChain, vəziyyəti olan və dövrə vuran workflow-lar üçün LangGraph, data-ya köklənmiş sistemlər üçün LlamaIndex. API detalları ildə bir neçə dəfə dəyişdiyi üçün burada yoxdur; dəyişməyən şey hər framework-ün cavab verdiyi sualdır.
Orchestration qatının vəzifələri
Framework-dən asılı olmayaraq eyni ehtiyaclar görünür:
| Ehtiyac | Nə verir |
|---|---|
| Model abstraksiyası | Fərqli provider-ləri eyni interfeyslə çağırmaq |
| Prompt template-ləri | Dəyişənli, versiyalanan prompt-lar |
| Tool binding | Funksiyanı schema ilə model-ə tanıtmaq və çağırışı icra etmək |
| Composition | Addımları ardıcıl, paralel və şərti birləşdirmək |
| Memory | Söhbət tarixçəsi və uzunmüddətli store-lar |
| Retriever-lər | Vector store və hybrid search üçün vahid interfeys |
| Structured output | Cavabı schema-ya məcbur etmək və validate etmək |
| Tracing | Hər addımın girişini, çıxışını, gecikməsini və xərcini qeyd etmək |
Sonuncu bənd security üçün ən vaciblərindəndir: trace-i olmayan agent incident zamanı qara qutudur.
LangChain: komponentlər və zəncirlər
LangChain-in əsas fikri komponentlərin eyni interfeysi paylaşmasıdır: prompt, model, parser, retriever və tool hamısı giriş alıb çıxış verir, stream və batch dəstəkləyir. Komponentlər pipe operatoru ilə zəncirə bağlanır:
chain = prompt | model | parser
Zəncirlər üç formada qurulur. Sequential-da hər addımın çıxışı növbətinin girişidir. Parallel-də eyni giriş bir neçə addıma gedir və nəticələr birləşdirilir. Conditional-da router addımı girişə görə hansı zəncirin işləyəcəyini seçir.
Security komandası üçün tipik zəncir alert analizidir:
alert_text
→ parse : host, user, process, hash kimi field-ləri çıxar
→ enrich : paralel olaraq hash reputation, user-in son login-ləri, asset profili
→ classify : severity və category, structured output ilə
→ recommend : runbook-dan uyğun addımları retrieve et və cavab yaz
Model dörd dəfə çağırılır, amma heç bir addımda yol seçmir; yolu developer çəkib. Fəsil 1-in cədvəlində bu, workflow-dur. Çox vaxt məhz bu lazımdır: deterministik, test edilə bilən, ucuz.
Structured output zəncirlərin ən faydalı hissəsidir. Model-dən schema-ya uyğun JSON istənilir və parser onu validate edir:
{ "severity": "high", "category": "credential-access", "confidence": 0.82,
"evidence": ["logon from new ASN", "LSASS access by non-system process"] }
Schema-ya uyğun olmayan cavab rədd edilir və yenidən istənilir. CyberSecurity kitabının output handling qaydası burada da keçərlidir: model çıxışı downstream üçün untrusted input-dur.
LangChain-in agent dəstəyi də var, amma mürəkkəb, vəziyyətli və dövrə vuran işlər üçün eyni komanda ayrıca kitabxana yaratdı.
LangGraph: state, node və edge
Zəncir xətti və ya budaqlı ola bilər, amma dövrə vura bilmir. Agent isə dövrədir: düşün, hərəkət et, bax, yenidən düşün. LangGraph workflow-u yönlü qraf kimi təsvir edir:
- State: bütün node-ların paylaşdığı typed obyekt: mesajlar, tapılan faktlar, cari plan, qalan budget.
- Node: state-i alıb yenilənmiş state qaytaran funksiya: model çağırışı, tool icrası və ya adi kod.
- Edge: node-lar arasında keçid; conditional edge state-ə baxıb növbəti node-u seçir.
START → triage ─┬─ benign → close → END
├─ needs_data → investigate → triage (dövrə)
└─ suspicious → human_review → respond → END
Üç xüsusiyyət agent-lər üçün həlledicidir.
Persistence. Hər addımdan sonra state checkpoint-ə yazılır. Proses çökəndə qaldığı yerdən davam edir; bir saat çəkən araşdırma yarıda itmir.
Interrupt. Qraf müəyyən node-dan əvvəl dayanır, state saxlanılır, insan baxır və təsdiqlə və ya düzəlişlə davam etdirir. Təsdiq ekranı state-i göstərir: agent nə tapıb, nə etmək istəyir, hansı arqumentlərlə. Fəsil 1-də "Davam?" düyməsinin control olmadığını demişdik; control-un necə göründüyü budur.
Time travel. Checkpoint-lər saxlanıldığı üçün əvvəlki state-ə qayıdıb fərqli yol sınamaq olur. Incident analizində bu, trajectory-nin tam yenidən oxunmasıdır.
Nümunə: Known Exploited Vulnerabilities kataloqu ilə işləyən triage qrafı. Node-lar yeni qeydləri çəkir, hər CVE üçün asset inventory-də təsirlənən sistemləri tapır, exposure-a görə prioritet verir, yüksək prioritetlər üçün insan təsdiqindən sonra ticket yaradır və hesabat yazır. Conditional edge təsirlənən asset olmayanda ticket node-unu atlayır. State-də hər addımın sübutu saxlanılır və hesabat ondan yaranır.
Qraf çəkmək loop yazmaqdan çox düşünmə tələb edir. Amma bu düşünmə məhz security review-nun istədiyi şeydir: hansı node hansı tool-a çatır, hansı keçiddə insan var, state-də hansı sensitive data yaşayır.
LlamaIndex: data-dan başlayan framework
LangChain və LangGraph hərəkətə köklənib. LlamaIndex data-dan başlayır: sənədləri yükləmək, bölmək, index-ləmək və sorğulamaq. Əsas anlayışlar: Document və onun metadata-lı Node-ları; müxtəlif Index növləri, vector ən yayılmışı, amma keyword, summary, tree və knowledge graph də var; Index üzərində retrieval, reranking və sintezi birləşdirən Query engine; query engine-ləri tool kimi istifadə edən agent-lər və event-driven workflow-lar.
Policy-lər, audit sübutları, vendor sənədləri və incident report-ları kimi heterogen korpus üzərində sual-cavab quranda LlamaIndex-in data primitivləri daha zəngindir. Fəsil 2-dəki agentic RAG texnikaları, query rewriting, routing, self-check, burada hazır komponentlərdir.
Framework seçimi
| Meyar | LangChain | LangGraph | LlamaIndex |
|---|---|---|---|
| Əsas güc | Komponentlərin tez birləşdirilməsi | Vəziyyətli, dövrəli, dayandırıla bilən workflow | Ingestion və retrieval keyfiyyəti |
| Control flow | Xətti və şərti zəncirlər | İxtiyari qraf | Event-driven workflow |
| Persistence | Məhdud | Checkpoint, time travel | Index persistence |
| Human-in-the-loop | Əl ilə | Birinci dərəcəli | Məhdud |
| Uyğun iş | Enrichment və classification pipeline-ları | SOC agent, çoxaddımlı araşdırma, təsdiqli hərəkət | Sənəd-ağır sual-cavab |
Praktik qayda: ehtiyac deterministik pipeline-dırsa, zəncir yazın və agent qurmayın. Model-in yol seçməsi, dövrə vurması və insan təsdiqi lazımdırsa, qraf. Problemin ağırlığı data-nın çoxluğundadırsa, data-ya köklənmiş framework. Bir layihədə üçü də ola bilər.
Framework seçimi eyni zamanda security qərarıdır. Hər framework yüzlərlə dependency gətirir və 2025–2026-da agent framework-lərində və inteqrasiyalarında deserialization, SSRF və template injection sinfində bir neçə kritik CVE dərc olundu. Default-lara baxın: tool-lar sandbox-da işləyirmi, checkpoint store-da nə saxlanılır, trace-lər hara gedir, URL yükləyən tool-lar daxili şəbəkəyə çata bilirmi.
Orchestration qatının hardening-i
- Tool schema contract-dır. Arqumentlər schema ilə validate olunur; shell və ya SQL-ə gedən sərbəst mətn arqumenti yoxdur.
- Limit-lər. Rekursiya dərinliyi, iterasiya sayı, token və xərc budget-i, tool call sayı. Çox framework bunları dəstəkləyir, amma default olaraq açıq deyil.
- Output validation. Structured output schema ilə, sərbəst mətn downstream-ə encoding ilə.
- Prompt-lar version control-da. Prompt dəyişikliyi kod dəyişikliyidir: review, test, rollback.
- Secret-lər config-də deyil. Secret manager, environment-ə minimal ötürmə, log-larda masking.
- SSRF. URL yükləyən tool-lar daxili ünvanları, cloud metadata endpoint-lərini və link-local aralıqları rədd edir. Agent-lərdə ən çox rast gəlinən real zəiflik budur.
- Checkpoint və trace store-ları sensitive data saxlayır. Access control, retention və encryption database ilə eyni səviyyədə.
- Sandbox. Kod icra edən tool-lar izolyasiya olunmuş mühitdə, egress məhdud, fayl sistemi müvəqqəti.
- Dependency hygiene. Versiya pin-ləmə, SBOM, CVE izləmə; framework upgrade-i test tələb edir.
Tapşırıqlar
- Alert analizi zəncirini öz komandanızın alert formatı üçün çəkin: hansı field-lər parse olunur, hansı enrichment-lər paralel gedir, classify addımının schema-sı nədir. Model-in yol seçdiyi nöqtə varmı? Yoxdursa, agent lazım deyil.
- KEV triage qrafını LangGraph terminləri ilə yazın: state field-ləri, node-lar, conditional edge-lər, interrupt nöqtəsi. State-də hansı məlumat sensitive-dir və checkpoint store-u necə qoruyardınız?
- İstifadə etdiyiniz framework-ün son altı ayda dərc olunmuş CVE-lərini tapın. Hansı sinifdəndir, sizin istifadənizə aiddirmi, dependency-lər pin-lənibmi?