카테고리 없음

code agent 논문리뷰 (tool for code generation)

jinuklee 2024. 9. 16. 18:49

https://arxiv.org/pdf/2305.04032

ReAct, Tool-Planning, OpenAIFunc, and Rule-based form

 

repo-level code generation

with a total of 101 functions and classes sourced from real code projects

4.2 에이전트 전략
LLMs가 이러한 강력한 도구를 적절히 활용하도록 하기 위해, 우리는 리포지토리 수준 코드 생성을 위한 네 가지 에이전트 전략을 개발했다. 여기에는 ReAct, ToolPlanning, OpenAIFunc, Rule-based Tool Usage가 포함된다. LLMs와 외부 도구 간의 상호작용은 LangChain 6을 기반으로 한다.

 

ReAct 이 전략(Yao et al., 2022)은 LLMs가 추론 흔적과 작업 관련 행동을 교차적으로 생성하도록 지시한다. 행동을 기반으로 ReAct는 적절한 외부 도구를 선택하고 입력을 제공하여 호출한다. 그 후 도구의 출력을 추가적인 지식으로 간주하고 최종 코드를 생성할지 아니면 다른 도구를 추가로 호출할지를 결정한다.

 

Tool-Planning 우리는 Planning 전략(Wang et al., 2023b)의 변형인 Tool-Planning을 제안한다. 이는 문제 해결 전에 계획을 세우며, 여러 연구(Zhang et al., 2022; Jiang et al., 2023)에서 그 효과가 입증되었다. Planning과 달리, 이 전략은 계획에 따라 적절한 도구를 호출할 수 있다. 구체적으로, Tool-Planning은 먼저 전체 작업을 여러 하위 작업으로 나누는 계획을 세운 후, 계획에 따라 하위 작업을 수행한다. 복잡한 하위 작업의 경우, LLMs가 코드 생성을 도울 수 있는 적절한 도구를 자동으로 선택한다.

 

OpenAIFunc 최근 몇몇 모델(예: GPT-3.5 (GPT-3.5, 2023) 및 GPT-4 (GPT-4, 2023))은 OpenAI에서 제공하는 함수 호출 기능(OpenAIFunc, 2023)을 가지고 있다. 이 상호작용 모드는 "ReAct"와 유사하지만, LLMs가 생성하는 내용과 외부 도구를 호출하는 형식에서 몇 가지 차이점이 있다.

 

Rule-based Tool Usage 복잡한 문제를 마주할 때, 프로그래머들은 종종 관련 지식을 먼저 배우고 프로그램을 작성한 후, 프로그램의 기능을 확인한다. 이 워크플로에서 영감을 받아, 우리는 규칙 기반 전략을 제안한다.
이 전략은 도구 사용 순서를 정의하고, 이러한 도구들을 프롬프트로 연결한다.
I) LLMs는 웹사이트 검색을 활용하여 유용한 온라인 정보를 수집한다.
II) LLMs는 문서 읽기 도구를 사용하여 관련 클래스와 함수들을 검색한다.
III) 코드 심볼 내비게이션을 통해 관련 클래스와 함수들의 소스 코드를 선택하고 조회한다.
위 정보를 바탕으로 LLMs는 프로그램을 생성한다.
IV) 그 후 LLMs는 포맷 체크 도구를 호출하여 생성된 프로그램의 구문 및 포맷을 확인한다.
V) 마지막으로 LLMs는 코드 해석기를 사용하여 프로그램의 기능적 정확성을 평가한다. 피드백 정보를 바탕으로 LLMs는 프로그램 내 오류를 수정한다. 각 단계에서 LLMs는 도구 사용을 자율적으로 순환하며, 다음 단계로 넘어갈지 또는 순환이 제한 횟수(예: 3)에 도달할 때까지 반복된다.