https://www.youtube.com/live/f9L9Fkq-8K4


개발에 가장 시간이 많이 소요되는 부분 (이 부분만이라도 코딩 에이전트가 해결한다면? 생산성이 많이 좋아질 것)  

 

 

Challenges in Coding Agents:

  • Defining the Environment:
    • Agent 가 코드를 실행하고, 테스트, 빌드 할 수 있는 공간
    • Agent 가 접근할 수 있는 리소스 범위 설정
    • 운영체제, 프로그래밍 언어, 의존 라이브러리, 보안, 버전 호환성, 메모리 및 계산 자원 등 기술 스택을 명확히 설정
  • Designing an Observations/Actions:
    • Actions: 에이전트가 취할 수 있는 행위(코드 작성, 수정, 테스트 실행, 라이브러리 검색 등)
    • Observations: 에이전트가 Actions 을 한 후 수집되는 정보(요구사항, 소스 코드, 에러 메시지, 문맥 등)
  • Code Generation:
    • 에이전트가 주어진 문제 또는 요구사항에 맞춰 코드를 작성(또는 제안)하는 능력
  • File Localization:
    • 생성된 코드가 어느 위치, 어떤 파일에 저장되어야 하는지, 또 기존 프로젝트 구조 내에서 어떻게 배치되는지 결정하는 과정
    • 수정할 파일을 찾을 수 있는 것.
    • 파일 경로, 프로젝트 구조를 어떻게 알릴 것인지
    • 파일을 생성/수정/삭제할 때 권한 및 보안 이슈
    • 대규모 프로젝트에서 수백/수천 개의 파일이 있을 경우, 빠르고 정확한 파일 검색/참조 방법
  • Planning and Error Recovery:
    • 단순히 한 번의 코드 생성을 넘어, 코드를 “어떻게” 작성해 나갈지 계획을 세우고, 실행 후 생기는 문제(에러, 빌드 실패, 버그)에 대해 복구 또는 수정하는 절차
    • 에이전트가 에러 상황에 빠졌을 때, 어디까지 자동으로 복구를 시도하고, 언제 human-in-the-loop를 요청할지 결정
  • Safety:
    • 코딩 에이전트가 생성하는 코드가 의도치 않은 보안 취약점이나 악성 행위를 유발하지 않도록 통제하는 것
    • 회사 정책, 라이선스, 윤리/법적 규제를 위반하지 않도록 모니터링하고 필터링하는 기능
    • 생성된 코드의 보안 점검(Static Analysis, 취약점 스캐너, Lint 등)을 에이전트 단계에서 자동화할 수 있는지
    • 문맥에서 민감 정보(키, 인증 정보, 개인정보 등)를 무단으로 사용하거나 노출하는지 필터링
    • 잘못된 의도로 에이전트를 사용하지 않도록 권한 관리, 로깅 시스템, 모니터링 등 구축

 

 

Coding Agent - Enviroment:

  • 이 정도 권한과 작업 환경은 받아야 코딩을 할 수 있을 것.

 

 

Benchmark dataset:

  • Simple Coding 작업을 할 수 있는지 평가 - HumanEval/MBPP 벤치마크:
    • HumanEval은 코드 작성 능력을 평가하기 위해 Python 문제와 테스트 케이스를 제공하며, 모델이 얼마나 정확히 문제를 해결하는지 평가함.
    • MBPP는 Python 표준 라이브러리를 활용한 문제를 포함하며, 비교적 간단한 코드 생성 작업을 다룸.
  • CoNaLa (Code/Natural Language Challenge), ODEX:
    • CoNaLa 벤치마크:
      • StackOverflow에서 스크래핑한 데이터를 기반으로 만들어졌음.
      • AI 모델이 자연어로 기술된 문제를 이해하고 이에 맞는 코드를 생성하는 능력을 평가하는 것.
    • ODEX 벤치마크:
      • ODEX는 코드 생성 모델을 평가할 때 실행 기반 평가를 추가한 벤치마크
      • 단순히 코드 생성뿐 아니라, 생성된 코드가 실제로 실행 가능한지 확인하는 것.
      • 만들어진 코드의 정확성과 실행 가능성을 측정하는 것.
  • ARCADE:
    • 데이터 과학 워크플로우와 관련된 작업을 평가하기 위해 설계된 벤치마크. 주로 Jupyter Notebook과 같은 데이터 과학 노트북 환경에서 작동하며, 코드를 점진적으로 작성하고 실행할 수 있는 환경을 시뮬레이션 하기 위함.
    • 기존 벤치마크는 단일 함수나 스니펫 생성에 중점을 두었지만, ARCADE는 전체 워크플로우에서 코드의 연속성과 문맥 이해를 테스트하기 위함.
    • SWEBench:
      • SWEBench는 소프트웨어 개발 워크플로우에서 문제 해결 및 코드 수정 작업을 중심으로 한 벤치마크임.
        • GitHub에서 실제 이슈(issue)와 관련된 코드베이스를 기반으로 설계되었으며, AI 모델이 이를 바탕으로 Pull Request(PR)를 생성하고 해결 여부를 평가한다.
  • An Aside: Dataset Leakage:
    • 모델이 평가 중에 사용하는 테스트 데이터와 동일하거나 유사한 데이터를 훈련 과정에서 이미 접한 경우 벤치마크 데이터셋에는 높은 성능을 내지만 실제로는 그렇지 못한 경우가 있음.
    • ARCADE 벤치마크에서 공개된 데이터를 기반으로 한 벤치마크에서는 모델이 높은 성능을 보이는 경우가 많지만, 새롭게 설계된 데이터사이언스 노트북에서는 성능을 내지 못하는 걸 발견함.
    • (벤치마크 데이터 셋으로 과도한 학습으로 overfit 을 만들어낸게 문제)
    • 그래서 LiveCodeBench 를 제안하기도 함 ( 모델이 실시간 코드 문제를 해결하는 능력을 평가하는 벤치마크)
  • Design2Code:
    • Design2Code는 웹사이트 디자인을 기반으로 코드를 생성하는 작업을 평가하는 벤치마크
    • Visual Embeddings 을 이용해서 고수준의 시각적인 유사도를 평가하고, 개별 요소(element) 수준에서의 정확도를 Low-Level 에서 평가함.

 

 

Performance Metric:

  • Pass@K:
    • AI 모델이 한 문제에 대해 여러 개의 코드(예제)를 생성했을 때, K개의 시도 중 적어도 하나의 코드가 테스트를 통과할 확률을 나타냄.
    • “K개의 예제 중 하나라도 단위 테스트(Unit Test)를 통과하는가?“라는 질문에 대한 성능 척도
  • Lexical/Semantic Overlap Metrics:
    • Lexical:
      • 생성된 코드와 레퍼런스 코드(정답 코드) 간의 텍스트적 유사성을 측정
    • Semantic;
      • 코드의 의미론적 구조(예: 구문 트리, 데이터 흐름 등)를 기반으로 유사성을 측정
    • CodeBERTScore:
      • BERT 기반의 언어 모델(BERT)의 변형으로, 코드 평가 메트릭:
      • 코드의 구문적 유사도와 흐름 그리고 문맥과 의미를 더 잘 이해하여 평가.

 

 

Coding Agent - Designing Observation/Action Spaces:

  • SWE Agent:
    • 사용가능한 Tools:
      • Navigate Repository
      • Search Files
      • View Files
      • Edit Lines
  • 코드 생성에 사용할 수 있는 많은 정보들:
    • Current Code Context
    • Decription of issure to fix
    • Repository Context
    • Open tabs

 

 

Coding Agent - File Localization:

  • 작성/편집 해야할 파일을 찾는 전략:
    • (1) Offload to the User (사용자가 수정할 수 있는 파일의 절대 경로를 모두 프롬프트안에 지정하는 것)
    • (2) Prompt the Agent w/ Search Tools (파일을 찾을 수 있도록 하는 도구를 주는 것)
    • (3) A-priori Map the Repo (Reposistory 의 Map 을 만들어주는 것, CodeGPT 같은 경우는 Knowledge Graph 를 만들었고, 여기서는 tree-structured map 을 제안함)
    • (4) RAG (유사한 코드를 찾는 것.)

 

 

Coding Agent - Plan and Error Recovery:

  • LLM Generated Plan (CodeR, Chen et al., 2024)
    • Multi Agent style method
    • 작업 흐름(Task Flow):
      • (1) Manager가 문제를 분석하고, 해결 전략(Task Graph)을 계획 (Task Graph는 하위 작업(문제 재현, 문제 위치 식별, 코드 수정 등)으로 구성)
      • (2) 문제 재현: Reproducer는 문제를 재현하기 위한 스크립트나 테스트를 생성하고 실행
      • (3) 문제 원인 식별: Fault Localizer는 코드베이스를 탐색하여 문제의 원인을 찾음.
      • (4) 코드 수정: Editor 가 코드를 수정
      • (5) 검증: Verifier 가 해결되었는지 검증
  • CoAct (Hou et al., 2024, Planning and Revisiting):
    • Agent 가 처음 만들어낸 계획은 실수할 수 있을거임. 잘못된 가정이 있기 때문에.
    • 그래서 게획대로 실행을 하지만 잘못된 상황을 만났을 경우 그것에 따른 수정을 하는 Replanning 전략이 엄청 중요함. 이걸 강조하고 싶었다고 함.
  • InterCode (Yang et al., 2023, Fixing based on Error Messages):
    • Intercode 의 코드 생성 전략은 한번에 코드를 쫙 작성하는 방법이 아닌 코드를 생성해보고 실행해보고 결과를 보고 다시 수정하는 식으로 코드를 생성해보는 작업임.
    • Intercode 에서는 Plan-and-Solve 와 ReAct 기반으로 해봤는데 ReAct 가 더 높은 성능을 달성했음.
    • 그리고 최근 똑똒한 모델인 GPT-4o 같은 경우는 이런 방식에 그렇게 뛰어나진 않았다고 함. 계속 같은 방법으로 문제를 해결하려고 하는 무한 루프에 빠질 수도 있다고. 그래서 이 점을 기억해야할듯.

 

 

Coding Agent - Safety:

  • Solution (1) - Sandboxing:
    • Openhands 같은 경우는 실행 환경을 Docker 로 제한시켰다고 함.
  • Solution (2) - The principle of least privilege:
    • Example: GitHub access tokens
  • Solution (3) - Post-hoc Auditing:
    • 만들어진 코드를 검증해서 안정성 정확성 보안성 등을 확인하는 기법임. 이것도 언어 모델을 사용할 것.

+ Recent posts