๋ฐ˜์‘ํ˜•

์ œ์กฐ๊ณต์ • Agentic AI ์‹œ์Šคํ…œ์—์„œ ์—ฌ๋Ÿฌ Unit-Agent๋“ค์ด ๋™์‹œ์— ์กด์žฌํ•  ๋•Œ,
Task Routing ๋ฐ ํ˜‘์—… ์ „๋žต์„ ์–ด๋–ป๊ฒŒ ์„ค๊ณ„ํ•ด์•ผ ํšจ์œจ์ ์ธ ๋ฌธ์ œ ํ•ด๊ฒฐ์ด ๊ฐ€๋Šฅํ•œ์ง€ ์„ค๋ช…ํ•˜์‹œ์˜ค.
LangGraph ๋˜๋Š” LangChain ๊ตฌ์กฐ๋ฅผ ์˜ˆ๋กœ ๋“ค์–ด,
Super-Agent๊ฐ€ Unit-Agent๋“ค์˜ ์‹คํ–‰ ์ˆœ์„œ์™€ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋กœ์ง์„ ๊ธฐ์ˆ ํ•˜์‹œ์˜ค.

 

 

โ‘  ๊ฐœ์š” — Multi-Agent ์‹œ์Šคํ…œ์˜ ํ•„์š”์„ฑ

์ œ์กฐ ํ™˜๊ฒฝ์€ ๋ฐ์ดํ„ฐ ์œ ํ˜•(์„ผ์„œ·๋ฌธ์„œ·ํ’ˆ์งˆ์ง€ํ‘œ·์ด๋ฏธ์ง€) ์ด ๋‹ค์–‘ํ•˜๊ณ ,
๊ณผ์—… ๋ณตํ•ฉ์„ฑ(KPI ๊ณ„์‚ฐ → ์›์ธ๋ถ„์„ → ์กฐ์น˜์•ˆ ์ œ์‹œ) ์ด ๋†’๊ธฐ ๋•Œ๋ฌธ์—
๋‹จ์ผ LLM์œผ๋กœ๋Š” ์ •ํ™•์„ฑ๊ณผ ์ถ”์ ์„ฑ์ด ๋–จ์–ด์ง„๋‹ค.

๋”ฐ๋ผ์„œ “์—ญํ• ๋ณ„ ๋ถ„์—…ํ™”๋œ ๋‹ค์ค‘ ์—์ด์ „ํŠธ ๊ตฌ์กฐ(Multi-Agent System)” ๋กœ ์ „ํ™˜ํ•ด์•ผ ํ•œ๋‹ค.
์ด๋•Œ ์ค‘์‹ฌ ์—ญํ• ์€ Super-Agent๊ฐ€ ๋‹ด๋‹นํ•˜๋ฉฐ,
Unit-Agent๋Š” “์ „๋ฌธํ™”๋œ ๋„๊ตฌ ํ˜ธ์ถœ”์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํ•˜์œ„ ๊ตฌ์„ฑ์š”์†Œ๋‹ค.


โ‘ก ์ฃผ์š” ๊ตฌ์„ฑ์š”์†Œ ์ •์˜

๊ตฌ์„ฑ ์š”์†Œ์—ญํ• ์˜ˆ์‹œ
Super-Agent (Planner/Router) ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ ๋ถ„์„ํ•˜๊ณ , ํ•„์š”ํ•œ ํ•˜์œ„ Agent๋“ค์„ ํ˜ธ์ถœํ•˜๋Š” ์ง€ํœ˜์ž “์ด๋ฒˆ ์ฃผ ํ’ˆ์งˆ ๋ฆฌํฌํŠธ ์ž‘์„ฑ” → DataAgent, KPIAgent, RAGAgent ์ˆœ ํ˜ธ์ถœ
Unit-Agent ํŠน์ • ๋„๊ตฌ·๋ชจ๋ธ·DB๋ฅผ ์กฐ์ž‘ํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ฑ DataQuery, KPI, RootCause, RAG, Chart, Report
Memory / Context Store Agent ๊ฐ„ intermediate ๊ฒฐ๊ณผ ๊ณต์œ  LangGraph Memory, Redis, PostgreSQL
Execution Engine ๋ณ‘๋ ฌ/๋™์  ์‹คํ–‰ ๋ฐ ์žฅ์•  ๋ณต๊ตฌ ์ œ์–ด LangGraph, Temporal, Argo

โ‘ข Routing ์ „๋žต ์œ ํ˜•

์ „๋žต ์œ ํ˜•์„ค๋ช…์žฅ์ ๋‹จ์ 
Static Routing ๊ณ ์ •๋œ ํ”Œ๋กœ์šฐ (์˜ˆ: Data→KPI→RAG→Report) ์•ˆ์ •์„ฑ, ๋‹จ์ˆœํ•จ ์œ ์—ฐ์„ฑ ๋‚ฎ์Œ
Dynamic Routing ์ž…๋ ฅ ๋ฐ์ดํ„ฐ·ํ™•๋ฅ ๊ฐ’·์˜๋„(Intent)์— ๋”ฐ๋ผ ์‹คํ–‰ ๊ฒฝ๋กœ๋ฅผ ์‹ค์‹œ๊ฐ„ ๊ฒฐ์ • ์ž์œจ์„ฑ, ํšจ์œจ์  ์ฒ˜๋ฆฌ ์„ค๊ณ„ ๋ณต์žก
Hybrid Routing ์ฃผ์š” ๊ฒฝ๋กœ๋Š” ๊ณ ์ •, ์„ธ๋ถ€ ์„ ํƒ์€ ๋™์  ์•ˆ์ •์„ฑ๊ณผ ์œ ์—ฐ์„ฑ์˜ ๊ท ํ˜• ๊ด€๋ฆฌ ๋น„์šฉ ์ค‘๊ฐ„

โ‘ฃ LangGraph ๊ธฐ๋ฐ˜ ์„ค๊ณ„ ์˜ˆ์‹œ

nodes:
  - intent_parser
  - data_agent
  - anomaly_agent
  - rootcause_agent
  - rag_agent
  - report_agent
edges:
  - intent_parser -> data_agent
  - data_agent -> anomaly_agent
  - anomaly_agent -> rootcause_agent
  - rootcause_agent -> rag_agent [if confidence < 0.9]
  - rag_agent -> report_agent
  • Super-Agent ๋กœ์ง (Python ์˜์‚ฌ์ฝ”๋“œ)
 
if intent == "weekly_quality_report":
    run_parallel([data_agent, anomaly_agent])
    result = rootcause_agent.run(data, anomalies)
    if result.confidence < 0.9:
        rag_context = rag_agent.retrieve(result.keywords)
        result = rootcause_agent.refine(rag_context)
    report = report_agent.generate(result)

โ‘ค ์‹ค๋ฌด ์‹œ๋‚˜๋ฆฌ์˜ค ์˜ˆ์‹œ

  • ์ƒํ™ฉ: “๋ผ์ธ2 ์ˆ˜์œจ ๊ธ‰๋ฝ ๋ณด๊ณ ์„œ ์ž‘์„ฑ ์š”์ฒญ”
  1. Super-Agent๊ฐ€ intent=‘report_generation’ ๊ฐ์ง€
  2. DataAgent์™€ AnomalyAgent๋ฅผ ๋ณ‘๋ ฌ ์‹คํ–‰ (๋ฐ์ดํ„ฐ ์ง‘๊ณ„ + ์ด์ƒํƒ์ง€)
  3. RootCauseAgent๊ฐ€ SHAP ๊ธฐ๋ฐ˜ ์›์ธ ๋ถ„์„ ์ˆ˜ํ–‰ (์˜จ๋„, ์†๋„ ์˜ํ–ฅ๋„ ์‚ฐ์ถœ)
  4. Confidence=0.82 → RAGAgent ํ˜ธ์ถœํ•˜์—ฌ SOP ๊ทผ๊ฑฐ ํ™•๋ณด
  5. ReportAgent๊ฐ€ ์ตœ์ข… ๋ณด๊ณ ์„œ ์ƒ์„ฑ
  6. ๊ฒฐ๊ณผ Groundedness=0.97, CitationAccuracy=0.95 → ์Šน์ธ ํ†ต๊ณผ

โ‘ฅ ์‹ค๋ฌด์  ํšจ๊ณผ

์ง€ํ‘œ์ „ํ†ต BIAgentic AI
๋ถ„์„์‹œ๊ฐ„ 2~3์‹œ๊ฐ„ 10๋ถ„
์ •ํ™•๋„ ๋‹จ์ˆœ ํ†ต๊ณ„ ๊ธฐ๋ฐ˜ ์ธ์šฉ ๊ทผ๊ฑฐ ํฌํ•จ
์œ ์—ฐ์„ฑ ์ˆ˜๋™ ๋™์  ๋ผ์šฐํŒ…
์žฅ์•  ๋Œ€์‘ ์ˆ˜๋™ ์žฌ์‹œ๋„ ์ž๋™ ํด๋ฐฑ ๋ฐ ์žฌ์‹คํ–‰

โ‘ฆ ํ‰๊ฐ€ ํฌ์ธํŠธ

  • LangGraph ๋…ธ๋“œ ๊ตฌ์กฐ์™€ ์กฐ๊ฑด ๋ถ„๊ธฐ๋ฅผ ๋ช…ํ™•ํžˆ ๊ธฐ์ˆ ํ–ˆ๋Š”๊ฐ€
  • ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ(parallel)์™€ Confidence ๊ธฐ๋ฐ˜ ๋ถ„๊ธฐ(if) ๋กœ์ง์„ ์ œ์‹œํ–ˆ๋Š”๊ฐ€
  • Super-Agent์˜ ์˜์‚ฌ๊ฒฐ์ • ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๋ช…ํ™•ํžˆ ์„ค๋ช…ํ–ˆ๋Š”๊ฐ€
๋ฐ˜์‘ํ˜•

+ Recent posts