에이전트 정체성과 수명주기

에이전트 정체성과 수명주기

에이전트 런타임은 에이전트의 정체성(identity)수명주기(lifecycle) 를 관리해요. 중요한 점은 애플리케이션이 에이전트를 직접 만들지 않는다는 거예요. 대신 에이전트 타입과, 에이전트 인스턴스를 만들어 내는 팩토리 함수를 런타임에 등록하지요. 이번 글에서는 런타임이 에이전트를 어떻게 식별하고 생성하는지 살펴볼게요.

출처: 공식 문서 - Agent Identity and Lifecycle

에이전트 ID (Agent ID)

에이전트 ID는 에이전트 런타임 안에서, 분산 런타임을 포함해 에이전트 인스턴스를 고유하게 식별해요. 에이전트 인스턴스가 메시지를 받기 위한 '주소'인 셈이에요. 에이전트 ID는 두 가지 구성 요소를 가져요: 에이전트 타입(agent type)에이전트 키(agent key).

Agent ID = (Agent Type, Agent Key)

에이전트 타입은 에이전트 클래스가 아니에요. 타입은 에이전트를 특정 팩토리 함수에 연결해 주는데, 같은 에이전트 타입의 인스턴스들을 만들어 내는 함수예요. 예를 들어 서로 다른 팩토리 함수가 같은 에이전트 클래스를 만들어도 생성자 파라미터가 다를 수 있어요. 에이전트 키는 주어진 에이전트 타입에 대한 인스턴스 식별자예요.

에이전트 ID는 문자열로 변환되거나 문자열에서 변환될 수 있는데, 그 문자열의 형식은 다음과 같아요:

Agent_Type/Agent_Key

타입과 키는 영문자(a-z)·숫자(0-9)·밑줄(_)만 포함할 때 유효해요. 유효한 식별자는 숫자로 시작할 수 없고 공백을 포함할 수 없어요.

멀티에이전트 애플리케이션에서 에이전트 타입은 보통 애플리케이션이 직접 정의해요, 즉 애플리케이션 코드에 정의돼요. 반면 에이전트 키는 보통 에이전트에 전달되는 메시지에 따라 생성돼요, 즉 애플리케이션 데이터로 정의되요.

예를 들어 런타임이 "code_reviewer"라는 에이전트 타입을, 코드 리뷰를 수행하는 에이전트 인스턴스를 만드는 팩토리 함수와 함께 등록했다고 해 볼게요. 각 코드 리뷰 요청은 고유한 review_request_id를 가져서 전용 세션을 표시해요. 이 경우 각 요청은 ("code_reviewer", review_request_id)라는 에이전트 ID를 가진 새 인스턴스로 처리될 수 있어요.

에이전트 수명주기 (Agent Lifecycle)

런타임이 그 ID로 에이전트 인스턴스에 메시지를 전달할 때, 런타임은 인스턴스를 가져오거나, 없으면 새로 만들어요.

런타임은 또한 여러 머신에 걸쳐 부하를 분산하고 자원을 아끼기 위해 에이전트 인스턴스를 '페이징 인/아웃(paging in/out)'할 책임이 있어요. 다만 이 기능은 아직 구현되지 않았어요.

더 알아보기 (Learn more)