12줄로 만드는 에이전트형 반복
"에이전트"의 핵심은 도구 호출 반복이야. 모델을 호출하고, 도구 호출이 있는지 확인하고, 실행하고, 결과를 덧붙인 뒤 다시 모델을 호출해. 모델이 또 다른 호출 대신 텍스트를 반환하면 멈춰. 그게 전부야.
한 번의 반복이 흘러가는 순서
- 모델에
contents를 보내. - 응답에
function_calls가 없으면response.text를 반환하고 끝내. - 호출이 있다면 모델의 차례를
contents에 덧붙여 호출을 기억하게 해. - 모든 함수 호출을 실행해. 서로 독립이라면 병렬로 돌려.
- 모든 function-response part를 사용자 차례 하나에 담아 덧붙여.
- 처음으로 돌아가.
병렬 호출은 정상적인 동작이야
요즘 Gemini 모델은 한 차례에 여러 function_call part를 자주 내놓아. 독립적인 호출은 동시에 실행하고 모든 결과를 한 사용자 차례로 돌려줘. API가 id 필드로 결과와 호출을 맞춰.
반드시 예산을 둬
모델이 계속 도구를 다시 호출하면 반복은 영원히 돌 수 있어. 반복 횟수와 전체 경과 시간에 항상 상한을 둬.