본문 바로가기

IT 트렌드

[Post] 자율 AI 에이전트 심층 분석: 기술적 접근

 

 

Exploring Autonomous Agents: A Semi-Technical Dive

Agents are all the rage, but their planning capabilities currently outpace their ability to act reliably. How do we make them truly autonomous?

www.sequoiacap.com

 

핵심 요약:

  • AI 에이전트의 계획 능력과 실행력 간 격차 분석
  • AutoGPT와 LangChain의 기술적 구현 특성
  • 미래 발전을 위한 핵심 도전 과제
  • 실용적 구현을 위한 기술적 요구사항

 

자율 에이전트의 현재와 미래에 대한 기술적 고찰

 

에이전트들이 큰 화제를 모으고 있지만, 현재는 신뢰할 수 있는 실행 능력보다 계획 수립 능력이 앞서 있습니다. 어떻게 이들을 진정한 자율 시스템으로 만들 수 있을까요?

 

지난 몇 주 동안 자율 AI 에이전트들이 세상을 휩쓸었습니다. AutoGPT는 역사상 가장 빠르게 성장하는 Github 저장소 중 하나가 되어, PyTorch, 주요 Python 웹 프레임워크, 심지어 Python 자체(미안해요, Guido)보다 더 많은 별을 받았습니다. 이는 선별된 것이긴 하지만 꽤 인상적인 데모들로 이어졌고, Twitter 오피니언 리더들과 AI 위기론자들 모두의 상상력을 사로잡았습니다. 흥미롭게도, 에이전트의 인기는 위기론자들이 두려워하는 초지능으로의 진보보다 AI 위기론 자체를 더 가속화했을 수 있습니다.

 

LLM과 구별되는 에이전트의 주요 특징은 자체 지시 루프에서 실행된다는 것입니다. 이는 주로 경량 프롬프팅 레이어와 일종의 지속성 또는 메모리로 보강됩니다. 에이전트마다 아키텍처가 다르며, 일부는 작업 우선순위에 중점을 두고 다른 일부는 더 대화형 역할 플레이 접근 방식을 취합니다. 개인 비서에서 자동화된 GTM 팀에 이르기까지 활용 사례는 광범위합니다.

 

Implementation

핵심 자율 에이전트 루프는 꽤 단순합니다. AutoGPT의 경우, 각 에이전트는 초기 프롬프트, 실행할 작업 세트, 메시지 기록, 실행 가능한 코드와 파일을 즉석에서 작성할 수 있는 작업 공간에 접근할 수 있습니다. 초기 프롬프트는 "내 딸의 생일 파티를 계획해줘—그녀는 유니콘을 정말 좋아해"와 같은 것일 수 있습니다.

 

에이전트는 수정된 ReAct 루프에서 실행되며, 특별한 프롬프트를 통한 두 번째 채팅 완성 호출로 자신의 행동을 비평할 수 있습니다. 이 프롬프트는 대략 "제안된 행동을 검토하고 그것이 좋은지 나쁜지, 그 이유를 말해줘"로 요약됩니다.

 

즉각적인 관찰 결과: 데모는 놀라울 수 있지만, 에이전트 구현은 내부적으로 꽤 단순합니다. AutoGPT는 본질적으로 지속적 메모리와 실행 가능한 코드 작성 능력을 갖춘 재귀적 루프에서 실행되는 경량 프롬프팅 레이어입니다. LangChain은 선택적 인간 피드백 구성 요소로 기본 에이전트를 보강한 AutoGPT의 부분 구현을 제공합니다. LangChain은 AutoGPT뿐만 아니라 BabyAGI와 기존 연구의 직접적인 번역(예: ReAct, MRKL)을 포함한 다양한 에이전트 구현을 가능케 하는 프레임워크라는 점을 주목해야 합니다. AutoGPT는 전체 아키텍처와 프롬프팅 전략에 대해 특정한 결정을 내린 에이전트 구현입니다.

 

이러한 에이전트들을 실제로 유용하게 만들기 위한 즉각적으로 달성 가능한 다음 단계는 액션 스페이스를 확장하는 것입니다: LangChain 도구나 AutoGPT 플러그인. 이러한 모듈들은 에이전트가 수행할 수 있는 확장된 명령 세트를 정의합니다. Google 검색이나 즉석 코드 작성과 같은 예시가 있습니다. 오픈소스 커뮤니티는 트위터 통합으로 에이전트가 트윗을 읽고 게시하게 하거나, 결제 통합으로 체크아웃 플로우를 탐색하게 하는 등 이 유한한 액션 세트를 확장할 수 있습니다. 이것이 LangChain과 AutoGPT가 뛰어난 부분입니다: 최근의 관심 덕분에 개발자들이 플러그인을 구축하기 위해 이러한 프로젝트들로 몰려듭니다.

 

So what's next?

제약 없는 환경에서 작동하는 자율 에이전트 구축은 여전히 해결되지 않은 연구 과제입니다. 우리는 이 현실에서 아직 멀리 있습니다. 다만 모델들은 가속화된 속도로 개선되고 있습니다. AutoGPT와 같은 에이전트들은 제약 없는 환경에서의 에이전트에 대한 흥미로운 실용적 실험을 나타냅니다. 아키텍처와 프롬프팅 전략에 대한 실험과 반복, 그리고 충분한 오픈소스 기여를 통해 이 접근 방식은 AI 위기론자들의 환상과 현실 사이의 간극을 메우기 시작할 수 있습니다.

 

다음은 우리를 그곳으로 데려가기 위한 에이전트 위시리스트입니다:

  • 더 나은 헤드리스 브라우저: 에이전트가 가장 잘 작동하는 지시문은 인터넷에서 정보를 검색하는 것입니다. Google 검색으로 시작할 때는 잘 작동하지만, 임의의 웹 페이지를 방문할 때는 덜 효과적입니다. 에이전트는 다양한 HTTP 오류를 이해하고 우아하게 처리해야 할 뿐만 아니라, 임의로 큰 웹페이지를 파싱하고 잠재적으로 인간 사용자 경험을 완전히 모방하기 위해 Javascript를 실행해야 합니다. 그런 다음 에이전트는 인식된 UX를 제한된 컨텍스트 창에 매핑해야 합니다. 이는 매우 어려운 문제이지만, 잠재적 해결책이 있다면 여기서 시작할 수 있습니다.
  • 더 나은 명령 선택: 현재는 채팅 완성이 명령 선택을 담당합니다("어떤 명령을 사용할지 결정..."). 이는 꽤 심각한 환각을 유발합니다: 예를 들어, 아래 보이는 생일 계획 에이전트는 실제로 존재하지 않는 파일을 인수로 참조하려고 합니다. 환각을 최소화하고 에이전트를 올바른 방향으로 안내하는 프롬프팅과 절차적 코드의 현명한 조합이 있을 것입니다. 예를 들어, 현재 명령의 더 설명적인 버전과 채팅 완성 응답 간의 임베딩 벡터의 코사인 유사도를 시도해볼 수 있습니다. 또는 엣지 케이스를 최소화하거나 완성 출력의 창의성을 제한하는 방식으로 프롬프트를 작성하려고 시도할 수 있습니다. 올바른 해결책이 무엇인지는 불분명하지만, 여기에는 개선의 여지가 많습니다. 부연하자면, 이는 모델 수준에서 toolformers를 탐색할 좋은 기회입니다.
  • 액션 스페이스 최적화: LangChain 에이전트는 기본적으로 매개변수화되어 있지만(인스턴스화 시 어떤 도구를 전달할지 결정합니다), AutoGPT는 기본 제공 작업 세트를 기본값으로 사용합니다. 이러한 작업 중 일부는 에이전트에게 엄청난 기능을 제공합니다: 임의의 코드와 파일을 읽고, 쓰고, 실행할 수 있습니다. 최상의 경우, 이는 에이전트를 진정으로 자율적이고 자체 개선하게 만들 것입니다. 하지만 에이전트는 아직 실패하거나 환각을 일으키는 것보다 더 신뢰성 있게 코드와 파일을 생성할 수 없습니다. 이는 에이전트가 새롭고 작동하는 결과로 이어지는 것보다 더 자주 막히게 만듭니다. 여기서의 제안은 세 가지입니다: 1) 어떤 작업의 부분집합이 최고의 에이전트로 이어지는지에 대한 "하이퍼파라미터 최적화"를 수행하고 - LangChain의 경우, 이를 기본 도구 세트로 포함; 2) 에지 케이스에 도달하여 루프에 빠졌을 때 자동으로(감지하기 쉬워야 함) 또는 사용자 입력으로 수동으로 작업 세트를 즉시 변경할 수 있도록 허용; 3) 기존 작업에 대한 가드레일, 입력 검증, 더 나은 실패 모드 처리 구축(더 나은 헤드리스 브라우저에 대한 제안과 유사). 또한 AutoGPT의 경우, 모델이 더 나아질 때까지 더 강력한 "특이한" 명령 중 일부를 잠재적으로 제거.
  • 액션 랭킹을 위한 판별기: 최근의 Generative Agents 논문은 "최신성", "중요성", "관련성"의 선형 조합으로 메모리의 관찰을 순위화하는 전략을 설명했습니다. 우리는 메모리 컨텍스트와 작업 선택/액션 우선순위 지정 모두에 대해 이와 같은 것을 구현하려고 시도할 수 있습니다. 악마는 세부사항에 있습니다. 예를 들어, 논문은 중요성을 순위화하기 위한 별도의 프롬프트를 제안했습니다("1에서 10까지의 척도로..."); 하지만 사용 사례에 따라 목적에 따라 "중요성"은 수치 모델(예: 가능성 추정기)로 더 잘 추정될 수 있습니다. 모든 상황에 맞는 해결책은 없을 것이며, 최선의 접근 방식은 아마도 간단한 프롬프트로 시작하여 거기서부터 발전시키는 것일 것입니다.
  • 더 많은 도구와 플러그인: 지난 2주 동안 AutoGPT의 승인된 플러그인 수가 2개에서 거의 20개로 증가했습니다 - Telegram에서 Wikipedia, 암호화폐까지. LangChain 도구도 마찬가지로 포괄적입니다. 각각의 추가 작업 플러그인은 에이전트의 작업 공간을 확장하고 인터넷에서 인간을 모방하는 데 한 걸음 더 가깝게 만듭니다.
  • 에이전트 간 메시징: 에이전트가 실제 환경에 배포됨에 따라, 서로 새로운 방식으로 통신을 시작할 수 있습니다. 이러한 아이디어는 다중 에이전트 시뮬레이션 환경에서 탐구되지만, AutoGPT와 다른 제약 없는 에이전트는 현재 싱글 플레이어 모드로 작동합니다. 메시징은 학생-코치나 경쟁적 동료 간과 같이 서로 다른 지시를 가진 에이전트들 간의 더 복잡한 관계 가능성을 도입할 수 있습니다. 이를 위해서는 에이전트를 위한 지속성 레이어, 다른 모든 에이전트를 쿼리할 수 있는 능력, 그리고 잠재적으로 에이전트 반복 사이에 수신된 메시지의 중요도를 순위화하는 판별기가 있는 메시징 레이어가 필요할 것입니다(@nicktindle의 이 관찰에 감사드립니다).
  • 더 나은 모델: 에이전트가 보여주는 빈번한 논리적 간극을 위해 이는 필수입니다. GPT-4로는 아직 거기에 도달하지 못합니다 - 아마도 다음 세대의 모델에서? 또한 현재의 자율 에이전트는 느리고 비싸습니다. 아마도 작업의 하위 집합에 대해 더 빠르고, 저렴하고, 효과적으로 만들기 위해 에이전트 궤적에 대한 미세 조정을 탐구할 가치가 있을 것입니다. Toolformers는 여전히 충분히 탐구되지 않았지만 유망합니다.

이 모든 것의 한 가지 교훈이 있다면, 에이전트의 추론 능력은 꽤 좋지만 행동 측면은 여전히 상당히 기초적이라는 것입니다. 연구에서 에이전트들은 대부분 장난감 자동차를 가지고 노는 유아처럼 제한된 능력으로 제약된 환경에서 실행됩니다. 자율 상업용 에이전트들과 함께, 우리는 에이전트들이 제약 없이 실제 환경에서 실행되는 첫 실험적 시도를 보고 있습니다. 이러한 유아들에게 실제 자동차를 주는 것과 같습니다. 이는 흥미롭고 전례 없는 일이며, 일단 신뢰성 있게 작동하면 에이전트의 제로에서 원으로의 개선을 나타낼 것입니다. 하지만 이 유아들은 운전하는 방법을 모르고 현재는 그들의 길에 오는 대부분의 장애물에 충돌하고 있습니다. 놀랍도록 유능한 유아들을 만들기 위해 장난감 자동차 측면에서 몇 가지 제안을 했지만, 진정으로 작동하는 자율 에이전트를 원한다면 우리는 또한 더 나은 모델을 기다려야 합니다.