Merge pull request #5 from FabAgentGroup/feat/orchestrator
Browse files- agents/llm.py +1 -2
- agents/orchestrator.py +26 -10
agents/llm.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
| 1 |
"""OpenAI ํด๋ผ์ด์ธํธ์ ๋ชจ๋ธ ์ค์
|
| 2 |
|
| 3 |
์๋ธ์์ด์ ํธ(cause/impact/response) = SUBAGENT_MODEL
|
| 4 |
-
์ค์ผ์คํธ๋ ์ดํฐ
|
| 5 |
๋ชจ๋ธ๋ช
์ ์ฌ๊ธฐ ํ ๊ณณ์์ ๊ด๋ฆฌํด ๊ต์ฒด๋ฅผ ์ฝ๊ฒ ํจ
|
| 6 |
"""
|
| 7 |
from functools import lru_cache
|
|
@@ -12,7 +12,6 @@ from openai import OpenAI
|
|
| 12 |
load_dotenv()
|
| 13 |
|
| 14 |
SUBAGENT_MODEL = "gpt-5-mini"
|
| 15 |
-
ORCHESTRATOR_MODEL = "gpt-5"
|
| 16 |
|
| 17 |
|
| 18 |
@lru_cache(maxsize=1)
|
|
|
|
| 1 |
"""OpenAI ํด๋ผ์ด์ธํธ์ ๋ชจ๋ธ ์ค์
|
| 2 |
|
| 3 |
์๋ธ์์ด์ ํธ(cause/impact/response) = SUBAGENT_MODEL
|
| 4 |
+
์ค์ผ์คํธ๋ ์ดํฐ๋ ํ์ฌ ๊ฒฐ์ ๋ก ์ ์ํ์๋ผ LLM ํธ์ถ ์์
|
| 5 |
๋ชจ๋ธ๋ช
์ ์ฌ๊ธฐ ํ ๊ณณ์์ ๊ด๋ฆฌํด ๊ต์ฒด๋ฅผ ์ฝ๊ฒ ํจ
|
| 6 |
"""
|
| 7 |
from functools import lru_cache
|
|
|
|
| 12 |
load_dotenv()
|
| 13 |
|
| 14 |
SUBAGENT_MODEL = "gpt-5-mini"
|
|
|
|
| 15 |
|
| 16 |
|
| 17 |
@lru_cache(maxsize=1)
|
agents/orchestrator.py
CHANGED
|
@@ -1,20 +1,36 @@
|
|
| 1 |
-
"""4-Tier ๋ฉํฐ์์ด์ ํธ ์ค์ผ์คํธ๋ ์ดํฐ
|
| 2 |
|
| 3 |
run_orchestrator()๊ฐ detection -> cause -> impact -> response ์์ผ๋ก
|
| 4 |
์๋ธ์์ด์ ํธ๋ฅผ ํธ์ถํ๊ณ ๊ฐ ๊ฒฐ๊ณผ๋ฅผ core.schema.TierData๋ก ํฉ์ณ ๋ฐํ
|
| 5 |
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
core.pipeline.REAL_AGENT_ALARMS์ ID๋ง ์ถ๊ฐํด ๋ค๋ฅธ ์๋๋ ํ์ฅ ๊ฐ๋ฅ
|
| 9 |
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
ํ์ฌ๋ ์คํ
, demo.py ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋๋ก ๋ฐํํด ํ๋ก ํธ๊ฐ M1๋ถํฐ ๋์ํ๊ฒ ํจ
|
| 13 |
"""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 14 |
from core.schema import TierData
|
| 15 |
-
from data import
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 16 |
|
| 17 |
|
|
|
|
| 18 |
def run_orchestrator(alarm_id: str) -> TierData:
|
| 19 |
-
|
| 20 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""4-Tier ๋ฉํฐ์์ด์ ํธ ์ค์ผ์คํธ๋ ์ดํฐ
|
| 2 |
|
| 3 |
run_orchestrator()๊ฐ detection -> cause -> impact -> response ์์ผ๋ก
|
| 4 |
์๋ธ์์ด์ ํธ๋ฅผ ํธ์ถํ๊ณ ๊ฐ ๊ฒฐ๊ณผ๋ฅผ core.schema.TierData๋ก ํฉ์ณ ๋ฐํ
|
| 5 |
|
| 6 |
+
๊ฐ Tier๊ฐ ์ด์ Tier์ ์ถ๋ ฅ์ ์
๋ ฅ์ผ๋ก ๋ฐ๋ ๊ณ ์ ์์กด ์์์ด๋ฏ๋ก
|
| 7 |
+
๋ณ๋ LLM ๋ผ์ฐํฐ ์์ด ๊ฒฐ์ ๋ก ์ ์ผ๋ก ์ํ์ฑ (์๋/๋น์ฉ/์์ธก์ฑ ๋ชจ๋ ์ ๋ฆฌ)
|
|
|
|
| 8 |
|
| 9 |
+
LLM 3ํ ํธ์ถ์ด ์ง๋ ฌ๋ก ์ผ์ด๋ ์ฒซ ํธ์ถ์ 1๋ถ ์ํ์ด ๊ฑธ๋ฆฌ๋ฏ๋ก
|
| 10 |
+
ํ๋ก์ธ์ค ๋ด ๊ฒฐ๊ณผ ์บ์๋ก ๋์ผ ์๋ ์ฌํธ์ถ ์ ์ฆ์ ์๋ตํ๊ฒ ํจ
|
|
|
|
| 11 |
"""
|
| 12 |
+
from functools import lru_cache
|
| 13 |
+
|
| 14 |
+
from agents.cause import run_cause
|
| 15 |
+
from agents.detection import run_detection
|
| 16 |
+
from agents.impact import run_impact
|
| 17 |
+
from agents.response import run_response
|
| 18 |
from core.schema import TierData
|
| 19 |
+
from data.demo import DEFAULT_ALARMS
|
| 20 |
+
|
| 21 |
+
|
| 22 |
+
def _find_alarm(alarm_id: str) -> dict:
|
| 23 |
+
for a in DEFAULT_ALARMS:
|
| 24 |
+
if a["id"] == alarm_id:
|
| 25 |
+
return a
|
| 26 |
+
raise ValueError(f"์๋ ID๋ฅผ ์ฐพ์ ์ ์์: {alarm_id}")
|
| 27 |
|
| 28 |
|
| 29 |
+
@lru_cache(maxsize=8)
|
| 30 |
def run_orchestrator(alarm_id: str) -> TierData:
|
| 31 |
+
alarm = _find_alarm(alarm_id)
|
| 32 |
+
tier1 = run_detection(alarm)
|
| 33 |
+
tier2 = run_cause(alarm, tier1)
|
| 34 |
+
tier3 = run_impact(alarm, tier1, tier2)
|
| 35 |
+
tier4 = run_response(alarm, tier1, tier2, tier3)
|
| 36 |
+
return {"tier1": tier1, "tier2": tier2, "tier3": tier3, "tier4": tier4}
|