피드로 돌아가기
Dev.toAI/ML
원문 읽기
Google ADK 기반 Multi-Agent 시스템의 Runtime 충돌 및 파싱 오류 해결
Two Nasty Gotchas When Building Multi-Agent Systems with Google ADK
AI 요약
Context
Google ADK를 활용해 Multi-Agent 계층 구조를 설계했으나 Cloud Run 환경의 Module Reload 동작으로 인해 런타임 예외 발생. 특히 Singleton 패턴으로 정의된 Sub-Agent들이 이전 요청의 Parent Reference를 유지하며 Pydantic 유효성 검사 단계에서 충돌하는 구조적 한계 노출.
Technical Solution
- Cloud Run의 Request-per-reload 동작에 따른 Agent 인스턴스 중복 할당 문제 해결을 위해 Constructor 주입 전
parent_agent속성을None으로 초기화하는 Reset 로직 도입 - Module-level Singleton 객체가 메모리에 상주하며 발생하는 상태 오염을 방지하기 위해 동적 인스턴스 생성 전 상태 초기화 강제
- ADK의
instructions_utils.py내 정규표현식({+[^{}]*}+) 기반의 Session State 주입 메커니즘 분석을 통한 KeyError 원인 파악 - Python의
.format()방식과 다른 ADK 고유의 Regex 매칭 특성으로 인해 Double-brace({{ }}) 이스케이프가 작동하지 않음을 확인 - Instruction 내 Literal Placeholder를 중괄호에서 앵글 브래킷(
< >) 또는 대괄호([ ]) 형식으로 변경하여 런타임 파싱 충돌 제거
실천 포인트
1. Serverless 환경에서 Module-level Singleton 사용 시 요청 간 상태 공유 및 Reload 동작 여부 검토
2. 프레임워크 내부의 문자열 치환 Regex 패턴을 확인하여 Prompt 내 예약어 충돌 가능성 점검
3. Pydantic 기반의 모델 설계 시 객체 재사용 과정에서 발생할 수 있는 Validation 에러 케이스 정의