본문으로 건너뛰기
AIPida
채택됨실전AI 에이전트

Claude 에이전트가 같은 툴을 5~6번 반복 호출하거나, 봐야 할 DB를 안 보고 추측합니다

MCP 서버 붙여서 사내 데이터 조회 에이전트를 만들고 있습니다. 모델은 Claude를 쓰는데요, 두 가지 반대 증상이 번갈아 납니다.

  1. 어떤 질문엔 검색 툴을 5~6번씩 연달아 호출하면서 같은 걸 계속 긁어옵니다.
  2. 어떤 질문엔 분명히 DB를 봐야 하는데 그냥 자기 지식으로 추측해서 답해버립니다.

툴 description은 나름 적었는데 일관성이 없네요. 프롬프트로 잡는 건지, 툴 스키마를 손봐야 하는 건지 방향을 못 잡겠습니다. 비슷한 경험 있으신 분 조언 부탁드립니다.

답변 2

  • 채택된 답변에디터 검증

    둘 다 흔한 증상이고 뿌리가 같아요 — description이 모델한테 "언제 쓰는지"를 안 알려줘서 그렇습니다.

    다들 description에 "무엇을 하는가"만 적거든요("DB에서 데이터를 조회한다"). 근데 모델한테 정작 필요한 건 "언제 써야 하고 언제 쓰면 안 되는가"예요. 이렇게 바꿔보세요:

    • 사용 트리거를 명시: "사용자가 특정 고객/주문/기간의 실제 수치를 물을 때 반드시 호출. 일반 개념 설명이나 정의 질문엔 호출하지 말 것."
    • 파라미터 description도 빡세게: 형식이 뭔지, 모르면 추측해서 채우지 말지.

    추측해서 답하는 증상(2번)은 description으로 안 잡히면 시스템 프롬프트에 박으세요 — "수치/사실 질문은 반드시 툴로 확인하고, 확인 못 하면 모른다고 답하라." Claude가 도움 주려는 성향이 워낙 강해서 명시적으로 막지 않으면 그럴듯하게 환각으로 메웁니다.

    같은 검색 반복(1번)은 보통 첫 호출 결과가 빈약하거나, 모델이 "이걸로 충분한가" 판단이 안 서서 한 번 더 긁는 거예요. 툴 결과에 "총 N건 중 상위 K건" 같은 메타정보를 같이 실어주면 더 긁을지 멈출지 판단을 잘합니다. 그리고 결과 없을 때 빈 배열 []만 던지지 마세요 — 모델이 "쿼리가 잘못됐나" 싶어 인자 바꿔가며 또 호출합니다. "결과 없음(조건 확인 필요)" 같은 명시 메시지를 주는 게 반복을 끊는 데 의외로 큼.

  • 윗분 답에 한 표. 측정 관점 하나만 보탤게요.

    이런 거 감으로 프롬프트 고치면 이 케이스 잡으니 저 케이스 깨지는 두더지잡기 됩니다. 실패 케이스 20~30개를 고정 평가셋으로 묶어두세요 — 질문 + 기대 툴콜 시퀀스 형태로. description이나 프롬프트 손댈 때마다 그 셋 돌려서 회귀 확인하는 거죠. 이거 없으면 진짜 끝없이 돕니다.

    그리고 같은 검색 반복은 코드 레벨 가드가 답이에요. 동일 인자로 같은 툴이 N회 연속 호출되면 "이미 같은 조회를 했고 결과는 이거다"라는 시스템 메시지를 주입하거나 그냥 강제로 끊으세요. 모델 행동만으로 100% 잡으려 하지 말고, 오케스트레이션 코드에 안전망 까는 게 운영에선 현실적입니다. description 아무리 잘 써도 가끔 도니까요.