AInews

마이크로 소프트, 신박한 AI agent인 Magnetic-One 소개!

Magnetic-One은 Microsoft가 최근 공개한 오픈소스 다중 에이전트 AI 시스템입니다. 이 시스템은 복잡한 작업을 자동으로 수행할 수 있도록 설계되었습니다

주요 특징

  1. 단일 AI 모델을 기반으로 여러 AI 에이전트를 활용합니다.
  1. 복잡하고 다단계의 작업을 자율적으로 완료할 수 있습니다.
  1. Microsoft의 AutoGen 오픈소스 프레임워크를 기반으로 합니다3.

시스템 구조

Magnetic-One은 하나의 주 에이전트와 네 개의 보조 에이전트로 구성됩니다

  1. 오케스트레이터(주 에이전트): 작업을 계획하고, 진행 상황을 추적하며, 필요시 재계획을 수립합니다.
  1. 보조 에이전트:
    • WebSurfer: 웹 브라우저 조작
    • FileSurfer: 로컬 파일 관리
    • Coder: 코드 작성
    • ComputerTerminal: 명령줄 작업 수행

주요 기능 및 응용

Magnetic-One은 다음과 같은 작업을 수행할 수 있습니다

  • 웹 브라우저를 사용하여 티켓 예매나 온라인 구매
  • 문서 편집
  • Python 코드 작성
  • 데이터 분석, 소프트웨어 엔지니어링, 과학 연구 등

개방성 및 평가

Microsoft는 Magnetic-One을 오픈소스로 공개하여 개발자와 연구자들이 상업적 목적으로도 사용할 수 있게 했습니다.

또한, AutoGenBench라는 평가 도구를 함께 제공하여 AI 에이전트의 성능을 정확히 측정할 수 있도록 했습니다.

Magnetic-One은 AI 에이전트 기술의 새로운 단계를 보여주는 중요한 발전으로, 복잡한 작업의 자동화와 효율성 향상에 큰 기여를 할 것으로 기대됩니다.

공식문서 번역

Magentic-One 사용은 인간을 위해 설계된 디지털 세계와의 상호 작용을 포함하며, 이는 고유한 위험을 수반합니다. 이러한 위험을 최소화하려면 다음 예방 조치를 고려하십시오.

  • 컨테이너 사용: 모든 작업을 Docker 컨테이너에서 실행하여 에이전트를 격리하고 직접적인 시스템 공격을 방지합니다.
  • 가상 환경: 가상 환경을 사용하여 에이전트를 실행하고 민감한 데이터에 대한 액세스를 방지합니다.
  • 로그 모니터링: 실행 중 및 실행 후에 로그를 면밀히 모니터링하여 위험한 동작을 감지하고 완화합니다.
  • 휴먼 오버사이트(Human Oversight): 에이전트를 감독하고 의도하지 않은 결과를 방지하기 위해 사람이 개입하는 루프에서 예제를 실행합니다.
  • 액세스 제한: 무단 작업을 방지하기 위해 에이전트의 인터넷 및 기타 리소스에 대한 액세스를 제한합니다.
  • 데이터 보호: 에이전트가 손상될 수 있는 민감한 데이터 또는 리소스에 액세스할 수 없도록 합니다. 에이전트와 민감한 정보를 공유하지 마십시오. 에이전트가 때때로 사람의 도움을 요청하거나 사람의 개입 없이 쿠키 계약에 동의하는 것과 같은 위험한 행동을 시도할 수 있음을 유의하십시오. 의도하지 않은 결과를 방지하기 위해 에이전트가 모니터링되고 제어된 환경 내에서 작동하도록 항상 확인하십시오. 또한 Magentic-One이 웹 페이지의 프롬프트 인젝션 공격에 취약할 수 있음에 유의하십시오.

참고

이 코드는 현재 AutoGen AgentChat으로 포팅되고 있습니다. Magentic-One을 기반으로 빌드하려면 포팅이 완료될 때까지 기다리는 것이 좋습니다. 그동안 이 코드베이스를 사용하여 Magentic-One을 실험할 수 있습니다.

다양한 도메인에서 개방형 웹 및 파일 기반 작업을 해결하기 위한 새로운 범용 멀티 에이전트 시스템인 Magentic-One을 소개합니다. Magentic-One은 사람들이 직장과 개인 생활에서 접하는 작업을 완료할 수 있는 에이전트를 개발하는 데 중요한 단계를 나타냅니다.

Magentic-One에 대한 자세한 내용은 블로그 게시물과 기술 보고서에서 확인할 수 있습니다.

위 그림은 GAIA 벤치마크의 복잡한 작업을 완료하는 Magentic-One 멀티 에이전트 팀을 보여줍니다. Magentic-One의 Orchestrator 에이전트는 계획을 생성하고, 다른 에이전트에게 작업을 위임하고, 목표 달성을 위한 진행 상황을 추적하며, 필요에 따라 동적으로 계획을 수정합니다. Orchestrator는 FileSurfer 에이전트에게 파일을 읽고 처리하는 작업을 위임하거나, WebSurfer 에이전트에게 웹 브라우저를 조작하는 작업을 위임하거나, Coder 또는 Computer Terminal 에이전트에게 각각 코드를 작성하거나 실행하는 작업을 위임할 수 있습니다.

Magentic-One의 작업은 리드 Orchestrator 에이전트가 고급 계획, 다른 에이전트 지시 및 작업 진행 상황 추적을 담당하는 멀티 에이전트 아키텍처를 기반으로 합니다. Orchestrator는 작업을 처리하기 위한 계획을 생성하고, 유지 관리되는 작업 원장(Task Ledger)에 필요한 사실과 교육적인 추측을 수집하는 것으로 시작합니다. 계획의 각 단계에서 Orchestrator는 진행 상황 원장(Progress Ledger)을 생성하여 작업 진행 상황을 자체 반영하고 작업이 완료되었는지 확인합니다. 작업이 아직 완료되지 않은 경우, Magentic-One의 다른 에이전트 중 하나에 완료할 하위 작업을 할당합니다. 할당된 에이전트가 하위 작업을 완료하면 Orchestrator는 진행 상황 원장을 업데이트하고 작업이 완료될 때까지 이러한 방식으로 계속합니다. Orchestrator는 충분한 단계 동안 진행이 이루어지지 않고 있다는 것을 발견하면 작업 원장을 업데이트하고 새로운 계획을 생성할 수 있습니다. 이는 위 그림에 나와 있습니다. 따라서 Orchestrator 작업은 작업 원장을 업데이트하는 외부 루프와 진행 상황 원장을 업데이트하는 내부 루프로 나뉩니다.

전반적으로 Magentic-One은 다음 에이전트로 구성됩니다.

  • Orchestrator: 작업 분해 및 계획, 하위 작업 실행에서 다른 에이전트 지시, 전반적인 진행 상황 추적 및 필요에 따라 수정 조치를 담당하는 리드 에이전트입니다.
  • WebSurfer: Chromium 기반 웹 브라우저의 상태를 명령하고 관리하는 데 능숙한 LLM 기반 에이전트입니다. 각 수신 요청에 대해 WebSurfer는 브라우저에서 작업을 수행한 다음 웹 페이지의 새 상태를 보고합니다. WebSurfer의 작업 공간에는 탐색(예: URL 방문, 웹 검색 수행), 웹 페이지 작업(예: 클릭 및 입력), 읽기 작업(예: 요약 또는 질문 답변)이 포함됩니다. WebSurfer는 브라우저의 접근성 트리와 표시 집합 프롬프트를 사용하여 작업을 수행합니다.
  • FileSurfer: Markdown 기반 파일 미리보기 애플리케이션을 명령하여 대부분 유형의 로컬 파일을 읽는 LLM 기반 에이전트입니다. FileSurfer는 디렉터리 내용 나열 및 폴더 구조 탐색과 같은 일반적인 탐색 작업도 수행할 수 있습니다.
  • Coder: 코드 작성, 다른 에이전트에서 수집한 정보 분석 또는 새 아티팩트 생성을 위해 시스템 프롬프트를 통해 특화된 LLM 기반 에이전트입니다.
  • ComputerTerminal: ComputerTerminal은 팀에 Coder의 프로그램을 실행하고 새 프로그래밍 라이브러리를 설치할 수 있는 콘솔 셸에 대한 액세스를 제공합니다.

Magentic-One의 에이전트는 Orchestrator에 다양한 개방형 문제를 해결하는 데 필요한 도구와 기능, 그리고 동적이고 끊임없이 변화하는 웹 및 파일 시스템 환경에 자율적으로 적응하고 행동하는 기능을 제공합니다.

모든 에이전트에 사용하는 기본 멀티모달 LLM은 GPT-4o이지만, Magentic-One은 모델에 구애받지 않으며 작업을 완료할 때 다양한 기능을 지원하거나 다양한 비용 요구 사항을 충족하기 위해 이기종 모델을 통합할 수 있습니다. 예를 들어, 서로 다른 LLM 및 SLM과 특수 버전을 사용하여 다양한 에이전트에 전원을 공급할 수 있습니다. Orchestrator 에이전트에는 GPT-4o와 같은 강력한 추론 모델을 권장합니다. Magentic-One의 다른 구성에서는 다른 에이전트가 GPT-4o를 계속 사용하는 동안 Orchestrator의 외부 루프와 Coder에 OpenAI o1-preview를 사용하는 것도 실험합니다.

Team One 에이전트 로그인

Team One 에이전트는 로그 처리기에서 사용할 수 있는 여러 로그 이벤트를 내보낼 수 있습니다(utils.py의 예제 로그 처리기 참조). 현재 내보내지는 이벤트 목록은 다음과 같습니다.

  • OrchestrationEvent: Orchestrator 에이전트에서 내보냅니다.
  • WebSurferEvent: WebSurfer 에이전트에서 내보냅니다.

또한 개발자는 AutoGen 코어 라이브러리에서 생성된 로그(예: LLMCallEvent 등)를 처리하고 처리할 수도 있습니다. 이를 구현하는 방법은 utils.py의 예제 로그 처리기를 참조하십시오. 기본적으로 로그는 log.jsonl이라는 파일에 기록되며, 정의된 로그 처리기에 대한 매개변수로 구성할 수 있습니다. 이러한 로그는 에이전트 작업 데이터를 검색하기 위해 구문 분석될 수 있습니다.

Setup and Usage

Magentic-One 패키지를 설치한 다음 예제 코드를 실행하여 에이전트가 함께 작동하여 작업을 완료하는 방법을 확인할 수 있습니다.

코드를 복제하고 패키지를 설치합니다.

가장 쉬운 설치 방법은 별도로 설치해야 하는 uv 패키지 설치 프로그램을 사용하는 것이지만 필수는 아닙니다.

저장소를 복제하고 uv를 사용하여 가상 환경을 설정하고 활성화합니다.

(이후 설치 과정에 대한 코드나 명령어가 제공되어야 합니다. 예: git clone ..., uv install ..., uv activate ... 등)

git clone https://github.com/microsoft/autogen.git
cd autogen/python
uv sync  --all-extras
.venv\Scripts\activate
javascript

이 소스로부터 Magentic-one을 인스톨하세요.

cd packages/autogen-magentic-one
pip install -e .
javascript

예제 코드를 실행하려면 다음 지침을 따르세요:

  1. 챗 완성 클라이언트용 환경 변수를 구성합니다. 아래 "챗 완성 클라이언트 환경 구성" 섹션의 지침을 참조하세요.
  1. Magnetic-One 코드는 코드 실행 기능을 사용하므로 예제를 실행하려면 Docker가 설치되어 있어야 합니다.
  1. Magnetic-One은 웹 페이지와 상호 작용하기 위해 Playwright를 사용합니다. Playwright 종속성을 설치해야 합니다. 다음 명령을 실행하여 Playwright 종속성을 설치하세요:
playwright install --with-deps chromium
javascript

이제 예제 코드를 실행하여 에이전트가 어떻게 협력하여 작업을 완료하는지 확인할 수 있습니다.

주의!
예제 코드는 인터넷에서 파일을 다운로드하고, 코드를 실행하고, 웹 페이지와 상호 작용할 수 있습니다. 예제 코드를 실행하기 전에 안전한 환경인지 확인하세요.
예제를 실행하기 전에 Docker가 실행 중인지 확인해야 합니다.

# test
python examples/example.py --logs_dir ./logs --logs_dir ./logs --hil_mode --savve_screenshots

# Specify logs directory
python examples/example.py --logs_dir ./logs

# Enable human-in-the-loop mode
python examples/example.py --logs_dir ./logs --hil_mode

# Save screenshots of browser
python examples/example.py --logs_dir ./logs --save_screenshots
javascript

인수: logs_dir: (필수) 브라우저의 로그, 다운로드 및 스크린샷의 디렉토리 (기본값: 현재 디렉토리) hil_mode: (선택) 휴먼 인더 루프 모드 활성화 (기본값: 비활성화) save_screenshots: (선택 사항) 브라우저 스크린샷 저장 (기본값: 비활성화) [미리보기] Magentic-One용 미리보기 API가 있습니다. MagenticOneHelper 클래스를 사용하여 시스템과 상호 작용하고 로그를 스트리밍할 수 있습니다. 자세한 내용은 인터페이스 README를 참조하세요.

Environment Configuration for Chat Completion Client

이 가이드는 create_completion_client_from_env 함수를 사용하기 위해 환경을 구성하는 방법을 설명합니다. 이 함수는 환경 변수를 읽어 적절한 ChatCompletionClient를 반환합니다.

현재 Magentic-One은 OpenAI의 GPT-4만 기본 LLM으로 지원합니다.

Azure OpenAI 서비스

Azure OpenAI 서비스를 구성하려면 다음 환경 변수를 설정하세요.

  • CHAT_COMPLETION_PROVIDER='azure'
  • CHAT_COMPLETION_KWARGS_JSON (다음 JSON 구조 사용):
{
  "api_version": "2024-02-15-preview",
  "azure_endpoint": "REPLACE_WITH_YOUR_ENDPOINT",
  "model_capabilities": {
    "function_calling": true,
    "json_output": true,
    "vision": true
  },
  "azure_ad_token_provider": "DEFAULT",
  "model": "gpt-4o-2024-05-13"
}
javascript

OpenAI를 구성하려면 다음 환경 변수를 설정하세요.

  • CHAT_COMPLETION_PROVIDER='openai'
  • CHAT_COMPLETION_KWARGS_JSON (다음 JSON 구조 사용):
{
  "api_key": "REPLACE_WITH_YOUR_API",
  "model": "gpt-4o-2024-05-13"
}
javascript

인용

@misc{fourney2024magenticonegeneralistmultiagentsolving,
      title={Magentic-One: A Generalist Multi-Agent System for Solving Complex Tasks}, 
      author={Adam Fourney and Gagan Bansal and Hussein Mozannar and Cheng Tan and Eduardo Salinas and Erkang and Zhu and Friederike Niedtner and Grace Proebsting and Griffin Bassman and Jack Gerrits and Jacob Alber and Peter Chang and Ricky Loynd and Robert West and Victor Dibia and Ahmed Awadallah and Ece Kamar and Rafah Hosn and Saleema Amershi},
      year={2024},
      eprint={2411.04468},
      archivePrefix={arXiv},
      primaryClass={cs.AI},
      url={https://arxiv.org/abs/2411.04468}, 
}
javascript