한 줄 요약
코딩 에이전트의 기능 인식 능력을 향상시키기 위해 함수 기반 FIM 중간 훈련을 제안하며, SWE-Bench-Verified에서 +3.2%p 개선을 달성.
핵심 기여도
- 함수 호출 구조와 에이전트의 행동-관찰-계속 루프가 구조적으로 동일하다는 통찰을 바탕으로, **function-aware fill-in-the-middle (FIM)** 중간 훈련 프레임워크를 제안.
- **program dependency graph (PDG)** 분석과 **complexity–inferability double criterion**을 결합한 함수 선택 알고리즘을 제시.
- Qwen2.5-Coder-Instruct (7B/14B)와 Qwen3-8B 모델에서 **SWE-Bench-Verified**에서 각각 **+2.8, +3.0, +3.2%p** 개선.
- **LiveCodeBench**, **BFCL**, **τ-bench** 등 비코딩 도구 사용 벤치마크에서도 **+11.1, +2.4, +3.9%p** 개선을 달성.
핵심 아이디어
기존의 왼쪽에서 오른쪽으로 훈련된 코드 모델은 함수 호출 구조를 학습하지 못해, 에이전트가 외부 도구의 결과를 추론에 통합하는 능력이 제한된다. 본 연구는 **action → observation → continuation** 루프가 **caller → callee → downstream code** 구조와 구조적으로 동일하다는 점을 발견하고, 이를 기반으로 **function-aware FIM**을 도입한다. 이는 **self-supervised** 방식으로, **PDG 분석**과 **complexity–inferability** 기준을 사용해 함수 단위로 마스킹 대상을 선택한다. 또한, **chain-of-thought (CoT)** 추론을 FIM 중간 구간에 내장하여, 에이전트의 추론 패턴과 일치하는 학습을 유도한다.
기술적 접근법
- **Function-aware FIM mid-training**:
- 마스킹 대상은 **program dependency graph (PDG)** 분석과 **complexity–inferability double criterion**을 통해 선택됨.
- **CoT 추론**이 FIM 중간 구간에 내장되어, 모델이 추론과 코드 생성을 동시에 학습하도록 유도.
- **데이터셋**:
- 968개의 GitHub 저장소에서 추출한 **2.6B 토큰** 규모의 **Python 코드**로 훈련.
- **모델**:
- Qwen2.5-Coder-Instruct (7B/14B), Qwen3-8B.
- **훈련 파이프라인**:
- FIM mid-training 후 **R2E-Gym**, **SWE-Smith**, **SWE-Lego** 등의 에이전트 후처리 파이프라인 적용.
주요 결과
- **SWE-Bench-Verified**:
- Qwen2.5-Coder-Instruct 7B: **+2.8%p**, 14B: **+3.0%p**, Qwen3-8B: **+3.2%p**.
- **SWE-Bench-Lite**:
- Qwen2.5-Coder-Instruct 7B: **+3.7%p**, 14B: **+4.0%p**, Qwen3-8B: **+5.4%p**.
- **LiveCodeBench**:
- 14B 모델에서 **+11.1%p** 개선.
- **BFCL**:
- **+2.4%p** 개선.
- **τ-bench**:
- **+3.9%p** 개선.
- 모든 결과는 **R2E-Gym**, **SWE-Smith**, **SWE-Lego** 파이프라인에서 일관된 개선을 보임.
의의 및 한계
- **의의**:
- 기존 코드 훈련에서 학습되지 않는 **함수 호출 구조**를 학습하여, 에이전트가 외부 도구 결과를 추론에 통합하는 능력을 향상.
- **SWE-Bench**, **LiveCodeBench**, **BFCL**, **τ-bench** 등 다양한 벤치마크에서 개선 효과를 보여, **cross-domain generalization** 가능성을 입증.
- **한계**:
- **mid-training 데이터셋**은 **Python 코드**만 사용됨.
- **비Python 언어**로의 확장은 추가 연구가 필요.
- **RL 기반 후처리**와의 결합 가능성은 아직 검증되지 않음.
실용적 활용
- **소프트웨어 엔지니어링 자동화**, **코드 생성 에이전트**, **도구 사용 LLM** 등에서 활용 가능.
- **에이전트 훈련 파이프라인**에서 **mid-training 단계**를 추가하면, **후처리 과정에서의 능력 저하**를 완화할 수 있음.
- **코드 품질 향상**, **도구 사용 정확도 개선**에 기여할 수 있는 실용적 기술.