[논문 리뷰] ToolCoder: Teach Code Generation Models to use API search tools
ToolCoder는 API 검색 도구를 사전 학습된 코드 생성 모델에 통합하여 코드 생성 중 API 선택을 위한 자동 도구 사용을 가능하게 하며, 공개 및 비공개 라이브러리 벤치마크에서 일관된 이득을 얻습니다. 또한 ChatGPT 기반 데이터 주석과 LoRA 기반 미세 조정을 사용하여 도구 지원 디코딩을 가능하게 합니다.
Automatically generating source code from natural language descriptions has been a growing field of research in recent years. However, current large-scale code generation models often encounter difficulties when selecting appropriate APIs for specific contexts. These models may generate APIs that do not meet requirements or refer to non-existent APIs in third-party libraries, especially for lesser-known or private libraries. Inspired by the process of human developers using tools to search APIs, we propose ToolCoder, a novel approach that integrates API search tools with existing models to assist in code generation and API selection. To teach our model to use tools, we introduce an automated data annotation method using ChatGPT to add tool usage information into the source code data and fine-tune code generation models. During inference, we integrate API search tools into the generation process so that our model can automatically use the search tool to get suggestions when selecting an API. Our experimental results demonstrate that ToolCoder exhibits excellent performance and generalization across five public and private library code generation benchmarks, with at least 6.21\% improvement on average pass@1 metrics and 9.64\% improvement on average pass@10 metrics compared to state-of-the-art methods. Furthermore, we show that our relatively small ToolCoder model is comparable to one of the current best models, GPT-3.5, highlighting the potential of incorporating programming tools into the code generation process.
연구 동기 및 목표
- vast 및 비공개 라이브러리로 인한 코드 생성 모델의 API 선택 문제를 동기부여하고 해결합니다.
- 모델이 API 검색 도구를 사용하도록 가르치는 도구-강화 데이터 파이프라인을 도입합니다.
- 디코딩 시 도구 사용을 가능하게 하는 효율적인 미세 조정 방법을 제안합니다.
- 공개 및 비공개 라이브러리 벤치마크에서 ToolCoder의 일반화 성능을 입증합니다.
제안 방법
- ChatGPT를 사용하여 도구 사용 호출을 소스 코드 데이터에 삽입하는 도구-강화 데이터세트를 자동으로 주석합니다.
- API 검색 도구 사용을 목표로 파라미터 효율적 튜닝(LoRA)으로 사전학습된 코드 생성 모델을 미세 조정합니다.
- 추론 중 디코딩 프로세스에 API 검색 도구를 통합하고 모델이 도구 호출 토큰을 출력할 때 도구 호출을 트리거합니다.
- 두 가지 검색 도구 소스: 온라인 DuckDuckGo + 비공개 라이브러리를 위한 문서 기반 BM25 검색을 하나의 API 검색 호출로 통합하고 특수 토큰으로 처리합니다.
- 다섯 개 벤치마크에서 ToolCoder를 평가합니다(세 가지 공개: NumpyEval, PandasEval, TorchDataEval; 두 가지 비공개: MonkeyEval, BeatNumEval) 과 pass@k 지표(k=1,10)를 사용합니다.
- 일반 코드 생성 베이스라인 및 API 지향 베이스라인과 비교하고, 강력한 참고로 GPT-3.5를 포함합니다.
실험 결과
연구 질문
- RQ1RQ1: 공개 라이브러리 벤치마크에서 ToolCoder의 성능은 SOTA 베이스라인 대비 어떤가요?
- RQ2RQ2: 비공개 라이브러리 벤치마크에서 ToolCoder의 성능은 어떤가요?
- RQ3RQ3: 데이터세트, 훈련, 추론 구성요소의 기여도(추론 연구) 요소는 무엇인가요?
- RQ4RQ4: ToolCoder가 생성한 솔루션의 코드 품질과 실패 모드는 무엇인가요?
주요 결과
| 모델 | 매개변수 | NumpyEval pass@1 | NumpyEval pass@10 | PandasEval pass@1 | PandasEval pass@10 | TorchDataEval pass@1 | TorchDataEval pass@10 |
|---|---|---|---|---|---|---|---|
| CodeT5 | 220M | 0 | 0.1 | 0 | 0 | 0 | 0 |
| PyCodeGPT | 110M | 18.04 | 38.61 | 12.75 | 37.62 | 3.80 | 14.00 |
| CodeGen350M | 350M | 18.51 | 43.56 | 16.73 | 29.70 | 4.60 | 14.00 |
| CodeGen2B | 2B | 29.10 | 53.46 | 30.69 | 42.57 | 7.00 | 18.00 |
| GPT3.5 | - | 58.41 | 66.21 | 30.09 | 33.16 | 6.00 | 24.00 |
| CERT-numpy | 220M | 31.47 | 46.42 | 16.03 | 27.72 | 2.20 | 14.00 |
| CERT-pandas | 220M | 18.81 | 33.66 | 28.42 | 48.04 | 2.80 | 6.00 |
| CodeGenAPI | 350M | 16.55 | 29.48 | 13.58 | 34.95 | 7.19 | 16.93 |
| CodeGenAPI-retrieval | 475M | 12.67 | 27.32 | 11.25 | 28.61 | 10.41 | 23.50 |
| CodeGen-retrieval | 475M | 18.30 | 35.12 | 9.54 | 29.02 | 7.52 | 16.36 |
| ToolCoder-OnlineTool | 350M | 35.64 | 50.50 | 22.77 | 37.62 | 7.40 | 20.00 |
| ToolCoder-OnlineTool-2B | 2B | 41.58 | 55.44 | 31.68 | 47.52 | 11.80 | 24.00 |
- ToolCoder는 공개 벤치마크에서 SOTA 베이스라인에 비해 pass@1에서 평균 6.21% 포인트, pass@10에서 평균 9.64% 포인트의 향상을 달성합니다.
- 온라인 도구를 포함한 ToolCoder-OnlineTool 변형이 강력한 결과를 내고 API 선택 오류를 줄입니다.
- 비공개 라이브러리에서 문서 검색 또는 비공개 문서 도구를 사용하는 ToolCoder가 안정적인 향상과 좋은 일반화 능력을 보입니다.
- 다섯 벤치마크에 걸쳐 ToolCoder는 구성에 따라 평균 pass@1이 6.21–19.00% 향상을 보이며 일부 공개 벤치마크에서 대형 모델에 근접하거나 이를 상회합니다.
- LoRA 기반 미세 조정은 매개변수 효율적 학습을 가능하게 하며 CodeGen-350M 및 CodeGen-2B의 경우 각각 0.18% 및 0.09%의 매개변수만 학습됩니다.
- 추론 주석 연구(ablations)는 데이터 주석, 학습 및 추론 설계 선택의 효과를 확인합니다.
더 나은 연구,지금 바로 시작하세요
연구 설계부터 논문 작성까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.