๐ฏ ์์ด์ ํธ ์ํ์ ํ๋กฌํํธ
messages[], ์ธ์ , ์ํ ์๋ช , ์์คํ ํ๋กฌํํธ 4๋ธ๋ก, ์ถ๋ก ์ ๋
์์ด์ ํธ ์ํ์ ํ๋กฌํํธ
messages[] ยท ์ธ์ ยท ์ํ ์๋ช ยท ์์คํ ํ๋กฌํํธ ยท ์ถ๋ก ์ ๋
์์ด์ ํธ์ ๊ธฐ์ต๊ณผ ํ๋จ์ ์ค๊ณํ๋ค
์ํ ๊ด๋ฆฌ ๋ฉ์ปค๋์ฆ๊ณผ ์์ด์ ํธ ํ๋กฌํํธ ์ค๊ณ์ ํต์ฌ ์๋ฆฌ
messages[]์ ์ธ์
messages[] ๊ตฌ์กฐ ยท session_id ยท ์ธ๋ฉ๋ชจ๋ฆฌ ํ๊ณ
messages[]์ ์ธ์
๋ํ๊ฐ ๋ชจ๋ธ์ ์ ๋ฌ๋๋ ์ค์ ๊ตฌ์กฐ์ ์ธ๋ฉ๋ชจ๋ฆฌ ํ๊ณ์ ์กฐ๊ฐ
๋ชจ๋ธ์ ๊ธฐ์ตํ์ง ์๋๋ค โ ๋งค๋ฒ ๋ค์ ์ฝ๋๋ค
๋งค ํธ์ถ๋ง๋ค messages[] ์ ์ฒด๊ฐ ๋ชจ๋ธ์ ์ฌ์ ์ก๋ฉ๋๋ค โ session_id๋ก ๋ํ๋ฅผ ๊ฒฉ๋ฆฌํ๊ณ ์ธ๋ฉ๋ชจ๋ฆฌ ํ๊ณ๋ฅผ ํ์ธํฉ๋๋ค.
- messages[] โ user ยท assistant ยท toolUse ยท toolResult ๋์
- session_id โ ์ฌ์ฉ์ร๋ํ ๊ฒฉ๋ฆฌ, ๋ฉํฐ์ ์ ์๋น์ ๊ธฐ๋ณธ
- ์ธ๋ฉ๋ชจ๋ฆฌ ํ๊ณ โ ์ ์ค ยท ํ ํฐ ํญ๋ฐ ยท ์๋์ฐ ์ด๊ณผ ยท ํผ์
- SessionManager โ ์ธ๋ถ ์ ์ฅ์ ์์ํ๋ก ์ ์ค ํด๊ฒฐ
๋ชจ๋ธ์๋ ๊ธฐ์ต์ด ์๊ณ ๋งค ํธ์ถ messages[] ์ ์ฒด๋ฅผ ๋ค์ ์ฝ์ต๋๋ค โ ์ด ๊ตฌ์กฐ๊ฐ ์ํ ๊ด๋ฆฌ ์ ์ฒด์ ์ถ๋ฐ์ ์ ๋๋ค.
messages[]์ ์ค์ฒด
๋ชจ๋ธ์ "๊ธฐ์ต"์ด ์๋๋ผ ๋งค๋ฒ ๋ค์ ์ฝ๋ ๊ฒ โ ๋ค์ ํธ์ถ์ ์ค์ ๋ก ๋๊ฐ๋ ํ์ด๋ก๋
Converse API ์์ฒญ ๋ฐ๋ โ "messages": [ ... ]
{ "role": "user", "content": "๊ทธ๋ผ ์ฐ์ฐ ์ฑ๊ฒจ์ผ ํด?" }
NEW ยท ์ด๋ฒ ํด
toolUseยทtoolResult๊น์ง ๋ชจ๋ messages[]์ ์์ด๊ณ ๋ค์ ํธ์ถ์ ์ ๋ถ ๋ค์ ์ ์ก๋ฉ๋๋ค โ ๋ํ๊ฐ ๊ธธ์๋ก ์ ๋ ฅ ํ ํฐ์ด ์ปค์ง๋ ์ด์ ์ ๋๋ค.
session_id ์ค๊ณ
๋ํ๋ฅผ ๊ตฌ๋ถํ๋ ํค โ ๋ฉํฐ์ ์ ์๋น์ ๊ธฐ๋ณธ
์ฌ์ฉ์๋น 1๊ฐ
user_id
- ๋ํ 1๊ฐ๋ง ์ ์ง
- ๋จ์ํ์ง๋ง ๋ํ ๋ถ๋ฆฌ ๋ถ๊ฐ
์ธ์ โ ๋จ์ ๋ด (1์ฌ์ฉ์ = 1๋ํ)
๋ํ๋ณ ๋ถ๋ฆฌ
user_id-conv_id
- ์ฌ๋ฌ ๋ํ ๋ ๋ฆฝ ์ ์ง
- ChatGPT ๋ฐฉ์ (์ข์ธก ๋ํ ๋ชฉ๋ก)
์ธ์ โ ๋ฉํฐ ๋ํ ์ฑ (๋๋ถ๋ถ์ ํ๋ก๋์ )
์๊ฐ ๊ธฐ๋ฐ
user_id-2026-07-19
- ๋ ์ง๋ณ ์๋ ๋ถ๋ฆฌ
- ์ด์ ๋ ์ง ๋ํ ์๋ ์์นด์ด๋ธ
์ธ์ โ ์ผ์ผ ๋ณด๊ณ , ๋ฐ์ผ๋ฆฌ ์ด์์คํดํธ
๋๋ถ๋ถ์ ํ๋ก๋์ ์ user_id-conv_id ๋ํ๋ณ ๋ถ๋ฆฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค โ ํค ์ค๊ณ๊ฐ ๋ํ ๊ฒฉ๋ฆฌ ์์ค์ ๊ฒฐ์ ํฉ๋๋ค.
์ธ๋ฉ๋ชจ๋ฆฌ ์ํ์ 4๊ฐ์ง ๋ฌธ์
์ํ ๊ด๋ฆฌ ์์ด๋ ํ๋ก๋์ ๋ถ๊ฐ
๊ธฐ์ต ์์ค
ํ๋ก์ธ์ค ์ข ๋ฃ ์ messages[] ์ ์ฒด ์ ์ค โ ์๋ฒ ์ฌ์์, ๋ฐฐํฌ, Lambda ์ฝ๋์คํํธ
ํ ํฐ ํญ๋ฐ
๋ํ๊ฐ ๊ธธ์ด์ง๋ฉด ๋งค ํธ์ถ๋ง๋ค ์๋ง ํ ํฐ ์ ์ก โ ๋น์ฉโ ์ง์ฐโ
์๋์ฐ ์ด๊ณผ
์ปจํ ์คํธ ์๋์ฐ๋ฅผ ๋์ผ๋ฉด API ์๋ฌ โ ์์ด์ ํธ ๋ฉ์ถค
๋ฉํฐ์ ์ ํผ์
session_id ์์ด ์ฌ๋ฌ ์ฌ์ฉ์์ messages[]๊ฐ ์์
๋ค ๋ฌธ์ ๋ชจ๋ ์ํ๋ฅผ ํ๋ก์ธ์ค ๋ฉ๋ชจ๋ฆฌ์๋ง ๋์ด์ ์๊น๋๋ค โ ๋ค์ ํํธ์ ์ํ ๊ด๋ฆฌ ๊ตฌ์ฑ์์๊ฐ ๊ฐ๊ฐ์ ํด๋ฒ์ ๋๋ค.
์ํ ๊ด๋ฆฌ ๊ตฌ์ฑ์์
Session ยท Conversation ยท Memory ยท Context ยท Snapshots ยท Interrupts
์ํ ๊ด๋ฆฌ ๊ตฌ์ฑ์์
๋ ๋ฆฝ์ ์ธ 6๊ฐ์ง ๊ตฌ์ฑ์์์ ์ํ๋ฅผ ์๋ช ์ผ๋ก ๊ตฌ๋ถํ๋ ๊ด์ ์ ์กฐ๊ฐ
6๊ฐ์ง ๊ตฌ์ฑ์์ ยท ์๋ช 3๊ณ์ธต
SessionยทConversationยทMemoryยทContextยทSnapshotsยทInterrupts๋ฅผ ํ์ํ ๊ฒ๋ง ๊ณจ๋ผ ์กฐํฉํ๊ณ , ์ํ๋ฅผ ์๋ช ์ผ๋ก ๊ตฌ๋ถํฉ๋๋ค.
- 6๊ฐ์ง ๊ตฌ์ฑ์์ โ ๊ฐ๊ฐ ๋ ๋ฆฝ, ์ ํ ์กฐํฉ
- ์๋ช 3๊ณ์ธต โ ํด ยท ์ธ์ ยท ์ธ์ ๋๋จธ
- agent.state โ ์ธ์ ์ ์ง, ๋๊ตฌ ๊ฐ ๊ณต์ ๋ฉ๋ชจ์ฅ
- invocation_state โ 1ํด ์ ํจ, ์ธ๋ถ ์ฃผ์ ๋น๋ฐ
์ด๋ค ์ํ๊ฐ ์ผ๋ง๋ ์ค๋ ์ด์์ผ ํ๋์ง๊ฐ ๋จผ์ ์ ๋๋ค โ ์๋ช ์ด ์ ์ฅ์์ ๊ตฌ์ฑ์์ ์ ํ์ ๊ฒฐ์ ํฉ๋๋ค.
์ํ ๊ด๋ฆฌ 6๊ฐ์ง ๊ตฌ์ฑ์์
๊ฐ ๊ตฌ์ฑ์์๋ ๋ ๋ฆฝ์ โ ํ์ํ ๊ฒ๋ง ์ ํํ์ฌ ์กฐํฉ
SessionManager
messages[]๋ฅผ ์ธ๋ถ ์ ์ฅ์์ ์ ์ฅ/๋ณต์ โ ํ๋ก์ธ์ค ์ฌ์์ ํ ๋ํ ์ด์ด๊ฐ๊ธฐ
ConversationManager
๋ชจ๋ธ ์ ๋ฌ ์ messages[] ์ถ์ โ ์ฌ๋ผ์ด๋ฉ ์๋์ฐ, ์์ฝ ์์ถ
MemoryManager
์ธ์ ๋๋จธ ์ฅ๊ธฐ ๊ธฐ์ต โ ์ฌ์ฉ์ ์ ํธ, ์ด์ ์ธ์ ์์ฝ, ํจํด ํ์ต
Context Management
ํฐ ๋๊ตฌ ๊ฒฐ๊ณผ ์๋ ์คํ๋ก๋ โ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ง ์ปจํ ์คํธ์ ์ ์ง
Snapshots
ํน์ ์์ ์ํ ์บก์ฒ + ๋กค๋ฐฑ โ ์๋ชป๋ ๊ฒฝ๋ก์์ ๋๋๋ฆฌ๊ธฐ
Interrupts
์ํ ์์ ์ ๋ฉ์ถค + ์ฌ์ฉ์ ์น์ธ ํ ์ฌ๊ฐ
์ํ ์๋ช 3๊ณ์ธต
ํด ยท ์ธ์ ยท ์ธ์ ๋๋จธ โ ๊ฐ ์ํ์ ์ ํจ ๋ฒ์
| ๋ฒ์ | ์ ์ง๋๋ ์ํ | ์ ์ฅ์ | ์์ |
|---|---|---|---|
| 1ํด | invocation_state | ๋ฉ๋ชจ๋ฆฌ (๋งค ํธ์ถ ์ฌ์ฃผ์ ) | user_id, api_key, request_id |
| ์ธ์ | messages[] + agent.state | SessionManager (File/S3) | ๋ํ ํ์คํ ๋ฆฌ, ์ธ์ฆ ํ ํฐ |
| ์ธ์ ๋๋จธ | MemoryManager | AgentCore Memory / Knowledge Base | ์ฌ์ฉ์ ์ ํธ, ์ด์ ์ธ์ ์์ฝ |
ํด์ด ๋๋๋ฉด invocation_state๊ฐ, ์ธ์ ์ด ๋๋๋ฉด messages[]๊ฐ ์ฌ๋ผ์ง๋๋ค โ ์ธ์ ๋๋จธ๊น์ง ๋จ๊ธธ ๊ฒ๋ง MemoryManager๋ก ์ฌ๋ฆฝ๋๋ค.
agent.state vs invocation_state
๋ ๋ค ๋ชจ๋ธ์๋ ์ ๋ณด์ด๋ ์กด์ฌ โ ์๋ช ๊ณผ ์ฃผ์ ๋ฐฉํฅ์ ์ฐจ์ด
agent.state
์ธ์ ์ ์ฒด ์ ์ง
- ๋๊ตฌ/ํ ์ด .set() / .get()
- ์ธ์ ๋์ ์ฌ๋ฌ ํด์ ๊ฑธ์ณ ์ ์ง
- SessionManager๊ฐ ํจ๊ป ์์ํ
- ์ฉ๋: ์ธ์ฆ ํ ํฐ, ํธ์ถ ์นด์ดํฐ, ๋๊ตฌ ๊ฐ ๊ณต์ ๋ฐ์ดํฐ
๋๊ตฌ๊ฐ ์ค๊ฐ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๊ณ , ๋ค๋ฅธ ํด์ ๋ค๋ฅธ ๋๊ตฌ๊ฐ ์ฝ์ด ์ฐ๋ "์์ด์ ํธ ๋ด๋ถ ๋ฉ๋ชจ์ฅ"์ ๋๋ค.
invocation_state
1ํด๋ง ์ ํจ
- ํธ์ถ์(caller)๊ฐ ์ธ๋ถ์์ ์ฃผ์
- agent(prompt, invocation_state={...})
- ์ ์ฅ ์ ๋จ โ ๋งค ํธ์ถ๋ง๋ค ์ฌ์ฃผ์
- ์ฉ๋: API ํค, user_id, ์ญํ (role), ์ธ์ ๋น๋ฐ
ํธ์ถํ ๋๋ง๋ค ์ธ๋ถ์์ ๋ฃ์ด์ฃผ๋ "ํ๋ผ๋ฏธํฐ ๋ดํฌ". ๋๊ตฌ๊ฐ tool_context.invocation_state๋ก ๊บผ๋ ๋๋ค.
๋ชจ๋ธ์ด ๋ณด๋ ๊ฒ vs ๋ชป ๋ณด๋ ๊ฒ
LLM์ ๋ ธ์ถ๋๋ฉด ์ ๋๋ ๋ฏผ๊ฐ ์ ๋ณด๋ invocation_state๋ก
| ์ํ | LLM์ด ๋ด? | ๋๊ตฌ/ํ ์ ๊ทผ? | ์ฉ๋ |
|---|---|---|---|
| messages[] | โ ๋งค๋ฒ ์ ์ฒด ์ ์ก | โ | ๋ํ ๋งฅ๋ฝ ์ ์ง |
| agent.state | โ | โ .get()/.set() | ๋๊ตฌ ๊ฐ ๋ด๋ถ ๋ฐ์ดํฐ |
| invocation_state | โ | โ tool_context | ์ธ๋ถ ์ฃผ์ ๋น๋ฐ/์ค์ |
API ํค, ํ ํฐ ๋ฑ ๋ฏผ๊ฐ ์ ๋ณด๋ฅผ messages[]์ ๋ฃ์ผ๋ฉด ๋ชจ๋ธ์ ๋ ธ์ถ๋ฉ๋๋ค. ๋ฐ๋์ invocation_state๋ฅผ ์ฌ์ฉํ์ธ์.
๋ฉํฐ์์ด์ ํธ ์ํ ๊ณต์
Agents-as-Tools ยท Swarm ยท Graph ยท invocation_state ์ ํ
๋ฉํฐ์์ด์ ํธ ์ํ ๊ณต์
์์ด์ ํธ ์ฌ์ด์์ ๊ฒฐ๊ณผ๊ฐ ํ๋ฅด๋ ํต๋ก์ ํ๋ฅด์ง ์๋ ๊ฒ์ ์กฐ๊ฐ
ํจํด๋ง๋ค ๊ณต์ ํต๋ก๊ฐ ๋ค๋ฅด๋ค
Agents-as-ToolsยทSwarmยทGraph๋ ๊ฒฐ๊ณผ๊ฐ ํ๋ฅด๋ ๋ฐฉํฅ๊ณผ ๋ฐฉ์์ด ๊ฐ๊ฐ ๋ค๋ฅด๊ณ , agent.state๋ ์ด๋์๋ ์ง์ ๊ณต์ ๋์ง ์์ต๋๋ค.
- Agents-as-Tools โ toolResult๋ก ๋ถ๋ชจโ์์ ๋จ๋ฐฉํฅ
- Swarm โ Shared Context๊ฐ ํธ๋์คํ๋ง๋ค ๋์
- Graph โ Output Propagation, DAG ๋ฐฉํฅ ์ ํ
- ๊ณต์ ๋ถ๊ฐ โ agent.state ยท messages[] ์ง์ ์ ๊ทผ ์์
messages[]์ agent.state๋ ์ด๋ค ํจํด์์๋ ๋ณต์ฌ๋์ง ์์ต๋๋ค โ ํจํด์ด ์ ๊ณตํ๋ ํต๋ก๋ก๋ง ๊ฒฐ๊ณผ๊ฐ ํ๋ฆ ๋๋ค.
ํจํด๋ณ ์ํ ๊ณต์
์์ด์ ํธ A์ ๊ฒฐ๊ณผ๋ฅผ ์์ด์ ํธ B๊ฐ ์์์ผ ํ ๋
Agents-as-Tools
- ์์ ์์ด์ ํธ ๊ฒฐ๊ณผ๊ฐ ๋ถ๋ชจ์ toolResult๋ก ์ฝ์
- ๋จ๋ฐฉํฅ โ ๋ถ๋ชจ๋ง ์์ ๊ฒฐ๊ณผ๋ฅผ ๋ด
- ๊ฐ์ฅ ๋จ์ํ ํจํด
Swarm
- ํธ๋์คํ ์ ์ด์ ์์ด์ ํธ์ ์์ ๋งฅ๋ฝ์ด ์๋ ๋์
- Shared Context โ ํธ๋์คํ๋ ๋๋ง๋ค ์์
- messages[]๋ ๋ณต์ฌ ์ ๋จ โ Context๋ง ์ ๋ฌ
Graph
- ์ด์ ๋ ธ๋ ์ถ๋ ฅ์ด ์ฃ์ง๋ฅผ ๋ฐ๋ผ ์ฐ๊ฒฐ ๋ ธ๋์ ์ ๋ ฅ์ผ๋ก ์ ํ
- Output Propagation โ DAG ์์กด์ฑ ๋ฐฉํฅ์ผ๋ก๋ง ํ๋ฆ
- ๋ณ๋ ฌ ๋ ธ๋ ๊ฐ์๋ ๊ณต์ ์ ๋จ
๊ณต์ ์ ๋๋ ๊ฒ
์์ด์ ํธ ๊ฐ ์ง์ ์ ๊ทผ์ด ๋ถ๊ฐ๋ฅํ ์ํ
agent.state๋ ํด๋น ์์ด์ ํธ์๋ง ์ ๊ทผ ๊ฐ๋ฅํฉ๋๋ค. ๋ค๋ฅธ ์์ด์ ํธ๊ฐ ์ง์ ์ฝ์ ์ ์์ต๋๋ค. ๊ณต์ ํ๋ ค๋ฉด ๋๊ตฌ ๋ฐํ๊ฐ์ผ๋ก ๊บผ๋ด๊ฑฐ๋, ์ธ๋ถ ์ ์ฅ์(AgentCore Memory, DynamoDB)๋ฅผ ๊ฒฝ์ ํด์ผ ํฉ๋๋ค.
| ์ํ | ์ธ์คํด์ค ๊ฐ ๊ณต์ | ๊ณต์ ๋ฐฉ๋ฒ |
|---|---|---|
| agent.state | โ ์ง์ ์ ๊ทผ ๋ถ๊ฐ | ๋๊ตฌ ๋ฐํ๊ฐ / ์ธ๋ถ ์ ์ฅ์ |
| messages[] | โ ๋ณต์ฌ ์ ๋จ | Shared Context(Swarm) / Output(Graph) |
| invocation_state | โณ ์ ํ ๊ฐ๋ฅ | ์ค์ผ์คํธ๋ ์ดํฐ๊ฐ ์์ ํธ์ถ ์ ๋์ผ dict ์ ๋ฌ |
์์ด์ ํธ ํ๋กฌํํธ ์ค๊ณ
์ผ๋ฐ vs ์์ด์ ํธ ยท ์์คํ ํ๋กฌํํธ ๊ตฌ์กฐ ยท description ยท ์ถ๋ก ์ ๋
์์ด์ ํธ ํ๋กฌํํธ ์ค๊ณ
์์คํ ํ๋กฌํํธ ๊ตฌ์กฐ๋ถํฐ ์ถ๋ก ๋ชจ๋ ์ ๋๊น์ง โ ๋ต๋ณ์ด ์๋๋ผ ํ๋์ ์ค๊ณํ๋ ๊ด์
์ข์ ๋ต๋ณ์ด ์๋๋ผ ์ฌ๋ฐ๋ฅธ ํ๋
์์ด์ ํธ ํ๋กฌํํธ๋ ๋๊ตฌ ์ ํ๊ณผ ์คํ์ ์ง๋ฐฐํฉ๋๋ค โ 4๋ธ๋ก ๊ตฌ์กฐ์ description ํ์ง, ์ถ๋ก ๋ชจ๋ ์ ๋๊ฐ ํ๋ ํ์ง์ ๊ฒฐ์ ํฉ๋๋ค.
- ์์คํ ํ๋กฌํํธ 4๋ธ๋ก โ ์ญํ ยท ๊ท์น ยท ํ์ ยท ์ ํ
- description ํ์ง โ ๋๊ตฌ ์ ํ ์ ํ๋๋ฅผ ๊ฒฐ์
- ์ถ๋ก ์ ๋ โ ReAct vs Plan-and-Execute
- ๊ฐ์ ๋ฃจํ โ ํ ์คํธ โ ์ ์ฝ ์ถ๊ฐ โ ์๋ ํ๊ฐ
์๋ชป๋ ํ๋กฌํํธ์ ๋๊ฐ๋ ๋ถ์ ํํ ํ ์คํธ๊ฐ ์๋๋ผ ์๋ชป๋ ๋๊ตฌ ํธ์ถ์ด๋ผ๋ ๋ถ์์ฉ์ ๋๋ค.
์ผ๋ฐ ํ๋กฌํํธ vs ์์ด์ ํธ ํ๋กฌํํธ
"์ข์ ๋ต๋ณ"์ด ์๋๋ผ "์ฌ๋ฐ๋ฅธ ํ๋"์ ์ ๋
๋๊ตฌ ์ ์์ ์คํค๋ง ์์ฑ์ ๊ธฐ๋ณธ์ ใAI ์์ด์ ํธ ๊ธฐ์ดใ ๋ชจ๋์ ๋๊ตฌ ์ค๊ณ ํํธ์์ ๋ค๋ฃน๋๋ค. ์ด ํํธ๋ ์์คํ ํ๋กฌํํธ ๊ตฌ์กฐ์ ์ถ๋ก ์ ๋ ๊ด์ ์์ ์ฌํํฉ๋๋ค.
์์คํ ํ๋กฌํํธ 4๋ธ๋ก ๊ตฌ์กฐ
์์ด์ ํธ๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ํ๋ํ๋๋ก ํ๋ ์ค๊ณ ๊ตฌ์กฐ
# ์์คํ
ํ๋กฌํํธ 4๋ธ๋ก โ ์ญํ ยท๊ท์นยทํ์ยท์ ํ
"""
## โ ์ญํ (Role)
๋น์ ์ AWS ๋น์ฉ ๋ถ์ ์ ๋ฌธ๊ฐ์
๋๋ค.
๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ ํํ ๋ฐ์ดํฐ ๊ธฐ๋ฐ์ผ๋ก ๋ต๋ณํฉ๋๋ค.
## โก ํ๋ ๊ท์น (Rules)
- ๋น์ฉ ๋ฐ์ดํฐ ํ์ โ get_cost_data ๋จผ์ ํธ์ถ
- ์ถ์ธก ๊ธ์ง โ ํญ์ ๋๊ตฌ ๊ฒฐ๊ณผ ๊ธฐ๋ฐ
- ํ ๋ฒ์ ๋๊ตฌ 3๊ฐ ์ด์ ์ฐ์ ํธ์ถ ๊ธ์ง
## โข ์ถ๋ ฅ ํ์ (Format)
- ๊ธ์ก: USD, ์์์ 2์๋ฆฌ
- ์ฆ๊ฐ๋ฅ : ํผ์ผํธ
- ์์ฝ ๋จผ์ , ์์ธ ๋์ค์
## โฃ ์ ํ (Constraints)
- ๋น์ฉ ์ต์ ํ "์คํ"์ ๊ธ์ง (๋ถ์๊ณผ ์ ์๋ง)
- ๋ค๋ฅธ ๊ณ์ ์ ๊ทผ ๊ธ์ง
"""
- ์ญํ โ ์ ์ฒด์ฑ + ํ๋ ๋ฐฉ์นจ. "๋๊ตฌ๋ก ๋ฐ์ดํฐ ๊ธฐ๋ฐ ๋ต๋ณ"๊น์ง ์ญํ ์ ํฌํจ
- ํ๋ ๊ท์น โ ๋๊ตฌ ์ฌ์ฉ ์์ยท์ถ์ธก ๊ธ์งยทํธ์ถ ํ์ ์ ํ. ์ค๋์ ์ ๊ฐ์ฅ ๋จผ์ ์๋ณผ ๋ธ๋ก
- ์ถ๋ ฅ ํ์ โ ๋จ์ยท์๋ฆฟ์ยท์์ ์์๋ฅผ ๊ณ ์ ํด ์๋ต ์ผ๊ด์ฑ ํ๋ณด
- ์ ํ โ ๊ถํ์ ๊ฒฝ๊ณ. ๋ชป ํ๊ฒ ํ ์ผ(์คํ ๊ธ์งยท๊ณ์ ์ ๊ทผ ๊ธ์ง)์ ๋ช ์
description์ด ์ ํ๋๋ฅผ ๊ฒฐ์
LLM์ด ๋๊ตฌ๋ฅผ ๊ณ ๋ฅด๋ ์ ์ผํ ๊ทผ๊ฑฐ โ description
ํ ์ค ์ค๋ช
๋ชจํธํ ์์ โ ์ ์ฌ ๋๊ตฌ์ ํผ๋
์กฐ๊ฑดยทํ์ยท์์๋ฅผ ๋ด์ ์ค๋ช
ํธ์ถ ์์ + ํ๋ผ๋ฏธํฐ ํ์ + ๋ฐํ ์์
๊ณผ๋ํ ์ค๋ช
ํต์ฌ ๋ฐ์ ์ธ๋ถ๊ฐ ๋ ธ์ด์ฆ๋ก ์์ฉ
description์ ๊ธธ์ด๊ฐ ์๋๋ผ ํ๋จ ์ ๋ณด์ ๋ฐ๋๊ฐ ๊ด๊ฑด์ ๋๋ค โ ํธ์ถ ์์ ยท์ ๋ ฅยท์ถ๋ ฅ์ด ๋๋ฌ๋๋์ง๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ค๋ฌ์ต๋๋ค.
์ข์ description ๊ณต์
"์ธ์ " + "๋ญ ๋ฃ๊ณ " + "๋ญ ๋ฐ๋" + "์ฃผ์์ฌํญ"
ํ์ ์์
- ์ธ์ : "๋น์ฉ ๊ธ์ก/์ฆ๊ฐ/์ถ์ด ์ง๋ฌธ ์ ํธ์ถ"
- ์ ๋ ฅ: service โ AWS ์๋น์ค๋ช (ec2, s3)
- ์ ๋ ฅ: period โ ์กฐํ ๊ธฐ๊ฐ (last-7d)
- ์ถ๋ ฅ: ์ผ๋ณ ๋น์ฉ ๋ฐ์ดํฐ (JSON)
- ์ฃผ์: ์๋น์ค๋ช ๋ถ๋ช ํํ๋ฉด ํ์ธ ํ ํธ์ถ
๋์ ์
- "๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ต๋๋ค"
- "๋น์ฉ ๊ด๋ จ ์์ "
- "query" (ํ๋ผ๋ฏธํฐ๋ง)
์ถ๋ก ๋ชจ๋ ์ ๋
์์คํ ํ๋กฌํํธ๋ก ์์ด์ ํธ์ ์ฌ๊ณ ๋ฐฉ์์ ๊ฒฐ์
ReAct ์ ๋
๊ธฐ๋ณธ โ ๋จ๊ณ๋ณ ์ ์
- "๋จ๊ณ๋ณ๋ก ๋ตํ์ธ์"
- "๋๊ตฌ๋ฅผ ํ๋์ฉ ํธ์ถํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ํ์ธ"
- ๊ฐ๋จํ ์ง์, ๋๊ตฌ 1~2๊ฐ์ ์ ํฉ
- Strands ๊ธฐ๋ณธ ๋์
{'text': '๋งค ์คํ ์ ์์ด ํ์ํ ๋ํํ ์์ด์ ํธ์ ์ ํฉํฉ๋๋ค. ์ฌ์ฉ์ ์๋๊ฐ ๋ฐ๋ ์ ์์ ๋.', 'code': 'system_prompt = """\n์ฌ์ฉ์ ์ง๋ฌธ์ ๋จ๊ณ๋ณ๋ก ๋ตํ์ธ์.\n๊ฐ ๋จ๊ณ์์ ํ์ํ ๋๊ตฌ๋ฅผ ํ๋์ฉ ํธ์ถํ๊ณ ,\n๊ฒฐ๊ณผ๋ฅผ ํ์ธํ ๋ค ๋ค์ ๋จ๊ณ๋ฅผ ๊ฒฐ์ ํ์ธ์.\n"""', 'codeLang': 'python'}
Plan-and-Execute ์ ๋
๋ณตํฉ ์์ ์ฉ
- "๋จผ์ ๊ณํ์ ์ธ์ฐ์ธ์"
- "๊ณํ์ ๋ณด์ฌ์ฃผ๊ณ ์น์ธ ํ ์คํ"
- ๋ณตํฉ ์์ , ๋๊ตฌ 3+๊ฐ ์กฐํฉ์ ์ ํฉ
- ํ๋กฌํํธ๋ก ์ ๋ (๋ช ์์ ์ง์)
{'text': '๋ณต์กํ ๋ฉํฐ์คํ ์์ ์์ ์ฌ์ฉ์๊ฐ ๊ณํ์ ๋ฏธ๋ฆฌ ํ์ธํ๊ณ ์ถ์ ๋. HITL๊ณผ ์์ฐ์ค๋ฝ๊ฒ ๊ฒฐํฉ.', 'code': 'system_prompt = """\n์ฌ์ฉ์ ์ง๋ฌธ์ ๋ฐ์ผ๋ฉด:\n1. ํ์ํ ๋จ๊ณ๋ฅผ ๊ณํํ์ธ์ (๋๊ตฌ ํธ์ถ ์์)\n2. ๊ณํ์ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ฃผ์ธ์\n3. ์น์ธ ํ ์์๋๋ก ์คํํ์ธ์\n"""', 'codeLang': 'python'}
ํ๋กฌํํธ ๊ฐ์ ๋ฃจํ
1ํ์ฑ์ด ์๋ ์ง์์ ๋ฐ๋ณต ๊ฐ์
-
1
์ด๊ธฐ ์์ฑ
์ญํ + ๊ท์น + ํ์ + ์ ํ์ผ๋ก ์ด์ ์์ฑ
-
2
ํ ์คํธ
5~10๊ฑด ์คํ โ ์คํจ ํจํด ์์ง (๋๊ตฌ ์ ํ ์ค๋ฅ, ๋ฒ์ ์ด๊ณผ)
-
3
์ ์ฝ ์ถ๊ฐ
์คํจ ํจํด์ ๋ํ ๋ช ์์ ๊ท์น ์ถ๊ฐ โ ์ฌํ ์คํธ
-
4
์๋ ํ๊ฐ
strands-agents-evals๋ก ์ ์ ๊ธฐ๋ฐ ๋น๊ต โ A/B ํ ์คํธ
์คํจ ํจํด์ ๋ชจ์ ๋ช ์์ ๊ท์น์ผ๋ก ๋๋จน์ด๋ ๋ฐ๋ณต์ ๋๋ค โ ๊ฐ์ด ์๋๋ผ strands-agents-evals ์ ์๋ก ๊ฐ์ ์ ๊ฒ์ฆํฉ๋๋ค.
messages[] ยท SessionManager ยท description ยท ํ๋ ๊ท์น