
에이전트의 도구 실행 경로를 native tool calling으로 전환하다
두줄요약
프롬프트 JSON 파싱 기반 에이전트 루프를 Spring AI 2.0의 native tool calling으로 전환했습니다. 실행 통제 계층은 유지하면서 메시지·도구 관리와 MCP 클라이언트를 개선했습니다.
문제 상황
- 프롬프트 내 도구 목록과 텍스트 JSON 파싱에 의존한 에이전트 도구 실행 루프
- 형식 오류 시 도구 미호출 종료, 관측 전문 재조립에 따른 프롬프트 선형 증가
- 40개 이상 도구의 전량 전송과 직접 구현한 JSON-RPC MCP 클라이언트
원인 분석
prompt,systemPrompt문자열만 가진 엔진 포트로 messages·tools 모델링 부재- 대화 이력·도구 목록·관측의 문자열 밀어넣기 구조
- Spring AI 의존성 선언과 실제 클라이언트 구현 간의 불일치
해결 방법
- 엔진 포트를 messages + tools 기반으로 전환하고 provider native tool calling의 구조화된
tool_calls활용 - Spring AI 2.0의
ChatModel직접 호출로 실행 의도만 수신하고 도구 실행은ToolExecutionGateway유지 - LLM 경계에서만 도구 이름 변환·충돌 검사 적용, 도메인 기반 도구 선택·TTL 캐시·도구 불필요 요청 조기 종료
성능/운영 포인트
- assistant·tool 메시지 배열 누적으로 관측 문자열 재조립 제거
- 정책·승인·감사 게이트웨이 무변경, 루프 모드와 종료 사유의 SSE·감사 로그 기록
- native tool calling 실패 가능성에 대비한 fallback 유지와 단위 테스트 7종 추가




