Files
liqiang b119135836
Build latest book artifacts / build (push) Canceled after 0s
dependency resolution / resolve (3.11) (push) Canceled after 0s
dependency resolution / resolve (3.13) (push) Canceled after 0s
deploy-pages / build (push) Canceled after 0s
deploy-pages / deploy (push) Canceled after 0s
i18n consistency check / check (push) Canceled after 0s
provider adoption tests / test (chapter2/context-compression) (push) Canceled after 0s
provider adoption tests / test (chapter2/prompt-injection) (push) Canceled after 0s
provider adoption tests / test (chapter2/system-hint) (push) Canceled after 0s
provider adoption tests / test (chapter3/log-sanitization) (push) Canceled after 0s
web-search-agent tests / test (push) Canceled after 0s
web-search-agent tests / agentbook (push) Canceled after 0s
ai-agent-book 精选快照(<2MB 代码与文档,来自 github.com/bojieli/ai-agent-book)
2026-08-20 13:12:50 +00:00

73 lines
4.9 KiB
XML

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 820 470" width="820" height="470" role="img" aria-labelledby="title desc">
<title id="title">자율 에이전트의 실행 루프</title>
<desc id="desc">에이전트가 사고, 행동, 관찰을 차례로 수행한 뒤 종료 조건에 따라 최종 결과를 출력하거나 다음 라운드를 계속합니다.</desc>
<defs>
<marker id="arrow-dark" markerWidth="9" markerHeight="7" refX="8" refY="3.5" orient="auto" markerUnits="userSpaceOnUse">
<polygon points="0 0, 9 3.5, 0 7" fill="#333333"/>
</marker>
<marker id="arrow-light" markerWidth="9" markerHeight="7" refX="8" refY="3.5" orient="auto" markerUnits="userSpaceOnUse">
<polygon points="0 0, 9 3.5, 0 7" fill="#777777"/>
</marker>
<style>
.sans { font-family: Arial, "Apple SD Gothic Neo", "Noto Sans CJK KR", "Noto Sans KR", "Malgun Gothic", "PingFang SC", "Microsoft YaHei", sans-serif; }
.code { font-family: "Noto Sans Mono CJK KR", "D2Coding", "Apple SD Gothic Neo", "Malgun Gothic", "Courier New", Courier, monospace; }
.heading { fill: #333333; font-size: 16px; font-weight: 700; }
.body { fill: #333333; font-size: 15px; }
.note { fill: #666666; font-size: 14px; }
.box { stroke: #333333; stroke-width: 2; }
.flow { fill: none; stroke: #333333; stroke-width: 2; marker-end: url(#arrow-dark); }
</style>
</defs>
<rect width="820" height="470" fill="#ffffff"/>
<!-- ReAct steps -->
<rect class="box" x="45" y="70" width="210" height="96" rx="8" fill="#e8e8e8"/>
<text class="sans heading" x="60" y="95" dominant-baseline="middle">① 사고(Reasoning)</text>
<rect x="60" y="112" width="180" height="38" rx="5" fill="#ffffff" stroke="#777777"/>
<text class="code body" x="150" y="132" text-anchor="middle" dominant-baseline="middle">&quot;정보가 더 필요함&quot;</text>
<rect class="box" x="305" y="70" width="210" height="96" rx="8" fill="#f0f0f0"/>
<text class="sans heading" x="320" y="95" dominant-baseline="middle">② 행동(Acting)</text>
<rect x="320" y="112" width="180" height="38" rx="5" fill="#ffffff" stroke="#777777"/>
<text class="code body" x="410" y="132" text-anchor="middle" dominant-baseline="middle">web_search(...)</text>
<rect class="box" x="565" y="70" width="210" height="96" rx="8" fill="#f0f0f0"/>
<text class="sans heading" x="580" y="95" dominant-baseline="middle">③ 관찰(Observing)</text>
<rect x="580" y="112" width="180" height="38" rx="5" fill="#ffffff" stroke="#777777"/>
<text class="code body" x="670" y="132" text-anchor="middle" dominant-baseline="middle">tool_result: &quot;...&quot;</text>
<line class="flow" x1="255" y1="118" x2="302" y2="118"/>
<line class="flow" x1="515" y1="118" x2="562" y2="118"/>
<line class="flow" x1="670" y1="166" x2="670" y2="207"/>
<!-- Exit criteria feed the decision point -->
<rect x="45" y="220" width="430" height="145" rx="8" fill="#ffffff" stroke="#777777" stroke-width="2" stroke-dasharray="7 4"/>
<text class="sans heading" x="65" y="244" dominant-baseline="middle">종료 조건(하나 이상 충족)</text>
<line x1="65" y1="258" x2="455" y2="258" stroke="#cccccc"/>
<text class="sans body" x="65" y="282" dominant-baseline="middle">① 작업 완료</text>
<text class="sans body" x="250" y="282" dominant-baseline="middle">② final_answer 호출</text>
<text class="sans body" x="65" y="314" dominant-baseline="middle">③ 도구 호출 없음</text>
<text class="sans body" x="250" y="314" dominant-baseline="middle">④ 오류 횟수 한도 초과</text>
<text class="sans body" x="65" y="346" dominant-baseline="middle">⑤ 최대 라운드 도달</text>
<path d="M 475 260 H 587" fill="none" stroke="#777777" stroke-width="2" stroke-dasharray="6 4" marker-end="url(#arrow-light)"/>
<rect x="502" y="238" width="62" height="20" rx="3" fill="#ffffff"/>
<text class="sans note" x="533" y="248" text-anchor="middle" dominant-baseline="middle">판단 근거</text>
<!-- Stop decision and branches -->
<polygon class="box" points="670,208 750,260 670,312 590,260" fill="#e2e2e2"/>
<text class="sans heading" x="670" y="252" text-anchor="middle" dominant-baseline="middle">종료 조건을</text>
<text class="sans heading" x="670" y="273" text-anchor="middle" dominant-baseline="middle">충족했는가?</text>
<path class="flow" d="M 750 260 H 795 V 35 H 150 V 67"/>
<text class="sans note" x="765" y="245" dominant-baseline="middle">아니요</text>
<rect x="360" y="43" width="120" height="22" rx="3" fill="#ffffff"/>
<text class="sans note" x="420" y="54" text-anchor="middle" dominant-baseline="middle">다음 라운드로</text>
<line class="flow" x1="670" y1="312" x2="670" y2="379"/>
<text class="sans note" x="685" y="346" dominant-baseline="middle"></text>
<rect class="box" x="555" y="382" width="230" height="68" rx="8" fill="#d6d6d6"/>
<text class="sans heading" x="670" y="416" text-anchor="middle" dominant-baseline="middle">최종 결과 출력</text>
</svg>