소개: AutoGen에서 AG2까지
자동 생성 의 연구 프로젝트로 2023년 탄생했습니다. 마이크로소프트 리서치 와 야심 찬 목표: AI 에이전트가 협업할 수 있는 프레임워크를 만드는 것입니다. 대화. 에이전트를 격리된 작업자로 취급하는 다른 프레임워크와 달리 작업을 순차적으로 실행하는 AutoGen은 근본적으로 다른 패러다임을 도입했습니다. 그들은 서로 이야기를 나눈다, 해결책을 협상하고, 서로 수정하고, 새로운 결과를 낳습니다. 그들의 상호 작용에서.
AutoGen의 진화 경로는 중요했습니다. 초기 릴리스(0.1-0.2)에서는 다중 에이전트 대화의 잠재력. 에게 2024년 11월, 프로젝트는 다음으로 이름이 변경됨 AG2 개방형 거버넌스 하에서 통제로부터 자유로워졌습니다. 마이크로소프트에서 직접. 에게 2025년 1월, AutoGen 0.4 릴리스에서는 완전한 아키텍처 재설계: 이벤트 기반 비동기 코어, 모듈식 에이전트 및 시스템 주제 기반 메시징.
동시에 Microsoft는 다음을 개발했습니다. Microsoft 에이전트 프레임워크, 미리보기에 입력됨 2025년 10월에 출시될 예정이며 2026년 1분기에 일반 공급될 예정입니다. 이 프레임워크는 기능을 통합합니다. AutoGen의 시맨틱 커널, 통합된 기업 경험 제공 Azure AI Foundry와 함께하세요. 따라서 AutoGen을 이해하는 것은 전체 생태계를 마스터하는 데 필수적입니다. 마이크로소프트의 AI 에이전트.
이 기사에서 배울 내용
- AutoGen의 대화형 모델과 이것이 다른 프레임워크와 다른 이유
- 사용 가능한 에이전트 유형: AssistantAgent, UserProxyAgent, ConversableAgent, GroupChat
- 승인 패턴을 사용하여 Human-in-the-Loop를 구현하는 방법
- 코드 생성 주기는 자체 수정됩니다.
- 다중 에이전트 대화의 새로운 동작
- Microsoft Agent Framework로의 마이그레이션 경로
- 3명의 에이전트를 사용한 반복적인 코드 검토에 대한 전체 사례 연구
AutoGen vs CrewAI vs LangGraph
AutoGen에 대해 알아보기 전에 AutoGen이 다른 프레임워크와 어떻게 비교되는지 이해하는 것이 도움이 됩니다. 이 시리즈에서 분석한 다중 에이전트입니다. 각 프레임워크에는 아키텍처 철학이 있습니다. 이상적인 사용 사례를 결정하는 고유한 요소입니다.
다중 에이전트 프레임워크 비교
| 특성 | 자동 생성/AG2 | 크루AI | 랭그래프 |
|---|---|---|---|
| 어형 변화표 | 대화 우선 | 역할 기반 팀 | 그래프 기반 워크플로우 |
| 조정 | 자연스러운 대화 | 업무위임 | 명시적 노트 및 호 |
| 인간 참여형 | 기본, 4가지 모드 | 구성 가능 | 체크포인트 기반 |
| 코드 실행 | 통합(Docker/로컬) | 도구를 통해 | 커스텀 노드 |
| 기업 지원 | Microsoft 지원 | 커뮤니티 중심 | LangChain 생태계 |
| 학습 곡선 | 평균 | 낮은 | 높은 |
| 유연성 | 높은 | 평균 | 최고 |
| 이상적인 사용 사례 | 반복적인 협업 | 구조화된 파이프라인 | 복잡한 작업흐름 |
이러한 프레임워크 간의 선택은 바이너리가 아닙니다. 복잡한 시스템에서는 다음과 같이 결합할 수 있습니다. 전체 워크플로에는 LangGraph를 사용하고 상담원 팀에는 CrewAI를, 상호 작용에는 AutoGen을 사용합니다. 반복적인 협상과 사람의 개입이 필요한 작업입니다. 핵심은 각 개인의 장점을 이해하는 것이다. 특정 문제에 적합한 도구를 선택하세요.
대화 모델
AutoGen의 핵심은 다음과 같은 개념입니다. 대화는 조정의 기본이다. 다른 프레임워크는 그래프, 큐 또는 파이프라인을 사용하여 에이전트를 조정하는 반면 AutoGen은 대화를 사용합니다. 그 자체. 에이전트는 존재와 마찬가지로 공유 스레드에서 메시지를 교환하여 통신합니다. 인간은 그룹 채팅에서 협력합니다.
이 모델은 상당한 이점을 제공합니다. 대화는 본질적으로 유연합니다. 도움이 되지 않습니다. 가능한 모든 경로를 미리 정의하십시오. 에이전트는 다음을 기반으로 동적으로 적응할 수 있습니다. 토론에서 나오는 내용. 한 상담원은 예상치 못한 질문을 할 수도 있고 다른 상담원은 대안적인 접근 방식을 제안하면 시스템은 솔루션을 향해 유기적으로 발전합니다.
공유 메모리로서의 채팅 기록
La 채팅 기록 모든 에이전트 간에 공유 메모리 역할을 합니다. 모든 메시지 전송된 내용은 모든 참가자가 볼 수 있는 공통 컨텍스트의 일부가 됩니다. 이는 다음을 제거합니다. 명시적인 동기화 메커니즘이 필요함: 컨텍스트가 자연스럽게 전파됨 대화를 통해.
- 맥락 축적: 각 메시지는 후속 메시지에 사용할 수 있는 컨텍스트를 풍부하게 합니다.
- 완전한 투명성: 각 에이전트는 다른 사람의 결정과 추론을 포함한 전체 스토리를 봅니다.
- 자연스러운 디버깅: 채팅 기록 자체가 의사 결정 과정에 대한 자세한 로그입니다.
순서 및 종료 기준
AutoGen은 다음을 처리합니다. 차례대로 (말하기 순서의 교대) 메커니즘 포함 구성 가능. 2인 대화에서는 자연스럽게 교대로 변합니다. 그룹 채팅에서 여러 에이전트와 함께 그룹채팅관리자 다음에 누가 말할지 결정합니다. 대화의 맥락.
I 종료 기준 대화가 끝나는 시점을 정의하십시오. 자동 생성 여러 종료 조건을 지원합니다.
- 키워드 기반: 상담원이 특정 키워드(예:
TERMINATE) - 최대 라운드: 무한 루프를 피하기 위한 최대 회전 수
- 기능 기반: 사용자 정의 함수가 계속할지 또는 종료할지 평가합니다.
- 인간의 결정: 결과가 만족스러울 때 인간 사용자가 결정합니다.
AutoGen의 에이전트 유형
AutoGen은 에이전트 클래스의 계층 구조를 제공하며 각 클래스는 특정 역할을 위해 설계되었습니다. 다중 에이전트 대화. 효과적인 시스템을 설계하려면 이러한 클래스를 이해하는 것이 중요합니다.
ConversableAgent: 유연한 베이스
ConversableAgent 이는 다른 모든 에이전트가 파생되는 기본 클래스입니다. 제공
핵심 기능 : 메시지 송수신, 채팅 내역 관리, 통합
LLM 및 코드 실행. ConversableAgent를 사용하거나 사용하지 않도록 각 에이전트를 구성할 수 있습니다.
언어 모델, 코드 실행 여부, 사람의 승인이 필요한지 여부.
from autogen import ConversableAgent
# Agente base con configurazione personalizzata
agente_custom = ConversableAgent(
name="Analista",
system_message="""Sei un analista dati esperto.
Analizza i dati forniti e produci insight actionable.
Quando hai completato l'analisi, rispondi con TERMINATE.""",
llm_config={
"config_list": [{
"model": "gpt-4",
"api_key": "YOUR_API_KEY"
}],
"temperature": 0.1
},
human_input_mode="NEVER",
max_consecutive_auto_reply=10,
code_execution_config=False
)
AssistantAgent: 더 리즈너
AssistantAgent 추론 및 생성을 위해 사전 구성된 ConversableAgent입니다.
답변의. 기본적으로 문제를 단계별로 해결하도록 지시하는 시스템 프롬프트가 있습니다.
코드를 직접 실행하지는 않지만 코드를 생성하여 실행을 위해 다른 에이전트에 전달할 수 있습니다.
분석, 계획 및 콘텐츠 생성이 필요한 작업에 가장 일반적인 에이전트입니다.
from autogen import AssistantAgent
assistant = AssistantAgent(
name="CodingAssistant",
llm_config={
"config_list": [{
"model": "gpt-4",
"api_key": "YOUR_API_KEY"
}]
},
system_message="""Sei un esperto programmatore Python.
Risolvi i problemi scrivendo codice pulito e documentato.
Suggerisci sempre i test unitari per il codice prodotto."""
)
UserProxyAgent: 인간 대표
UserProxyAgent 이는 다중 에이전트 시스템과 인간 사용자 사이의 다리입니다. 그것은 작동할 수 있습니다
인간의 입력과 관련하여 세 가지 모드로 이루어지며, 결정적으로 코드 실행
다른 에이전트에 의해 생성됩니다. AssistantAgent가 Python 조각을 생성하면 UserProxyAgent
안전한 환경(로컬 또는 Docker)에서 실행하고 결과를 반환합니다.
from autogen import UserProxyAgent
user_proxy = UserProxyAgent(
name="UserProxy",
human_input_mode="TERMINATE",
max_consecutive_auto_reply=5,
is_termination_msg=lambda msg: "TERMINATE" in msg.get("content", ""),
code_execution_config={
"work_dir": "workspace",
"use_docker": False # True per isolamento via Docker
}
)
GroupChat 및 GroupChatManager
2명 이상의 상담원과 대화하는 경우 AutoGen은 다음을 제공합니다. GroupChat e
GroupChatManager. GroupChat은 참여 상담원 그룹을 정의하고
대화의 규칙. GroupChatManager는 교대조를 조정하여 상담원을 결정합니다.
이후에 문맥에 따라 말해야 합니다.
from autogen import GroupChat, GroupChatManager
# Definizione del gruppo
group_chat = GroupChat(
agents=[coder, reviewer, tester],
messages=[],
max_round=20,
speaker_selection_method="auto" # L'LLM sceglie chi parla
)
# Manager che orchestra la conversazione
manager = GroupChatManager(
groupchat=group_chat,
llm_config=llm_config
)
# Avvio della conversazione
user_proxy.initiate_chat(
manager,
message="Implementa una funzione per ordinare una lista con merge sort"
)
스피커 선택 방법
매개변수 speaker_selection_method 다음 연사가 어떻게 선택되는지 확인하세요.
- "자동차": LLM은 대화를 분석하고 누가 말해야 하는지 결정합니다(더 똑똑하고 더 비용이 많이 듭니다).
- "라운드_로빈": 상담원이 순환 순서로 차례로 말합니다(예측 가능, 경제적).
- "무작위의": 사용 가능한 에이전트 중에서 무작위 선택(브레인스토밍에 유용함)
- "수동": 사용자는 매 턴마다 말하는 사람을 선택합니다(최대 제어).
인간 참여형
AutoGen의 정의 기능 중 하나는 기본적이고 세분화된 지원입니다.
인간 참여 루프(HITL). 자율 시스템에서는 인간이
대리인의 결정을 감독, 승인 또는 수정할 수 있습니다. AutoGen 구현
이는 매개변수를 통해 human_input_mode, 4가지 모드를 지원합니다.
인간 참여형(Human-In-The-Loop) 모드
| 방법 | 행동 | 사용 사례 |
|---|---|---|
| 언제나 | 매 단계마다 사람의 입력을 요청합니다. | 중요 작업, 학습, 디버깅 |
| 절대 | 인간의 입력이 전혀 없으며 완전히 자율적입니다. | 일괄 자동화, CI/CD 파이프라인 |
| 마치다 | 에이전트가 종료를 원할 때만 입력을 요청합니다. | 최종 감독, 출력 검증 |
| FUNCTION_CALL | 각 함수 호출 전에 승인을 요청합니다. | 부작용 작업(API, 데이터베이스, 파일 시스템) |
모드 마치다 자동화와 제어 사이의 최선의 절충안인 경우가 많습니다. 에이전트는 솔루션에 도달할 때까지 자율적으로 작업하고 사용자는 다음을 수행할 수 있습니다. 결과를 승인하거나 추가 반복을 위한 피드백을 제공하거나 세션을 종료합니다. 이 패턴은 감독을 희생하지 않고도 사용자의 인지 부하를 크게 줄여줍니다.
# Pattern TERMINATE con feedback loop
user_proxy = UserProxyAgent(
name="Supervisore",
human_input_mode="TERMINATE",
max_consecutive_auto_reply=8,
is_termination_msg=lambda msg: "APPROVATO" in msg.get("content", "").upper(),
default_auto_reply="Continua a lavorare. Se hai finito, scrivi APPROVATO."
)
# L'utente vedra il risultato e potra:
# 1. Premere Enter per approvare (input vuoto = auto-reply)
# 2. Digitare feedback per richiedere modifiche
# 3. Digitare "exit" per terminare la sessione
코드 생성 및 자체 수정
AutoGen의 가장 강력한 패턴 중 하나는 코드 생성 및 자체 수정 주기. AssistantAgent가 Python 코드를 생성하고 UserProxyAgent가 이를 실행하며, 코드가 실패하면 결과는 다음과 같습니다. 오류 중 오류를 분석하고 수정된 버전을 생성하는 AssistantAgent로 다시 전달됩니다. 이 주기는 성공하거나 시도 제한에 도달할 때까지 계속됩니다.
생성-실행-수정 주기
Ciclo di Auto-Correzione AutoGen:
[1] AssistantAgent genera codice Python
|
v
[2] UserProxyAgent esegue il codice
|
+--> Successo? --> Risultato all'AssistantAgent --> TERMINATE
|
+--> Errore? --> Traceback all'AssistantAgent
|
v
[3] AssistantAgent analizza l'errore
|
v
[4] Genera codice corretto --> Torna a [2]
(max N tentativi)
이 패턴은 놀라울 정도로 효과적입니다. Microsoft Research의 내부 연구에 따르면 프로그래밍 문제 해결의 성공률이 크게 증가한다는 사실 단 한 번의 시도에 비해 반복적인 자가 교정이 가능합니다. 에이전트는 실수로부터 배운다 런타임에 따라 다르며 대상 방식으로 출력을 수정합니다.
# Setup per code generation con auto-correzione
assistant = AssistantAgent(
name="Coder",
llm_config=llm_config,
system_message="""Sei un programmatore Python esperto.
Quando scrivi codice:
1. Includi sempre gli import necessari
2. Gestisci le eccezioni in modo appropriato
3. Stampa i risultati con print()
4. Se ricevi un errore, analizzalo e correggi il codice
5. Quando il codice funziona correttamente, scrivi TERMINATE"""
)
executor = UserProxyAgent(
name="Executor",
human_input_mode="NEVER",
max_consecutive_auto_reply=5,
code_execution_config={
"work_dir": "coding_workspace",
"use_docker": True, # Isolamento per sicurezza
"timeout": 60
},
is_termination_msg=lambda msg: "TERMINATE" in msg.get("content", "")
)
# Il ciclo parte automaticamente
executor.initiate_chat(
assistant,
message="""Scrivi una funzione Python che:
1. Legge un file CSV con pandas
2. Calcola la media, mediana e deviazione standard per ogni colonna numerica
3. Genera un report formattato
Testa la funzione con dati di esempio."""
)
코드 실행의 보안
LLM에서 생성된 코드를 실행하면 상당한 위험이 따릅니다. AutoGen은 두 가지 접근 방식을 제공합니다. 이러한 위험을 완화하려면:
- 도커 격리: 코드는 격리된 Docker 컨테이너에서 실행되어 호스트의 파일 시스템 및 네트워크에 대한 액세스를 방지합니다.
- 시간 초과: 각 실행에는 무한 루프 또는 지나치게 긴 작업을 방지하기 위해 구성 가능한 시간 초과가 있습니다.
- 전용 작업 디렉토리: 코드가 특정 디렉터리에서 실행되어 파일 액세스를 제한합니다.
- 인간의 승인: 와 함께
human_input_mode="FUNCTION_CALL", 사용자는 각 실행을 승인합니다.
새로운 행동
여러 상담원이 자유롭게 대화할 때 명시적으로 언급되지 않은 행동이 나타납니다. 프로그래밍. 이것은 시스템의 가장 매력적이고 동시에 가장 위험한 측면 중 하나입니다. 대화형 다중 에이전트. 새로운 행동은 긍정적일 수도 있고 부정적일 수도 있습니다.
긍정적인 새로운 행동
- 예상치 못한 창의적인 솔루션: 디자이너가 예상하지 못한 접근 방식을 제안하는 에이전트 시스템의. 예를 들어 Coder 에이전트는 해당 라이브러리와 다른 라이브러리 사용을 제안할 수 있습니다. 더 우아한 솔루션을 생성할 것으로 예상됩니다.
- 자발적인 협상: 다양한 솔루션의 장단점을 논의하는 상담원 최고의 것으로 수렴하기 전에. 리뷰어는 접근 방식에 이의를 제기할 수 있으며 코더는 두 가지를 모두 만족시키는 절충안을 제안할 수 있습니다.
- 새로운 전문화: 비슷한 역할을 가진 에이전트 그룹에서 각각은 문제의 다양한 측면을 전문적으로 다루면서 묵시적으로 작업량을 분산시킵니다.
- 자기조직화: 에이전트는 비공식 통신 프로토콜을 개발합니다. 다음 단계를 제안하기 전에 현재 상태를 요약하는 방법.
부정적인 새로운 행동
- 무한 루프: 진행하지 않고 동일한 메시지를 앞뒤로 반송하는 두 명의 에이전트입니다. 종료 기준이 너무 모호하거나 상담원이 최종 목표에 도달하지 못한 경우 일반적입니다. 동의.
- 임무로부터의 이탈: 대화가 원래 목표에서 멀어집니다. 한 경찰관이 관련 없는 세부 사항을 논의하기 시작하고 다른 경찰관을 끌어들일 수도 있습니다.
- 협력적 환각: 대리인이 잘못된 정보를 제공하는 경우 다른 사람들은 그것을 사실로 받아들이고 그것을 기반으로 삼습니다. 대신 오류가 증폭됩니다. 정확하다.
- 복잡성의 확대: 에이전트가 원치 않는 요구 사항을 추가합니다. 솔루션을 불필요하게 복잡하게 만듭니다. 코더는 기능을 구현할 수 있습니다 "완전성을 위해" 필요하지 않습니다.
위험 완화 전략
| 위험 | 전략 | 구현 |
|---|---|---|
| 무한 루프 | 최대 라운드 + 시간 초과 | max_round=15 그룹채팅에서 |
| 임무로부터의 이탈 | 엄격한 시스템 프롬프트 | 특정 지침 및 명시적 제약 조건 |
| 협력적 환각 | 전담 검증 에이전트 | 각 출력을 검증하는 비평가 에이전트 |
| 에스컬레이션 복잡성 | 명시적 범위 정의 | 초기 프롬프트의 닫힌 요구 사항 목록 |
Microsoft Agent Framework로 마이그레이션
출시와 함께 Microsoft 에이전트 프레임워크, AutoGen 생태계가 수렴되고 있습니다 통합된 엔터프라이즈 플랫폼을 지향합니다. 프레임워크는 다음의 대화 기능을 결합합니다. 오케스트레이션 모델을 사용한 AutoGen 시맨틱 커널, 솔루션을 제공합니다 기업 환경에서 AI 에이전트를 개발하기 위한 완벽한 솔루션입니다.
Microsoft Agent Framework의 변경 사항
- 통합 API: Chat 및 Workflow API가 별도의 인터페이스를 대체합니다. AutoGen 및 Semantic Kernel은 일관된 개발 경험을 제공합니다.
- Azure AI Foundry 통합: 에이전트의 배포, 모니터링 및 확장은 다음과 같습니다. Azure AI Foundry Agent Service를 통해 기본적으로 관리되므로 맞춤형 인프라.
- 다국어 지원: 프레임워크는 Python 외에도 C# 및 Java를 지원합니다. 엔터프라이즈 팀을 위한 접근성 확장.
- 엔터프라이즈 거버넌스: 보안 정책, 감사 로깅 및 규정 준수 나중에 추가되는 것이 아니라 기본적으로 내장되어 있습니다.
AutoGen 0.2에서 마이그레이션 경로
AutoGen 0.2를 기반으로 하는 기존 프로젝트가 있는 경우 따라야 할 몇 가지 마이그레이션 경로가 있습니다. 단계. 핵심 API는 재설계되었지만 기본 개념은 동일하게 유지됩니다.
# AutoGen 0.2 (legacy)
from autogen import AssistantAgent, UserProxyAgent
assistant = AssistantAgent("assistant", llm_config=config)
proxy = UserProxyAgent("user", code_execution_config=exec_config)
proxy.initiate_chat(assistant, message="Risolvi questo problema")
# AutoGen 0.4 / AG2 (nuovo)
from autogen_agentchat.agents import AssistantAgent
from autogen_agentchat.teams import RoundRobinGroupChat
from autogen_agentchat.conditions import TextMentionTermination
agent = AssistantAgent(
name="assistant",
model_client=model_client,
system_message="Sei un assistente esperto"
)
termination = TextMentionTermination("TERMINATE")
team = RoundRobinGroupChat(
participants=[agent],
termination_condition=termination
)
result = await team.run(task="Risolvi questo problema")
마이그레이션 팁
- 새로운 API에 익숙해지려면 가장 간단한 에이전트를 마이그레이션하는 것부터 시작하세요.
- 패키지를 사용하세요
autogen-agentchat높은 수준의 인터페이스를 제공하는 - I
ConversableAgent그들은 된다AssistantAgent명시적인 클라이언트 모델 사용 - I
GroupChat그들은 팀이 된다(RoundRobinGroupChat,SelectorGroupChat) - 코드 실행은 다음을 통해 관리됩니다.
CodeExecutorAgent헌신적인 - 종료 조건은 람다 함수가 아닌 명시적 개체입니다.
사례 연구: 다중 에이전트 반복 코드 검토
다중 에이전트 대화의 위력을 구체적으로 보여주기 위해 시스템을 구현해 보겠습니다. 의 반복적인 코드 검토 세 명의 전문 에이전트와 함께. 시스템은 충분한 품질이 달성될 때까지 지정하고, 코드를 생성하고, 검토하고, 테스트하고 반복합니다.
시스템 아키텍처
Sistema di Code Review Multi-Agente:
Specifica dall'utente
|
v
+-------------+ codice +-------------+
| CODER | -----------------> | REVIEWER |
| (scrive | | (revisiona |
| codice) | <----------------- | qualità) |
+-------------+ feedback/fix +-------------+
| |
| codice approvato |
v |
+-------------+ |
| EXECUTOR | <--- ok / test falliti --+
| (esegue e |
| testa) |
+-------------+
|
v
Risultato finale
완전한 구현
from autogen import AssistantAgent, UserProxyAgent, GroupChat, GroupChatManager
# Configurazione LLM condivisa
llm_config = {
"config_list": [{
"model": "gpt-4",
"api_key": "YOUR_API_KEY"
}],
"temperature": 0.1,
"seed": 42
}
# Agente 1: Coder - genera il codice
coder = AssistantAgent(
name="Coder",
llm_config=llm_config,
system_message="""Sei un programmatore Python senior.
Il tuo compito e scrivere codice pulito, efficiente e ben documentato.
Regole:
- Includi sempre docstring per classi e metodi
- Segui PEP 8 per lo stile
- Gestisci le eccezioni in modo appropriato
- Includi type hints
- Quando ricevi feedback dal Reviewer, correggi il codice
- NON discutere, implementa direttamente le correzioni"""
)
# Agente 2: Reviewer - revisiona la qualità
reviewer = AssistantAgent(
name="Reviewer",
llm_config=llm_config,
system_message="""Sei un code reviewer esperto.
Il tuo compito e analizzare il codice prodotto dal Coder e fornire feedback.
Valuta:
- Correttezza logica e edge cases
- Leggibilita e naming conventions
- Performance e complessità algoritmica
- Gestione errori e robustezza
- Aderenza a best practices Python
Formato del feedback:
- PROBLEMI: lista numerata dei problemi trovati
- SUGGERIMENTI: miglioramenti opzionali
- VERDETTO: APPROVATO o DA_CORREGGERE
Se il codice e buono, rispondi con APPROVATO."""
)
# Agente 3: Executor - esegue e testa
executor = UserProxyAgent(
name="Executor",
human_input_mode="NEVER",
max_consecutive_auto_reply=3,
code_execution_config={
"work_dir": "review_workspace",
"use_docker": True,
"timeout": 30
},
is_termination_msg=lambda msg: "APPROVATO" in msg.get("content", "")
)
# Configurazione GroupChat
group_chat = GroupChat(
agents=[executor, coder, reviewer],
messages=[],
max_round=12,
speaker_selection_method="auto"
)
manager = GroupChatManager(
groupchat=group_chat,
llm_config=llm_config
)
# Avvio del processo
executor.initiate_chat(
manager,
message="""Implementa una classe LRUCache in Python con i seguenti requisiti:
1. capacità massima configurabile
2. Metodi get(key) e put(key, value) con complessità O(1)
3. Eviction della entry meno usata quando la cache e piena
4. Thread-safety con threading.Lock
5. Metodo stats() che ritorna hit rate e miss rate
Includi test unitari completi."""
)
대화 흐름
세 상담원 간의 대화는 일반적으로 다음과 같이 진행됩니다.
- 1~2라운드: Coder는 사양을 수신하고 테스트를 통해 LRUCache의 첫 번째 구현을 생성합니다.
- 3~4라운드: 리뷰어가 코드를 분석하고 자세한 피드백을 제공합니다(예: 키 없음에 대한 엣지 케이스 관리 실패, 잠금이 올바르게 사용되지 않음)
- 라운드 5-6: Coder는 Reviewer의 피드백을 바탕으로 코드를 수정합니다.
- 7~8라운드: Executor는 테스트를 실행하고 실패를 보고합니다.
- 9~10라운드: Coder는 실패한 테스트를 수정했습니다.
- 라운드 11-12: 리뷰어는 APPROVED 판정으로 최종 코드를 승인합니다.
그 결과는 여러 번의 검토와 테스트를 거쳐 생성된 코드입니다. 한 번 시도한 것보다 훨씬 더 높은 품질을 제공합니다. 이 패턴은 반영합니다. 인간의 코드 검토 프로세스는 몇 시간이나 며칠이 아닌 몇 초 안에 이루어집니다.
프로덕션의 AutoGen 모범 사례
AutoGen 및 AG2에 대한 경험을 바탕으로 주요 모범 사례는 다음과 같습니다. 프로덕션 환경에서 프레임워크를 사용하려면 다음 안내를 따르세요.
-
항상 라운드 수를 제한하십시오.: 세트
max_round값으로 과도한 비용과 무한 루프를 피하기 위해 합리적(10-20)입니다. 당신은 실패하는 것을 선호합니다 무한정 반복하기보다는 명확한 메시지를 전달합니다. - 코드 실행에 Docker 사용: 프로덕션에서는 항상 코드를 실행하세요. 격리된 Docker 컨테이너에서 생성됩니다. LLM 생성 코드를 호스트에서 직접 실행하지 마십시오.
- 자세한 시스템 프롬프트: 역할, 제약 조건 및 출력 형식을 원하는 방식으로 정의합니다. 명시적이고 상세하다. 모호한 프롬프트는 예측할 수 없는 동작을 생성합니다.
- 비용 모니터링: 각 대화 라운드마다 토큰이 소비됩니다. 구현 루프 시나리오에서 과도한 지출을 방지하기 위해 예산 한도 및 경고를 제공합니다.
- 모든 대화 기록: 디버깅을 위해 전체 채팅 기록을 저장합니다. 프롬프트의 감사 및 지속적인 개선.
- 먼저 저렴한 모델로 테스트하세요.: 템플릿을 사용하여 워크플로 개발 및 테스트 더 저렴하게(GPT-3.5) 생산을 위해 GPT-4로 전환합니다.
- 우아한 성능 저하 구현: 에이전트가 실패하면 시스템은 다음을 수행해야 합니다. 일반적인 오류가 아닌 유용한 부분 결과를 생성합니다.
결론
AutoGen은 다중 에이전트 프레임워크 환경에서 고유한 접근 방식인 대화를 나타냅니다. 조정 메커니즘으로. 이 패러다임은 다음에 대해 비교할 수 없는 유연성을 제공합니다. 에이전트 간의 협상, 반복 및 창의적인 협업이 필요한 작업입니다.
AG2의 발전과 Microsoft Agent Framework로의 융합으로 생태계는 대화의 힘을 결합한 기업용 솔루션으로 성숙해가고 있습니다. 관리형 클라우드 플랫폼의 견고성을 갖춘 다중 에이전트. 개발자를 위한 투자 이러한 패턴을 이해하는 것은 전략적으로 중요합니다.
다음 기사에서는 다중 에이전트 오케스트레이션 아키텍처, 표준 패턴(Sequential, Concurrent, Handoff, Plan-First) 분석, 아키텍처 허브 앤 스포크와 피어 투 피어, 내결함성을 갖춘 프로덕션 지원 시스템을 구축하는 방법 분산 상태 관리 및 관찰 가능성.







