<aside>
✅
AI Agent란? 자율적으로 주어진 일을 수행하는 Agentic 시스템
- 워크플로: 사전 정의된 코드 경로로 LLM과 도구를 조정
- 에이전트: LLM이 도구 사용과 절차를 동적으로 지시하며 제어 유지
</aside>
1. Agent Development Kit(ADK)란?
AI 에이전트를 개발, 배포하기 위한 유연한 형태의 모듈형 프레임워크, Gemini/Google 생태계에 최적화되어 있지만, 모델/배포 환경에 종속되지 않게 설계됨. ADK Python v1.19.0은 Python 3.10+ 필요
2. 핵심 구성요소
- Agent: 자율적으로 목표를 수행하는 실행 단위. 기본은
BaseAgent
- Tool: 외부 API 호출/검색/코드 실행 등 “대화 밖 능력”을 에이전트에 부여
- Callbacks: 실행 과정의 특정 지점에 “체크포인트”처럼 끼워넣는 사용자 정의 함수(관찰/개입/제어)
- Session/State/Memory: 단일 대화 스레드(session), 그 안의 단기 상태(state), 그리고 여러 세션을 가로지르는 장기 기억(memory)
- Artifacts: 파일/이미지/PDF 같은 이름 있는(versioned) 바이너리 데이터를 세션 또는 유저 범위로 저장/관리
3. 에이전트 타입
ADK는 BaseAgent를 확장하는 방식으로 에이전트 타입을 분류
- LLM Agents(LlmAgent, Agent): LLM 기반 추론/생성/툴 사용/동적 진행 결정
- Workflow Agents(SequentialAgent, ParallelAgent, LoopAgent): LLM 없이도 정해진 패턴으로 다른 에이전트 실행 흐름 제어
- Custom Agents: BaseAgent를 직접 확장해 특수 로직/통합 구현
4. Runtime 실행 모델(핵심)
Runtime은 에이전트/툴/콜백을 이벤트 루프(Event Loop) 기반으로 돌리는 “엔진”
ADK 런타임 = Runner ↔ (Agent/Tool/Callback) 실행 로직이 Event를 주고받는 이벤트 루프
- 사이클 Loop
Runner가 사용자의 요청을 받아 에이전트 실행 시작
- 에이전트가
Event를 yield/emit
- Runner가 서비스(Session/Artifact/Memory 등)로 상태 변경을 커밋하고 UI/호출자 쪽으로 전달
- 다시 에이전트가 이어서 실행
- 또 한 번의 “요청 ~ 최종 응답” 사이클(invocation)의 컨텍스트는
InvocationContext가 중심이며, 프레임워크가 runner.run_async 같은 시작점에서 만들어 에이전트/콕백/툴에 전달