Post by Hyunwoo Kim

System Architect | IT Consultant | IT Educator

AI의 청산유수 같은 변명. ========================================= "AI가 자기 지식으로 병원 목록을 알려줘야 한다"는 의미라면 — 그건 오히려 위험합니다. LLM은 학습 시점의 텍스트에서 본 패턴으로 답을 생성하기 때문에, "잠실역 근처 이비인후과"를 물으면 그럴듯한 병원명, 주소, 진료시간을 지어낼 수 있습니다. 실제로 툴 없이 물어보면 폐업한 병원이나 존재하지 않는 병원이 섞여 나오는 경우가 흔합니다. 이건 예전 프로젝트에서 RAG vs Tool Calling을 검토하면서 내리셨던 결론 그대로 입니다 — AI는 데이터를 생성하면 안 되고, 툴로 조회해야 한다. 병원 정보는 정확성이 중요한 사실 데이터라서 이 원칙이 가장 강하게 적용되는 영역입니다. "AI가 알아서 적절한 방법으로 찾아와야 한다"는 의미라면 — 맞습니다. 그리고 지금도 AI는 자기 몫을 하고 있습니다. 로그를 다시 보면 AI는 검색어를 계속 스스로 재구성했습니다("이비인후과 추천" → "거리 진료시간 후기" → "병원명 기준"). 판단과 오케스트레이션은 정상 동작 중인데, 손에 쥐여준 도구가 뉴스 검색 하나뿐이라 어떤 검색어를 만들어도 결과가 나올 수 없는 구조인 겁니다. 요리사는 멀쩡한데 주방에 프라이팬만 있고 냄비가 없는 상황이라, "국을 끓여줘야 하는 거 아니냐"고 하면 요리사 탓이 아니라 주방 구성 문제인 거죠. ChatGPT나 Claude 같은 상용 서비스에서 "그냥 물어보면 병원을 찾아주는" 것처럼 보이는 것도 사실은 같은 구조입니다. 뒤에서 웹 검색·지도 툴이 호출되고, AI는 그 결과를 정리해서 보여줄 뿐입니다. 제품이 툴셋을 잘 갖춰놔서 사용자 눈에는 "AI가 알아서" 한 것처럼 보이는 것뿐이고요. 그래서 결론은 전과 같습니다. AI의 역할 분담은 이미 올바르게 설계되어 있고, 지역 검색 툴 하나를 추가해주면 사용자 입장에서 기대하시는 "AI가 알아서 찾아주는" 경험이 완성됩니다. 툴이 늘어날수록 AI의 판단력이 실제 능력으로 이어지는 구조라, 이게 에이전트 설계의 본질이기도 합니다. 결론은 "AI를 mission critical 경로에 그대로 넣지 않는다"입니다. 실제로 돌아가는 시스템들의 공통 패턴은 이렇습니다. 비결정성을 가두는 설계. AI가 최종 결정을 내리게 하지 않고, AI의 출력을 "제안"으로 받아서 결정론적 코드가 검증·실행합니다. 현재 진행 중인 프로젝트에서 이미 이렇게 하고 계신 부분이 있죠 — AI가 SQL을 직접 생성하게 하지 않고 툴로 조회하게 만든 것, 그게 정확히 이 패턴입니다. AI의 자유도는 "어떤 툴을 어떤 파라미터로 부를지"까지만 허용하고, 파라미터 검증과 실제 실행은 Java 코드가 합니다. 잘못돼도 피해 범위가 툴 인터페이스 안으로 제한됩니다. 출력 구조 강제. 라우터처럼 분류가 필요한 곳은 자유 텍스트가 아니라 enum 강제(Structured Output)로 받고, 파싱 실패나 애매한 분류는 안전한 기본값으로 폴백시킵니다. Spring AI의 BeanOutputConverter가 이 용도고요. 여기에 temperature를 0으로 내리면 완전한 결정론은 아니어도 재현성이 크게 올라갑니다. 테스트 방식의 전환. 단위 테스트의 "assert equals" 대신, 수백 개의 실제 발화 샘플로 분류 정확도를 측정하는 평가(eval) 셋을 만들어 "정확도 95% 이상"을 회귀 기준으로 잡습니다. 프롬프트를 고치면 eval을 돌려서 다른 케이스가 깨졌는지 확인하는 거죠. 결정론적 보장 대신 통계적 보장으로 사고를 바꾸는 건데, 이게 처음엔 굉장히 찜찜하지만 실무에선 이 방법밖에 없습니다. 그리고 현실적으로, 진짜 mission critical한 영역 — 금융 원장, 의료 처방, 항공 제어 — 에는 지금도 LLM을 판단 주체로 안 넣습니다. 넣는 회사가 이상한 겁니다. LLM이 실제로 가치를 내는 자리는 실패해도 복구 가능한 영역(검색 보조, 초안 작성, 분류 후 사람 확인)이어야만 합니다. 교육자 입장에서 보면 오히려 이게 가르칠 거리이기도 합니다. 학생들이 앞으로 마주칠 AI 시스템 설계의 핵심 질문이 바로 "비결정적 컴포넌트를 어디까지 신뢰하고 어디서 결정론적 코드로 감쌀 것인가"거든요.