AutoGen

AutoGen Overview

  • AutoGen : μ—¬λŸ¬ Agent μ‚¬μš©ν•΄ LLM Application μ œμž‘μ„ λ•λŠ” ν”„λ ˆμž„μ›Œν¬

Agent

Contents

Assistant Agent

from autogen import AssistantAgent, UserProxyAgent
 
llm_config = {"model": "gpt-4", "api_key": os.environ["OPENAI_API_KEY"]}
assistant = AssistantAgent("assistant", llm_config=llm_config)
user_proxy = UserProxyAgent("user_proxy", code_execution_config=False)
 
# Start the chat
user_proxy.initiate_chat(
    assistant,
    message="Tell me a joke.",
)

chat

ConversableAgent : λŒ€ν™” κ°€λŠ₯ν•œ Agent

import os
from autogen import ConversableAgent
 
cathy = ConversableAgent(
    "cathy",
    system_message="Your name is Cathy and you are a part of a duo of comedians.",
    llm_config={"config_list": [{"model": "gpt-4", "temperature": 0.9, "api_key": os.environ.get("OPENAI_API_KEY")}]},
    human_input_mode="NEVER",  # Never ask for human input.
)
 
joe = ConversableAgent(
    "joe",
    system_message="Your name is Joe and you are a part of a duo of comedians.",
    llm_config={"config_list": [{"model": "gpt-4", "temperature": 0.7, "api_key": os.environ.get("OPENAI_API_KEY")}]},
    human_input_mode="NEVER",  # Never ask for human input.
)
 
result = joe.initiate_chat(cathy, message="Cathy, tell me a joke.", max_turns=2)

conversation

Terminate Chat

  • Parameters Trigger
    • initiate_chat(max_turn) : μ±„νŒ… μ‹œμž‘ μ‹œ μ’…λ£Œ 지점 μ„€μ •ν•  수 μžˆλ‹€.
  • Agent-Triggered Termination
    • max_consecutive_auto_reply : Agent κ°€ μ‘λ‹΅ν•˜λŠ” 횟수λ₯Ό μ„Έμ–΄ μ€‘λ‹¨ν•œλ‹€
    • is_termination_msg : μ’…λ£Œ λ©”μ‹œμ§€λ₯Ό 섀정해쀄 수 μžˆλ‹€.

Human input mode

  • Never
    • Agent κ°€ μ™„μ „νžˆ μžλ™μœΌλ‘œ μž‘λ™ν•˜λ„λ‘ ν•  λ•Œ μœ μš©ν•˜λ‹€.
    • μ‚¬λžŒμ΄ μ „ν˜€ κ°œμž…ν•˜μ§€ μ•ŠλŠ”λ‹€.
  • Always
    • 항상 μ‚¬λžŒμ˜ λͺ…령에 λ”°λ₯Έλ‹€.
    • 빈칸으둜 μž…λ ₯μ‹œ auto reply μž‘λ™ν•œλ‹€.
  • Terminated
    • μ’…λ£Œ 쑰건 좩쑱될 λ•Œλ§Œ μ‚¬λžŒμ˜ μž…λ ₯ μš”μ²­λœλ‹€.
    • Terminate 쑰건 μΆ©μ‘± μ „κΉŒμ§€λŠ” auto reply 둜 μ§„ν–‰λ˜λ‹€κ°€ μΆ©μ‘± μ‹œμ— μ‚¬λžŒμ˜ μž…λ ₯ λ°›λŠ”λ‹€.

Code Executor

Local Code Executor

LocalCodeExecutor | 550

  • Agent μ‹€ν–‰ μ½”λ“œ - Message with code blocks
  • Agent κ°€ Code Executor μ‚¬μš©ν•΄ [code file 생성 + μ‹€ν–‰] ν”„λ‘œμ„ΈμŠ€ μ‹€ν–‰ν•œλ‹€.
  • λ‘œμ»¬μ—μ„œ μ½”λ“œλ₯Ό μ‹€ν–‰ν•œλ‹€.
Docker Code Executor

DockerCodeExecutor | 550

  • μž‘λ™ 방식은 κ°™μœΌλ‚˜, μ½”λ“œ μ‹€ν–‰ 뢀뢄이 도컀 μ»¨ν…Œμ΄λ„ˆμ—μ„œ μ‹€ν–‰λœλ‹€.
  • Local 의 방식은 λ³΄μ•ˆμ μΈ μΈ‘λ©΄μ—μ„œ μ’‹μ§€ μ•Šλ‹€κ³  λͺ…μ‹œλ˜μ–΄ μžˆλ‹€.

Group Chat

group chat

  • Group Chat Manager 에 μ˜ν•΄μ„œ μ‘°μœ¨λœλ‹€.
  • Agent B κ°€ λ©”μ‹œμ§€ 전달 β†’ Manager κ°€ A, C, D μ—κ²Œ 전달
  • λ‹€μŒ Agent λ₯Ό μ •ν•˜λŠ” 방법도 μ—¬λŸ¬ λ°©λ²•μœΌλ‘œ κ²°μ • κ°€λŠ₯ (e.g. round_robin, random, manual, auto)

Reference