πŸ” μ—°κ΅¬μ˜ ν•„μš”μ„±


motivation.png

LLM의 λ°œμ „μœΌλ‘œ μžλ™ μ½”λ“œ 생성과 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€ 생성이 ν™œλ°œν•΄μ‘Œμ§€λ§Œ, LLM μ„±λŠ₯ ν‰κ°€μ˜ ν‘œμ€€μ²˜λŸΌ 널리 μ‚¬μš©λ˜λŠ” κΈ°μ‘΄ 벀치마크(HumanEval+, MBPP+)λŠ” μ—¬μ „νžˆ pass@k μ€‘μ‹¬μ˜ functional correctness만 ν‰κ°€ν•˜λŠ” 데 머물러 μžˆμŠ΅λ‹ˆλ‹€. 이 ν‰κ°€λŠ” μ½”λ“œκ°€ β€œμ •μƒ μž…λ ₯μ—μ„œ 정닡을 좜λ ₯ν•˜λŠ”κ°€β€λ§Œ 보며, Contract(preconditionκ³Ό input validation rule) λ₯Ό μ§€ν‚€λŠ”μ§€ μ—¬λΆ€λŠ” λ¬΄μ‹œν•˜λŠ” ν•œκ³„λ₯Ό κ°€μ§€κ³  μžˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μ‹€μ œ μ†Œν”„νŠΈμ›¨μ–΄μ—μ„œλŠ” Contract μœ„λ°˜μ΄ λ³΄μ•ˆ 취약점, μ˜ˆμ™Έ λˆ„λ½λ“±μœΌλ‘œ 이어지기 μ‰½μŠ΅λ‹ˆλ‹€. κ²‰μœΌλ‘œλŠ” 정닡을 내더라도 **잘λͺ»λœ μž…λ ₯(ill-formed input)**을 적절히 κ±°λΆ€ν•˜μ§€ λͺ»ν•˜λ©΄ μ•ˆμ „ν•˜μ§€ μ•Šμ€ μ½”λ“œ μž…λ‹ˆλ‹€. 이 ν•œκ³„λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ μš°λ¦¬λŠ” PACT λ₯Ό μ œμ•ˆν•©λ‹ˆλ‹€.

✨ PACTλž€


PACTλŠ” LLM μ½”λ“œ 평가λ₯Ό functional correctnessμ—μ„œ ν•œ 단계 ν™•μž₯ν•΄, Contract μ€€μˆ˜κΉŒμ§€ ν•¨κ»˜ μΈ‘μ •Β·κ°•ν™”ν•˜λŠ” Contract-aware ν”„λ ˆμž„μ›Œν¬μž…λ‹ˆλ‹€. 핡심은 두 μΆ•μž…λ‹ˆλ‹€:

  1. **Contract-Violating Tests (CVTs)**λ₯Ό κ³ ν’ˆμ§ˆλ‘œ μƒμ„±ν•œλ‹€.
  2. 이 CVTsλ₯Ό ν™œμš©ν•΄ μ½”λ“œ μƒμ„±μ˜ Contract μ€€μˆ˜ λ₯Ό μ²΄κ³„μ μœΌλ‘œ λΆ„μ„ν•œλ‹€.

PACTλŠ” Functional ν…ŒμŠ€νŠΈμ™€ CVT의 이쀑 ν…ŒμŠ€νŠΈ suiteλ₯Ό λ„μž…ν•˜κ³ , AVC/AAR/AAP 같은 Contract 쀑심 μ§€ν‘œλ‘œ λͺ¨λΈμ˜ Contract인지 μˆ˜μ€€μ„ μ •λŸ‰ν™”ν•©λ‹ˆλ‹€. 이둜써 κΈ°μ‘΄ pass@k 단일 κ΄€μ μ˜ ν•œκ³„λ₯Ό λ„˜μ–΄ 강건성을 ν‘œμ€€ν™”ν•΄ ν‰κ°€ν•©λ‹ˆλ‹€.

ν”„λ ˆμž„μ›Œν¬λŠ” λ‹€μŒ 3λ‹¨κ³„λ‘œ μ΄λ£¨μ–΄μ§‘λ‹ˆλ‹€:

1. Contract μœ„λ°˜ ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€ 생성 (CVT Generation)

2. μ½”λ“œ 생성 μ‹€ν—˜ (Code Generation)