도구 호출은 적어도 두 번 왕복해
먼저 도구 목록과 사용자 메시지를 보내면 모델이 tool_use 블록과 stop_reason='tool_use'를 돌려줘. 애플리케이션이 로컬 도구를 실행하고 tool_result를 이력에 덧붙여 다시 보내면 모델이 다음 답을 만들지. 실제 에이전트는 stop_reason='end_turn'이 나올 때까지 이 과정을 반복해.
이름에서 작은 처리기로 배분해
{tool_name: callable} 형태의 등록부를 두고, 각 tool_use 블록의 이름으로 처리기를 찾아 인자를 넘겨. 모든 분기를 거대한 함수 하나에 넣으면 도구가 늘어날수록 검증과 오류 처리, 권한 규칙이 뒤엉켜. 도구 하나의 계약은 처리기 하나에 가깝게 유지해.
끝나지 않는 루프를 막아
정당하게 열 번 넘게 도구를 쓰는 작업도 있지만, 같은 시도를 반복하는 건 막힌 신호일 수 있어. 최대 반복 횟수를 두고 10 정도에서 시작해 실제 자료로 조정해. 예산 때문에 멈췄다면 사용자에게 그 이유와 마지막 상태를 보여 줘.
원칙: 도구 루프는 등록부와 반복 예산을 가진 통제된 반복문이야. 둘 다 코드에 드러나게 둬.