>  기사  >  기술 주변기기  >  코더는 황홀하다! Microsoft는 168개 코드 베이스에서 LLM 코딩 작업을 자동화하기 위해 CodePlan을 제안했습니다.

코더는 황홀하다! Microsoft는 168개 코드 베이스에서 LLM 코딩 작업을 자동화하기 위해 CodePlan을 제안했습니다.

WBOY
WBOY앞으로
2023-10-04 20:29:06695검색

대형 모델의 경우 현지화된 인코딩 작업에 능숙합니다.

작업에 여러 개의 상호 의존적인 파일이 포함된 경우 LLM은 이 문제를 해결할 수 없습니다

Microsoft 연구진은 이 목적을 위해 CodePlan이라는 작업 독립적 신경망 프레임워크를 설계했습니다

코더는 황홀하다! Microsoft는 168개 코드 베이스에서 LLM 코딩 작업을 자동화하기 위해 CodePlan을 제안했습니다.Picture

문서 주소: https //arxiv.org/pdf/2309.12499.pdf

논문에서 CodePlan은 프로그램 분석, 계획 및 LLM의 조합인 다단계 편집 체인(chain-of-edits)을 통합합니다. 함께 있어라.

자세히 살펴보겠습니다. CodePlan은 어떻게 설계되어 있나요?

CodePlan: 대규모 모델 + 계획

패키지 마이그레이션, 정적 분석 또는 테스트를 위한 버그 보고서 수정, 코드 베이스에 유형 힌트 또는 기타 사양 추가와 같은 소프트웨어 엔지니어링 활동에는 전체 코드 저장소 매핑이 포함됩니다. 범용 편집 도서관의.

연구원들은 "저장소 수준 코딩 작업"을 가능하게 하기 위해 이러한 활동을 계획합니다.

GitHub Copilot, Code Whisperer와 같은 코딩 도구는 대규모 모델 기능에 대한 지원을 얻어 코더에게 현지화된 코딩 문제를 제공합니다. 솔루션 제공

그러나 사실 "저장소 수준 코딩 작업"은 더 복잡하고 LLM으로 직접 해결할 수 없습니다. 왜냐하면 저장소의 코드가 상호 의존적이고 전체 저장소가 너무 커서 포함할 수 없기 때문입니다. 팁

이 연구에서 , Microsoft 팀은 라이브러리 수준 코딩 프레임워크를 계획 문제로 간주하고 CodePlan이라는 작업 독립적 프레임워크를 제안했습니다.

CodePlan은 각 단계가 코드 위치에서 LLM을 호출하는 다단계 편집 체인(계획)을 결합합니다. 해당 코드 위치의 컨텍스트는 전체 저장소, 이전 코드 변경 사항 및 작업별 지침에서 나옵니다.

CodePlan은 증분 종속성 분석, 변경 가능성 영향 분석 및 적응형 계획 알고리즘을 기반으로 하는 새로운 조합입니다.

코더는 황홀하다! Microsoft는 168개 코드 베이스에서 LLM 코딩 작업을 자동화하기 위해 CodePlan을 제안했습니다.사진

다음 그림은 Microsoft Research의 복잡한 라이브러리 API의 변경 사항을 보여줍니다. 직원은 이 변경 사항에 따라 코드베이스를 마이그레이션하는 임무를 맡습니다.

코더는 황홀하다! Microsoft는 168개 코드 베이스에서 LLM 코딩 작업을 자동화하기 위해 CodePlan을 제안했습니다.Pictures

그림 3의 왼쪽은 복수형 라이브러리 사용과 관련된 코드 라이브러리 부분을 보여줍니다

구체적으로 Create.cs 파일의 func 메소드는 라이브러리에 있는 메소드를 호출합니다. create_complex 메서드, Process.cs 파일의 Process.cs 메서드가 func를 호출합니다.

코더는 황홀하다! Microsoft는 168개 코드 베이스에서 LLM 코딩 작업을 자동화하기 위해 CodePlan을 제안했습니다.picture

연구원은 그림 1의 작업 설명과 func 본문을 LLM으로 전달하여 그림 3의 오른쪽과 같이 수정된 func 코드를 생성합니다

보시다시피 LLM 두 부동 소수점 값의 튜플이 아닌 Complex 유형의 객체를 반환하도록 create_complex API에 대한 호출을 올바르게 편집했습니다.

이 편집으로 인해 func 메소드의 시그니처가 변경되었습니다. 이제 Complex 유형의 객체를 반환합니다.

수정해야 할 사항은 그림 3의 왼쪽 하단에 표시된 것처럼 Process.cs 파일의 프로세스 메소드와 같이 func 메소드의 호출자를 수정해야 한다는 것입니다. 프로세스 메소드 본문을 적절하게 수정하지 않으면 코드가 빌드되지 않습니다!

그림 3의 오른쪽 아래는 프로세스 방법에 대한 적절한 수정을 보여줍니다. 이를 통해 저장소를 일관된 상태로 가져와 컴파일 중에 오류가 발생하지 않도록 할 수 있습니다.

연구원의 주요 임무는 편집에 필요한 파생 사양을 자동으로 생성할 수 있는 "저장소 수준 코딩 시스템"을 구축하는 것입니다.

LLM 기반 라이브러리 수준 코딩 작업은 다음과 같이 정의됩니다.

코더는 황홀하다! Microsoft는 168개 코드 베이스에서 LLM 코딩 작업을 자동화하기 위해 CodePlan을 제안했습니다.Pictures

CodePlan의 전체 프레임워크에서 입력에는 저장소, 자연어 지침 또는 초기 코드 편집 집합을 통해 시드 사양을 표현하는 작업, 정확성 오라클 및 LLM

이 포함됩니다. CodePlan 각 노드는 LLM이 수행해야 하는 코드 편집 작업을 나타내고, 가장자리는 소스 노드 이후에 수행해야 하는 대상 노드를 나타내는 계획 그래프가 생성됩니다.

CodePlan은 코드 편집을 모니터링하고 적응적으로 확장합니다. 계획 그래프.

계획의 모든 단계가 완료되면 Oracle이 저장소를 분석합니다. Oracle이 저장소의 유효성을 검사하면 작업이 완료됩니다. 오류가 발견되면 오류 보고서는 다음 단계의 계획 생성 및 실행을 위한 시드 사양 역할을 합니다.

코더는 황홀하다! Microsoft는 168개 코드 베이스에서 LLM 코딩 작업을 자동화하기 위해 CodePlan을 제안했습니다.Pictures

또한 CodePlan 알고리즘은 종속성 그래프도 유지하며 그림 4는 종속성 그래프의 구조를 보여줍니다.

코더는 황홀하다! Microsoft는 168개 코드 베이스에서 LLM 코딩 작업을 자동화하기 위해 CodePlan을 제안했습니다.Pictures

Refresh SOTA

연구원들은 패키지 마이그레이션(C#)과 임시 코드 편집(Python)이라는 두 가지 저장소 수준 작업에서 CodePlan의 효율성을 평가했습니다.

각 작업은 여러 코드베이스에서 평가됩니다. , 각각은 여러 파일(2-97개 파일)에 대한 상호 의존적인 변경이 필요합니다.

코더는 황홀하다! Microsoft는 168개 코드 베이스에서 LLM 코딩 작업을 자동화하기 위해 CodePlan을 제안했습니다.Pictures

이러한 수준의 복잡성의 코딩 작업을 자동화하는 데 LLM을 사용한 적은 이전에 없었습니다.

결과에 따르면 CodePlan은 기준보다 실제와 더 일치하며 5/ 6개의 리포지토리가 오류 없는 빌드 및 올바른 코드 편집과 같은 유효성 검사를 통과했습니다.

전반적으로 CodePlan은 복잡한 라이브러리 수준 코딩 작업을 자동화하는 유망한 접근 방식을 제공하여 생산성을 향상하고 정확도가 다시 향상되었습니다

It 많은 과제를 성공적으로 해결하고 효율적이고 안정적인 소프트웨어 엔지니어링 실습을 위한 새로운 가능성을 열어줍니다

참조: https://www.php.cn/link/23b1f559d8bd157d0d741c83957ed4f2

위 내용은 코더는 황홀하다! Microsoft는 168개 코드 베이스에서 LLM 코딩 작업을 자동화하기 위해 CodePlan을 제안했습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 51cto.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제