AWS, AI 에이전트용 'ToolSimulator' 공개… Strands Evals SDK에 LLM 기반 도구 시뮬레이션 추가
AWS가 외부 도구에 의존하는 AI 에이전트를 안전하고 대규모로 검증할 수 있는 LLM 기반 시뮬레이션 프레임워크 ToolSimulator를 공개했다. ToolSimulator는 Strands Evals SDK의 일부로 즉시 사용할 수 있으며, 라이브 API 호출에 따른 PII 노출이나 의도치 않은 동작 위험 없이 다중 턴 워크플로우까지 검증할 수 있도록 설계됐다.
AWS는 라이브 API 기반 테스트의 세 가지 한계를 지적했다. 첫째, 외부 의존성으로 인해 rate limit과 다운타임, 네트워크 연결 문제가 발생하면서 수백 건의 테스트를 종합적으로 돌리기 어렵다. 둘째, 실제 도구 호출이 실제 이메일 발송이나 프로덕션 데이터베이스 수정, 항공권 예약 같은 부작용을 일으킬 수 있다. 셋째, 사용자 기록·금융 정보·PII 같은 민감 데이터를 다루는 도구에 대해서는 컴플라이언스 위험이 따른다.
정적 mock(static mocks)도 대안이 되지 못한다고 AWS는 설명했다. API가 진화할 때마다 유지보수 부담이 커질 뿐 아니라, 다중 턴·상태 보존 워크플로우에서 한계가 분명하기 때문이다. 예컨대 항공편 예약 에이전트가 첫 호출에서 항공편을 검색한 뒤 두 번째 호출에서 예약 상태를 확인할 때, 두 번째 응답은 첫 호출의 결과에 의존해야 하지만 하드코딩된 응답으로는 호출 간에 변하는 상태를 반영할 수 없다.
ToolSimulator는 세 가지 핵심 기능으로 이를 해결한다. 적응형 응답 생성(Adaptive response generation)은 고정된 템플릿이 아니라 에이전트가 실제 요청한 내용을 반영해 그럴듯한 응답을 만든다. 상태 보존 워크플로우 지원(Stateful workflow support)은 도구 호출 사이에 일관된 공유 상태를 유지해 데이터베이스 상호작용이나 예약 워크플로우를 안전하게 시험할 수 있게 한다. 스키마 강제(Schema enforcement)는 개발자가 정의한 Pydantic 스키마에 응답이 부합하는지 검증해 잘못된 형식의 응답을 사전에 차단한다.
동작 방식은 등록된 도구로의 호출을 가로채 LLM 기반 응답 생성기로 라우팅하는 구조다. 생성기는 도구 스키마, 에이전트 입력, 현재 시뮬레이션 상태를 활용해 별도 픽스처 없이도 맥락에 맞는 응답을 만든다. AWS는 ToolSimulator가 Model Context Protocol(MCP) 서비스 호출을 포함한 외부 시스템 호출을 폭넓게 다룰 수 있다고 밝혔다.
워크플로우는 세 단계로 정리된다. 1단계 'Decorate & Register'에서는 ToolSimulator 인스턴스를 만들고 @simulator.tool() 데코레이터로 도구 함수를 등록한다. 실제 함수 본문은 비워둘 수 있으며, ToolSimulator가 구현 코드에 도달하기 전에 호출을 가로챈다. 2단계 'Steer'는 선택 사항으로, 시뮬레이션 동작을 세부 조정한다. 3단계 'Mock'에서는 에이전트가 등록된 도구를 호출하면 응답 생성기가 실행돼 도구 스키마와 출력 스키마에 맞춘 응답을 반환하고 상태 레지스트리를 갱신한다.
선택 파라미터는 세 가지다. share_state_id는 같은 백엔드를 공유하는 도구들을 공통 상태 키로 묶어 한 도구의 상태 변경이 다른 도구의 후속 호출에 즉시 보이도록 한다. initial_state_description은 자연어 설명으로 사전 상태를 시드하고, output_schema는 응답 구조를 Pydantic 모델로 엄격히 정의한다.
사용 요건은 Python 3.10 이상과 'pip install strands-evals'로 설치 가능한 Strands Evals SDK이며, ToolSimulator를 로컬에서 실행하기 위해 AWS 계정이 필요하지 않다. AWS가 공개한 예제는 항공편 검색 도구로, initial_state_description에 'SEA->JFK 항공편이 오전 8시·정오·오후 6시에 운항하며 가격은 $180~$420'이라고 시드해두면 시애틀-뉴욕 3월 15일 검색 요청에 대해 일관된 시뮬레이션 응답을 반환한다.