Fəsil 04 · 6 dəq oxu

Orchestration: LangChain, LangGraph və LlamaIndex

Orchestration: LangChain, LangGraph və LlamaIndex

Fəsil 1-dəki on sətir idi. Production-da isə onun ətrafında template-ləri, model abstraksiyası, tool binding, memory, retriever-lər, , , 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:

EhtiyacNə verir
Model abstraksiyasıFərqli provider-ləri eyni interfeyslə çağırmaq
template-ləriDəyişənli, versiyalanan prompt-lar
Tool bindingFunksiyanı schema ilə model-ə tanıtmaq və çağırışı icra etmək
CompositionAddımları ardıcıl, paralel və şərti birləşdirmək
MemorySöhbət tarixçəsi və uzunmüddətli store-lar
Retriever-lərVector store və üçün vahid interfeys
Cavabı schema-ya məcbur etmək və validate etmək
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 incident zamanı qara qutudur.

LangChain: komponentlər və zəncirlər

LangChain-in əsas fikri komponentlərin eyni interfeysi paylaşmasıdır: , 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.

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 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. 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 üçü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: 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, 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, və sintezi birləşdirən Query engine; query engine-ləri tool kimi istifadə edən və 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 texnikaları, query rewriting, routing, self-check, burada hazır komponentlərdir.

Framework seçimi

MeyarLangChainLangGraphLlamaIndex
Əsas gücKomponentlərin tez birləşdirilməsiVəziyyətli, dövrəli, dayandırıla bilən workflowIngestion və retrieval keyfiyyəti
Control flowXətti və şərti zəncirlərİxtiyari qraf workflow
PersistenceMəhdudCheckpoint, time travelIndex persistence
Human-in-the-loopƏl iləBirinci dərəcəliMəhdud
Uyğun işEnrichment və pipeline-larıSOC , çoxaddımlı araşdırma, təsdiqli hərəkətSənəd-ağır sual-cavab

Praktik qayda: ehtiyac deterministik pipeline-dırsa, zəncir yazın və 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 framework-lərində və inteqrasiyalarında deserialization, və template injection sinfində bir neçə kritik CVE dərc olundu. Default-lara baxın: tool-lar 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ı, və xərc budget-i, sayı. Çox framework bunları dəstəkləyir, amma default olaraq açıq deyil.
  • Output validation. schema ilə, sərbəst mətn downstream-ə encoding ilə.
  • Prompt-lar version control-da. dəyişikliyi kod dəyişikliyidir: review, test, .
  • config-də deyil. manager, environment-ə minimal ötürmə, log-larda masking.
  • . URL yükləyən tool-lar daxili ünvanları, cloud metadata endpoint-lərini və link-local aralıqları rədd edir. ən çox rast gəlinən real zəiflik budur.
  • Checkpoint və trace store-ları sensitive data saxlayır. Access control, retention və database ilə eyni səviyyədə.
  • . 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

  1. 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, lazım deyil.
  2. 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?
  3. İ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?