[AI Paper] π AutoAgents: A Framework for Automatic Agent Generation
π AutoAgents: A Framework for Automatic Agent Generation
π λ©ν μ 보
| νλͺ© | λ΄μ© |
|---|---|
| λ Όλ¬Έ μ λͺ© | AutoAgents: A Framework for Automatic Agent Generation |
| μ μ | Guangyao Chen, Siwei Dong, Yu Shu, Ge Zhang, Jaward Sesay, BΓΆrje F. Karlsson, Jie Fu, Yemin Shi |
| μμ κΈ°κ΄ | Peking University, Hong Kong University of Science and Technology (HKUST), Beijing Academy of Artificial Intelligence, University of Waterloo |
| λ°νμ² | IJCAI 2024 (Main Track), Pages 22-30 |
| λ°ν μ°λ | 2024 |
| arXiv | arXiv:2309.17288 |
| DOI | 10.24963/ijcai.2024/3 |
| GitHub | Link-AGI/AutoAgents |
| Corresponding Authors | gy.chen@pku.edu.cn, ymshi@pku.edu.cn, jiefu@ust.hk |
π― νμ€ μμ½
νμ€ν¬μ λ§λ μ λ¬Έ μμ΄μ νΈ νμ μλμΌλ‘ μμ±νκ³ μ‘°μ¨νλ μ μν λ©ν°μμ΄μ νΈ νλ μμν¬λ‘, μ¬μ μ μλ μμ΄μ νΈμ μμ‘΄νμ§ μκ³ λμ μΌλ‘ μν μ μμ±νμ¬ λ³΅μ‘ν νμ€ν¬λ₯Ό ν΄κ²°νλ€.
π μ°κ΅¬ λ°°κ²½ λ° λκΈ°
κΈ°μ‘΄ λ¬Έμ μ
- μ¬μ μ μλ μμ΄μ νΈμ νκ³
- λλΆλΆμ κΈ°μ‘΄ LLM κΈ°λ° λ©ν°μμ΄μ νΈ μμ€ν μ μ¬μ μ μ μλ(predefined) μμ΄μ νΈμ μμ‘΄
- λ¨μν νμ€ν¬ μ²λ¦¬μλ μ ν©νλ, λ€μν μλ리μ€μ λν μ μμ±μ΄ λΆμ‘±
- μλμΌλ‘ λ€μμ μ λ¬Έκ° μμ΄μ νΈλ₯Ό μμ±νλ κ²μ λ§μ 리μμ€ μλͺ¨
- νμ
λ²μμ μ ν
- νΉμ μν κ³Ό μΈκ° κ°λ μ΄ νμν μλ μ€κ³ μμ΄μ νΈ
- νμ μ ν리μΌμ΄μ μ λ²μκ° μ νλ¨
- νμ€ν¬λ³ μ΅μ μ μμ΄μ νΈ κ΅¬μ±μ μ°ΎκΈ° μ΄λ €μ
- νμ₯μ± λ¬Έμ
- κΈ°μ‘΄ μ°κ΅¬λ€μ μΈκ°μ΄ μ€κ³ν νλ μμν¬μ ν¬κ² μμ‘΄
- μμ΄μ νΈ μμ€ν μ κΈ°λ₯ λ²μμ νμ₯μ±μ΄ μ νλ¨
μ°κ΅¬ λκΈ°
- μΈκ° νμ²λΌ λ€μν μ λ¬Έκ°κ° νλ ₯νμ¬ λ³΅μ‘ν λ¬Έμ λ₯Ό ν΄κ²°νλ AI μμ€ν ꡬμΆ
- νμ€ν¬ λ΄μ©μ λ°λΌ μλμΌλ‘ μ μ ν μμ΄μ νΈ νμ ꡬμ±νλ λ©μ»€λμ¦ νμ
- μΈκ° κ·Έλ£Ή λ΄ λ€μμ±μ΄ λ€μν κ΄μ μ μ΄μ§νκ³ κ·Έλ£Ή μ±κ³Όλ₯Ό ν₯μμν¨λ€λ κ²½νμ μ¦κ±°μ κΈ°λ°
π‘ ν΅μ¬ μμ΄λμ΄
1. λμ μμ΄μ νΈ μμ± (Dynamic Agent Generation)
νμ€ν¬ λ΄μ©μ λΆμνμ¬ νμν μ λ¬Έ μμ΄μ νΈλ₯Ό λμ μΌλ‘ μμ±:
Task Input β Agent Generation β Specialized Agent Team
- νμ€ν¬μ μν κ°μ κ΄κ³λ₯Ό μ°κ²°(coupling)
- νμ€ν¬ μ½ν μΈ κΈ°λ° νμ μμ΄μ νΈ μλ λμΆ
- μμ±λ μ λ¬Έκ° μμ΄μ νΈ κΈ°λ° μ€ν κ³ν μ립
2. 2λ¨κ³ νλ‘μΈμ€ (Two-Stage Process)
Drafting Stage (μ΄μ λ¨κ³)
- 3κ°μ μ¬μ μ μλ μμ΄μ νΈ(Planner, Agent Observer, Plan Observer)κ° νλ ₯μ ν λ‘
- μ λ ₯ λ¬Έμ /νμ€ν¬μ λ§λ 컀μ€ν°λ§μ΄μ¦λ μμ΄μ νΈ ν ν©μ±
- νμ€ν¬μ μ ν©ν μ€ν κ³ν μμ±
Execution Stage (μ€ν λ¨κ³)
- μμ΄μ νΈ κ° νμ κ³Ό νΌλλ°±μ ν΅ν κ³ν κ°μ
- μκΈ° κ°μ (Self-refinement)κ³Ό νλ ₯μ κ°μ (Collaborative refinement) μν
- μ΅μ’ κ²°κ³Όλ¬Ό μμ±
3. Observer λ©μ»€λμ¦
- Agent Observer: μμ±λ μμ΄μ νΈμ μ μ μ± κ²ν
- Plan Observer: μ€ν κ³νμ ν©λ¦¬μ± κ²ν
- Action Observer: μ€ν κ³Όμ μμμ νλ λ° κ²°κ³Ό κ²ν
4. κ°μ λ©μ»€λμ¦ (Refinement Mechanisms)
Self-Refinement (μκΈ° κ°μ )
- λ¨μΌ μμ΄μ νΈκ° μ λ¬Έ νμ€ν¬ μν λ₯λ ₯μ μ체μ μΌλ‘ ν₯μ
- κ³ν β μ€ν β νΌλλ°±μ μνμ ν΅ν μ§μμ κ°μ
Collaborative Refinement (νλ ₯μ κ°μ )
- μ¬λ¬ μμ΄μ νΈ κ° μ§μ 곡μ
- νμ κ° μ λ¬Έμ±μ΄ νμν νμ€ν¬ λ¬μ±
- μμ°¨μ ν΄ν μ΄νΉ λ°©μμ νμ
ποΈ μν€ν μ² / λ°©λ²λ‘
μ 체 μμ€ν μν€ν μ²
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β AutoAgents Framework β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β DRAFTING STAGE β β
β β βββββββββββ ββββββββββββββββββ ββββββββββββββββββ β β
β β β Planner ββββΊβ Agent Observer ββββΊβ Plan Observer β β β
β β ββββββ¬βββββ βββββββββ¬βββββββββ βββββββββ¬βββββββββ β β
β β β β β β β
β β βΌ βΌ βΌ β β
β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β Customized Agent Team + Execution Plan ββ β
β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β
β βΌ β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β EXECUTION STAGE β β
β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β Generated Agent Team ββ β
β β β ββββββββββ ββββββββββ ββββββββββ ββββββββββ ββ β
β β β βAgent 1 β βAgent 2 β βAgent 3 β βAgent N β ββ β
β β β ββββββββββ ββββββββββ ββββββββββ ββββββββββ ββ β
β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β β
β β ββββββββββββββββββββββββΌβββββββββββββββββββββββ β β
β β βΌ βΌ βΌ β β
β β ββββββββββββββββ ββββββββββββββββββββ βββββββββββββ β β
β β βSelf-Refinementβ βCollaborative β β Action β β β
β β β β βRefinement β β Observer β β β
β β ββββββββββββββββ ββββββββββββββββββββ βββββββββββββ β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β
β βΌ β
β Final Output β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ν΅μ¬ μ»΄ν¬λνΈ
1. Planner (κ³νμ)
# μν : μ λ¬Έκ° μν κ²°μ λ° μ€ν κ³ν μ립
class Planner:
def __init__(self, llm):
self.llm = llm
def generate_agents(self, task):
"""νμ€ν¬ λΆμ ν νμν μμ΄μ νΈ μν μμ±"""
prompt = f"""
Task: {task}
Analyze the task and determine:
1. Required expert roles
2. Each role's responsibilities
3. Execution plan
"""
return self.llm.generate(prompt)
def create_execution_plan(self, agents, task):
"""μμ±λ μμ΄μ νΈ κΈ°λ° μ€ν κ³ν μ립"""
pass
2. Observer μ»΄ν¬λνΈ
# Agent Observer: μμ±λ μμ΄μ νΈ κ²μ¦
class AgentObserver:
def validate_agents(self, agents, task):
"""μμ΄μ νΈμ μ ν©μ± λ° μμ μ± κ²ν """
# μν μ€λ³΅ κ²μ¬
# νμ μν λλ½ κ²μ¬
# μν μ μμ λͺ
νμ± κ²μ¬
pass
# Plan Observer: μ€ν κ³ν κ²μ¦
class PlanObserver:
def validate_plan(self, plan, agents, task):
"""μ€ν κ³νμ μ€ν κ°λ₯μ± κ²ν """
# λ¨κ³λ³ μ€ν κ°λ₯μ±
# μμ΄μ νΈ μν κ³Όμ λ§€μΉ
# λ
Όλ¦¬μ μμ κ²μ¦
pass
# Action Observer: μ€ν κ²°κ³Ό κ²μ¦
class ActionObserver:
def validate_action(self, action, result):
"""μ€ν κ²°κ³Όμ νμ§ κ²ν """
pass
3. Refinement λ©μ»€λμ¦
# Self-Refinement: λ¨μΌ μμ΄μ νΈμ μκΈ° κ°μ
def self_refinement(agent, task, max_iterations=5):
result = agent.execute(task)
for i in range(max_iterations):
feedback = agent.evaluate(result)
if feedback.is_satisfactory:
break
result = agent.improve(result, feedback)
return result
# Collaborative Refinement: λ€μ€ μμ΄μ νΈ νλ ₯ κ°μ
def collaborative_refinement(agents, task, max_rounds=5):
chat_history = []
current_result = None
for round in range(max_rounds):
for agent in agents:
# μ΄μ μμ΄μ νΈλ€μ λ°νλ₯Ό κΈ°λ°μΌλ‘ μλ΅ μμ±
response = agent.generate(
task=task,
chat_history=chat_history,
current_result=current_result
)
chat_history.append(response)
current_result = response.result
# ν©μ λλ¬ μ¬λΆ νμΈ
if check_consensus(agents, current_result):
break
return current_result
μκ³ λ¦¬μ¦ νλ¦
Algorithm: AutoAgents Framework
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Input: Task T, LLM M, max_draft_iterations=3, max_refine_iterations=5
Output: Final Result R
# Phase 1: Drafting Stage
1. Initialize Planner, AgentObserver, PlanObserver with M
2. for i = 1 to max_draft_iterations:
a. agents_list β Planner.generate_agents(T)
b. agent_feedback β AgentObserver.validate(agents_list)
c. if agent_feedback.needs_revision:
agents_list β Planner.revise_agents(agents_list, agent_feedback)
d. execution_plan β Planner.create_plan(agents_list, T)
e. plan_feedback β PlanObserver.validate(execution_plan)
f. if plan_feedback.needs_revision:
execution_plan β Planner.revise_plan(execution_plan, plan_feedback)
g. if AgentObserver.approved AND PlanObserver.approved:
break
# Phase 2: Execution Stage
3. Initialize ActionObserver with M
4. for each step in execution_plan:
a. assigned_agents β get_agents_for_step(step, agents_list)
b. if step.requires_collaboration:
result β collaborative_refinement(assigned_agents, step)
else:
result β self_refinement(assigned_agents[0], step)
c. action_feedback β ActionObserver.validate(result)
d. if action_feedback.needs_revision:
result β refine_result(result, action_feedback)
e. update_shared_memory(result)
5. R β aggregate_results()
6. return R
νμ΄νΌνλΌλ―Έν° μ€μ
| νλΌλ―Έν° | κ° | μ€λͺ |
|---|---|---|
| max_draft_discussions | 3 | Drafting λ¨κ³ μ΅λ ν λ‘ νμ |
| max_self_refinement | 5 | μκΈ° κ°μ μ΅λ λ°λ³΅ νμ |
| max_collaborative_refinement | 5 | νλ ₯μ κ°μ μ΅λ λ°λ³΅ νμ |
π μ€ν λ° κ²°κ³Ό
μ€ν μ€μ
νκ° νμ€ν¬
- Open-ended Question Answering: κ°λ°©ν μ§λ¬Έ μλ΅ νμ€ν¬
- Trivia Creative Writing: μμ κΈ°λ° μ°½μ κΈμ°κΈ°
- Software Development (Case Study): μννΈμ¨μ΄ κ°λ° μ¬λ‘ μ°κ΅¬ (Tetris κ²μ)
λ² μ΄μ€λΌμΈ λΉκ΅
- Standard LLM: μμ΄μ νΈ μμ± μμ΄ λ¨μΌ LLM μ¬μ©
- SSP (Solo Performance Prompting): μμ΄μ νΈ μν μ 곡 λ°©μ
- AgentVerse: μμ΄μ νΈ ν λ‘ κΈ°λ° μ€ν κ³ν μμ±
- MetaGPT: μ¬μ μ μλ μν κΈ°λ° λ©ν°μμ΄μ νΈ μμ€ν
νκ° μ§ν
- FairEval (LLM-based): LLM κΈ°λ° κ³΅μ νκ°
- Human Evaluation: μΈκ° νκ°μμ μν νμ§ νκ°
- Accuracy: μ νλ μΈ‘μ
μ£Όμ κ²°κ³Ό
μ λμ κ²°κ³Ό
| Method | Open-ended QA | Knowledge Acquisition |
|---|---|---|
| Standard | Baseline | Baseline |
| SSP | +5% | – |
| AgentVerse | +7% | – |
| AutoAgents | +10% | +10% |
ν΅μ¬ λ°κ²¬μ¬ν:
1. AutoAgentsλ Standard λ°©μ λλΉ λͺ¨λ μ€νμμ 10% ν₯μ λ¬μ±
2. μμ΄μ νΈ μμ±μ μ¬μ©νμ§λ§ λ€λ₯Έ μ κ·Ό λ°©μμΈ SSPλ³΄λ€ μ°μν μ±λ₯
3. FairEval κΈ°λ° LLM νκ°μ Human νκ° λͺ¨λμμ κ°λ³ LLM λͺ¨λΈμ λ₯κ°
μ μ±μ κ²°κ³Ό
κ°λ°©ν μ§λ¬Έμ λν μλ΅ νμ§:
– λ€μμ μ λ¬Έκ° λͺ¨λΈμ ν©μ±νμ¬ λ ν¬κ΄μ μ΄κ³ λμμ€ μλ λ΅λ³ μμ±
– κΈ°μ‘΄ λ©ν°μμ΄μ νΈ λ°©λ²λ³΄λ€ λ μΌκ΄μ± μκ³ μ νν μ루μ
μμ±
Case Study: Tetris κ²μ κ°λ°
AutoAgentsκ° μμ±ν μμ΄μ νΈ ν:
1. Game Design Expert: κ²μ λ©μ»€λμ¦ μ€κ³
2. UI Design Expert: μ¬μ©μ μΈν°νμ΄μ€ μ€κ³
3. Programmer: ν΅μ¬ μ½λ ꡬν
4. Debugging Expert: ν
μ€νΈ λ° λλ²κΉ
κ²°κ³Ό:
– λ μ κ΅ν λ¬Έμνμ νλ‘κ·Έλ¨ μμ±
– μ¬μ©μκ° μ΄ν΄νκΈ° μ¬μ΄ κ²°κ³Όλ¬Ό
– νμ
κΈ°λ°μ μμ±λ λμ κ²μ κ°λ°
Ablation Study κ²°κ³Ό
| Component | μ κ±° μ μ±λ₯ λ³ν |
|---|---|
| Agent Observer | μ±λ₯ μ ν |
| Plan Observer | μ±λ₯ μ ν |
| Self-Refinement | μλΉν μ±λ₯ μ ν |
| Collaborative Refinement | μλΉν μ±λ₯ μ ν |
πͺ κ°μ λ° κΈ°μ¬
νμ μ κΈ°μ¬
- μλ‘μ΄ νλ μμν¬ μ μ
- λ€μν νμ€ν¬μ λ§λ 컀μ€ν°λ§μ΄μ¦λ AI νμ λμ μΌλ‘ ν©μ±νκ³ μ‘°μ¨
- νμ€ν¬μ μν κ°μ κ΄κ³λ₯Ό ν¨κ³Όμ μΌλ‘ μ°κ²°(coupling)
- μ λμ μ€ν κ²μ¦
- λ κ°μ§ λμ μ μΈ νμ€ν¬μμ μ격ν μ λμ μ€ν μν
- LLMμ μ§μ μ΅λκ³Ό μΆλ‘ λ₯λ ₯ λͺ¨λ μ μλ―Ένκ² ν₯μ
- μ€μ©μ μ μ© κ°λ₯μ± μ
μ¦
- μννΈμ¨μ΄ κ°λ° λ± λ³΅μ‘ν νμ€ν¬μ μ μ© κ°λ₯μ± μμ°
κΈ°μ μ κ°μ
- μ μμ± (Adaptability)
- νμ€ν¬ νΉμ±μ λ°λ₯Έ μμ΄μ νΈ ν μλ ꡬμ±
- μ¬μ μ μ μμ΄ λμ μν μμ±
- μ λ’°μ± ν₯μ (Reliability)
- Observer λ©μ»€λμ¦μ ν΅ν νμ§ λ³΄μ¦
- SSP, AgentVerse λλΉ μμ±λ μμ΄μ νΈμ κ³νμ μ λ’°μ± κ°μ‘°
- κ°μ λ©μ»€λμ¦ (Refinement)
- Self-refinement: κ°λ³ μμ΄μ νΈ μλ κ°ν
- Collaborative refinement: ν νμ ν¨κ³Ό κ·Ήλν
- νμ₯μ± (Scalability)
- 무μ ν μμ΄μ νΈ μμ± μ§μ
- λ€μν λλ©μΈμ μ μ© κ°λ₯
μ°¨λ³ν μμ (vs κΈ°μ‘΄ λ°©λ²)
| νΉμ± | MetaGPT | SSP | AgentVerse | AutoAgents |
|---|---|---|---|---|
| λμ μμ΄μ νΈ μμ± | β | β | β | β |
| Self-Refinement | β | β | β | β |
| Collaborative Refinement | β | β | β | β |
| Observer λ©μ»€λμ¦ | β | β | β | β |
β οΈ νκ³μ λ° ν₯ν μ°κ΅¬
λ Όλ¬Έμμ μΈκΈν νκ³
- LLM νμ§ μμ‘΄μ±
- κΈ°λ° LLMμ νμ§κ³Ό λ₯λ ₯μ ν¬κ² μμ‘΄
- μμ±λ λ©ν°μμ΄μ νΈ μμ€ν μ μ±λ₯κ³Ό μ λ’°μ±μ΄ LLMμ μ’μ°
- νλ ¨ λ°μ΄ν° νΈν₯
- νλ ¨ λ°μ΄ν°μ λͺ¨λΈμ μ‘΄μ¬νλ νΈν₯μ΄ μμ΄μ νΈ μ±λ₯μ μν₯
- μ΄κΈ° μ°κ΅¬ λ¨κ³
- μ€μ νκ²½μμμ κ²μ¦ λ° νμ₯μ± ν μ€νΈ νμ
- λ λ§μ μ€μ μλ리μ€μμμ νκ° νμ
μ€μ ꡬν μ λμ κ³Όμ
- ν ν° μ μ½
- GPT-4μ κ°μ LLMμ ν ν° μ νμΌλ‘ κΈ΄ λν κ΄λ¦¬ μ΄λ €μ
- νμ€ν 리 μ λ³΄κ° λ§μμ§μλ‘ μ»¨ν μ€νΈ κ΄λ¦¬ 볡μ‘
- μμ΄μ νΈ κ° ν΅μ μ€κ³
- μνν μμ΄μ νΈ κ° ν΅μ μ μν μ€ν 루νμ μ μ€ν μ€κ³ νμ
- λΉμ© λ¬Έμ
- GPT-4 κ°μ λͺ¨λΈμ λ€μ€ μμ΄μ νΈμ μ¬μ© μ λΉμ© μ¦κ°
- ν둬ννΈ μ΅μ νλ‘ ν ν° μ¬μ©λ μ΅μν νμ
- μ ν ꡬ쑰 νκ³
- MetaGPT, AutoAgents, SPP λ±μ μ ν λ©ν°μμ΄μ νΈ μμ€ν
- μ ν μν κΈ°κ³μ²λΌ λλμκ°λ λ₯λ ₯ λΆμ‘±
ν₯ν μ°κ΅¬ λ°©ν₯
- μμ€ν
κ²¬κ³ μ± ν₯μ
- λ€μν νκ²½κ³Ό νμ€ν¬μμμ μμ μ± κ°μ
- μλ¬ νΈλ€λ§ λ° λ³΅κ΅¬ λ©μ»€λμ¦ κ°ν
- μμ© λλ©μΈ νμ₯
- μννΈμ¨μ΄ κ°λ° μΈ λ€μν λλ©μΈ μ μ©
- λλ©μΈ νΉν μμ΄μ νΈ μμ± μ λ΅ κ°λ°
- κ³ κΈ AI κΈ°λ² ν΅ν©
- κ°ννμ΅ κΈ°λ° μμ΄μ νΈ κ°μ
- λ μ κ΅ν νμ λ©μ»€λμ¦ κ°λ°
- μ€λ¦¬ λ° λ³΄μ κ³ λ €
- μμ¨ μμ± μμ€ν μ μ€λ¦¬μ ν¨μ κ²ν
- 보μ μ·¨μ½μ λΆμ λ° λμ
π κ΄λ ¨ λ Όλ¬Έ
μ ν μ°κ΅¬
| λ Όλ¬Έ | μ°λ | κ΄κ³ |
|---|---|---|
| MetaGPT: Meta Programming for Multi-Agent Collaborative Framework | 2023 | μ¬μ μ μλ μν κΈ°λ° λ©ν°μμ΄μ νΈ |
| AgentVerse: Facilitating Multi-Agent Collaboration | 2023 | λμ μμ΄μ νΈ μμ± + ν λ‘ κΈ°λ° κ³ν |
| Solo Performance Prompting (SPP) | 2023 | μμ΄μ νΈ μν κΈ°λ° μμ± |
| CAMEL: Communicative Agents for Mind Exploration | 2023 | μν κ·Ή κΈ°λ° μμ΄μ νΈ ν΅μ |
| AutoGen: Enabling Next-Gen LLM Applications | 2023 | λ©ν°μμ΄μ νΈ λν νλ μμν¬ |
κ΄λ ¨ κ°λ
| κ°λ | μ€λͺ |
|---|---|
| LLM-based Agents | LLMμ κΈ°λ°μΌλ‘ ν μμ¨ μμ΄μ νΈ μμ€ν |
| Multi-Agent Systems | λ€μμ μμ΄μ νΈκ° νλ ₯νλ μμ€ν |
| Centralized Planning, Decentralized Execution (CPDE) | μ€μ κ³ν, λΆμ° μ€ν ν¨ν΄ |
| Self-Refinement | μμ΄μ νΈμ μκΈ° κ°μ λ©μ»€λμ¦ |
νμ μ°κ΅¬ λ°©ν₯
- AutoAgent (2025): μμ μλνλ μ λ‘μ½λ LLM μμ΄μ νΈ νλ μμν¬
- AutoGenesisAgent: μκΈ° μμ± λ©ν°μμ΄μ νΈ μμ€ν
- MegaAgent: μ¬μ μ μλ SOP μλ λκ·λͺ¨ μμ¨ λ©ν°μμ΄μ νΈ μμ€ν
π» μ€λ¬΄ μ μ© ν¬μΈνΈ
ꡬν μ κ³ λ €μ¬ν
1. κΈ°λ³Έ νλ‘μ νΈ κ΅¬μ‘° (MetaGPT κΈ°λ°)
autoagents/
βββ agents/
β βββ planner.py # Planner μμ΄μ νΈ
β βββ observers/
β β βββ agent_observer.py
β β βββ plan_observer.py
β β βββ action_observer.py
β βββ generated/ # λμ μμ± μμ΄μ νΈ
βββ actions/
β βββ self_refinement.py
β βββ collaborative_refinement.py
βββ roles/
β βββ role_bank.py # μν ν
νλ¦Ώ μ μ₯μ
βββ memory/
β βββ shared_memory.py # μμ΄μ νΈ κ° κ³΅μ λ©λͺ¨λ¦¬
βββ main.py
2. ν΅μ¬ ꡬν μμ
# agents/planner.py
from metagpt.roles import Role
from metagpt.actions import Action
class AgentGenerationAction(Action):
"""νμ€ν¬ λΆμ λ° μμ΄μ νΈ μμ± μ‘μ
"""
PROMPT_TEMPLATE = """
Analyze the following task and generate a list of required expert agents:
Task: {task}
For each agent, provide:
1. Role name
2. Role description
3. Specific responsibilities
4. Required skills/knowledge
Output format: JSON
"""
async def run(self, task: str):
prompt = self.PROMPT_TEMPLATE.format(task=task)
response = await self._aask(prompt)
return self.parse_agents(response)
class Planner(Role):
"""μ€μ κ³νμ μν """
def __init__(self):
super().__init__()
self._init_actions([AgentGenerationAction])
async def _act(self):
task = self.get_current_task()
agents = await AgentGenerationAction().run(task)
plan = await self.create_execution_plan(agents)
return {"agents": agents, "plan": plan}
# actions/collaborative_refinement.py
class CollaborativeRefinement:
"""λ€μ€ μμ΄μ νΈ νλ ₯μ κ°μ """
def __init__(self, agents, max_rounds=5):
self.agents = agents
self.max_rounds = max_rounds
self.chat_history = []
async def execute(self, task):
current_result = None
for round_num in range(self.max_rounds):
for agent in self.agents:
# 컨ν
μ€νΈ ꡬμ±
context = self.build_context(
task,
self.chat_history,
current_result
)
# μμ΄μ νΈ μλ΅ μμ±
response = await agent.respond(context)
# νμ€ν 리 μ
λ°μ΄νΈ
self.chat_history.append({
"agent": agent.name,
"response": response
})
current_result = response.result
# ν©μ 체ν¬
if self.check_consensus():
break
return current_result
def check_consensus(self):
"""μμ΄μ νΈλ€μ΄ ν©μμ λλ¬νλμ§ νμΈ"""
# ꡬν λ‘μ§
pass
3. λμ μμ΄μ νΈ μμ±
# roles/dynamic_agent_factory.py
class DynamicAgentFactory:
"""λμ μμ΄μ νΈ μμ± ν©ν 리"""
AGENT_TEMPLATE = """
You are a {role_name}.
Description: {description}
Responsibilities: {responsibilities}
Your goal is to {goal}
Guidelines:
- Focus on your specialized area
- Collaborate with other team members
- Provide detailed and actionable outputs
"""
def create_agent(self, agent_spec):
"""μ€νμ λ°λΌ μμ΄μ νΈ λμ μμ±"""
class GeneratedAgent(Role):
def __init__(self, spec):
super().__init__()
self.name = spec["role_name"]
self.description = spec["description"]
self.system_prompt = DynamicAgentFactory.AGENT_TEMPLATE.format(
**spec
)
return GeneratedAgent(agent_spec)
μ€λ¬΄ μ μ© ν
- ν둬ννΈ μ΅μ ν
- ν ν° μ¬μ©λ μ΅μνλ₯Ό μν κ°κ²°ν ν둬ννΈ μ€κ³
- μν μ μλ ν΅μ¬λ§ ν¬ν¨
- λ©λͺ¨λ¦¬ κ΄λ¦¬
- κΈ΄ λνμμ 컨ν μ€νΈ μλμ° κ΄λ¦¬ νμ
- μμ½ λ©μ»€λμ¦ λμ κ³ λ €
- λΉμ© μ΅μ ν
- 볡μ‘νμ§ μμ μμ μλ μ λ ΄ν λͺ¨λΈ μ¬μ©
- μΊμ± μ λ΅ μ μ©
- μλ¬ μ²λ¦¬
- μμ΄μ νΈ μμ± μ€ν¨ μ ν΄λ°± λ©μ»€λμ¦
- μ€ν λ¨κ³ μ€ μ€λ₯ 볡ꡬ μ λ΅
μ μ© κ°λ₯ λλ©μΈ
| λλ©μΈ | μ μ© μμ |
|---|---|
| μννΈμ¨μ΄ κ°λ° | μ½λ μμ±, 리뷰, ν μ€νΈ μλν |
| μ½ν μΈ μμ± | κΈμ°κΈ°, νΈμ§, ν©νΈμ²΄ν¬ ν |
| μ°κ΅¬ 보쑰 | λ¬Έν μ‘°μ¬, λΆμ, μμ½ |
| κ³ κ° μλΉμ€ | λ€μΈ΅ μ§μ μμ€ν |
| κ΅μ‘ | λ§μΆ€ν νν°λ§ μμ€ν |
π·οΈ Tags
#AIAgent #MultiAgent #LLM #AutoGeneration #IJCAI2024 #DynamicAgentGeneration #MetaGPT #AgentVerse #CollaborativeAI #SelfRefinement #TaskPlanning #PekingUniversity #HKUST