Spaces:
Paused
Paused
File size: 2,009 Bytes
d2585c1 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | """E2E ํ
์คํธ ์ค์ ๋ฐ ์์."""
from __future__ import annotations
import os
import time
from dataclasses import dataclass, field
from typing import Dict
BASE_URL = os.environ.get("GOVON_RUNTIME_URL", "http://localhost:7860").rstrip("/")
API_KEY = os.environ.get("API_KEY")
TIMEOUT = int(os.environ.get("E2E_TIMEOUT", "300"))
BASE_MODEL = os.environ.get("BASE_MODEL", "LGAI-EXAONE/EXAONE-4.0-32B-AWQ")
TIMESTAMP = time.strftime("%Y%m%d_%H%M%S")
RESULTS_PATH = os.environ.get("E2E_RESULTS_PATH", f"e2e_results_{TIMESTAMP}.json")
LOG_PATH = os.environ.get("E2E_LOG_PATH", f"e2e_log_{TIMESTAMP}.jsonl")
VALID_TOOLS = frozenset(
{
"api_lookup",
"draft_response",
"issue_detector",
"stats_lookup",
"keyword_analyzer",
"demographics_lookup",
}
)
# ReAct 5-node ๊ทธ๋ํ ํ์ค ํ๋ฆ (์น์ธ ๊ฒฝ๋ก)
EXPECTED_APPROVED_FLOW = [
"session_load",
"agent",
"approval_wait",
"tools",
"agent",
"persist",
]
# ๊ฑฐ์ ๊ฒฝ๋ก
EXPECTED_REJECTED_FLOW = [
"session_load",
"agent",
"approval_wait",
"persist",
]
@dataclass(frozen=True)
class NodeSLA:
"""๋
ธ๋๋ณ SLA ์๊ณ๊ฐ (์ด)."""
name: str
max_p95_sec: float
NODE_SLA_THRESHOLDS: list[NodeSLA] = [
NodeSLA("agent", 60.0),
NodeSLA("tools", 60.0),
NodeSLA("session_load", 5.0),
NodeSLA("persist", 5.0),
]
LEGAL_PATTERNS = [
r"์ \s*\d+\s*์กฐ",
r"์ \s*\d+\s*ํญ",
r"๋ฒ๋ฅ ",
r"์ํ๋ น",
r"์กฐ๋ก",
r"ํ๋ก",
r"๋๋ฒ์",
r"๋ฒ",
r"๋ น",
r"๊ท์ ",
]
CIVIL_LAW_PATTERNS = [r"๋ฏผ๋ฒ", r"์ \s*\d+\s*์กฐ", r"์๋์ฐจ", r"๊ณ์ฝ", r"์ํด๋ฐฐ์", r"์ฑ๊ถ", r"์ฑ๋ฌด"]
CRIMINAL_LAW_PATTERNS = [r"ํ๋ฒ", r"ํ์ฌ", r"์ฒ๋ฒ", r"๋ฒ๊ธ", r"์ง์ญ", r"๋ณดํธ๋ฒ", r"์ \s*\d+\s*์กฐ"]
IP_PATTERNS = [r"์ํ๋ฒ", r"ํนํ๋ฒ", r"์ ์๊ถ", r"์ง์์ฌ์ฐ", r"์ \s*\d+\s*์กฐ", r"์นจํด"]
PRECEDENT_PATTERNS = [r"๋๋ฒ์", r"ํ๋ก", r"ํ๊ฒฐ", r"์ ๊ณ ", r"\d{4}\s*[๋ค๋]\s*\d+"]
|