Hugging Face Transformers 코드 에이전트 GAIA 벤치마크 결과

Hugging Face는 transformers.agents 라이브러리(현재는 smolagents 라이브러리로 발전) 를 사용하여 코드 에이전트를 개발했으며, 이는 AI 에이전트를 위한 가장 도전적인 벤치마크 중 하나인 GAIA 벤치마크에서 최고 순위를 차지했습니다. 이 시스템은 에이전트가 JSON 블롭 대신 Python 코드를 통해 행동을 표현하도록 허용함으로써 효율성이 크게 향상되고 토큰 비용이 감소하며, 복잡하고 다단계의 궤적을 처리하는 에이전트의 능력이 강화된다는 것을 보여줍니다.

GAIA 벤치마크 도전 과제

GAIA는 고수준 계획과 엄격한 실행이 필요한 작업에 대해 에이전트를 테스트하도록 설계되었습니다. 일반적인 GAIA 질문은 멀티모달 기능(이미지 읽기)을 요구하고, 웹에서 서로 다른 정보를 수집하며, 엄격한 출력 제약을 준수해야 할 수 있습니다. 이러한 작업은 종종 후속 정보가 이전 결과에 의존하는 연쇄적인 단계가 필요하며, 이는 LLM이 계획 및 실행에서 흔히 겪는 어려움을 강조합니다.

코드 기반 행동의 장점

JSON과 같은 사전 형태의 출력을 사용하는 대신, Hugging Face 에이전트는 행동을 Python 코드로 구성하고 실행하는 “코드 에이전트” 접근 방식을 사용합니다. 이 방법은 여러 기술적 장점을 제공합니다:

  • 간결함 및 효율성: 코드는 복잡한 순서를 표현하는 보다 최적화된 방법입니다. 예를 들어, 병렬적인 행동 흐름을 여러 JSON 블롭 대신 하나의 코드 단계로 처리할 수 있습니다. 연구에 따르면 코드 행동은 JSON보다 30% 적은 단계가 필요하여 생성된 토큰을 줄이고 운영 비용을 낮춥니다.
  • 직관적인 변수 관리: 코드는 에이전트가 도구 출력물을 명명된 변수로 저장하도록 허용합니다(예: rock_image = image_generation_tool("A picture of a rock")). 이는 JSON에서 요구되는 복잡한 명명 체계에 비해 LLM이 이후 단계에서 이러한 출력을 참조하기 쉽게 합니다.
  • 모델 유창성: LLM은 방대한 양의 코드를 학습했기 때문에, JSON을 작성하는 것보다 코드를 작성하는 데 더 유창한 경우가 많습니다.

보안 코드 실행 구현

LLM이 생성한 코드를 실행하는 위험을 완화하기 위해, Hugging Face는 ast(Abstract Syntax Tree) 모듈을 사용하여 처음부터 보안 Python 인터프리터를 구현했습니다. "블랙리스트" 접근 방식(특정 동작 금지) 대신, 인터프리터는 "화이트리스트" 접근 방식을 사용합니다:

  • AST 기반 실행: 인터프리터는 트리 노드를 하나씩 실행하며, 명시적으로 허가되지 않은 모든 연산에서 중단합니다.
  • 허가된 임포트: authorized_imports 목록에 명시된 임포트만 실행됩니다; printrange와 같은 표준 함수는 포함되지만, open과 같은 위험한 함수는 기본적으로 금지됩니다.
  • 안전 가드레일: 시스템은 무한 루프를 방지하기 위해 연산 수를 제한하고, 출력이 LLM의 컨텍스트 창을 잡동사니 데이터로 넘치게 하지 않도록 print 출력 라인 수를 제한합니다.

멀티 에이전트 오케스트레이션 및 계획

시스템은 특히 웹 브라우징 중에 컨텍스트를 관리하고 노이즈를 줄이기 위해 멀티 에이전트 아키텍처를 활용합니다:

오케스트레이션 구조

  • 매니저 에이전트: ReactCodeAgent로, 고수준 작업 해결을 담당하고 file_inspector, visualizer, search_agent에 접근할 수 있습니다.
  • 검색 에이전트: 매니저 에이전트를 위한 도구로 래핑된 JSON 기반 에이전트입니다. 순차적인 웹 브라우징 작업을 처리하며(informational_web_search, page_down, find_in_page와 같은 도구 사용), 컨텍스트를 어지럽히지 않도록 매니저에게 관련 정보만 반환합니다.

계획 워크플로우

에이전트는 매 N 단계마다 알려진 사실과 필요한 사실의 요약 및 단계별 계획을 생성하는 "미리 계획" 워크플로우를 사용합니다.

  • 튜닝: 매니저 에이전트는 2단계마다(N=2) 계획을 업데이트하고, 검색 에이전트는 5단계마다(N=5) 업데이트합니다.
  • 컨텍스트 최적화: Hugging Face는 프롬프트에서 이전 버전의 계획을 생략하면 점수가 향상된다는 것을 발견했으며, 이는 LLM이 오래된 계획에 편향되는 것을 방지하고 접근 방식을 재평가하도록 장려합니다.

성능 결과

파인튜닝 없이 GPT-4o를 사용하여, 에이전트는 GAIA 벤치마크에서 다음과 같은 결과를 달성했습니다:

  • 검증 세트: 44.2%, 전체 1위.
  • 테스트 세트: 33.3%, 전체 2위, Microsoft Autogen 제출보다 우수.
  • 레벨 3 질문: 에이전트는 가장 어려운 "hardcore" 레벨 3 질문에서 최고의 평균 점수를 기록했습니다.

향후 개선 사항

Hugging Face는 추가 최적화를 위한 여러 경로를 확인했습니다:

  • LLM 엔진: 파싱 오류를 줄이기 위해 파인튜닝된 오픈소스 모델을 탐색합니다.
  • 오케스트레이션: 보다 원활한 멀티 에이전트 오케스트레이션을 향해 나아갑니다.
  • 웹 도구: selenium 패키지를 통합하여 JavaScript와 쿠키 배너를 처리합니다.
  • 계획: 현재 문헌에서 제시된 대체 계획 전략을 테스트합니다.

Sources