Tool 리스트가 깔리면 다음 결정은 tool choice: 이번 turn 에 모델한테 얼마나 자유 줄 거야? 모든 major provider 가 같은 세 모드를 다른 이름으로 노출해.
- auto (default): 모델이 tool 부를지 텍스트로 답할지 직접 골라. 보통의 conversational agent 용.
- any / required: 모델이 무조건 어떤 tool 은 불러야 함 — plain text 답 금지. 다음 step 이 tool 결과를 요구하는 architecture 일 때 (e.g. 항상 routing 결정 내리는 router).
- specific tool: 특정 tool 강제. 구조화된 workflow 의 첫 turn 용 ("항상
plan_steps부터 부르기").
Tool choice 는 agentic loop 의 압력 밸브야. 가장 흔한 bug — 아무것도 안 하면서 철학 떠는 agent — 는 첫 turn 을 any 나 specific tool 로 바꾸면 고쳐져. 다른 흔한 bug — 같은 tool 영원히 부르는 agent — 는 첫 turn 후 auto 로 두면 모델이 멈추고 답할 수 있어.
Agentic loop 는 그 결정들 위에 구조를 얹어. 견고한 loop 는 기계적 안전 3 조각: max_turns 캡 (버그난 description 이 영구 loop 안 만들게), error feedback 경로 (tool 이 throw 하면 에러를 tool result 로 모델한테 돌려줘서 조정 가능하게), cost guard 프로덕션용 (총 토큰이나 wall time 이 임계 넘으면 멈추고 물어봄). 이건 premature optimization 아니야 — recover 하는 agent 와 조용히 crash 하는 agent 의 차이야.