Thanks to visit codestin.com
Credit goes to openai.github.io

콘텐츠로 이동

멀티 에이전트 오케스트레이션

오케스트레이션은 앱에서 에이전트가 흐르는 방식을 의미합니다. 어떤 에이전트가 실행되고, 어떤 순서로, 다음에 무엇을 할지 어떻게 결정하는가? 에이전트를 오케스트레이션하는 방법은 두 가지가 있습니다.

  1. LLM이 의사결정을 하도록 허용: LLM의 지능을 활용해 계획하고 추론하며 그에 따라 다음 단계를 결정
  2. 코드로 오케스트레이션: 코드로 에이전트의 흐름을 결정

이 패턴들은 혼합해서 사용할 수 있습니다. 각 방식의 트레이드오프는 아래에 설명합니다.

에이전트는 instructions, tools 및 핸드오프를 갖춘 LLM입니다. 이는 개방형 작업이 주어졌을 때, LLM이 도구를 사용해 행동하고 데이터를 수집하며, 핸드오프를 통해 하위 에이전트에 작업을 위임하는 등 스스로 작업 수행 계획을 세울 수 있음을 의미합니다. 예를 들어, 리서치 에이전트는 다음과 같은 도구를 갖출 수 있습니다:

  • 온라인에서 정보를 찾기 위한 웹 검색
  • 독점 데이터와 연결을 탐색하기 위한 파일 검색 및 검색
  • 컴퓨터에서 작업을 수행하기 위한 컴퓨터 사용
  • 데이터 분석을 위한 코드 실행
  • 기획, 보고서 작성 등에 특화된 에이전트로의 핸드오프

이 패턴은 작업이 개방형이고 LLM의 지능에 의존하고 싶을 때 적합합니다. 여기서 가장 중요한 전술은 다음과 같습니다:

  1. 좋은 프롬프트에 투자하세요. 사용 가능한 도구, 사용 방법, 준수해야 하는 범위를 명확히 하세요.
  2. 앱을 모니터링하고 반복 개선하세요. 어디서 문제가 생기는지 확인하고 프롬프트를 개선하세요.
  3. 에이전트가 자기 성찰과 개선을 하도록 허용하세요. 예를 들어 루프에서 실행하여 스스로 비평하게 하거나, 에러 메시지를 제공하고 개선하도록 하세요.
  4. 모든 일을 잘하는 범용 에이전트 대신 하나의 작업에 특화되어 뛰어난 에이전트를 두세요.
  5. evals에 투자하세요. 이를 통해 에이전트를 훈련해 개선하고 작업 수행 능력을 높일 수 있습니다.

LLM을 통한 오케스트레이션은 강력하지만, 코드 기반 오케스트레이션은 속도, 비용, 성능 측면에서 더 결정적이고 예측 가능하게 만듭니다. 일반적인 패턴은 다음과 같습니다:

  • structured outputs를 사용해 코드로 검사할 수 있는 적절한 형식의 데이터를 생성. 예를 들어, 에이전트에게 작업을 몇 개의 카테고리로 분류하게 한 뒤 해당 카테고리에 따라 다음 에이전트를 선택
  • 한 에이전트의 출력을 다음 에이전트의 입력으로 변환해 여러 에이전트를 체이닝. 블로그 글 작성을 조사하기, 개요 작성, 블로그 글 작성, 비평, 개선의 단계로 연속 구성할 수 있음
  • 작업을 수행하는 에이전트와 평가 및 피드백을 제공하는 에이전트를 함께 while 루프로 실행하고, 평가자가 출력이 특정 기준을 통과했다고 말할 때까지 반복
  • Promise.all 같은 JavaScript 기본 컴포넌트를 통해 여러 에이전트를 병렬 실행. 서로 의존하지 않는 여러 작업이 있을 때 속도 면에서 유용

examples/agent-patterns에 다양한 code examples가 있습니다.