hee_!J commited on
Commit
8cb8915
ยท
unverified ยท
2 Parent(s): 085208f3648770

Merge pull request #5 from FabAgentGroup/feat/orchestrator

Browse files
Files changed (2) hide show
  1. agents/llm.py +1 -2
  2. agents/orchestrator.py +26 -10
agents/llm.py CHANGED
@@ -1,7 +1,7 @@
1
  """OpenAI ํด๋ผ์ด์–ธํŠธ์™€ ๋ชจ๋ธ ์„ค์ •
2
 
3
  ์„œ๋ธŒ์—์ด์ „ํŠธ(cause/impact/response) = SUBAGENT_MODEL
4
- ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ดํ„ฐ = ORCHESTRATOR_MODEL
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 ๋ฉ€ํ‹ฐ์—์ด์ „ํŠธ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ดํ„ฐ (M2์—์„œ ๊ตฌํ˜„)
2
 
3
  run_orchestrator()๊ฐ€ detection -> cause -> impact -> response ์ˆœ์œผ๋กœ
4
  ์„œ๋ธŒ์—์ด์ „ํŠธ๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ๊ฐ ๊ฒฐ๊ณผ๋ฅผ core.schema.TierData๋กœ ํ•ฉ์ณ ๋ฐ˜ํ™˜
5
 
6
- ์„ค๊ณ„ ์›์น™: ํŠน์ • ์•Œ๋žŒ(A1)์— ํ•˜๋“œ์ฝ”๋”ฉํ•˜์ง€ ๋ง ๊ฒƒ
7
- ์•Œ๋žŒ์˜ ๊ณต์ • ํƒ€์ž…(Photo/Etch/CMP)์„ ๋ฐ›์•„ ์ฒ˜๋ฆฌํ•˜๋Š” ์ผ๋ฐ˜ ํ•จ์ˆ˜๋กœ ๋งŒ๋“ค๋ฉด
8
- core.pipeline.REAL_AGENT_ALARMS์— ID๋งŒ ์ถ”๊ฐ€ํ•ด ๋‹ค๋ฅธ ์•Œ๋žŒ๋„ ํ™•์žฅ ๊ฐ€๋Šฅ
9
 
10
- ๋ชจ๋ธ: ์„œ๋ธŒ์—์ด์ „ํŠธ = GPT-5 mini, ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ดํ„ฐ = GPT-5 (OpenAI SDK)
11
-
12
- ํ˜„์žฌ๋Š” ์Šคํ…, demo.py ๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋Œ€๋กœ ๋ฐ˜ํ™˜ํ•ด ํ”„๋ก ํŠธ๊ฐ€ M1๋ถ€ํ„ฐ ๋™์ž‘ํ•˜๊ฒŒ ํ•จ
13
  """
 
 
 
 
 
 
14
  from core.schema import TierData
15
- from data import demo
 
 
 
 
 
 
 
16
 
17
 
 
18
  def run_orchestrator(alarm_id: str) -> TierData:
19
- # TODO(M2/M3) detection->cause->impact->response ์„œ๋ธŒ์—์ด์ „ํŠธ ํ˜ธ์ถœ๋กœ ๊ต์ฒด
20
- return demo.TIER_DATA[alarm_id]
 
 
 
 
 
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}