핵심 요약
tool calling은 모델이 "이 함수를 이 인자로 불러줘"라고 구조화 출력을 내면, 앱이 실제 함수를 실행해 결과를 다시 모델에 주는 방식이다. 안정성의 핵심은 ① 명확한 파라미터 스키마, ② 인자 검증(모델이 틀린 값을 줄 수 있음), ③ 에러를 모델에 되먹여 복구, ④ 호출 횟수 상한으로 무한 루프 방지.
1. 설계 원칙
- 도구는 적게·명확하게 — 이름·설명·파라미터를 사람이 읽어도 분명하게
- 파라미터는 JSON 스키마로 타입·필수·열거값 명시
- 위험 도구(삭제·결제)는 실행 전 확인/권한 검사
2. 실행 루프
| 단계 | 처리 |
|---|---|
| 모델이 도구 호출 | 인자 검증 후 실행 |
| 에러 발생 | 에러 메시지를 결과로 되먹임 |
| 반복 | 최대 호출 횟수 제한 |
3. 함정
- 모델이 존재하지 않는 인자·잘못된 타입을 보낼 수 있다 — 반드시 서버에서 검증
- 도구 결과가 또 도구를 부르는 무한 루프 — 호출 카운터로 차단
- 도구 출력을 그대로 신뢰해 위험 행동 금지(프롬프트 인젝션 경로)
자주 묻는 질문
모델이 함수를 직접 실행하나요?
아니요. 모델은 "어떤 함수를 어떤 인자로 부르라"는 구조화된 요청만 냅니다. 실제 실행은 여러분의 앱이 하고, 결과를 다시 모델에 전달합니다. 그래서 인자 검증과 권한 통제가 가능합니다.
도구 호출이 무한 반복돼요.
도구 결과가 또 호출을 유발하는 루프입니다. 최대 호출 횟수를 정해 초과 시 중단하고, 종료 조건(최종 답변)을 프롬프트로 명확히 하세요.

댓글 0