AutoGen 메시지

AutoGen 메시지 (Messages)

여러 에이전트가 오가며 대화를 주고받는 것을 상상해 보세요. 에이전트끼리, 그리고 오케스트레이터나 애플리케이션이 주고받는 그 정보 교환 자체가 바로 AutoGen AgentChat의 메시지(messages)예요. AgentChat은 목적별로 설계된 다양한 메시지 타입을 지원합니다.

Types of Messages

크게 보면 AgentChat의 메시지는 두 종류로 나눌 수 있어요: 에이전트-에이전트 메시지, 그리고 에이전트 내부의 이벤트와 메시지입니다.

Agent-Agent Messages

AgentChat은 에이전트 간 통신을 위한 많은 메시지 타입을 지원해요. 이들은 모두 기본 클래스 BaseChatMessage의 하위 클래스에 속합니다. 구체적인 하위 클래스는 TextMessageMultiModalMessage처럼 기본 텍스트와 멀티모달 통신을 다뤄요.

출처: AutoGen 공식 문서 - Messages

예를 들어 아래 코드는 문자열 콘텐츠와 문자열 source를 받는 텍스트 메시지를 만드는 방법이에요:

from autogen_agentchat.messages import TextMessage

text_message = TextMessage(content="Hello, world!", source="User")

비슷하게, 문자열 리스트나 Image 객체를 받는 멀티모달 메시지는 이렇게 만듭니다:

from io import BytesIO

import requests
from autogen_agentchat.messages import MultiModalMessage
from autogen_core import Image as AGImage
from PIL import Image

pil_image = Image.open(BytesIO(requests.get("https://picsum.photos/300/200").content))
img = AGImage(pil_image)
multi_modal_message = MultiModalMessage(
    content=["Can you describe the content of this image?", img],
    source="User",
)

우리가 만든 TextMessageMultiModalMessage는 에이전트의 on_messages 메서드로 에이전트에 직접 전달하거나, 팀의 run 메서드에 태스크로 줄 수 있어요. 메시지는 에이전트의 응답에도 사용됩니다. 이 내용은 AgentsTeams에서 더 자세히 다뤄요.

Internal Events

AgentChat은 events라는 개념도 지원해요 — 에이전트 내부의 메시지입니다. 이 메시지들은 에이전트 자신의 내부에서 일어나는 동작에 대한 이벤트와 정보를 전달하는 데 쓰이고, 기본 클래스 BaseAgentEvent의 하위 클래스에 속합니다.

예를 들면 도구를 호출하라는 요청이 있었음을 나타내는 ToolCallRequestEvent, 그리고 도구 호출 결과를 담고 있는 ToolCallExecutionEvent가 있어요.

보통 이벤트는 에이전트 자신이 만들고, on_messages에서 반환된 Responseinner_messages 필드에 담깁니다. 커스텀 에이전트를 만들면서 다른 엔티티(예: UI)에 전달하고 싶은 이벤트가 있다면, 이를 Responseinner_messages 필드에 넣을 수 있어요. 예제는 Custom Agents에서 볼 수 있습니다.

AgentChat에서 지원하는 전체 메시지 세트는 autogen_agentchat.messages 모듈에서 확인할 수 있어요.

Custom Message Types

BaseChatMessageBaseAgentEvent를 상속해서 커스텀 메시지 타입을 만들 수 있어요. 이렇게 하면 애플리케이션에 맞는 자신만의 메시지 형식과 동작을 정의할 수 있습니다. 커스텀 에이전트를 쓸 때 커스텀 메시지 타입이 특히 유용해요.

더 알아보기