Skip to content

PlateerLab/claude_system_prompt_test

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

5 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

harness-bench

Claude Code μ‹œμŠ€ν…œ ν”„λ‘¬ν”„νŠΈκ°€ λ‹€λ₯Έ λͺ¨λΈ μ„±λŠ₯을 올릴 수 μžˆμ„κΉŒ?

2026λ…„ 3μ›” Claude Code npm μ†ŒμŠ€λ§΅ 유좜둜 곡개된 μ‹œμŠ€ν…œ ν”„λ‘¬ν”„νŠΈ(ν•˜λ‹ˆμŠ€)λ₯Ό 바닐라 Qwen3.5-27B에 μ μš©ν–ˆλ”λ‹ˆ μ½”λ“œ ν’ˆμ§ˆμ΄ +26.5% ν–₯μƒλμŠ΅λ‹ˆλ‹€. 이 λ ˆν¬λŠ” κ·Έ μ‹€ν—˜μ„ λˆ„κ΅¬λ‚˜ μž¬ν˜„ν•˜κ³ , 자기 λͺ¨λΈ/ν”„λ‘¬ν”„νŠΈλ‘œ ν™•μž₯ν•  수 있게 λ§Œλ“  벀치마크 ν”„λ ˆμž„μ›Œν¬μž…λ‹ˆλ‹€.


μ‹€ν—˜μœΌλ‘œ λ°ν˜€μ§„ 것듀

6개 μ‹€ν—˜, 총 수백 회의 LLM-as-judge 평가λ₯Ό 톡해 ν™•μΈν•œ κ²°κ³Όμž…λ‹ˆλ‹€.

발견 수치
ν•˜λ‹ˆμŠ€λ₯Ό μ μš©ν•˜λ©΄ 바닐라 Qwen μ„±λŠ₯이 였λ₯Έλ‹€ 6.83 β†’ 8.64 (+26.5%)
Distillation(νŒŒμΈνŠœλ‹) λ•Œλ¬Έμ΄ μ•„λ‹ˆλ‹€ 바닐라 β‰ˆ Distilled (차이 0.11)
ν•˜λ‹ˆμŠ€ ν˜•μ‹λ„ μ„±λŠ₯에 영ν–₯을 μ€€λ‹€ μ œμ•½λ§Œ(8.97) > MD쑰각화(8.5) > μ—°μ†ν…μŠ€νŠΈ(8.33)
더 κΈΈλ‹€κ³  더 쒋은 건 μ•„λ‹ˆλ‹€ 21K 토큰 < 500 토큰 (βˆ’11%)
μ½”λ”©μ—μ„œλŠ” Claudeλ₯Ό λ„˜μ–΄μ„œκΈ°λ„ ν•œλ‹€ 바닐라 27B + μ œμ•½λ§Œ: 9.83 vs Claude Opus: 9.14

핡심 μΈμ‚¬μ΄νŠΈ: Claude Code의 경쟁λ ₯은 λͺ¨λΈ 크기가 μ•„λ‹ˆλΌ "ν•˜μ§€ 마라"λŠ” μ œμ•½ 12쀄에 μžˆλ‹€.


μ„€μΉ˜

1. 레포 클둠 & νŒ¨ν‚€μ§€ μ„€μΉ˜

git clone <repo-url>
cd harness-bench

pip install -r requirements.txt

2. API ν‚€ μ„€μ •

cp .env.example .env

.env νŒŒμΌμ„ μ—΄μ–΄μ„œ ν‚€λ₯Ό μž…λ ₯ν•˜μ„Έμš”:

# Alibaba Cloud DashScope (Qwen λͺ¨λΈ μ‚¬μš© μ‹œ ν•„μˆ˜)
# λ°œκΈ‰: https://dashscope.console.aliyun.com/apiKey
DASHSCOPE_API_KEY=sk-μ—¬κΈ°μ—μž…λ ₯

# OpenAI (GPT λͺ¨λΈ μ‚¬μš© μ‹œ)
OPENAI_API_KEY=sk-μ—¬κΈ°μ—μž…λ ₯

3. Claude Code CLI μ„€μΉ˜ (평가 judge용)

npm install -g @anthropic-ai/claude-code
claude   # 둜그인

judgeλŠ” 각 응닡을 6개 κΈ°μ€€μœΌλ‘œ μ±„μ ν•˜λŠ” μ—­ν• μž…λ‹ˆλ‹€. Claude Code CLIκ°€ μ—†μœΌλ©΄ --no-judge μ˜΅μ…˜μœΌλ‘œ μ‘λ‹΅λ§Œ μˆ˜μ§‘ν•  수 μžˆμ–΄μš”.


μ‹€ν–‰ 방법

방법 A β€” λŒ€μ‹œλ³΄λ“œ (μΆ”μ²œ)

python dashboard.py

λΈŒλΌμš°μ €μ—μ„œ http://localhost:5000 접속. 쑰건·과제λ₯Ό μ²΄ν¬λ°•μŠ€λ‘œ κ³ λ₯΄κ³  μ‹€ν–‰ λ²„νŠΌ ν•˜λ‚˜λ©΄ λ©λ‹ˆλ‹€.

![λŒ€μ‹œλ³΄λ“œ ꡬ성]

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  harness-bench                              [μƒνƒœ λ°°μ§€]   β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                 β”‚  νƒ­: [μ‹€ν–‰ 둜그]  [κ²°κ³Ό νžˆμŠ€ν† λ¦¬]       β”‚
β”‚  βœ… 쑰건 선택   β”‚                                         β”‚
β”‚  βœ… 과제 선택   β”‚  μ‹€ν—˜ μ§„ν–‰ 상황 μ‹€μ‹œκ°„ 슀트리밍          β”‚
β”‚  λͺ¨λΈ/API μ„€μ •  β”‚  κ³Όμ œΒ·μ‘°κ±΄λ³„ 점수 μ¦‰μ‹œ ν‘œμ‹œ             β”‚
β”‚  Judge μ„€μ •     β”‚                                         β”‚
β”‚                 β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚  [β–Ά μ‹€ν—˜ μ‹€ν–‰]  β”‚  μ’…ν•© 점수 비ꡐ λ°”                      β”‚
β”‚  [⏹ 쀑단]      β”‚                                         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

방법 B β€” CLI

# κΈ°λ³Έ 전체 μ‹€ν–‰
python run.py

# 쑰건 μ§€μ •
python run.py --conditions raw restrictions_only

# 과제 μ§€μ •
python run.py --tasks coding_group_by coding_lru_cache

# λ‹€λ₯Έ λͺ¨λΈλ‘œ
python run.py --provider openai --model gpt-4o
python run.py --provider vllm --model Llama-3.1-8B-Instruct

# λΉ λ₯Έ 확인 (judge 없이 μ‘λ‹΅λ§Œ μˆ˜μ§‘)
python run.py --conditions restrictions_only --tasks coding_group_by --no-judge

κΈ°λ³Έ 제곡 쑰건 (ν•˜λ‹ˆμŠ€)

ν‚€ μ„€λͺ… 토큰 μ½”λ”© 점수
raw μ‹œμŠ€ν…œ ν”„λ‘¬ν”„νŠΈ μ—†μŒ (baseline) 0 7.39
continuous 연속 ν…μŠ€νŠΈ ν•˜λ‹ˆμŠ€ (μ‹€ν—˜ 1~4 κΈ°λ³Έ) ~500 9.0
fragmented # 헀더 7μ„Ήμ…˜ β€” 유좜 원본 ꡬ쑰 μž¬ν˜„ ~480 9.22
restrictions_only "Don't X" κ·œμΉ™ 12μ€„λ§Œ ~120 9.83

μ μˆ˜λŠ” 바닐라 Qwen3.5-27B + Claude Opus 4.6 judge κΈ°μ€€μž…λ‹ˆλ‹€.


μ»€μŠ€ν„°λ§ˆμ΄μ§•

λ‚΄ ν•˜λ‹ˆμŠ€ μΆ”κ°€ν•˜κΈ° β†’ bench/harnesses.py

CONDITIONS dict에 ν•­λͺ©μ„ μΆ”κ°€ν•˜λ©΄ CLI와 λŒ€μ‹œλ³΄λ“œμ— λ°”λ‘œ λ°˜μ˜λ©λ‹ˆλ‹€.

CONDITIONS: dict[str, dict] = {
    # κΈ°μ‘΄ ν•­λͺ©...

    # λ‚΄ ν•˜λ‹ˆμŠ€ μΆ”κ°€
    "my_harness": {
        "name": "My Custom Harness",
        "system": """
# κ·œμΉ™
μš”μ²­ν•œ κ²ƒλ§Œ κ΅¬ν˜„ν•˜μ„Έμš”.
νƒ€μž… νžŒνŠΈλ‚˜ docstring은 μš”μ²­ν•˜μ§€ μ•ŠμœΌλ©΄ μΆ”κ°€ν•˜μ§€ λ§ˆμ„Έμš”.
κ°„κ²°ν•˜κ²Œ λ‹΅ν•˜μ„Έμš”.
        """,
        "description": "λ‚΄κ°€ λ§Œλ“  μ»€μŠ€ν…€ ν•˜λ‹ˆμŠ€",
    },
}
python run.py --conditions raw my_harness

λ‚΄ 과제 μΆ”κ°€ν•˜κΈ° β†’ bench/tasks.py

TASKS: list[dict] = [
    # κΈ°μ‘΄ ν•­λͺ©...

    {
        "id": "coding_fibonacci",           # 고유 ID (CLI와 κ²°κ³Ό JSONμ—μ„œ μ‚¬μš©)
        "name": "Fibonacci with memoization",
        "category": "coding",               # "coding" λ˜λŠ” "non-coding"
        "prompt": "Write fib(n) using memoization. No imports.",
    },
]
python run.py --tasks coding_fibonacci

λ‹€λ₯Έ λͺ¨λΈ/μ„œλΉ„μŠ€ μ—°κ²°ν•˜κΈ° β†’ bench/providers.py

OpenAI ν˜Έν™˜ μ—”λ“œν¬μΈνŠΈλΌλ©΄ λͺ‡ 쀄이면 λ©λ‹ˆλ‹€:

PROVIDERS: dict[str, dict] = {
    # κΈ°μ‘΄ ν•­λͺ©...

    # Together AI
    "together": {
        "description": "Together AI",
        "default_model": "meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo",
        "caller": _make_openai_caller(
            base_url="https://api.together.xyz/v1",
            api_key_env="TOGETHER_API_KEY",
            default_model="meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo",
        ),
    },
}

.env에 ν‚€ μΆ”κ°€ ν›„:

python run.py --provider together --model meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo

자체 vLLM μ„œλ²„ μ—°κ²°:

# .env에 μΆ”κ°€
VLLM_BASE_URL=http://λ‚΄μ„œλ²„:8000/v1
VLLM_MODEL=Qwen3.5-27b

python run.py --provider vllm

CLI 전체 μ˜΅μ…˜

python run.py [μ˜΅μ…˜]

  --conditions KEY [...]     μ‹€ν—˜ν•  쑰건 ν‚€ λͺ©λ‘ (κΈ°λ³Έ: λͺ¨λ‘)
  --tasks ID [...]           μ‹€ν—˜ν•  과제 ID λͺ©λ‘ (κΈ°λ³Έ: λͺ¨λ‘)
  --provider NAME            ν”„λ‘œλ°”μ΄λ” 선택: alibaba | openai | vllm | claude_cli
  --model NAME               λͺ¨λΈλͺ… (μƒλž΅ν•˜λ©΄ ν”„λ‘œλ°”μ΄λ” κΈ°λ³Έκ°’)
  --judge-model NAME         judge에 μ“Έ Claude λͺ¨λΈ (κΈ°λ³Έ: claude-opus-4-6)
  --no-judge                 평가 없이 μ‘λ‹΅λ§Œ μˆ˜μ§‘
  --temperature FLOAT        μƒ˜ν”Œλ§ μ˜¨λ„ (κΈ°λ³Έ: 0.3)
  --output PATH              κ²°κ³Ό JSON μ €μž₯ 경둜

  --list-conditions          μ‚¬μš© κ°€λŠ₯ν•œ 쑰건 λͺ©λ‘ 보기
  --list-tasks               μ‚¬μš© κ°€λŠ₯ν•œ 과제 λͺ©λ‘ 보기
  --list-providers           μ‚¬μš© κ°€λŠ₯ν•œ ν”„λ‘œλ°”μ΄λ” λͺ©λ‘ 보기

파일 ꡬ쑰

harness-bench/
β”‚
β”œβ”€β”€ run.py                   CLI μ§„μž…μ 
β”œβ”€β”€ dashboard.py             μ›Ή λŒ€μ‹œλ³΄λ“œ (Flask)
β”‚
β”œβ”€β”€ bench/                   ← μ»€μŠ€ν„°λ§ˆμ΄μ§•μ€ μ—¬κΈ°μ„œλ§Œ
β”‚   β”œβ”€β”€ harnesses.py         ν•˜λ‹ˆμŠ€(쑰건) μΆ”κ°€Β·μ œκ±°
β”‚   β”œβ”€β”€ tasks.py             벀치마크 과제 μΆ”κ°€Β·μ œκ±°
β”‚   β”œβ”€β”€ providers.py         λͺ¨λΈΒ·API μ—”λ“œν¬μΈνŠΈ μΆ”κ°€
β”‚   └── judge.py             LLM-as-judge 둜직 (κ±΄λ“œλ¦΄ 일 μ—†μŒ)
β”‚
β”œβ”€β”€ templates/
β”‚   └── index.html           λŒ€μ‹œλ³΄λ“œ UI
β”‚
β”œβ”€β”€ results/                 μ‹€ν—˜ κ²°κ³Ό μžλ™ μ €μž₯
β”‚   β”œβ”€β”€ run_TIMESTAMP.json
β”‚   └── FINAL_COMPREHENSIVE_REPORT_v4.md
β”‚
β”œβ”€β”€ .env                     API ν‚€ (git μ œμ™Έ)
β”œβ”€β”€ .env.example             API ν‚€ ν…œν”Œλ¦Ώ
β”œβ”€β”€ requirements.txt
β”œβ”€β”€ README.md                이 파일
└── MANUAL.md                상세 맀뉴얼

μ„Έ 파일(harnesses.py, tasks.py, providers.py)만 μˆ˜μ •ν•˜λ©΄ λŒ€λΆ€λΆ„μ˜ μ»€μŠ€ν„°λ§ˆμ΄μ§•μ΄ κ°€λŠ₯ν•©λ‹ˆλ‹€.


평가 κΈ°μ€€

λͺ¨λ“  응닡은 Claude Opus 4.6이 6개 κΈ°μ€€ 각 1-10점으둜 μ±„μ ν•©λ‹ˆλ‹€.

μ½”λ”© 과제

κΈ°μ€€ 높은 점수 쑰건
correctness μ½”λ“œκ°€ μ •ν™•νžˆ λ™μž‘ν•œλ‹€
efficiency μ•Œκ³ λ¦¬μ¦˜μ΄ νš¨μœ¨μ μ΄λ‹€
conciseness ꡰ더더기 μ½”λ“œκ°€ μ—†λ‹€
no_overengineering μš”μ²­ν•˜μ§€ μ•Šμ€ νƒ€μž…νžŒνŠΈΒ·docstring·좔상화λ₯Ό μΆ”κ°€ν•˜μ§€ μ•Šμ•˜λ‹€
response_bloat μ½”λ“œ μ•ž μ„€λͺ… 산문이 μ—†λ‹€, λ°”λ‘œ μ½”λ“œλ§Œ μ€€λ‹€
instruction_following μ§€μ‹œν•œ μ‹œκ·Έλ‹ˆμ²˜Β·μš”κ±΄μ„ μ •ν™•νžˆ λ”°λžλ‹€

λΉ„μ½”λ”© 과제

κΈ°μ€€ 높은 점수 쑰건
accuracy 사싀이 μ •ν™•ν•˜λ‹€
completeness 질문의 핡심을 빠짐없이 λ‹€λ€˜λ‹€
conciseness λ°˜λ³΅Β·νŒ¨λ”©μ΄ μ—†λ‹€
no_overexplaining 묻지 μ•Šμ€ λ°°κ²½ μ„€λͺ…을 λŠ˜μ–΄λ†“μ§€ μ•Šμ•˜λ‹€
response_bloat 헀더 λ‚¨λ°œ, 질문 μž¬μ§„μˆ μ΄ μ—†λ‹€
actionability 좔상적 쑰언이 μ•„λ‹Œ μ‹€μ œλ‘œ μ“Έ 수 μžˆλŠ” 닡이닀

μ‹€ν—˜ 이λ ₯

이 λ ˆν¬μ—μ„œ μ§„ν–‰λœ 6개 μ‹€ν—˜μ˜ νλ¦„μž…λ‹ˆλ‹€.

μ‹€ν—˜ 1 (2026-04-03)  ν•˜λ‹ˆμŠ€κ°€ μž‘λ™ν•˜λŠ”κ°€?
  β†’ Distilled Qwen 27B에 적용  β†’  +34% (5.93 β†’ 7.97)  βœ…

μ‹€ν—˜ 2 (2026-04-05)  νŒŒμΈνŠœλ‹ λ•Œλ¬Έμ΄ μ•„λ‹Œκ°€? (Inverse Prompt)
  β†’ λ°˜λŒ€ μ§€μ‹œλ₯Ό μ€¬λ”λ‹ˆ 행동이 역전됨  β†’  ν”„λ‘¬ν”„νŠΈ 자체의 힘  βœ…

μ‹€ν—˜ 3 (2026-04-05)  κΈ°λ³Έ ν…œν”Œλ¦Ώμ΄ κ²°κ³Όλ₯Ό μ˜€μ—Όμ‹œν‚€λ‚˜? (5-way Ablation)
  β†’ Default system 효과 = +0.04점  β†’  λ¬΄μ‹œ κ°€λŠ₯  βœ…

μ‹€ν—˜ 4 (2026-04-06)  νŒŒμΈνŠœλ‹ μ•ˆ 된 바닐라 λͺ¨λΈμ—μ„œλ„ λ˜λ‚˜?
  β†’ μ•Œλ¦¬λ°”λ°” 곡식 Qwen3.5-27B μ‚¬μš©  β†’  +26.5% (6.83 β†’ 8.64)  βœ…

μ‹€ν—˜ 5 (2026-04-06)  Claude Code 전체 λŸ°νƒ€μž„(~21K 토큰)이 더 μ’‹μ„κΉŒ?
  β†’ μΆ”μΆœ ν•˜λ‹ˆμŠ€(8.64) > 전체 ν•˜λ‹ˆμŠ€(7.67)  β†’  길수둝 쒋은 건 μ•„λ‹˜  βœ…

μ‹€ν—˜ 6 (2026-04-08)  ν˜•μ‹μ΄ 달라지면 κ²°κ³Όκ°€ λ‹¬λΌμ§€λ‚˜?
  β†’ μ œμ•½λ§Œ(8.97) > MD쑰각화(8.5) > μ—°μ†ν…μŠ€νŠΈ(8.33)  β†’  ν˜•μ‹λ„ μ€‘μš”  βœ…

상세 κ²°κ³Ό β†’ results/FINAL_COMPREHENSIVE_REPORT_v4.md


자주 λ¬»λŠ” 것듀

Q. Alibaba Cloud 계정이 μ—†μ–΄μš”. OpenAI둜 해도 λ˜λ‚˜μš”?

λ©λ‹ˆλ‹€. .env에 OPENAI_API_KEY λ„£κ³  --provider openai --model gpt-4o둜 μ‹€ν–‰ν•˜λ©΄ λ©λ‹ˆλ‹€.

Q. 둜컬 λͺ¨λΈλ‘œ μ‹€ν—˜ν•˜κ³  μ‹Άμ–΄μš”.

vLLM λ“±μœΌλ‘œ OpenAI ν˜Έν™˜ μ„œλ²„λ₯Ό λ„μš°λ©΄ λ©λ‹ˆλ‹€:

vllm serve Qwen/Qwen2.5-7B-Instruct --port 8000
# .env에 VLLM_BASE_URL=http://localhost:8000/v1 μ„€μ •
python run.py --provider vllm

Q. Claude Code CLI 없이도 μ‹€ν—˜ν•  수 μžˆλ‚˜μš”?

νŒλ‹¨(judge) 없이 μ‘λ‹΅λ§Œ μˆ˜μ§‘ν•  수 μžˆμŠ΅λ‹ˆλ‹€:

python run.py --no-judge

Q. λ‚΄κ°€ λ§Œλ“  μ‹œμŠ€ν…œ ν”„λ‘¬ν”„νŠΈλ₯Ό ν…ŒμŠ€νŠΈν•˜κ³  μ‹Άμ–΄μš”.

bench/harnesses.py에 ν•­λͺ© μΆ”κ°€ ν›„ λ°”λ‘œ μ‚¬μš© κ°€λŠ₯ν•©λ‹ˆλ‹€. λŒ€μ‹œλ³΄λ“œλ₯Ό μž¬μ‹œμž‘ν•˜λ©΄ μžλ™ λ°˜μ˜λ©λ‹ˆλ‹€.


참고자료

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors