English | ํ๊ตญ์ด
ํ๊ตญ์ด ๋๊ตฌ ํธ์ถ(Tool-Calling) ์์ด์ ํธ๋ฅผ ์ํ ์ข ํฉ ํ๊ฐ ๋ฒค์น๋งํฌ
Ko-AgentBench๋ AI ์์ด์ ํธ๊ฐ ๋ค์ด๋ฒ ๊ฒ์, ์นด์นด์ค๋งต, ์ํธํํ ๊ฑฐ๋์, ์ฃผ์ ์กฐํ ๋ฑ ํ๊ตญ ์ฌ์ฉ์๊ฐ ์ค์ ๋ก ์ฌ์ฉํ๋ ๋๊ตฌ๋ค์ ์ผ๋ง๋ ํจ๊ณผ์ ์ผ๋ก ํ์ฉํ๋์ง ํ๊ฐํฉ๋๋ค.
- ๐ฐ๐ท ํ๊ตญ ํนํ: ๋ค์ด๋ฒ, ์นด์นด์ค, ํฐ๋งต, ์ ๋นํธ/๋น์ธ, LS์ฆ๊ถ, ์๋ผ๋ ๋ฑ ํ๊ตญ ์๋น์ค API ํ์ฉ
- ๐ API ํค ๋ถํ์: ์บ์ ๊ธฐ๋ฐ ์๋ API๋ก ์ค์ API ํค ์์ด๋ ์ฆ์ ํ๊ฐ ๊ฐ๋ฅ
- ๐ฏ 7๊ฐ์ง ๋ ๋ฆฝ ํ๊ฐ: ๋๊ตฌ ์ ํ, ์์ฐจ/๋ณ๋ ฌ ์ถ๋ก , ์ค๋ฅ ์ฒ๋ฆฌ, ํจ์จ์ฑ, ์ฅ๊ธฐ ๋งฅ๋ฝ ๋ฑ ๋ค๊ฐ๋ ์ธก์
- ๐ ์ฌํ ๊ฐ๋ฅ: ๋์ผ ์กฐ๊ฑด์์ ๋ฐ๋ณต ์คํ ๋ณด์ฅ, ์ฐ๊ตฌ ์ฌํ์ฑ ํ๋ณด
Tip
Why Ko-AgentBench?
๊ธฐ์กด ๋ฒค์น๋งํฌ์ ํ๊ณ
- ๋๋ถ๋ถ์ ๋๊ตฌ ํธ์ถ ๋ฒค์น๋งํฌ๋ ์์ด ์ค์ฌ์ด๋ฉฐ, ํ๊ตญ์ด ํ๊ฒฝ๊ณผ ํ๊ตญ ์ฌ์ฉ์์ ์ค์ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๋ฐ์ํ์ง ๋ชปํจ
- ๋จ์ํ "์ ํํ API๋ฅผ ํธ์ถํ๋๊ฐ"๋ง ํ๊ฐํ๊ณ , ์ค์ ์ ๋ฌด ํ๋ฆ์ ๋ณต์ก์ฑ(์ค๋ฅ ์ฒ๋ฆฌ, ํจ์จ์ฑ, ๋งฅ๋ฝ ์ ์ง ๋ฑ)์ ๊ณ ๋ คํ์ง ์์
Ko-AgentBench์ ์ฐจ๋ณ์
- ํ๊ตญ ์ค์ฌ์ฉ ๋๊ตฌ ๊ธฐ๋ฐ ํ๊ฐ: ๋ค์ด๋ฒ ๊ฒ์/๋ธ๋ก๊ทธ, ์นด์นด์ค ์ง๋/์ฅ์๊ฒ์, ํฐ๋งต ๊ฒฝ๋ก์๋ด, ์ ๋นํธ/๋น์ธ ์ํธํํ ๊ฑฐ๋, LS์ฆ๊ถ ์ฃผ์์กฐํ, ํ๊ตญ๊ด๊ด๊ณต์ฌ ์ถ์ ์ ๋ณด, ์๋ผ๋ ๋์๊ฒ์ ๋ฑ ํ๊ตญ์ธ์ด ์ผ์์ ์ผ๋ก ์ฌ์ฉํ๋ ์๋น์ค๋ก ๊ตฌ์ฑ
- ํ์ค์ ์ธ ๋ค์ค ํด ์๋๋ฆฌ์ค: ๋จ์ผ API ํธ์ถ์ด ์๋, ์ฌ๋ฌ ๋๊ตฌ๋ฅผ ์ฐ๊ฒฐํ๊ณ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ์ค์ ์ ๋ฌด ํ๋ฆ ๋ฐ์
- ์ข ํฉ์ ํ๊ฐ ์ฒด๊ณ: ํ์ค์ฑ, ๋ช ํ์ฑ, ํ๋ณ๋ ฅ, ๊ฒฌ๊ณ ์ฑ, ํจ์จ์ฑ, ์ฌํ์ฑ, ํ์ฅ์ฑ์ 7๊ฐ์ง ์์น ๊ธฐ๋ฐ ํ๊ฐ
Ko-AgentBench๋ ์ฌ์ ์์ง๋ API ์๋ต ์บ์๋ฅผ ์ ๊ณตํ์ฌ ์ค์ API ํธ์ถ ์์ด๋ ๋ฒค์น๋งํฌ๋ฅผ ์คํํ ์ ์์ต๋๋ค.
- Read ๋ชจ๋ (๊ธฐ๋ณธ): ์บ์๋ง ์ฌ์ฉ, API ํค ๋ถํ์ โ ๋๊ตฌ๋ ์ฆ์ ํ๊ฐ ๊ฐ๋ฅ
- Write ๋ชจ๋: ์ค์ API ํธ์ถ ํ ์บ์ ์ ์ฅ โ ์๋ก์ด ๋ฐ์ดํฐ์ ํ์ฅ ์ ์ฌ์ฉ
# API ํค ์์ด ์คํ (์บ์ ๋ชจ๋)
uv run run_benchmark_with_logging.py --levels L1 --model openai/gpt-4
# ์ค์ API ํธ์ถ (API ํค ํ์)
uv run run_benchmark_with_logging.py --cache-mode writeKo-AgentBench๋ ํ๊ตญ ์ฌ์ฉ์๊ฐ ์ค์ ๋ก ์ฌ์ฉํ๋ ๋ค์ํ ์๋น์ค์ API๋ฅผ ์ ๊ณตํฉ๋๋ค.
| ์๋น์ค | ๋๊ตฌ | ์ค๋ช |
|---|---|---|
| ๋ค์ด๋ฒ ๊ฒ์ | Search_naver_webSearch_naver_blogSearch_naver_news |
๋ค์ด๋ฒ ํตํฉ๊ฒ์, ๋ธ๋ก๊ทธ, ๋ด์ค ๊ฒ์ API |
| ์นด์นด์ค ๋ก์ปฌ | AddressToCoord_kakaoCoordToAddress_kakaoPlaceSearch_kakaoCategorySearch_kakao |
์ฃผ์-์ขํ ๋ณํ, ์ฅ์ ๊ฒ์, ์นดํ ๊ณ ๋ฆฌ๋ณ ๊ฒ์ |
| ์ ๋นํธ | CryptoPrice_upbitMarketList_upbitCryptoCandle_upbit |
์ํธํํ ํ์ฌ๊ฐ, ๋ง์ผ ๋ชฉ๋ก, ์บ๋ค ์ฐจํธ ๋ฐ์ดํฐ ์กฐํ |
| ๋น์ธ | CryptoPrice_bithumbOrderBook_bithumbMarketList_bithumbCryptoCandle_bithumb |
์ํธํํ ํ์ฌ๊ฐ, ํธ๊ฐ, ๋ง์ผ ๋ชฉ๋ก, ์บ๋ค ์ฐจํธ ์กฐํ |
| LS์ฆ๊ถ | StockPrice_lsMarketIndex_lsOrderBook_lsSectorStock_lsStockTrades_ls |
๊ตญ๋ด์ธ ์ฃผ์ ํ์ฌ๊ฐ, ์์ฅ์ง์, ํธ๊ฐ, ์ ์ข ๋ณ ์ข ๋ชฉ, ์ฒด๊ฒฐ ๋ด์ญ ์กฐํ |
| ํ๊ตญํฌ์์ฆ๊ถ | StockPrice_kisUSStockPrice_kisStockChart_kis |
๊ตญ๋ด ์ฃผ์ ํ์ฌ๊ฐ, ๋ฏธ๊ตญ ์ฃผ์ ํ์ฌ๊ฐ, ์ฐจํธ ๋ฐ์ดํฐ ์กฐํ |
| ์๋ผ๋ | ItemSearch_aladinItemList_aladinItemLookup_aladin |
๋์ ๊ฒ์, ๋ฒ ์คํธ์ ๋ฌ/์ ๊ฐ ๋ชฉ๋ก, ๋์ ์์ธ์ ๋ณด ์กฐํ |
| ํฐ๋งต | POISearch_tmapGeocoding_tmapReverseGeocoding_tmapCarRoute_tmapCategorySearch_tmap |
POI ๊ฒ์, ์ฃผ์-์ขํ ๋ณํ, ์๋์ฐจ ๊ฒฝ๋ก ์๋ด, ์นดํ ๊ณ ๋ฆฌ ๊ฒ์ |
| ๋ค์ด๋ฒ ์ง๋ | Directions_naver |
๋์ค๊ตํต/์๋์ฐจ/๋๋ณด ๊ฒฝ๋ก ์๋ด |
Note: ๋ชจ๋ API๋ ์บ์ ๊ธฐ๋ฐ์ผ๋ก ๋์ํ๋ฉฐ, Read ๋ชจ๋(๊ธฐ๋ณธ๊ฐ)์์๋ ์ค์ API ํค ์์ด ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค.
์์ด์ ํธ์ ๋๊ตฌ ํธ์ถ ๋ฅ๋ ฅ์ ๋จ์ผ ์ฐจ์์ผ๋ก ์ธก์ ํ ์ ์์ต๋๋ค. "๋๊ตฌ๋ฅผ ์ ์ด๋ค"๋ ๊ฒ์ ์ ํํ ๋๊ตฌ๋ฅผ ์ ํํ๋ ๋ฅ๋ ฅ, ์ฌ๋ฌ ๋๊ตฌ๋ฅผ ์ฐ๊ฒฐํ๋ ๊ณํ ๋ฅ๋ ฅ, ์ค๋ฅ์ ๋์ํ๋ ๊ฐ๊ฑด์ฑ, ํจ์จ์ ์ผ๋ก ์๋ํ๋ ๋ฅ๋ ฅ ๋ฑ ์ฌ๋ฌ ๋ ๋ฆฝ์ ์ธ ์ญ๋์ ์กฐํฉ์ ๋๋ค. Ko-AgentBench๋ ์ด๋ฌํ ์ญ๋์ 7๊ฐ์ง๋ก ๋ถ๋ฆฌํ์ฌ ๊ฐ๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ์ธก์ ํฉ๋๋ค. ์ด๋ ๋์ด๋ ๋จ๊ณ๊ฐ ์๋๋ผ, ์๋ก ๋ค๋ฅธ ์ธก๋ฉด์ ๋ฅ๋ ฅ์ ํ๊ฐํ๋ ์ฒด๊ณ์ ๋๋ค.
| ๋ ๋ฒจ | Task | ์ค๋ช |
|---|---|---|
| L1 | ๋จ์ผ ๋๊ตฌ ํธ์ถ | ์ฃผ์ด์ง ๋จ์ผ ๋๊ตฌ๋ฅผ ์ ํํ ํ๋ผ๋ฏธํฐ๋ก ์คํํ๋ ๋ฅ๋ ฅ ๊ฒ์ฆ |
| L2 | ๋๊ตฌ ์ ํ | ์ฌ๋ฌ ๋๊ตฌ ์ค ์ฌ์ฉ์ ์์ฒญ์ ๊ฐ์ฅ ์ ํฉํ ๋๊ตฌ๋ฅผ ์ ํํ๋ ๋ฅ๋ ฅ ํ๊ฐ |
| L3 | ์์ฐจ์ ์ถ๋ก | ํ ๋๊ตฌ์ ์ถ๋ ฅ์ ๋ค์ ๋๊ตฌ์ ์ ๋ ฅ์ผ๋ก ์ฌ์ฉํ๋ ์์ฐจ์ ๊ณํ ๋ฐ ์คํ ๋ฅ๋ ฅ ํ๊ฐ |
| L4 | ๋ณ๋ ฌ์ ์ถ๋ก | ์ฌ๋ฌ ๋๊ตฌ๋ฅผ ๋์์ ํธ์ถํ ํ, ๊ทธ ๊ฒฐ๊ณผ๋ค์ ์ข ํฉํ์ฌ ๊ฒฐ๋ก ์ ๋์ถํ๋ ๋ฅ๋ ฅ ํ๊ฐ |
| L5 | ์ค๋ฅ ์ฒ๋ฆฌ์ ๊ฐ๊ฑด์ฑ | API ํธ์ถ ์คํจ, ์ ๋ณด ๋ถ์กฑ ๋ฑ ์์ธ์ ์ธ ์ค๋ฅ ์ํฉ์ ๋์ฒํ๋ ๋ฅ๋ ฅ ํ๊ฐ |
| L6 | ํจ์จ์ ์ธ ๋๊ตฌ ํ์ฉ | ์ด์ ๋ํ์ ๋๊ตฌ ํธ์ถ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฌ์ฉํ์ฌ ๋ถํ์ํ ๋ฐ๋ณต ์คํ์ ํผํ๋ ํจ์จ์ฑ ํ๊ฐ |
| L7 | ์ฅ๊ธฐ ์ปจํ ์คํธ ๊ธฐ์ต | ๊ธด ๋ํ์ ์ ์ฒด ๋งฅ๋ฝ์ ๊ธฐ์ตํ๊ณ ํ์ฉํ์ฌ ์ ์ ํ ๋๊ตฌ๋ฅผ ํธ์ถํ๋ ๋ฅ๋ ฅ ํ๊ฐ |
7๊ฐ์ง ์ญ๋์ ๊ฐ๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ์ธก์ ๋๋ฉฐ, ์ข ํฉ ์ ์๋ ์ด๋ค์ ๊ฐ์ค ํ๊ท ์ผ๋ก ์ฐ์ถ๋ฉ๋๋ค. ์ด๋ฅผ ํตํด ๋ชจ๋ธ์ ๊ฐ์ ๊ณผ ์ฝ์ ์ ์ธ๋ฐํ๊ฒ ํ์ ํ ์ ์์ผ๋ฉฐ, ๊ฐ์ ์ด ํ์ํ ์์ญ์ ๋ช ํํ ์๋ณํ ์ ์์ต๋๋ค.
# ์ ์ฅ์ ํด๋ก
git clone https://github.com/Hugging-Face-KREW/Ko-AgentBench
cd Ko-AgentBench
# uv ์ค์น (๋ฏธ์ค์น ์)
curl -LsSf https://astral.sh/uv/install.sh | sh
# ์์กด์ฑ ์ค์น
uv syncํ๊ฐํ ๋ชจ๋ธ์ API ํค๋ง ์ค์ ํ๋ฉด ๋ฉ๋๋ค (๋๊ตฌ API ํค๋ ์บ์ ๋ชจ๋์์ ๋ถํ์).
# LLM Model API key (ํ์)
export OPENAI_API_KEY="your-openai-key"
export ANTHROPIC_API_KEY="your-anthropic-key"
export GEMINI_API_KEY="your-gemini-key"# ๋ฒค์น๋งํฌ ์คํ (L1 ๋ ๋ฒจ, ์บ์ ์ฝ๊ธฐ ๋ชจ๋)
uv run run_benchmark_with_logging.py --levels L1 --model openai/gpt-4
# ํ๊ฐ (์คํ ๋ ์ง๋ฅผ YYYYMMDD ํ์์ผ๋ก ์
๋ ฅ)
uv run evaluate_model_run.py --date 20251022 --model openai/gpt-4 --format allKo-AgentBench/
โโ bench/
โ โโ tasks/ # YAML ํ์คํฌ ์ ์
โ โโ tools/ # ๋๊ตฌ ์คํ๊ณผ ์ด๋ํฐ
โ โโ runner/ # ์คํ ์์ง๊ณผ ๋ฉํธ๋ฆญ
โ โโ cache/ # API ์๋ต ์บ์
โโ logs/ # ์คํ ๋ก๊ทธ
โโ reports/ # ํ๊ฐ ๋ณด๊ณ ์
โโ configs/ # ์ค์ ํ์ผ
โโ run_benchmark_with_logging.py
โโ evaluate_model_run.py
โโ README.md
[1] ์คํ: run_benchmark_with_logging.py
โโ ์คํ ๋ก๊ทธ โ logs/ ๋๋ ํ ๋ฆฌ
(๋ํ, ๋๊ตฌ ํธ์ถ, ํ๋ผ๋ฏธํฐ, ์บ์ ์ ์ค๋ฅ , ์ค๋ฅ)
[2] ํ๊ฐ: evaluate_model_run.py
โโ ํ๊ฐ ๋ณด๊ณ ์ โ reports/{model}_{date}/
(์งํ ์ง๊ณ, JSON/CSV/Markdown ํ์)
์คํ๊ณผ ํ๊ฐ๋ฅผ ๋ถ๋ฆฌํ์ฌ ๋ ๋ฆฝ์ ์ธ ์ฌํ๊ณผ ์๋ํ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
run_benchmark_with_logging.py๋ก ๋ชจ๋ธ์ ํ๊ฐํฉ๋๋ค.
# ์ ์ฒด ๋ ๋ฒจ ์คํ (์บ์ ์ฝ๊ธฐ ๋ชจ๋)
uv run run_benchmark_with_logging.py
# ํน์ ๋ ๋ฒจ๋ง ์คํ
uv run run_benchmark_with_logging.py --levels L1,L2,L3
# ํน์ ๋ชจ๋ธ ์ง์
uv run run_benchmark_with_logging.py --model openai/gpt-4
# ๋ก์ปฌ ๋ชจ๋ธ ์ฌ์ฉ
uv run run_benchmark_with_logging.py --use-local --model Qwen/Qwen2.5-7B-Instruct
# API ํธ์ถ ํ ์บ์ ์ ์ฅ
uv run run_benchmark_with_logging.py --cache-mode write
# ํ์คํฌ 3ํ ๋ฐ๋ณต ์ํ
uv run run_benchmark_with_logging.py --repetition 3๋ฐ์ดํฐ์ ์ ํ
--levels: ์คํํ ๋ ๋ฒจ (์:L1,L2,L6,L7) โ ๊ธฐ๋ณธ๊ฐ: ์ ์ฒด
๋ชจ๋ธ ์ค์
--model: ๋ชจ๋ธ ID (์:openai/gpt-4,anthropic/claude-3-5-sonnet-20241022)--use-local: ๋ก์ปฌ Transformers ์ฌ์ฉ--quantization:4bit/8bit--device:cuda/cpu/auto--dtype:auto/float16/bfloat16/float32
์คํ ์ ์ด
--max-steps: ํ์คํฌ๋น ์ต๋ ๋จ๊ณ (๊ธฐ๋ณธ: 10)--timeout: ํ์คํฌ๋น ์๊ฐ ์ ํ(์ด) (๊ธฐ๋ณธ: 60)--repetitions: ๋ฐ๋ณต ์คํ ํ์ (Pass@k ๊ณ์ฐ์ฉ)--no-save-logs: ๋ก๊ทธ ์ ์ฅ ๋นํ์ฑํ
์บ์ ๋ชจ๋
--cache-mode:read(๊ธฐ๋ณธ): ์ ์ฅ๋ ์บ์๋ง ์ฌ์ฉwrite: ์ค์ API ํธ์ถ ํ ์บ์ ์ ์ฅ (configs/secrets์ API ํค ํ์)
๊ฒฐ๊ณผ ์ ์ฅ ์์น
- ๊ธฐ๋ณธ:
logs/benchmark_results/by_model/{๋ชจ๋ธ๋ช }/{ํ์์คํฌํ}/
evaluate_model_run.py๋ก ์คํ ๋ก๊ทธ๋ฅผ ๋ถ์ํ์ฌ ๋ณด๊ณ ์๋ฅผ ์์ฑํฉ๋๋ค.
# ๊ธฐ๋ณธ ํ๊ฐ
uv run evaluate_model_run.py --date 20251022 --model azure/gpt-4o
# ๋น ๋ฅธ ํ
์คํธ (๋ ๋ฒจ๋น 1๊ฐ)
uv run evaluate_model_run.py --date 20251022 --model azure/gpt-4o --quick--date: ๋ฒค์น๋งํฌ ์คํ ๋ ์ง (YYYYMMDD ํ์)--model: ํ๊ฐํ ๋ชจ๋ธ ID--judge-models: ํ๊ฐ ๋ชจ๋ธ(๋ค) (๊ธฐ๋ณธ:gpt-4o๋จ์ผ ๋ชจ๋ธ, ์์๋ธ ์ํ๋ฉด ์ฌ๋ฌ ๊ฐ ๋ชจ๋ธ ์ง์ )--sample N: ๋ ๋ฒจ๋น N๊ฐ๋ง ํ๊ฐ--quick: ๋ ๋ฒจ๋น 1๊ฐ๋ง ํ๊ฐ (์ํ๋ง)--format: ์ถ๋ ฅ ํ์ (json/csv/markdown/all)
- ์ถ๋ ฅ:
reports/{model}_{date}/evaluation_report.jsonevaluation_summary.csvevaluation_report.md
์์ด์ ํธ์ ๋๊ตฌ ํธ์ถ ๋ฅ๋ ฅ์ 7๊ฐ ๋ ๋ฒจ๋ก ํ๊ฐํฉ๋๋ค.
| Level | ํ๊ฐ ์์ญ | ์์ | ์ฃผ์ ์งํ |
|---|---|---|---|
| L1 | ๋จ์ผ ๋๊ตฌ ํธ์ถ | "ํ๊ต์ญ์์ ์ ์ค์ผ๊ตฌ์ฅ๊น์ง ์์ฐจ๋ก ๋ช ๋ถ ๊ฑธ๋ฆด๊น?" | ToolAcc, ArgAcc, CallEM, RespOK |
| L2 | ๋๊ตฌ ์ ํ | "POSCOํ๋ฉ์ค ์ฃผ์์ ํ์ฌ ํธ๊ฐ์ฐฝ์ ํ์ธํ๊ณ ์ถ์ด" | SelectAcc |
| L3 | ๋๊ตฌ ์์ฐจ ์ถ๋ก | "์ฒญ๋๋ฆฌ์ญ ๊ทผ์ฒ ๋ํ๊ต ์ฐพ์๋ณด๊ณ , ๊ทธ ํ๊ต ๊ทผ์ฒ์ ๋ณ์ ๋ช ๊ฐ ์๋์ง ์กฐ์ฌํด์ค" | FSM, PSM, ฮSteps_norm, ProvAcc |
| L4 | ๋๊ตฌ ๋ณ๋ ฌ ์ถ๋ก | "์ฌ๋ฌ ๊ฑฐ๋์์์ ๋นํธ์ฝ์ธ ์์ธ ๋์ ์กฐํ ํ ๋น๊ต" | Coverage, SourceEPR |
| L5 | ์ค๋ฅ ์ฒ๋ฆฌ์ ๊ฐ๊ฑด์ฑ | "์์ดํฐ 17 ์ถ์์ผ ๊ฒ์ํด์ค" (API ์คํจ ์ ๋์ฒด ๊ฒฝ๋ก) | AdaptiveRoutingScore, FallbackSR |
| L6 | ํจ์จ์ ์ธ ๋๊ตฌ ํ์ฉ | "ํ์ด์ฌ ์๊ณ ๋ฆฌ์ฆ ํธ๋ ์ด๋ฉ ์ฑ ์ฐพ์์ค" (์ค๋ณต ํธ์ถ ๋ฐฉ์ง) | ReuseRate, RedundantCallRate, EffScore |
| L7 | ์ฅ๊ธฐ ์ปจํ ์คํธ ๊ธฐ์ต | "์์ฆ ๋นํธ์ฝ์ธ์ ๊ด์ฌ์ด ์๊ฒผ๋๋ฐ..." (๋ฉํฐํด ๋ํ) | ContextRetention, RefRecall |
| ์งํ | ์ค๋ช | ๊ณ์ฐ ๋ฐฉ์ |
|---|---|---|
| SR (Success Rate) | ํ์คํฌ ์์ ์ ์ | LLM Judge ํ๊ฐ 1-5์ โ (์ ์-1)/4 |
| EPR/CVR | ์ ํจ ๋๊ตฌ ํธ์ถ ๋น์จ | ์ ํจ ํธ์ถ ์ / ์ ์ฒด ํธ์ถ ์ |
| Pass@k | kํ ์๋ ์ฑ๊ณต๋ฅ | ์ฑ๊ณต ์๋ ์ / k |
L1: ๋จ์ผ ๋๊ตฌ ํธ์ถ
| ์งํ | ์ค๋ช | ๊ณ์ฐ ๋ฐฉ์ |
|---|---|---|
| ToolAcc | ์ฌ๋ฐ๋ฅธ ๋๊ตฌ ์ ํ | ์ผ์น=1, ๋ถ์ผ์น=0 |
| ArgAcc | ์ธ์ ์ ํ๋ | LLM Judge ํ๊ฐ 1-5 โ 0-1 |
| CallEM (Call Exact Match) | ๋๊ตฌ+์ธ์ ์์ ์ผ์น | 0 ๋๋ 1 |
| RespOK | ์๋ต ํ์ ์ค์ | 0 ๋๋ 1 |
L2: ๋๊ตฌ ์ ํ
| ์งํ | ์ค๋ช | ๊ณ์ฐ ๋ฐฉ์ |
|---|---|---|
| SelectAcc | ์ฌ๋ฐ๋ฅธ ๋๊ตฌ ์ ํ๋ฅ | 0 ๋๋ 1 |
L3: ์์ฐจ์ ์ถ๋ก
| ์งํ | ์ค๋ช | ๊ณ์ฐ ๋ฐฉ์ |
|---|---|---|
| FSM (Full Sequence Match) | ํธ์ถ ์์ ์์ ์ผ์น | 0 ๋๋ 1 |
| PSM (Partial Sequence Match) | ํ์ ๋๊ตฌ ํฌํจ๋ฅ | ํฌํจ๋ ํ์ ๋๊ตฌ / ์ ์ฒด ํ์ ๋๊ตฌ |
| ฮSteps_norm | ํจ์จ์ฑ (์ต์ ๊ฒฝ๋ก ๋๋น) | min(1, ์ต์ ๋จ๊ณ / ์ค์ ๋จ๊ณ) |
| ProvAcc | ์ธ์ ์ ๋ฌ ์ ํ๋ | ์ฌ๋ฐ๋ฅธ ๋ฐ์ดํฐ ํ๋ฆ / ์ ์ฒด ํ๋ฆ |
L4: ๋ณ๋ ฌ์ ์ถ๋ก
| ์งํ | ์ค๋ช | ๊ณ์ฐ ๋ฐฉ์ |
|---|---|---|
| Coverage | ํ์ ๋๊ตฌ ์คํ๋ฅ | ์ฑ๊ณตํ ํ์ ๋๊ตฌ / ์ ์ฒด ํ์ ๋๊ตฌ |
| SourceEPR | ๋๊ตฌ๋ณ ์ ํจ ํธ์ถ๋ฅ ํ๊ท | ํ๊ท (์ ํจ ํธ์ถ / ์ ์ฒด ํธ์ถ) |
L5: ์ค๋ฅ ์ฒ๋ฆฌ์ ๊ฐ๊ฑด์ฑ
| ์งํ | ์ค๋ช | ๊ณ์ฐ ๋ฐฉ์ |
|---|---|---|
| AdaptiveRoutingScore | ์คํจ ํ ๋์ฒด ๊ฒฝ๋ก ์ ํ ๋ฏผ์ฒฉ์ฑ | 1 / (1 + ์ ํ ์ง์ฐ ๋จ๊ณ) |
| FallbackSR | ๋์ฒด ๊ฒฝ๋ก ์ฑ๊ณต๋ฅ | ๋์ฒด ์ฑ๊ณต / ๋์ฒด ์๋ |
L6: ํจ์จ์ ์ธ ๋๊ตฌ ํ์ฉ
| ์งํ | ์ค๋ช | ๊ณ์ฐ ๋ฐฉ์ |
|---|---|---|
| ReuseRate | ์ฌ์ฌ์ฉ๋ฅ | ์ฌ์ฌ์ฉ / (์ฌ์ฌ์ฉ+์ค๋ณต) |
| RedundantCallRate | ์ค๋ณต ํธ์ถ ๋ฐฉ์ง์จ | 1 - (์ค๋ณต ํธ์ถ / ์ฌ์ฌ์ฉ ๊ธฐํ) |
| EffScore | ์ฑ๊ณต ์ ํจ์จ ์ ์ | min(1, ์ต์ ๋จ๊ณ / ์ค์ ๋จ๊ณ) |
L7: ์ฅ๊ธฐ ์ปจํ ์คํธ ๊ธฐ์ต
| ์งํ | ์ค๋ช | ๊ณ์ฐ ๋ฐฉ์ |
|---|---|---|
| ContextRetention | ๋งฅ๋ฝ ์ ์ง ๋ฅ๋ ฅ | LLM Judge ํ๊ฐ 1-5 โ 0-1 |
| RefRecall | ์ ๋ณด ํ์ ์ ํ๋ | LLM Judge ํ๊ฐ 1-5 โ 0-1 |
- ํ๊ฐ ๋ชจ๋ธ: GPT-4o, Claude, Gemini ์์๋ธ
- ์ ์ ์ง๊ณ: ํ๊ท ๋๋ ์ค์๊ฐ
- ๋ชจ๋ธ๋ช ์ ์ ๊ฑฐํ ๋ธ๋ผ์ธ๋ ํ๊ฐ๋ก ๊ณต์ ์ฑ ํ๋ณด
- ๊ธฐ๋ณธ ๋ฅ๋ ฅ = L1-L3 ์งํ ํ๊ท (40%)
- ์ค๋ฅ ์ฒ๋ฆฌ = L5 ์งํ ํ๊ท (20%)
- ํจ์จ์ฑ = L6 ์งํ ํ๊ท (25%)
- ๋งฅ๋ฝ ์ฒ๋ฆฌ = L7 ์งํ ํ๊ท (15%)
ํ๊ฐ ๊ฒฐ๊ณผ๋ reports/{model}_{date}/์ ์๋ ์ ์ฅ๋ฉ๋๋ค:
- JSON (
evaluation_report.json) - CSV (
evaluation_summary.csv) - Markdown (
evaluation_report.md)
# 1) GPT-4๋ก L1-L3 ๋ ๋ฒจ ํ๊ฐ
uv run run_benchmark_with_logging.py --levels L1,L2,L3 --model openai/gpt-4
# 2) Claude๋ก ์ ์ฒด ๋ ๋ฒจ ํ๊ฐ + ์บ์ ์์ฑ
uv run run_benchmark_with_logging.py --model anthropic/claude-3-5-sonnet-20241022 --cache-mode write
# 3) ๋ก์ปฌ ๋ชจ๋ธ 4bit ์์ํ ํ๊ฐ
uv run run_benchmark_with_logging.py --use-local --model Qwen/Qwen2.5-7B-Instruct --quantization 4bit --device cuda
# 4) ๋ฉํฐํด ๋ํ ๋ ๋ฒจ ํ๊ฐ
uv run run_benchmark_with_logging.py --levels L6,L7 --max-steps 20
# 5) ํ๊ฐ ๋ณด๊ณ ์ ์์ฑ (๊ธฐ๋ณธ: ๋จ์ผ Judge)
uv run evaluate_model_run.py --date 20251022 --model azure/gpt-4o --format all
# 6) ๋น ๋ฅธ ์ํ ํ๊ฐ
uv run evaluate_model_run.py --date 20251022 --model azure/gpt-4o --quickApache-2.0 ๋ผ์ด์ ์ค๋ฅผ ๋ฐ๋ฆ ๋๋ค.
