피드로 돌아가기
Dev.toAI/ML
원문 읽기
Zod 기반 Runtime Boundary 설계를 통한 LLM Agent 입력 신뢰성 확보
Designing Reliable Tool Schemas with Zod for LLM Agents
AI 요약
Context
LLM이 생성한 Tool Argument를 Application 단계에서 무분별하게 신뢰하여 발생하는 Runtime Error 및 타입 불일치 문제 발생. TypeScript의 정적 타입 시스템이 런타임의 비정형 모델 출력물까지 보장하지 못하는 경계 지점의 취약성 존재.
Technical Solution
- Zod를 활용한 Runtime Schema 정의로 Model Output을 Untrusted Input으로 처리하는 명시적 경계 구축
- safeParse 도입을 통해 예외 발생 시 시스템 Crash를 방지하고 structured validation error를 반환하는 복구 메커니즘 설계
- JS Boolean Coercion의 모호함 해결을 위해 z.union과 z.literal을 조합한 BooleanFromModel 커스텀 헬퍼 구현
- Model의 생성 정확도를 높이기 위해 복잡한 Nested Shape를 배제하고 Flat and Literal 구조의 단순 스키마 지향
- defineTool 고차 함수를 통한 Schema Validation과 Business Logic Handler의 관심사 분리 및 중복 제거
- z.coerce를 활용하여 자연어 기반의 String 수치 데이터를 정밀하게 Integer/Number 타입으로 변환
실천 포인트
- 모든 String 필드에 min/max 길이 제한 설정 여부 확인 - Number 필드의 정수 여부(int) 및 범위(min/max) 제한 적용 - 오픈 스트링을 가능한 Enum으로 대체하여 모델 선택지 제한 - Boolean 처리 시 단순 Coercion 대신 명시적 Literal Transform 적용 - Validation Error를 구조화하여 Agent가 스스로 수정할 수 있는 피드백 루프 구축