Home / ν•˜λ„€μŠ€ μ—”μ§€λ‹ˆμ–΄λ§ / 🎯 ν•˜λ„€μŠ€ μ—”μ§€λ‹ˆμ–΄λ§
Module

🎯 ν•˜λ„€μŠ€ μ—”μ§€λ‹ˆμ–΄λ§

νŒ¨λŸ¬λ‹€μž„ μ§„ν™” Β· ꡬ성 μš”μ†Œ Β· 섀계 νŒ¨ν„΄ Β· ν”„λ‘œλ•μ…˜ μ„±μˆ™λ„ β€” μ—μ΄μ „νŠΈ μ‹€ν–‰ ν™˜κ²½ 섀계

⏱ 120λΆ„ 142 / 189

ν•˜λ„€μŠ€ μ—”μ§€λ‹ˆμ–΄λ§

νŒ¨λŸ¬λ‹€μž„ μ§„ν™” Β· ꡬ성 μš”μ†Œ Β· 에이전틱 루프 Β· 섀계 νŒ¨ν„΄ Β· μ„±μˆ™λ„

Agent = Model + Harness

도ꡬ Β· λ©”λͺ¨λ¦¬ Β· μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜ Β· κ°€λ“œλ ˆμΌ Β· 평가 β€” μ—μ΄μ „νŠΈ μ‹€ν–‰ ν™˜κ²½ μ „μ²΄μ˜ 섀계

νŒ¨λŸ¬λ‹€μž„ μ§„ν™”

Prompt β†’ Context β†’ Harness β€” λ„“μ–΄μ§€λŠ” 섀계 λ²”μœ„

PART 1 Β· νŒ¨λŸ¬λ‹€μž„ μ§„ν™”

νŒ¨λŸ¬λ‹€μž„ μ§„ν™”

μž…λ ₯μ—μ„œ μ‹€ν–‰ ν™˜κ²½μœΌλ‘œ β€” μ΅œμ ν™” λŒ€μƒμ΄ ν•œ κ²Ήμ”© λ„“μ–΄μ Έ 온 μ§„ν™”μ˜ 흐름

ν”„λ‘¬ν”„νŠΈμ—μ„œ ν•˜λ„€μŠ€λ‘œ

μ΅œμ ν™” λŒ€μƒμ΄ μž…λ ₯ ν…μŠ€νŠΈμ—μ„œ μ‹€ν–‰ ν™˜κ²½ μ „μ²΄λ‘œ λ„“μ–΄μ Έ 온 흐름을 μ§šμŠ΅λ‹ˆλ‹€.

  • ν”„λ‘¬ν”„νŠΈ μ—”μ§€λ‹ˆμ–΄λ§ β€” "μ–΄λ–»κ²Œ λ¬Όμ–΄λ³ΌκΉŒ"
  • μ»¨ν…μŠ€νŠΈ μ—”μ§€λ‹ˆμ–΄λ§ β€” "무엇을 λ³΄μ—¬μ€„κΉŒ"
  • ν•˜λ„€μŠ€ μ—”μ§€λ‹ˆμ–΄λ§ β€” "μ–΄λ–€ ν™˜κ²½μ—μ„œ μ‹€ν–‰ν• κΉŒ"
  • 곡식화 β€” Martin Fowler Β· ThoughtWorks (2026)
takeaway

μ„Έ νŒ¨λŸ¬λ‹€μž„μ€ λŒ€μ²΄κ°€ μ•„λ‹ˆλΌ 포함 관계(Harness βŠƒ Context βŠƒ Prompt)μž…λ‹ˆλ‹€ β€” 섀계 λ²”μœ„κ°€ ν•œ κ²Ήμ”© λ„“μ–΄μ§‘λ‹ˆλ‹€.

PART 1 Β· νŒ¨λŸ¬λ‹€μž„ μ§„ν™”

μ—”μ§€λ‹ˆμ–΄λ§ νŒ¨λŸ¬λ‹€μž„ 3단계

μž…λ ₯ μ΅œμ ν™”μ—μ„œ μ‹€ν–‰ ν™˜κ²½ μ„€κ³„κΉŒμ§€ β€” ν•œ κ²Ήμ”© λ„“μ–΄μ§„ μ΅œμ ν™” λŒ€μƒ

takeaway

Harness Engineering μš©μ–΄λŠ” 2026λ…„ Martin Fowler와 ThoughtWorksκ°€ μ •λ¦½ν–ˆμŠ΅λ‹ˆλ‹€ β€” λͺ¨λΈμ΄ μ—μ΄μ „νŠΈκ°€ λ˜λ©΄μ„œ 필연이 된 ν™•μž₯μž…λ‹ˆλ‹€.

PART 1 Β· νŒ¨λŸ¬λ‹€μž„ μ§„ν™”

포함 관계 β€” Prompt βŠ‚ Context βŠ‚ Harness

λŒ€μ²΄κ°€ μ•„λ‹ˆλΌ ν™•μž₯ β€” μ•ˆμͺ½ 겹은 κ·ΈλŒ€λ‘œ 두고 섀계 λ²”μœ„κ°€ ν•œ κ²Ήμ”© λ„“μ–΄μ§€λŠ” ꡬ쑰

takeaway

ν•˜λ„€μŠ€λ₯Ό μ„€κ³„ν•˜λ©΄ μ»¨ν…μŠ€νŠΈμ™€ ν”„λ‘¬ν”„νŠΈλ„ κ·Έ μ•ˆμ—μ„œ ν•¨κ»˜ μ„€κ³„λ©λ‹ˆλ‹€ β€” λ°”κΉ₯ 겹이 μ•ˆμͺ½ 겹을 ν¬ν•¨ν•©λ‹ˆλ‹€.

PART 1 Β· νŒ¨λŸ¬λ‹€μž„ μ§„ν™”

μ„Έ νŒ¨λŸ¬λ‹€μž„ 비ꡐ

초점 Β· μ΅œμ ν™” λŒ€μƒ Β· κ²°κ³Όλ¬Ό Β· 포함 관계 4μΆ•μœΌλ‘œ λ³Έ 차이

ν•­λͺ©PromptContextHarness
μ΄ˆμ μž…λ ₯ ν…μŠ€νŠΈμ»¨ν…μŠ€νŠΈ μœˆλ„μš°μ‹€ν–‰ ν™˜κ²½ 전체
μ΅œμ ν™” λŒ€μƒμ§€μ‹œ ν’ˆμ§ˆμ •λ³΄ 선별·압좕행동 λ²”μœ„Β·μ•ˆμ „Β·ν™•μž₯
결과물단일 호좜 κ°œμ„ μ •λ³΄ ν™œμš©λ„ κ°œμ„ μžμœ¨ μ—μ΄μ „νŠΈ λ™μž‘
포함 관계—Prompt βŠ‚ ContextContext βŠ‚ Harness
takeaway

μƒμœ„ κ°œλ…μ΄ ν•˜μœ„λ₯Ό ν¬ν•¨ν•©λ‹ˆλ‹€ β€” ν•˜λ„€μŠ€λ₯Ό 잘 μ„€κ³„ν•˜λ©΄ μ»¨ν…μŠ€νŠΈμ™€ ν”„λ‘¬ν”„νŠΈ ν’ˆμ§ˆλ„ μžμ—°μŠ€λŸ½κ²Œ λ”°λΌμ˜΅λ‹ˆλ‹€.

PART 1 Β· νŒ¨λŸ¬λ‹€μž„ μ§„ν™”

μ™œ ν•˜λ„€μŠ€κΉŒμ§€ μ™”λŠ”κ°€

λͺ¨λΈμ΄ 도ꡬλ₯Ό ν˜ΈμΆœν•˜κ³  λ°˜λ³΅ν•˜κ³  μœ„μž„ν•˜λŠ” μ—μ΄μ „νŠΈκ°€ λ˜λ©΄μ„œ 생긴 λ³€ν™”

단일 호좜 μ‹œλŒ€ μ—μ΄μ „νŠΈ μ‹œλŒ€
μ‹€ν–‰ λ‹¨μœ„ ν”„λ‘¬ν”„νŠΈ β†’ 응닡 1회 지속적 루프 β€” ν˜ΈμΆœΒ·λ°˜λ³΅Β·μœ„μž„
μ œμ–΄ μˆ˜λ‹¨ μ§€μ‹œλ¬Έ ν’ˆμ§ˆ 도ꡬ 선택 Β· λ©”λͺ¨λ¦¬ Β· λ³΄μ•ˆ Β· μŠ€μΌ€μΌλ§
ν’ˆμ§ˆ κ²°μ • μš”μΈ λͺ¨λΈ μ„±λŠ₯ ν•˜λ„€μŠ€ 섀계
takeaway

단일 호좜이 μ•„λ‹Œ 지속적 루프λ₯Ό κ΄€λ¦¬ν•˜λŠ” μ‹œλŒ€μž…λ‹ˆλ‹€ β€” ν”„λ‘¬ν”„νŠΈκ°€ μ•„λ‹ˆλΌ μ‹€ν–‰ ν™˜κ²½μ΄ 섀계 κ³Όμ œκ°€ λ©λ‹ˆλ‹€.

ν•˜λ„€μŠ€μ˜ μ •μ˜μ™€ ꡬ성 μš”μ†Œ

Agent = Model + Harness Β· Tool Β· Orchestrator Β· Memory Β· Guard Β· Eval

PART 2 Β· ν•˜λ„€μŠ€μ˜ μ •μ˜μ™€ ꡬ성 μš”μ†Œ

μ •μ˜μ™€ ꡬ성 μš”μ†Œ

λͺ¨λΈμ„ κ°μ‹ΈλŠ” μ‹€ν–‰ ν™˜κ²½μ˜ μ •μ˜μ™€ λ‹€μ„― ꡬ성 μš”μ†Œ

Agent = Model + Harness

λͺ¨λΈμ„ κ°μ‹ΈλŠ” μ‹€ν–‰ ν™˜κ²½ 전체가 ν•˜λ„€μŠ€μž…λ‹ˆλ‹€ β€” 도ꡬ, λ©”λͺ¨λ¦¬, μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜, κ°€λ“œλ ˆμΌ, 평가.

  • Model = μ—”μ§„ Β· Harness = λ„λ‘œ Β· μ‹ ν˜Έ Β· κ·œμΉ™ Β· μ •λΉ„μ†Œ
  • 5λŒ€ ꡬ성 μš”μ†Œ β€” Tool Β· Orchestrator Β· Memory Β· Guard Β· Eval
  • 핡심 μ—­ν•  β€” 행동 λ²”μœ„ Β· μ•ˆμ „μž₯치 Β· ν™•μž₯μ„± Β· κ΄€μΈ‘μ„±
  • μš”μ†Œ 선택 β€” νƒœμŠ€ν¬ λ³΅μž‘λ„μ— 따라 점진 μΆ”κ°€
takeaway

λͺ¨λΈ μ„±λŠ₯λ§ŒμœΌλ‘œλŠ” μ—μ΄μ „νŠΈ ν’ˆμ§ˆμ΄ κ²°μ •λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€ β€” μ‹€ν–‰ ν™˜κ²½ 전체가 ν”„λ‘œλ•μ…˜ ν’ˆμ§ˆμ„ κ²°μ •ν•©λ‹ˆλ‹€.

PART 2 Β· ν•˜λ„€μŠ€μ˜ μ •μ˜μ™€ ꡬ성 μš”μ†Œ

ν•˜λ„€μŠ€ μ •μ˜ β€” μˆ˜μ‹ ν•œ 쀄

ν”„λ‘œλ•μ…˜ μ—μ΄μ „νŠΈμ˜ μ΅œμ†Œ μ •μ˜ β€” λͺ¨λΈ ν•˜λ‚˜λ‘œλŠ” 항이 λΆ€μ‘±ν•œ μˆ˜μ‹

PART 2 Β· ν•˜λ„€μŠ€μ˜ μ •μ˜μ™€ ꡬ성 μš”μ†Œ

λͺ¨λΈμ€ μ—”μ§„, ν•˜λ„€μŠ€λŠ” μ‹€ν–‰ ν™˜κ²½

ν”„λ‘¬ν”„νŠΈ ν™•μž₯이 μ•„λ‹Œ 행동 λ²”μœ„Β·μ•ˆμ „μž₯μΉ˜Β·ν™•μž₯μ„±μ˜ μ‹œμŠ€ν…œ 섀계

Model β€” μ—”μ§„

μΆ”λ‘  λŠ₯λ ₯

  • κ³„νš Β· νŒλ‹¨ Β· μƒμ„±μ˜ μ›μ²œ
  • ꡐ체 κ°€λŠ₯ν•œ λΆ€ν’ˆ β€” ν”„λ‘œλ°”μ΄λ” μ „ν™˜ κ°€λŠ₯
  • μ—”μ§„ λ‹¨λ…μœΌλ‘œλŠ” λͺ©μ  달성 λΆˆκ°€

μžλ™μ°¨μ˜ μ—”μ§„, κ·Ήμž₯의 배우, μš°μ£Όμ„ μ˜ 좔진체에 ν•΄λ‹Ήν•©λ‹ˆλ‹€. 핡심 λŠ₯λ ₯μ΄μ§€λ§Œ μ£Όλ³€ μ‹œμŠ€ν…œ μ—†μ΄λŠ” λͺ©μ μ§€μ— λ„λ‹¬ν•˜μ§€ λͺ»ν•©λ‹ˆλ‹€.

Harness β€” μ‹€ν–‰ ν™˜κ²½

λ„λ‘œ Β· μ‹ ν˜Έ Β· κ·œμΉ™ Β· μ •λΉ„μ†Œ

  • 행동 λ²”μœ„ μ •μ˜ β€” ν•  수 μžˆλŠ” κ²ƒμ˜ 경계
  • μ•ˆμ „μž₯치 β€” 잘λͺ»λœ ν–‰λ™μ˜ 사전 차단·사후 ꡐ정
  • ν™•μž₯μ„± β€” λ©”λͺ¨λ¦¬ Β· 도ꡬ Β· ν•˜μœ„ μ—μ΄μ „νŠΈ
  • κ΄€μΈ‘μ„± β€” 무엇을 ν–ˆλŠ”μ§€ μΆ”μ Β·λΆ„μ„Β·κ°œμ„ 

λ³€μ†κΈ°Β·λΈŒλ ˆμ΄ν¬Β·λ‚΄λΉ„κ²Œμ΄μ…˜Β·μ•ˆμ „λ²¨νŠΈμ²˜λŸΌ 엔진을 감싸 속도와 μ•ˆμ „, λͺ©μ μ§€λ₯Ό κ²°μ •ν•©λ‹ˆλ‹€. ν•˜λ„€μŠ€λŠ” ν”„λ‘¬ν”„νŠΈλ₯Ό 잘 μ“°λŠ” 기술이 μ•„λ‹ˆλΌ μ‹œμŠ€ν…œ μ„€κ³„μž…λ‹ˆλ‹€.

takeaway

ν•˜λ„€μŠ€ μ—†λŠ” λͺ¨λΈμ€ 비포μž₯ λ„λ‘œ μœ„μ˜ μŠ€ν¬μΈ μΉ΄μž…λ‹ˆλ‹€ β€” 같은 엔진이라도 λ„λ‘œκ°€ 속도와 μ•ˆμ „, λͺ©μ μ§€λ₯Ό κ²°μ •ν•©λ‹ˆλ‹€.

PART 2 Β· ν•˜λ„€μŠ€μ˜ μ •μ˜μ™€ ꡬ성 μš”μ†Œ

ν•˜λ„€μŠ€ 5λŒ€ ꡬ성 μš”μ†Œ

ToolΒ·OrchestratorΒ·MemoryΒ·GuardΒ·Eval β€” μƒν˜Έμž‘μš©Β·μ§€νœ˜Β·κΈ°μ–΅Β·μ•ˆμ „Β·ν’ˆμ§ˆμ„ λ§‘λŠ” λ‹€μ„― λ ˆμ΄μ–΄

takeaway

λ‹€μ„― μš”μ†Œκ°€ μ „λΆ€ ν•„μˆ˜λŠ” μ•„λ‹™λ‹ˆλ‹€ β€” νƒœμŠ€ν¬ λ³΅μž‘λ„μ— 따라 선택 μ μš©ν•˜κ³ , μš”μ†Œ κ°„ μƒν˜Έμž‘μš©μ΄ ν•˜λ„€μŠ€ ν’ˆμ§ˆμ„ κ²°μ •ν•©λ‹ˆλ‹€.

PART 2 Β· ν•˜λ„€μŠ€μ˜ μ •μ˜μ™€ ꡬ성 μš”μ†Œ

ꡬ성 μš”μ†Œ 선택 κΈ°μ€€

λ‹¨μˆœ λ΄‡μ—μ„œ ν”„λ‘œλ•μ…˜ μ—μ΄μ „νŠΈκΉŒμ§€ β€” λ³΅μž‘λ„μ— λ”°λ₯Έ 점진 ν™•μž₯ 경둜

  1. 1
    λ‹¨μˆœ Q&A 봇

    Model + Tool 1~2개면 μΆ©λΆ„ν•©λ‹ˆλ‹€. κ²€μƒ‰μ΄λ‚˜ 쑰회처럼 행동이 λ‹¨μˆœν•˜λ©΄ 무거운 ν•˜λ„€μŠ€λŠ” κ³Όμž‰ 섀계가 λ©λ‹ˆλ‹€.

  2. 2
    도ꡬ μ‚¬μš© μ—μ΄μ „νŠΈ

    Orchestratorλ₯Ό 더해 3μš”μ†Œλ‘œ κ΅¬μ„±ν•©λ‹ˆλ‹€. μ—¬λŸ¬ λ„κ΅¬μ˜ 선택과 μ‹€ν–‰ μˆœμ„œλ₯Ό μ œμ–΄ν•΄μ•Ό ν•˜λŠ” λ‹¨κ³„μž…λ‹ˆλ‹€.

  3. 3
    ν”„λ‘œλ•μ…˜ μ—μ΄μ „νŠΈ

    Guard Β· Eval Β· MemoryκΉŒμ§€ 5μš”μ†Œ μ „λΆ€λ₯Ό κ°–μΆ₯λ‹ˆλ‹€. μ•ˆμ „κ³Ό ν’ˆμ§ˆ, μ„Έμ…˜ κ°„ 기얡이 μ„œλΉ„μŠ€ 신뒰성을 μ’Œμš°ν•©λ‹ˆλ‹€.

takeaway

μ²˜μŒλΆ€ν„° λ‹€ λ„£μ§€ μ•ŠμŠ΅λ‹ˆλ‹€ β€” λ³΅μž‘λ„κ°€ 올라갈 λ•Œ μš”μ†Œλ₯Ό μ μ§„μ μœΌλ‘œ μΆ”κ°€ν•˜λŠ” 것이 ν•˜λ„€μŠ€ μ„€κ³„μ˜ κΈ°λ³ΈκΈ°μž…λ‹ˆλ‹€.

에이전틱 루프와 μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜

Plan β†’ Act β†’ Observe β†’ Reflect Β· μ œμ–΄ μ „λž΅ 3κ°€μ§€

PART 3 Β· 에이전틱 루프와 μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜

에이전틱 루프

루프 4단계와 이λ₯Ό μ œμ–΄ν•˜λŠ” μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜ μ „λž΅

Plan β†’ Act β†’ Observe β†’ Reflect

μ—μ΄μ „νŠΈμ˜ 심μž₯은 단일 호좜이 μ•„λ‹Œ 반볡 λ£¨ν”„μž…λ‹ˆλ‹€ β€” λ£¨ν”„μ˜ μ œμ–΄ 방식이 κ³§ μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜ μ „λž΅μž…λ‹ˆλ‹€.

  • 루프 4단계 β€” κ³„νš Β· 행동 Β· κ΄€μ°° Β· μ„±μ°°
  • ReAct β€” 즉ν₯적 반볡, λΉ λ₯Έ 응닡
  • Plan-and-Execute β€” 전체 κ³„νš ν›„ 순차 μ‹€ν–‰
  • Tree of Thought β€” μ—¬λŸ¬ 경둜 탐색 ν›„ μ΅œμ„  선택
takeaway

루프가 μ—μ΄μ „νŠΈλ₯Ό λ§Œλ“€κ³ , μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜ μ „λž΅μ΄ 루프λ₯Ό μ œμ–΄ν•©λ‹ˆλ‹€ β€” ν”„λ‘œλ•μ…˜μ—μ„œλŠ” 반볡 μƒν•œμ΄ ν•„μˆ˜μž…λ‹ˆλ‹€.

PART 3 Β· 에이전틱 루프와 μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜

루프λ₯Ό λ„λŠ” 4단계

단일 호좜(Prompt β†’ Response)이 μ•„λ‹Œ 반볡 루프가 μ—μ΄μ „νŠΈμ˜ 핡심 β€” λ§€ μˆœν™˜λ§ˆλ‹€ 행동을 κ²°μ •ν•˜κ³  κ²°κ³Όλ₯Ό κ΄€μ°°

PART 3 Β· 에이전틱 루프와 μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜

μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜ 3κ°€μ§€ μ „λž΅

λ£¨ν”„μ˜ μ œμ–΄ 방식을 κ²°μ •ν•˜λŠ” μ„Έ μ „λž΅κ³Ό 각각의 적합 상황

ReAct

Think β†’ Act β†’ Observe 반볡

  • 즉ν₯적 β€” λ§€ μŠ€ν…λ§ˆλ‹€ λ‹€μŒ 행동 κ²°μ •
  • κ΅¬ν˜„ λ‹¨μˆœ, 응닡 빠름
  • κΈ΄ 닀단계 κ³„νšμ—λŠ” 뢀적합

μ–Έμ œ β€” λ‹¨μˆœ 도ꡬ 호좜, λΉ λ₯Έ 응닡이 μ€‘μš”ν•œ λŒ€ν™”ν˜• μ—μ΄μ „νŠΈ

Plan-and-Execute

전체 κ³„νš 수립 β†’ 순차 μ‹€ν–‰

  • κ³„νš 단계와 μ‹€ν–‰ 단계λ₯Ό 뢄리
  • λ³΅μž‘ν•œ 닀단계 νƒœμŠ€ν¬μ— 강함
  • 쀑간 상황 λ³€ν™” μ‹œ μž¬κ³„νš ν•„μš”

μ–Έμ œ β€” 단계가 많고 의쑴 관계가 μžˆλŠ” λ³΅μž‘ν•œ νƒœμŠ€ν¬

Tree of Thought

μ—¬λŸ¬ 경둜 탐색 β†’ μ΅œμ„  선택

  • 후보 경둜λ₯Ό 병렬 탐색·평가
  • 정닡이 λΆˆν™•μ‹€ν•œ 좔둠에 강함
  • 토큰 λΉ„μš©μ΄ κ°€μž₯ 큼

μ–Έμ œ β€” 탐색과 λ°±νŠΈλž˜ν‚Ήμ΄ ν•„μš”ν•œ λΆˆν™•μ‹€ν•œ μΆ”λ‘  문제

takeaway

기본은 ReActμž…λ‹ˆλ‹€ β€” νƒœμŠ€ν¬κ°€ λ³΅μž‘ν•΄μ§ˆμˆ˜λ‘ κ³„νšν˜•Β·νƒμƒ‰ν˜•μœΌλ‘œ ν™•μž₯ν•˜λ˜, λΉ„μš©κ³Ό 지연을 ν•¨κ»˜ κ³„μ‚°ν•©λ‹ˆλ‹€.

PART 3 Β· 에이전틱 루프와 μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜

ReAct 루프 β€” Strands κΈ°λ³Έ λ™μž‘

@tool ν•¨μˆ˜μ™€ Agent 쑰립만으둜 μžλ™ κ΅¬λ™λ˜λŠ” 에이전틱 루프

python
from strands import Agent, tool
from strands.models import BedrockModel

model = BedrockModel(model_id="us.anthropic.claude-sonnet-4-6")

@tool
def check_inventory(item: str) -> str:
    """재고λ₯Ό ν™•μΈν•©λ‹ˆλ‹€."""
    return f"{item}: 재고 12개"

# β‘  μ—μ΄μ „νŠΈ 쑰립 β€” toolsλ₯Ό μ „λ‹¬ν•˜λ©΄ 에이전틱 루프가 μžλ™ ꡬ동
agent = Agent(
    model=model,
    system_prompt="재고 문의λ₯Ό μ²˜λ¦¬ν•˜λŠ” μ—μ΄μ „νŠΈμž…λ‹ˆλ‹€.",
    tools=[check_inventory],
)

# β‘‘ μ‹€ν–‰ β€” Planβ†’Actβ†’Observeβ†’Reflect 반볡, limitsκ°€ 반볡 μƒν•œ
result = agent("A4 μš©μ§€ 재고 μžˆμ–΄?", limits={"turns": 10})
print(str(result))  # β‘’ κ²°κ³Ό ν…μŠ€νŠΈ μΆ”μΆœ
  • tools μžλ™ 루프 β€” 리슀트만 μ „λ‹¬ν•˜λ©΄ 루프가 μžλ™ ꡬ동, 별도 while 루프λ₯Ό μž‘μ„±ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€
  • 루프 μƒν•œ β€” Agent μƒμ„±μžμ—λŠ” max_iterationsκ°€ μ—†μŠ΅λ‹ˆλ‹€, 호좜 μ‹œ limits(turns·토큰 μ˜ˆμ‚°)κ°€ μ •λ³Έ β€” Hooks(BeforeToolCallEvent)λŠ” 도ꡬ 호좜 κ°œμž…μš© 보쑰 μˆ˜λ‹¨
  • str(result) β€” κ²°κ³Ό ν…μŠ€νŠΈ μΆ”μΆœ

섀계 νŒ¨ν„΄

Self-Correcting Β· Human-in-the-Loop Β· Checkpoint Β· Progressive Delegation

PART 4 Β· 섀계 νŒ¨ν„΄

섀계 νŒ¨ν„΄

반볡 κ²€μ¦λœ 섀계 νŒ¨ν„΄κ³Ό 상황별 선택 κΈ°μ€€

κ²€μ¦λœ ν•˜λ„€μŠ€ ꡬ성 방법둠

반볡적으둜 κ²€μ¦λœ νŒ¨ν„΄μ„ μ‘°ν•©ν•΄ νƒœμŠ€ν¬ λ³΅μž‘λ„μ™€ μœ„ν—˜λ„μ— λŒ€μ‘ν•©λ‹ˆλ‹€.

  • Self-Correcting β€” κ²°κ³Ό 자체 평가 ν›„ μž¬μ‹œλ„
  • Human-in-the-Loop β€” κ³ μœ„ν—˜ μ•‘μ…˜ 승인 게이트
  • Checkpoint β€” 쀑간 μƒνƒœ μ €μž₯ Β· 볡ꡬ
  • Progressive Delegation β€” 신뒰도 따라 κΆŒν•œ ν™•λŒ€
takeaway

νŒ¨ν„΄μ€ 배타적이지 μ•ŠμŠ΅λ‹ˆλ‹€ β€” ν•˜λ‚˜μ˜ μ—μ΄μ „νŠΈμ— μ—¬λŸ¬ νŒ¨ν„΄μ„ μ‘°ν•©ν•˜κ³ , λ‹¨μˆœν•œ 것뢀터 점진 μ μš©ν•©λ‹ˆλ‹€.

PART 4 Β· 섀계 νŒ¨ν„΄

핡심 νŒ¨ν„΄ 7κ°€μ§€

반볡 κ²€μ¦λœ 일곱 νŒ¨ν„΄ β€” μ‘°ν•© κ°€λŠ₯ν•˜λ©°, ν”„λ‘œλ•μ…˜ μ μš©μ€ Self-CorrectingκΉŒμ§€κ°€ μ•ˆμ „μ„ 

νŒ¨ν„΄ν•΅μ‹¬ 아이디어적합 상황
Retrieval-AugmentedRAG(검색 증강 생성) + 도ꡬ 호좜 κ²°ν•©λ¬Έμ„œ 기반 μ§ˆμ˜μ‘λ‹΅
Self-Correctingκ²°κ³Ό 자체 평가 ν›„ μž¬μ‹œλ„μ½”λ“œ 생성, 정확도 μ€‘μ‹œ
Human-in-the-Loopκ³ μœ„ν—˜ μ•‘μ…˜ μ „ 인간 승인결제 Β· μ‚­μ œ Β· ν”„λ‘œλ•μ…˜ λ³€κ²½
Checkpoint쀑간 μƒνƒœ μ €μž₯ Β· 볡ꡬμž₯κΈ° μ‹€ν–‰, μž₯μ•  볡ꡬ
Progressive Delegation신뒰도에 따라 κΆŒν•œ ν™•λŒ€μ μ§„μ  μžμœ¨μ„± λΆ€μ—¬
Context Offloading큰 κ²°κ³ΌλŠ” μ™ΈλΆ€ μ €μž₯, μš”μ•½λ§Œ μœ μ§€λŒ€μš©λŸ‰ κ²°κ³Ό, 토큰 μ ˆμ•½
Self-ModifyingAIκ°€ μžμ‹ μ˜ ν•˜λ„€μŠ€λ₯Ό μˆ˜μ • β€” 연ꡬ 단계Meta FAIR Hyperagents
PART 4 Β· 섀계 νŒ¨ν„΄

상황별 νŒ¨ν„΄ 선택

μœ„ν—˜λ„ β†’ 정확도 β†’ μ‹€ν–‰ μ‹œκ°„ 순으둜 μ’ν˜€κ°€λŠ” 선택 흐름

PART 4 Β· 섀계 νŒ¨ν„΄

Self-Correcting β€” 자기 ꡐ정 루프

coderκ°€ μƒμ„±ν•˜κ³  reviewerκ°€ κ²€μ¦ν•˜λŠ” 두 μ—μ΄μ „νŠΈμ˜ 자기 ꡐ정 루프

python
from strands import Agent
from strands.models import BedrockModel

model = BedrockModel(model_id="us.anthropic.claude-sonnet-4-6")

# β‘  μ—­ν•  뢄리 β€” μƒμ„±ν•˜λŠ” μ—μ΄μ „νŠΈμ™€ κ²€μ¦ν•˜λŠ” μ—μ΄μ „νŠΈ
coder = Agent(
    model=model,
    system_prompt="Python μ½”λ“œλ₯Ό μž‘μ„±ν•©λ‹ˆλ‹€. κ°„κ²°ν•˜κ³  ν…ŒμŠ€νŠΈ κ°€λŠ₯ν•˜κ²Œ.",
)
reviewer = Agent(
    model=model,
    system_prompt="μ½”λ“œλ₯Ό λ¦¬λ·°ν•©λ‹ˆλ‹€. 버그, λ³΄μ•ˆ, μ„±λŠ₯ 문제λ₯Ό μ§€μ ν•©λ‹ˆλ‹€.",
)

# β‘‘ 자기 ꡐ정 루프 β€” 리뷰어가 μŠΉμΈν•  λ•ŒκΉŒμ§€ 반볡 κ°œμ„  (μƒν•œ ν•„μˆ˜)
def self_correcting_loop(task: str, max_attempts: int = 3) -> str:
    code = str(coder(task))
    for _ in range(max_attempts):
        review = str(reviewer(f"λ‹€μŒ μ½”λ“œλ₯Ό λ¦¬λ·°ν•˜μ„Έμš”. λ¬Έμ œμ—†μœΌλ©΄ PASS만 좜λ ₯:\n{code}"))
        # β‘’ μ’…λ£Œ 쑰건 β€” 리뷰 톡과 μ‹œ 루프 νƒˆμΆœ
        if "PASS" in review.upper():
            return code
        code = str(coder(f"리뷰 ν”Όλ“œλ°±μ„ λ°˜μ˜ν•˜μ„Έμš”:\n{review}\n원본:\n{code}"))

    return code
  • μ—­ν•  뢄리 β€” coder와 reviewer의 μ‹œμŠ€ν…œ ν”„λ‘¬ν”„νŠΈκ°€ μ„œλ‘œ λ‹€λ₯Έ 관점을 κ°•μ œ, 같은 λͺ¨λΈμ΄λΌλ„ 역할이 λ‚˜λ‰©λ‹ˆλ‹€
  • max_attempts β€” μ΅œλŒ€ μ‹œλ„ νšŸμˆ˜κ°€ λ¬΄ν•œ 루프λ₯Ό 차단, 자기 ꡐ정 νŒ¨ν„΄μ˜ ν•„μˆ˜ μ•ˆμ „μž₯치
  • PASS νŒμ •μ€ μ˜ˆμ‹œ β€” μ‹€μ „μ—μ„œλŠ” ν…ŒμŠ€νŠΈ μ‹€ν–‰μ΄λ‚˜ Structured Output으둜 νŒμ •ν•©λ‹ˆλ‹€

κ΅¬ν˜„ μŠ€νŽ™νŠΈλŸΌκ³Ό ν”„λ‘œλ•μ…˜ μ„±μˆ™λ„

μ½”λ“œ vs μ„ μ–Έ Β· 체크리슀트 Β· μ„±μˆ™λ„ 5단계

PART 5 Β· κ΅¬ν˜„ μŠ€νŽ™νŠΈλŸΌκ³Ό ν”„λ‘œλ•μ…˜ μ„±μˆ™λ„

μŠ€νŽ™νŠΈλŸΌκ³Ό μ„±μˆ™λ„

κ΅¬ν˜„ 방식 선택과 ν”„λ‘œλ•μ…˜ μ„±μˆ™λ„ λ‘œλ“œλ§΅

μ½”λ“œ ↔ μ„ μ–Έ, 그리고 μ„±μˆ™λ„

κ΅¬ν˜„ μŠ€νŽ™νŠΈλŸΌμ—μ„œ ν”„λ‘œμ νŠΈμ˜ μœ„μΉ˜λ₯Ό μ •ν•˜κ³ , ν”„λ‘œλ•μ…˜ μ„±μˆ™λ„λ₯Ό λ‹¨κ³„μ μœΌλ‘œ λŒμ–΄μ˜¬λ¦½λ‹ˆλ‹€.

  • μŠ€νŽ™νŠΈλŸΌ β€” μ½”λ“œ μ œμ–΄ vs 선언적 ꡬ성
  • 체크리슀트 β€” μ•ˆμ „ Β· μ•ˆμ • Β· 볡원 Β· λΉ„μš© Β· κ΄€μΈ‘ Β· ν’ˆμ§ˆ
  • μ„±μˆ™λ„ 5단계 β€” ν”„λ‘¬ν”„νŠΈλ§Œ β†’ 자율 운영
  • λΈŒλ¦¬μ§€ β€” 도ꡬ별 κ΅¬ν˜„μ€ μ „μš© λͺ¨λ“ˆμ—μ„œ
takeaway

μ •λ‹΅ μœ„μΉ˜λŠ” μ—†μŠ΅λ‹ˆλ‹€ β€” μ œμ–΄λ ₯ vs μ†λ„μ˜ νŠΈλ ˆμ΄λ“œμ˜€ν”„μ™€ μ„±μˆ™λ„ λ‹¨κ³„λ‘œ ν”„λ‘œμ νŠΈλ§ˆλ‹€ νŒλ‹¨ν•©λ‹ˆλ‹€.

PART 5 Β· κ΅¬ν˜„ μŠ€νŽ™νŠΈλŸΌκ³Ό ν”„λ‘œλ•μ…˜ μ„±μˆ™λ„

κ΅¬ν˜„ μŠ€νŽ™νŠΈλŸΌ β€” μ½”λ“œ vs μ„ μ–Έ

μ œμ–΄λ ₯κ³Ό ꡬ성 μ†λ„μ˜ νŠΈλ ˆμ΄λ“œμ˜€ν”„ β€” ν”„λ‘œμ νŠΈμ— λ§žλŠ” μœ„μΉ˜ 선택

μ½”λ“œλ‘œ μ œμ–΄

Strands Β· LangGraph

  • μ œμ–΄λ ₯ 졜고 β€” 루프와 μƒνƒœλ₯Ό μ½”λ“œλ‘œ μ •μ˜
  • @tool Β· Hooks Β· κ·Έλž˜ν”„ λ“± μ»€μŠ€ν…€ 자유
  • 인프라 배포와 μš΄μ˜μ€ 직접 μ±…μž„

μ»€μŠ€ν…€ μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜κ³Ό λ³΅μž‘ν•œ μƒνƒœ 머신이 ν•„μš”ν•  λ•Œ μ„ νƒν•©λ‹ˆλ‹€. μ½”λ“œκ°€ κ³§ ν•˜λ„€μŠ€μ˜ λͺ…μ„Έκ°€ λ©λ‹ˆλ‹€.

μ„ μ–ΈμœΌλ‘œ ꡬ성

κ΄€λ¦¬ν˜• ν•˜λ„€μŠ€

  • ꡬ성 속도 졜고 β€” μ„€μ • μ„ μ–ΈμœΌλ‘œ μ™„μ„±
  • λͺ¨λΈ Β· 도ꡬ Β· λ©”λͺ¨λ¦¬λ₯Ό κ΄€λ¦¬ν˜•μœΌλ‘œ 제곡
  • μ»€μŠ€ν…€ λ²”μœ„λŠ” 제곡 μ˜΅μ…˜ μ•ˆμœΌλ‘œ μ œν•œ

AgentCore Managed Harness처럼 ν•˜λ„€μŠ€ 자체λ₯Ό μ„œλΉ„μŠ€λ‘œ λ°›μŠ΅λ‹ˆλ‹€. ν”„λ‘œν† νƒ€μž…κ³Ό ν‘œμ€€ν™”λœ μ—μ΄μ „νŠΈμ— μœ λ¦¬ν•©λ‹ˆλ‹€.

takeaway

νŠΈλ ˆμ΄λ“œμ˜€ν”„λŠ” μ œμ–΄λ ₯ vs μ†λ„μž…λ‹ˆλ‹€ β€” μ„ μ–ΈμœΌλ‘œ λΉ λ₯΄κ²Œ μ‹œμž‘ν•˜κ³ , μ„Έλ°€ν•œ μ œμ–΄κ°€ ν•„μš”ν•΄μ§€λ©΄ μ½”λ“œλ‘œ μ „ν™˜ν•©λ‹ˆλ‹€.

PART 5 Β· κ΅¬ν˜„ μŠ€νŽ™νŠΈλŸΌκ³Ό ν”„λ‘œλ•μ…˜ μ„±μˆ™λ„

ν”„λ‘œλ•μ…˜ 체크리슀트

배포 μ „ λ°˜λ“œμ‹œ ν™•μΈν•˜λŠ” μ•ˆμ „ Β· μ•ˆμ • Β· 볡원 Β· λΉ„μš© Β· κ΄€μΈ‘ Β· ν’ˆμ§ˆ 6ν•­λͺ©

takeaway

μ—¬μ„― ν•­λͺ©μ€ μ „λΆ€ 5λŒ€ ꡬ성 μš”μ†Œμ™€ 짝을 μ΄λ£Ήλ‹ˆλ‹€ β€” μ²΄ν¬λ¦¬μŠ€νŠΈκ°€ κ³§ Tool Β· Orchestrator Β· Memory Β· Guard Β· Eval의 μ κ²€ν‘œμž…λ‹ˆλ‹€.

PART 5 Β· κ΅¬ν˜„ μŠ€νŽ™νŠΈλŸΌκ³Ό ν”„λ‘œλ•μ…˜ μ„±μˆ™λ„

μ„±μˆ™λ„ 5단계

ν”„λ‘¬ν”„νŠΈλ§Œ μžˆλŠ” Level 1μ—μ„œ 자율 운영 Level 5κΉŒμ§€μ˜ μ„±μž₯ 계단

takeaway

ν•œ λ²ˆμ— Level 5λ₯Ό 노리지 μ•ŠμŠ΅λ‹ˆλ‹€ β€” Level 2μ—μ„œ μ‹œμž‘ν•΄ μ μ§„μ μœΌλ‘œ μ˜¬λ €μ•Ό λ³΅μž‘μ„±μ΄ ν†΅μ œλ©λ‹ˆλ‹€.

PART 5 Β· κ΅¬ν˜„ μŠ€νŽ™νŠΈλŸΌκ³Ό ν”„λ‘œλ•μ…˜ μ„±μˆ™λ„

κ΅¬ν˜„μ€ μ „μš© λͺ¨λ“ˆμ—μ„œ

StrandsΒ·LangGraphΒ·AgentCoreΒ·Kiro β€” μ½”λ“œΒ·κ·Έλž˜ν”„Β·μ„ μ–ΈΒ·κ°œλ°œ μ‹œμ μ„ 각각 λŒ€ν‘œν•˜λŠ” λ„€ 갈래 ν•˜λ„€μŠ€

도ꡬ별 κ΅¬ν˜„μ€ μ „μš© λͺ¨λ“ˆμ΄ λ³Έλ Ή

이 λͺ¨λ“ˆμ€ ν•˜λ„€μŠ€μ˜ κ°œλ…κ³Ό μ„€κ³„κΉŒμ§€ λ‹€λ£Ήλ‹ˆλ‹€ β€” 각 κ΅¬ν˜„ λ„κ΅¬μ˜ μƒμ„ΈλŠ” μ „μš© λͺ¨λ“ˆμ—μ„œ μ΄μ–΄μ§‘λ‹ˆλ‹€.

  • Strands Agents SDK β€” μ½”λ“œ 레벨 ν•˜λ„€μŠ€ (Strands 계열 λͺ¨λ“ˆ)
  • LangGraph β€” κ·Έλž˜ν”„ μƒνƒœ λ¨Έμ‹  ν•˜λ„€μŠ€ (LangChain Β· LangGraph λͺ¨λ“ˆ)
  • AgentCore Managed Harness β€” 선언적 κ΄€λ¦¬ν˜• ν•˜λ„€μŠ€ (AgentCore 계열 λͺ¨λ“ˆ)
  • Kiro β€” 개발 μ‹œμ  ν•˜λ„€μŠ€ (Kiro 계열 λͺ¨λ“ˆ)
takeaway

μŠ€νŽ™νŠΈλŸΌ μœ„ μ–΄λŠ μœ„μΉ˜λ“  μ›λ¦¬λŠ” κ°™μŠ΅λ‹ˆλ‹€ β€” Agent = Model + Harness, ν”„λ‘œλ•μ…˜ ν’ˆμ§ˆμ€ ν•˜λ„€μŠ€κ°€ κ²°μ •ν•©λ‹ˆλ‹€.

λͺ¨λΈμ΄ μ•„λ‹ˆλΌ ν•˜λ„€μŠ€κ°€ ν”„λ‘œλ•μ…˜ ν’ˆμ§ˆμ„ κ²°μ •ν•©λ‹ˆλ‹€.

μ§„ν™” Β· μ •μ˜ Β· 루프 Β· νŒ¨ν„΄ Β· μ„±μˆ™λ„ β€” ν•˜λ„€μŠ€ μ—”μ§€λ‹ˆμ–΄λ§μ˜ 핡심