Genkit Agents: Why the Whole Is Greater Than the Sum of Its Parts
개요
Genkit은 기존에 사용하던 도구(tools), 미들웨어(middleware), 인터럽트(interrupts), 세션(sessions), 스트리밍(streaming) 등의 작은 기본 구성 요소들을 조합하여 에이전트(agents)의 복잡한 행동을 계층적으로 구성하는 AI 에이전트 프레임워크이다.
주요 내용
* 간결한 에이전트 구성: 핵심적인 에이전트는 약 10줄의 코드로 정의 가능하며, ai.defineAgent({ system, tools, store })와 agent.chat().sendStream()을 통해 구현된다.
* 상태 관리의 유연성: store 매개변수를 통해 서버 관리 세션 또는 클라이언트 관리 상태를 선택할 수 있으며, 이는 동일한 에이전트와 API를 유지하면서 구현된다.
* 인터럽트를 통한 인간 개입: 인터럽트는 도구 호출을 일시 중지하는 메커니즘으로 활용되어, 인간이 개입하여 승인하거나 추가 정보를 제공한 후 작업 흐름을 이어갈 수 있게 한다.
* 미들웨어를 통한 기능 확장: use: [...] 배열에 미들웨어를 추가하여 파일 시스템 접근, 스킬 라이브러리 로딩, 승인 게이트, 재시도, 하위 에이전트 위임 등의 기능을 한 줄씩 쌓아 올릴 수 있다.
* 기본 구성 요소들의 상호 강화: 승인 게이트 미들웨어는 인터럽트 메커니즘을 활용하고, 하위 에이전트는 도구처럼 작동하며, 결과적으로 기본 구성 요소들이 서로를 강화한다.
* 백엔드와 브라우저에서의 동일한 에이전트 실행: expressHandler를 사용한 서버 측 API와 remoteAgent를 사용한 클라이언트 측 API가 동일한 스트리밍 및 인터럽트-재개(interrupt-resume) 의미론을 지원한다.
시사점
Genkit 프레임워크는 인간 개입(human-in-the-loop), 샌드박스 코딩 지원, 다중 에이전트 위임과 같은 고급 기능을 별도의 기능으로 분리하지 않고, 공통된 기본 아이디어를 조합하여 구현함으로써 복잡한 AI 에이전트 기능을 효과적으로 구축하고 관리할 수 있게 한다.
댓글
GitHub Discussions