Tool 리스트를 깔았으면 다음은 tool choice 야. 이번 turn 에 모델한테 자유를 얼마나 줄 거냐는 얘기지. Major provider 는 다 같은 세 모드를 이름만 바꿔서 내놔.
- auto (기본값): tool 을 부를지 그냥 텍스트로 답할지 모델이 알아서 골라. 평범한 대화형 agent 는 이걸로 충분해.
- any / required: 뭐가 됐든 tool 은 하나 불러야 해 — 맨 텍스트 답변은 막혀. 다음 step 이 tool 결과를 꼭 받아야 하는 구조일 때 써 (예를 들면 늘 라우팅 판단을 내려야 하는 router).
- specific tool: 특정 tool 하나를 못박아. 정해진 순서로 도는 workflow 의 첫 turn 용이야 ("무조건
plan_steps부터").
Tool choice 는 agentic loop 의 압력 밸브야. 가장 흔한 버그 — 아무것도 안 하면서 철학만 늘어놓는 agent — 는 첫 turn 을 any 나 특정 tool 로 바꾸면 잡혀. 반대쪽 흔한 버그 — 같은 tool 만 무한히 부르는 agent — 는 첫 turn 이후에 auto 로 풀어주면 모델이 멈추고 답할 수 있게 돼.
Agentic loop 는 그 판단들 위에 뼈대를 세워줘. 튼튼한 loop 에는 안전장치가 셋 있어. max_turns 상한 — 잘못 쓴 description 하나가 영원히 도는 loop 로 번지지 않게. error feedback 경로 — tool 이 예외를 던지면 그 에러를 tool result 로 모델한테 돌려줘서 스스로 고쳐잡게. 그리고 production 이라면 cost guard — 토큰이나 시간이 선을 넘으면 멈추고 물어봐. 이건 미리 최적화하는 게 아니라, 스스로 회복하는 agent 와 조용히 죽는 agent 를 가르는 차이야.