FAQ — 자주 묻는 질문

FAQ — 자주 묻는 질문 (FAQs)

AutoGen으로 에이전트를 다루다 보면 "에이전트 인스턴스에 직접 접근해서 함수를 호출하면 안 되나?" 같은 궁금증이 생겨요. 이 질문들은 단순해 보이지만, AutoGen의 분산 설계 원리를 이해하는 데 핵심이에요. 자주 나오는 질문들을 하나씩 살펴볼게요.

출처: FAQs — AutoGen 공식 문서

기본 에이전트 인스턴스는 어떻게 얻나요?

에이전트는 여러 머신에 분산되어 있을 수 있기 때문에, 기본 에이전트 인스턴스에 접근하는 것은 의도적으로 권장되지 않아요. 만약 에이전트가 확실히 같은 머신에서 실행 중이라면, AgentRuntimetry_get_underlying_agent_instance를 호출해서 접근할 수 있어요. 에이전트를 사용할 수 없으면 예외가 발생해요.

에이전트의 함수를 호출하려면 어떻게 하나요?

인스턴스 자체에 접근할 수 없으므로, 에이전트 함수를 직접 호출할 수는 없어요. 대신 함수 호출과 인자를 나타내는 타입을 만들고, 그 메시지를 에이전트에게 전송해야 해요. 그러고 나서 에이전트 안에서 그 메시지 타입에 대한 핸들러를 만들어 로직을 구현해요. 이 방식은 호출자에게 응답을 돌려주는 것도 지원해요.

이렇게 하면 에이전트가 분산 환경에서도, 로컬 환경에서도 똑같이 동작할 수 있어요.

에이전트 등록에 팩토리를 써야 하는 이유가 무엇인가요?

AgentIdtypekey로 구성돼요. type은 에이전트를 만든 팩토리에 해당하고, key는 이 인스턴스를 식별하는 런타임·데이터 의존 키예요.

key는 사용자 id, 세션 id일 수도 있고, 인스턴스를 구분할 필요가 없다면 "default"를 써도 돼요. 각 고유한 key는 제공된 팩토리에 기반해 새 에이전트 인스턴스를 만들어요. 이 덕분에 시스템이 같은 에이전트의 여러 인스턴스로 자동 확장하고, 애플리케이션에서 key를 어떻게 다루느냐에 따라 각 인스턴스의 생명주기를 독립적으로 관리할 수 있어요.

gRPC 메시지 크기를 늘리려면 어떻게 하나요?

max_send_message_lengthmax_receive_message_length를 재정의하는 등 커스텀 gRPC 옵션이 필요하다면, extra_grpc_config 변수를 정의해 GrpcWorkerAgentRuntimeHostGrpcWorkerAgentRuntime 인스턴스 양쪽에 전달하면 돼요.

# Define custom gRPC options
extra_grpc_config = [
    ("grpc.max_send_message_length", new_max_size),
    ("grpc.max_receive_message_length", new_max_size),
]

# Create instances of GrpcWorkerAgentRuntimeHost and GrpcWorkerAgentRuntime with the custom gRPC options
host = GrpcWorkerAgentRuntimeHost(address=host_address, extra_grpc_config=extra_grpc_config)
worker1 = GrpcWorkerAgentRuntime(host_address=host_address, extra_grpc_config=extra_grpc_config)

참고: GrpcWorkerAgentRuntime이 클라이언트용 호스트 연결을 만들 때 HostConnection 클래스의 DEFAULT_GRPC_CONFIG를 기본값 집합으로 사용해요. extra_grpc_config로 같은 이름의 파라미터를 전달하면 기본값을 재정의할 수 있어요.

모델 캐퍼빌리티(model capabilities)란 무엇이며 어떻게 지정하나요?

모델 캐퍼빌리티는 표준 자연어 기능 외에 LLM이 가질 수 있는 추가 능력이에요. 현재 AutoGen에서 지정할 수 있는 추가 능력은 3가지예요.

  • vision: 모델이 이미지 데이터를 처리·해석할 수 있는 능력
  • function_calling: 함수 이름·목적·입력 파라미터 등 함수 설명을 받아들이고, 필요한 파라미터를 포함한 적절한 함수를 호출하도록 응답할 수 있는 능력
  • json_output: 지정된 JSON 형식에 맞춰 응답을 출력할 수 있는 능력

모델 캐퍼빌리티를 모델에 전달하면 기본 정의를 재정의할 수 있어요. 이 캐퍼빌리티는 기본 모델이 실제로 할 수 있는지에는 영향을 주지 않지만, 그와 연관된 동작을 허용하거나 금지해요. 이는 특히 로컬 LLM 사용 시에 유용해요.

from autogen_ext.models.openai import OpenAIChatCompletionClient

client = OpenAIChatCompletionClient(
    model="gpt-4o",
    api_key="YourApiKey",
    model_capabilities={
        "vision": True,
        "function_calling": False,
        "json_output": False,
    }
)

더 알아보기 (Learn more)