에이전트 루프

Agent loop

모델이 목표를 보고 도구를 선택·호출한 뒤 결과를 관찰하며 다음 행동을 결정하는 반복 구조입니다.

···
html
<div class="demo"><div class="head"><b>AGENT LOOP</b><span id="iteration">turn 1</span></div><div class="loop"><div class="node" id="reason"><small>01</small> DECIDE</div><div class="arrow">→</div><div class="node" id="tool"><small>02</small> TOOL</div><div class="arrow">→</div><div class="node" id="observe"><small>03</small> OBSERVE</div><div class="arrow">→</div><div class="node" id="answer"><small>04</small> ANSWER</div></div><div class="output" id="output">Choose a next action</div><div class="foot"><span>goal → action → result → next step</span><span>tap to step</span></div></div>
css
.demo{width:min(94vw,740px);height:min(86vh,310px);padding:clamp(10px,2.4vmin,20px);border:1px solid var(--line);border-radius:14px;background:var(--surface);display:flex;flex-direction:column;justify-content:space-between;gap:clamp(7px,2vmin,14px);font:600 clamp(8px,2.4vmin,15px)/1.3 ui-monospace,monospace}.head,.foot{display:flex;justify-content:space-between;gap:8px}.head b{color:var(--accent)}.head span,.foot{color:var(--muted)}.foot{font-size:.82em}.loop{display:flex;align-items:center;justify-content:center;gap:clamp(2px,.9vmin,9px);min-height:40%}.node{flex:1;min-width:0;max-width:130px;border:1px solid var(--line);background:var(--bg);border-radius:7px;padding:clamp(5px,1.6vmin,12px) 2px;text-align:center;opacity:.5;transition:opacity .2s,border-color .2s,background .2s}.node small{display:block;color:var(--muted);font-size:.75em;margin-bottom:.3em}.node.on{opacity:1;border-color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,var(--surface));color:var(--accent)}.arrow{color:var(--accent);font-size:1.2em}.output{border-left:3px solid var(--accent);background:var(--bg);padding:.5em .8em;min-height:2.3em;color:var(--muted)}
js
const ids=['reason','tool','observe','answer'],messages=['Choose a next action','Call search(query)','Observe: 3 results','Respond with evidence'];let step=0,turn=1;function advance(){ids.forEach((id,i)=>document.getElementById(id).classList.toggle('on',i===step));document.getElementById('output').textContent=messages[step];document.getElementById('iteration').textContent='turn '+turn;if(step===3)turn++;step=(step+1)%4}advance();const timer=setInterval(advance,850);document.querySelector('.demo').addEventListener('pointerdown',()=>{clearInterval(timer);advance()})

에이전트 루프는 현재 목표와 대화 상태를 모델에 전달하고, 모델이 도구 호출 또는 최종 답변을 고르게 합니다. 도구를 호출했다면 그 결과를 다시 모델의 입력에 넣어 다음 단계를 결정합니다.

데모는 생각할 단계, 도구 호출, 결과 관찰, 답변의 순환을 보여줍니다. 실제 구현은 호출 횟수 상한, 도구 권한, 타임아웃과 실패 처리, 종료 조건을 명시해야 무한 반복과 원치 않는 실행을 막을 수 있습니다.

언제 쓰나

정보를 조회하거나 여러 단계를 수행해야 하는 작업을 모델과 도구로 자동화할 때 사용합니다.

페이지로 열기 ↗