Home / ํ”„๋กฌํ”„ํŠธ ์—”์ง€๋‹ˆ์–ด๋ง / ๐ŸŽฏ ํ”„๋กฌํ”„ํŠธ ์—”์ง€๋‹ˆ์–ด๋ง
Module

๐ŸŽฏ ํ”„๋กฌํ”„ํŠธ ์—”์ง€๋‹ˆ์–ด๋ง

System Prompt, Few-shot, CoT, ์‹ค์ „ ํŒจํ„ด, ํ‰๊ฐ€

โฑ 60๋ถ„ 10 / 189

ํ”„๋กฌํ”„ํŠธ ์—”์ง€๋‹ˆ์–ด๋ง

๊ตฌ์กฐ ยท System Prompt ยท ํ•ต์‹ฌ ๊ธฐ๋ฒ• ยท ์‹ค์ „ ํŒจํ„ด ยท ์ถ”๋ก  ํŒŒ๋ผ๋ฏธํ„ฐ

ํ”„๋กฌํ”„ํŠธ๊ฐ€ ๊ณง ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋‹ค

LLM์˜ ํ–‰๋™์„ ์ œ์–ดํ•˜๋Š” ๊ฐ€์žฅ ์ง์ ‘์ ์ด๊ณ  ๋น„์šฉ ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ•

ํ”„๋กฌํ”„ํŠธ ๊ตฌ์กฐ

์ •์˜ ยท ์‹ค๋ฌผ ํ•ด๋ถ€ ยท ์กฐ๋ฆฝ๊ณผ ํ๋ฆ„

PART 1 ยท ํ”„๋กฌํ”„ํŠธ ๊ตฌ์กฐ

ํ”„๋กฌํ”„ํŠธ ๊ตฌ์กฐ

์ •์˜ ยท ์‹ค๋ฌผ ํ•ด๋ถ€ ยท ํ๋ฆ„ โ€” ํ”„๋กฌํ”„ํŠธ๋ผ๋Š” ๊ตฌ์กฐ๋ฌผ์˜ ํ•ด๋ถ€๋„

ํ”„๋กฌํ”„ํŠธ = LLM์— ๋Œ€ํ•œ ์œ ์ผํ•œ ์ธํ„ฐํŽ˜์ด์Šค

์‚ฌ๋žŒ์ด ๋ชจ๋ธ์—๊ฒŒ ์ „๋‹ฌํ•˜๋Š” ์ž…๋ ฅ ์ „์ฒด๋ฅผ ๊ตฌ์กฐ๋กœ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค โ€” ๊ตฌ์กฐ๋ฅผ ์•Œ์•„์•ผ ์„ค๊ณ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ •์˜ โ€” ์ž์—ฐ์–ด ์ž…๋ ฅ์˜ ์ดํ•ฉ
  • ์‹ค๋ฌผ ํ•ด๋ถ€ โ€” Converse ์š”์ฒญ ํ•œ ๊ฑด
  • ํ๋ฆ„ โ€” ์กฐ๋ฆฝ โ†’ ์ถ”๋ก  โ†’ ์ถœ๋ ฅ
  • ์„ค๊ณ„ ๋Œ€์ƒ โ€” system๊ณผ user ๋ฉ”์‹œ์ง€
takeaway

๊ฐ™์€ ๋ชจ๋ธ์ด๋ผ๋„ ํ”„๋กฌํ”„ํŠธ ์„ค๊ณ„์— ๋”ฐ๋ผ ๊ฒฐ๊ณผ๊ฐ€ ๊ฐˆ๋ฆฝ๋‹ˆ๋‹ค โ€” ์ฝ”๋“œ ๋ณ€๊ฒฝ ์—†์ด ๋™์ž‘์„ ์ œ์–ดํ•˜๋Š” ๊ฐ€์žฅ ์ง์ ‘์ ์ธ ์ˆ˜๋‹จ์ž…๋‹ˆ๋‹ค.

PART 1 ยท ํ”„๋กฌํ”„ํŠธ ๊ตฌ์กฐ

ํ”„๋กฌํ”„ํŠธ์˜ ์ •์˜

์งˆ๋ฌธ ํ•œ ์ค„์ด ์•„๋‹Œ, ๋ชจ๋ธ์—๊ฒŒ ์ „๋‹ฌ๋˜๋Š” ์ž์—ฐ์–ด ์ž…๋ ฅ์˜ ์ดํ•ฉ

์ •์˜

ํ”„๋กฌํ”„ํŠธ(Prompt) = ์‚ฌ๋žŒ์ด LLM์—๊ฒŒ ์ „๋‹ฌํ•˜๋Š” ์ž์—ฐ์–ด ์ž…๋ ฅ์˜ ์ดํ•ฉ. ์‹œ์Šคํ…œ ์ง€์‹œ์–ด, ์‚ฌ์šฉ์ž ์งˆ๋ฌธ, ์ฐธ๊ณ  ๋ฌธ์„œ, ๋Œ€ํ™” ์ด๋ ฅ์„ ๋ชจ๋‘ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.




์‹œ์Šคํ…œ ์ง€์‹œ์–ด์—ญํ•  ยท ๊ทœ์น™
+
์‚ฌ์šฉ์ž ์งˆ๋ฌธ์ด๋ฒˆ ์š”์ฒญ
+
์ฐธ๊ณ  ๋ฌธ์„œ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ยท ์ž๋ฃŒ
+
๋Œ€ํ™” ์ด๋ ฅ์ด์ „ ํ„ด
=
ํ”„๋กฌํ”„ํŠธ


"์งˆ๋ฌธ ํ•œ ์ค„"
โ€” ํ”ํžˆ ํ”„๋กฌํ”„ํŠธ๋ผ ๋ถ€๋ฅด๋Š” ๊ฒƒ์€ ๋„ค ์š”์†Œ ์ค‘ ํ•˜๋‚˜์ผ ๋ฟ, ๋ชจ๋ธ์€ ํ•ญ์ƒ ํ•ฉ๊ณ„ ์ „์ฒด๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค


takeaway

์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์ด๋Š” ์งˆ๋ฌธ์€ ์ž…๋ ฅ์˜ ์ผ๋ถ€์ผ ๋ฟ์ž…๋‹ˆ๋‹ค โ€” ์ดํ•ฉ ์ „์ฒด๊ฐ€ ํ”„๋กฌํ”„ํŠธ์ด๊ณ , ๊ทธ ์ „์ฒด๊ฐ€ ์„ค๊ณ„์˜ ๋Œ€์ƒ์ž…๋‹ˆ๋‹ค.

PART 1 ยท ํ”„๋กฌํ”„ํŠธ ๊ตฌ์กฐ

์‹ค๋ฌผ ํ•ด๋ถ€ โ€” Converse ์š”์ฒญ ํ•˜๋‚˜

์‹ค์ œ API ์š”์ฒญ ํ•œ ๊ฑด์„ ์—ด์–ด ๋ณธ ๋„ค ์นธ โ€” ์นธ๋งˆ๋‹ค ๋‹ค๋ฅธ ์ž‘์„ฑ์ž์™€ ์„ค๊ณ„ ์›์น™



์‹ค๋ฌผ โ€” Bedrock Converse ์š”์ฒญ ํ•˜๋‚˜


system
"๋‹น์‹ ์€ AWS ์†”๋ฃจ์…˜์Šค ์•„ํ‚คํ…ํŠธ์ž…๋‹ˆ๋‹ค. ์ถ”์ธกํ•˜์ง€ ๋ง๊ณ , ํ˜•์‹์€ ๋งˆํฌ๋‹ค์šด ํ‘œ๋กœโ€ฆ"
์—ญํ• ยท๊ทœ์น™ โ€” ์‚ฌ์šฉ์ž ๋น„๋…ธ์ถœ (PART 2)


user
"์ด ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ฒ€ํ† ํ•ด ์ฃผ์„ธ์š”: ALB โ†’ ECS โ†’ RDSโ€ฆ"
๊ฐ€๋ณ€ ์ž…๋ ฅ โ€” ์„ค๊ณ„์˜ ์ฃผ ๋Œ€์ƒ


assistant
"๋‹จ์ผ AZ ๊ตฌ์„ฑ์ด๋ผ ๊ฐ€์šฉ์„ฑ ์œ„ํ—˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๋Œ€์•ˆ์„โ€ฆ" (์ด์ „ ํ„ด ์‘๋‹ต)
๋ฉ€ํ‹ฐํ„ด ๋งฅ๋ฝ ยท Few-shot ์˜ˆ์‹œ๋กœ ํ™œ์šฉ


inference
temperature: 0.2 ยท maxTokens: 1024
์ƒ์„ฑ ๋ฐฉ์‹ ์ œ์–ด โ€” PART 5


takeaway

๋„ค ์นธ ์ค‘ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ์„ค๊ณ„ํ•˜๋Š” ๊ฒƒ์€ system๊ณผ user์ž…๋‹ˆ๋‹ค โ€” assistant๋Š” ๋ฉ€ํ‹ฐํ„ด ๋งฅ๋ฝ ์œ ์ง€์™€ Few-shot ์˜ˆ์‹œ๋กœ ํ™œ์šฉ๋˜๊ณ , inference๋Š” PART 5์—์„œ ์กฐ์ ˆํ•˜๋Š” ์†์žก์ด์ž…๋‹ˆ๋‹ค.

PART 1 ยท ํ”„๋กฌํ”„ํŠธ ๊ตฌ์กฐ

ํ”„๋กฌํ”„ํŠธ ํ๋ฆ„

์„ธ ์กฐ๊ฐ์˜ ์กฐ๋ฆฝ โ†’ LLM ์ถ”๋ก  โ†’ ํ˜•์‹์„ ๊ฐ–์ถ˜ ์ถœ๋ ฅ์œผ๋กœ ์ด์–ด์ง€๋Š” ํ•œ ์‚ฌ์ดํด




System Prompt์„ค๊ณ„๋Š” PART 2
User Message๊ฐ€๋ณ€ โ€” ๋งค ์š”์ฒญ
Context๋‹ค์Œ ๋ชจ๋“ˆ


โ†’
์กฐ๋ฆฝ


LLM ์ถ”๋ก  โ€” genai-basics์˜ 7๋‹จ๊ณ„

โ‘  ํ† ํฐํ™”โ†’โ€ฆ โ†’
โ‘ค ํ™•๋ฅ  ยท โ‘ฅ ์ƒ˜ํ”Œ๋ง
โ†’โ‘ฆ ์ž๊ธฐํšŒ๊ท€

Temperature ยท Top-P๊ฐ€ โ‘คยทโ‘ฅ์—์„œ ์ž‘์šฉ โ€” PART 5์—์„œ ์กฐ์ ˆ


โ†’
์ƒ์„ฑ


Output
JSON ยท ๋งˆํฌ๋‹ค์šด ยท ์ž์—ฐ์–ด
ํ˜•์‹๋„ ํ”„๋กฌํ”„ํŠธ๋กœ ์ œ์–ด (PART 4)



takeaway

System Prompt์™€ User Message๋งŒ์ด ์•„๋‹™๋‹ˆ๋‹ค โ€” Context์™€ ์ถ”๋ก  ํŒŒ๋ผ๋ฏธํ„ฐ๊นŒ์ง€ ํฌํ•จํ•œ ์ „์ฒด ์ž…๋ ฅ์ด ์ถœ๋ ฅ ํ’ˆ์งˆ์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

System Prompt ์„ค๊ณ„

Persona ยท Rules ยท Format โ€” ๋ชจ๋ธ ํ–‰๋™์˜ ๊ธฐ๋ณธ ํ‹€

PART 2 ยท System Prompt ์„ค๊ณ„

System Prompt

๋ชจ๋“  ๋Œ€ํ™”์— ์ ์šฉ๋˜๋Š” ๋ถˆ๋ณ€ ์ง€์‹œ์–ด์˜ ์„ค๊ณ„๋ฒ•

Persona + Rules + Format

์—ญํ• ์„ ๋ถ€์—ฌํ•˜๊ณ , ๊ทœ์น™์œผ๋กœ ๊ฒฝ๊ณ„๋ฅผ ๊ธ‹๊ณ , ํ˜•์‹์œผ๋กœ ์ถœ๋ ฅ์„ ๊ณ ์ •ํ•ฉ๋‹ˆ๋‹ค โ€” ๊ฐ€๋“œ๋ ˆ์ผ์˜ ์ฒซ ๋ฒˆ์งธ ๋ฐฉ์–ด์„ ์ž…๋‹ˆ๋‹ค.

  • Persona โ€” ์—ญํ• ยท์ „๋ฌธ ๋ถ„์•ผยทํ†ค
  • Rules โ€” ๊ธˆ์ง€ ์‚ฌํ•ญยท๋ฒ”์œ„ ์ œํ•œ
  • Format โ€” ์ถœ๋ ฅ ๊ตฌ์กฐ ์‚ฌ์ „ ์ •์˜
  • ์›์น™ โ€” ๊ตฌ์ฒด์ ์ผ์ˆ˜๋ก ์ข‹๋‹ค
takeaway

"์นœ์ ˆํ•˜๊ฒŒ ๋‹ตํ•ด์ค˜"๋ณด๋‹ค "2๋ฌธ์žฅ ์ด๋‚ด, ์กด๋Œ“๋ง, JSON ํ˜•์‹"์ด ๋‚ซ์Šต๋‹ˆ๋‹ค โ€” ๊ตฌ์ฒด์„ฑ์ด System Prompt์˜ ํ’ˆ์งˆ์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

PART 2 ยท System Prompt ์„ค๊ณ„

System Prompt 3์š”์†Œ

์—ญํ• ์„ ๋ถ€์—ฌํ•˜๊ณ , ๊ทœ์น™์„ ์ •ํ•˜๊ณ , ์ถœ๋ ฅ ํ˜•์‹์„ ์ง€์ • โ€” ์ด 3๊ฐ€์ง€๊ฐ€ ๋ชจ๋ธ์˜ ํ–‰๋™ ํ‹€

Persona (์—ญํ• )

"๋‹น์‹ ์€ ์‹œ๋‹ˆ์–ด ๋ฐฑ์—”๋“œ ์—”์ง€๋‹ˆ์–ด์ž…๋‹ˆ๋‹ค"
์ „๋ฌธ ๋ถ„์•ผ, ํ†ค, ๊ด€์ ์„ ์ •์˜

Rules (๊ทœ์น™)

"๋ชจ๋ฅด๋ฉด ๋ชจ๋ฅธ๋‹ค๊ณ  ๋‹ต๋ณ€"
๊ธˆ์ง€ ์‚ฌํ•ญ, ๋ฒ”์œ„ ์ œํ•œ, ์‘๋‹ต ๊ธธ์ด

Format (ํ˜•์‹)

"JSON์œผ๋กœ ์‘๋‹ต, key๋Š” ์˜์–ด"
์ถœ๋ ฅ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์ „ ์ •์˜

takeaway

์—ญํ• ์ด ๊ด€์ ์„, ๊ทœ์น™์ด ๊ฒฝ๊ณ„๋ฅผ, ํ˜•์‹์ด ์ถœ๋ ฅ ๊ตฌ์กฐ๋ฅผ ์ •ํ•ฉ๋‹ˆ๋‹ค โ€” 3์š”์†Œ์˜ ์กฐํ•ฉ์ด ๋ชจ๋ธ ํ–‰๋™์˜ ๊ธฐ๋ณธ ํ‹€์ž…๋‹ˆ๋‹ค.

PART 2 ยท System Prompt ์„ค๊ณ„

System Prompt ์˜ˆ์‹œ

3์š”์†Œ๋ฅผ ์กฐํ•ฉํ•œ ์‹ค์ œ System Prompt

markdown
# Persona
๋‹น์‹ ์€ AWS Solutions Architect์ž…๋‹ˆ๋‹ค.
๊ณ ๊ฐ์˜ ์•„ํ‚คํ…์ฒ˜ ์งˆ๋ฌธ์— Well-Architected Framework ๊ธฐ๋ฐ˜์œผ๋กœ ๋‹ต๋ณ€ํ•ฉ๋‹ˆ๋‹ค.

# Rules
- ๋ชจ๋ฅด๋Š” ๋‚ด์šฉ์€ "ํ™•์ธ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค"๋ผ๊ณ  ๋‹ต๋ณ€
- ๋น„์šฉ ๊ด€๋ จ ์งˆ๋ฌธ์— ๊ตฌ์ฒด์  ๊ธˆ์•ก์„ ์ œ์‹œํ•˜์ง€ ์•Š์Œ
- ํ•ญ์ƒ ๋Œ€์•ˆ์„ 2๊ฐ€์ง€ ์ด์ƒ ์ œ์‹œ

# Format
- ๋งˆํฌ๋‹ค์šด์œผ๋กœ ์‘๋‹ต
- ์ถ”์ฒœ ์„œ๋น„์Šค๋Š” | ์„œ๋น„์Šค | ์ด์œ  | ํ˜•ํƒœ์˜ ํ…Œ์ด๋ธ”
- ๋งˆ์ง€๋ง‰์— "โš ๏ธ ์ฃผ์˜์‚ฌํ•ญ" ์„น์…˜ ํฌํ•จ
  • # Persona โ€” Well-Architected ๊ธฐ๋ฐ˜์œผ๋กœ ๋‹ต๋ณ€ํ•˜๋Š” AWS Solutions Architect ์—ญํ•  ๋ถ€์—ฌ
  • # Rules โ€” ์ถ”์ธก ๊ธˆ์ง€("ํ™•์ธ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค") ยท ๊ธˆ์•ก ์ œ์‹œ ๊ธˆ์ง€ ยท ๋Œ€์•ˆ 2๊ฐ€์ง€ ์ด์ƒ
  • # Format โ€” ๋งˆํฌ๋‹ค์šด + ํ…Œ์ด๋ธ”๋กœ ์ถœ๋ ฅ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์ „์— ๊ณ ์ •
  • ์„ธ ์„น์…˜์ด ๋ชจ๋“  ๋Œ€ํ™”์— ๊ณตํ†ต ์ ์šฉ๋˜๋Š” ๋ถˆ๋ณ€ ์ง€์‹œ์–ด

ํ•ต์‹ฌ ๊ธฐ๋ฒ•

Zero-shot ยท Few-shot ยท Chain of Thought ยท ReAct

PART 3 ยท ํ•ต์‹ฌ ๊ธฐ๋ฒ•

ํ•ต์‹ฌ ๊ธฐ๋ฒ•

ํƒœ์Šคํฌ ๋ณต์žก๋„์— ๋”ฐ๋ผ ๋‹จ๊ณ„์ ์œผ๋กœ ์˜ฌ๋ฆฌ๋Š” ๊ธฐ๋ฒ•์˜ ์‚ฌ๋‹ค๋ฆฌ

Zero-shot โ†’ Few-shot โ†’ CoT โ†’ ReAct

๊ฐ€์žฅ ๋‹จ์ˆœํ•œ ๊ธฐ๋ฒ•๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด, ํƒœ์Šคํฌ๊ฐ€ ๋ณต์žกํ•ด์งˆ ๋•Œ ํ•œ ๋‹จ๊ณ„์”ฉ ์˜ฌ๋ฆฝ๋‹ˆ๋‹ค.

  • Zero-shot โ€” ์ง€์‹œ๋งŒ์œผ๋กœ ์ˆ˜ํ–‰
  • Few-shot โ€” ์˜ˆ์‹œ 3~5๊ฐœ๋กœ ํŒจํ„ด ํ•™์Šต
  • Chain of Thought โ€” ๋‹จ๊ณ„๋ณ„ ์ถ”๋ก  ์ƒ์„ฑ
  • ReAct โ€” ์ถ”๋ก  + ๋„๊ตฌ ์‚ฌ์šฉ ๋ฃจํ”„
takeaway

๊ธฐ๋ฒ•์€ ๋Œ€์ฒด๊ฐ€ ์•„๋‹ˆ๋ผ ๋ณต์žก๋„์— ๋”ฐ๋ฅธ ์ƒ์Šน ์‚ฌ๋‹ค๋ฆฌ์ž…๋‹ˆ๋‹ค โ€” ๋‹จ์ˆœ ํƒœ์Šคํฌ์— ๋ฌด๊ฑฐ์šด ๊ธฐ๋ฒ•์„ ์“ฐ๋ฉด ํ† ํฐ๋งŒ ๋‚ญ๋น„๋ฉ๋‹ˆ๋‹ค.

PART 3 ยท ํ•ต์‹ฌ ๊ธฐ๋ฒ•

๊ธฐ๋ฒ•์˜ ์ง„ํ™”

๋‹จ์ˆœํ•œ ์ง€์‹œ์—์„œ ๊ตฌ์กฐํ™”๋œ ์ถ”๋ก ๊นŒ์ง€ โ€” ํƒœ์Šคํฌ ๋ณต์žก๋„์— ๋”ฐ๋ฅธ ๊ธฐ๋ฒ• ์ƒ์Šน ์‚ฌ๋‹ค๋ฆฌ

takeaway

Zero-shot์œผ๋กœ ์‹œ์ž‘ํ•ด ๋ถ€์กฑํ•˜๋ฉด ์˜ˆ์‹œ๋ฅผ, ๊ทธ๋ž˜๋„ ๋ถ€์กฑํ•˜๋ฉด ์ถ”๋ก  ๊ณผ์ •์„ ๋”ํ•ฉ๋‹ˆ๋‹ค โ€” ReAct๋Š” ์—์ด์ „ํŠธ์˜ ๊ธฐ๋ณธ ํŒจํ„ด์ด ๋˜๋ฉฐ, ๋ฃจํ”„ ์‹คํ–‰์€ ํ•˜๋„ค์Šค ์—”์ง€๋‹ˆ์–ด๋ง ๋ชจ๋“ˆ์—์„œ ๊นŠ์ด ๋‹ค๋ฃน๋‹ˆ๋‹ค.

PART 3 ยท ํ•ต์‹ฌ ๊ธฐ๋ฒ•

Zero-shot โ€” ์ง€์‹œ๊ฐ€ ์ „๋ถ€๋‹ค

์˜ˆ์‹œ ์—†์ด ์ง€์‹œ๋งŒ์œผ๋กœ โ€” ๋Œ€์ƒ ยท ํ˜•์‹ ยท ์ œ์•ฝ์„ ์ง€์‹œ์— ๋‹ด๋Š” ๊ฒƒ์ด Zero-shot์˜ ์ „๋ถ€




๋ชจํ˜ธํ•œ ์ง€์‹œ
"์ด ํšŒ์˜๋ก ์š”์•ฝํ•ด์ค˜"

โ†’ ๊ธธ์ด๋„, ํ˜•์‹๋„, ๊ด€์ ๋„ ๋ชจ๋ธ ๋งˆ์Œ๋Œ€๋กœ โ€” ์‹คํ–‰ํ•  ๋•Œ๋งˆ๋‹ค ๋‹ค๋ฅธ ๋ชจ์–‘์˜ ์š”์•ฝ์ด ๋‚˜์˜ต๋‹ˆ๋‹ค.



๊ตฌ์ฒด์  ์ง€์‹œ โ€” ๋Œ€์ƒ ยท ํ˜•์‹ ยท ์ œ์•ฝ
"์ด ํšŒ์˜๋ก์—์„œ ๊ฒฐ์ • ์‚ฌํ•ญ๋งŒ ์ถ”์ถœํ•ด์„œ ๋ฒˆํ˜ธ ๋ชฉ๋ก 3๊ฐœ ์ด๋‚ด๋กœ ์ •๋ฆฌํ•ด์ค˜. ๋‹ด๋‹น์ž๊ฐ€ ์ •ํ•ด์ง„ ํ•ญ๋ชฉ์€ ์ด๋ฆ„์„ ๊ด„ํ˜ธ๋กœ ๋ถ™์—ฌ์ค˜."

โ†’ ๋ฌด์—‡์„(๊ฒฐ์ • ์‚ฌํ•ญ) ยท ์–ด๋–ค ํ˜•์‹์œผ๋กœ(๋ฒˆํ˜ธ 3๊ฐœ) ยท ์–ด๋–ค ๊ทœ์น™์œผ๋กœ(๋‹ด๋‹น์ž ๊ด„ํ˜ธ) โ€” ์žฌํ˜„ ๊ฐ€๋Šฅํ•œ ์ถœ๋ ฅ.



takeaway

Zero-shot์˜ ํ’ˆ์งˆ์€ ์ง€์‹œ์˜ ๊ตฌ์ฒด์„ฑ์ด ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค โ€” ๋Œ€์ƒยทํ˜•์‹ยท์ œ์•ฝ ์„ธ ๊ฐ€์ง€๋ฅผ ์ง€์‹œ์— ๋‹ด๊ณ , ๊ทธ๋ž˜๋„ ํ˜•์‹์ด ํ”๋“ค๋ฆฌ๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„(Few-shot)๋กœ ์˜ฌ๋ฆฝ๋‹ˆ๋‹ค.

PART 3 ยท ํ•ต์‹ฌ ๊ธฐ๋ฒ•

Few-shot ์˜ˆ์‹œ ์„ค๊ณ„

์ข‹์€ ์˜ˆ์‹œ์™€ ๋‚˜์œ ์˜ˆ์‹œ์˜ ์ฐจ์ด โ€” ์˜ˆ์‹œ์˜ ํ’ˆ์งˆ์ด ๊ณง ์ถœ๋ ฅ์˜ ํ’ˆ์งˆ

๋‚˜์œ ์˜ˆ์‹œ

๋ชจํ˜ธํ•˜๊ณ  ์ผ๊ด€์„ฑ ์—†์Œ

  • ์˜ˆ์‹œ ์ˆ˜๊ฐ€ 1๊ฐœ (ํŒจํ„ด ํ•™์Šต ๋ถˆ๊ฐ€)
  • ์ž…๋ ฅ-์ถœ๋ ฅ ํ˜•์‹์ด ๋งค๋ฒˆ ๋‹ค๋ฆ„
  • ์—์ง€ ์ผ€์ด์Šค๋ฅผ ์ปค๋ฒ„ํ•˜์ง€ ์•Š์Œ
  • ์˜ˆ์‹œ๊ฐ€ ๋„ˆ๋ฌด ๊ธธ์–ด ํ† ํฐ ๋‚ญ๋น„

๋‚˜์œ ์˜ˆ์‹œ๋Š” ๋ชจ๋ธ์„ ํ˜ผ๋ž€์Šค๋Ÿฝ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ํ˜•์‹์ด ๋ถˆ์ผ์น˜ํ•˜๋ฉด ๋ชจ๋ธ์ด ์–ด๋–ค ํ˜•์‹์„ ๋”ฐ๋ฅผ์ง€ ์ถ”์ธกํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ข‹์€ ์˜ˆ์‹œ

๊ตฌ์ฒด์ ์ด๊ณ  ์ผ๊ด€๋จ

  • ์˜ˆ์‹œ 3~5๊ฐœ (ํŒจํ„ด ๋ช…ํ™•)
  • ์ž…๋ ฅ-์ถœ๋ ฅ ํ˜•์‹ ์™„์ „ ์ผ๊ด€
  • ์ •์ƒ ์ผ€์ด์Šค + ์—์ง€ ์ผ€์ด์Šค ํฌํ•จ
  • ์‹ค์ œ ํ”„๋กœ๋•์…˜ ๋ฐ์ดํ„ฐ์—์„œ ์ถ”์ถœ

์ข‹์€ ์˜ˆ์‹œ๋Š” ์ผ๊ด€๋œ ํฌ๋งท์„ ๋ณด์—ฌ์ฃผ๊ณ , ์—์ง€ ์ผ€์ด์Šค๋„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋ธ์ด "์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋œ๋‹ค"๋ฅผ ๋ช…ํ™•ํžˆ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค.

takeaway

์˜ˆ์‹œ์˜ ํ’ˆ์งˆ์ด ๊ณง ์ถœ๋ ฅ์˜ ํ’ˆ์งˆ์ž…๋‹ˆ๋‹ค โ€” ํ˜•์‹์ด ์ผ๊ด€๋œ ์˜ˆ์‹œ 3~5๊ฐœ๋ฅผ ์‹ค์ œ ํ”„๋กœ๋•์…˜ ๋ฐ์ดํ„ฐ์—์„œ ์ถ”์ถœํ•˜๋Š” ๊ฒƒ์ด ์ด์ƒ์ ์ž…๋‹ˆ๋‹ค.

PART 3 ยท ํ•ต์‹ฌ ๊ธฐ๋ฒ•

Few-shot ์‹ค๋ฌผ โ€” ์˜ˆ์‹œ๋Š” assistant ํ„ด์œผ๋กœ

assistant ์—ญํ• ์˜ ์‹ค์ „ ์šฉ๋„ โ€” user/assistant ์Œ์ด ๊ณง ์˜ˆ์‹œ

ํ•ต์‹ฌ

Few-shot์€ ๋ณ„๋„ ๋ฌธ๋ฒ•์ด ์•„๋‹ˆ๋ผ ๋ฉ”์‹œ์ง€ ๋ฐฐ์—ด์˜ ํ™œ์šฉ์ž…๋‹ˆ๋‹ค โ€” ์˜ˆ์‹œ๋ฅผ ๋Œ€ํ™” ์ด๋ ฅ์ฒ˜๋Ÿผ ๋„ฃ์œผ๋ฉด ๋ชจ๋ธ์ด ํŒจํ„ด์„ ๋”ฐ๋ผ๊ฐ‘๋‹ˆ๋‹ค.

json
{
  "system": [{ "text": "์ƒํ’ˆ ๋ฆฌ๋ทฐ์˜ ๊ฐ์„ฑ์„ ๋ถ„๋ฅ˜ํ•ฉ๋‹ˆ๋‹ค. ํ˜•์‹: ๊ฐ์„ฑ|์‹ ๋ขฐ๋„" }],
  "messages": [
    { "role": "user",      "content": [{ "text": "๋ฐฐ์†ก ๋น ๋ฅด๊ณ  ์ข‹์•„์š”" }] },
    { "role": "assistant", "content": [{ "text": "๊ธ์ •|0.97" }] },
    { "role": "user",      "content": [{ "text": "ํฌ์žฅ์ด ์ฐข์–ด์ ธ ์™”์–ด์š”" }] },
    { "role": "assistant", "content": [{ "text": "๋ถ€์ •|0.94" }] },
    { "role": "user",      "content": [{ "text": "์ƒ๊ฐ๋ณด๋‹ค ๋ฌด๊ฒ๋„ค์š”" }] },
    { "role": "assistant", "content": [{ "text": "์ค‘๋ฆฝ|0.81" }] },
    { "role": "user",      "content": [{ "text": "์žฌ๊ตฌ๋งค ์˜์‚ฌ ์žˆ์–ด์š”" }] }
  ]
}
  • ์˜ˆ์‹œ 3์Œ = user/assistant ํ„ด โ€” ๋ชจ๋ธ์€ ์ด ๋Œ€ํ™”๊ฐ€ ์‹ค์ œ๋กœ ์žˆ์—ˆ๋‹ค๊ณ  ๋ณด๊ณ  ํŒจํ„ด์„ ์ด์–ด๊ฐ‘๋‹ˆ๋‹ค
  • ํ˜•์‹ ์™„์ „ ์ผ๊ด€ + ์—์ง€ ์ผ€์ด์Šค โ€” ๊ฐ์„ฑ|์‹ ๋ขฐ๋„ ํ˜•์‹ ๊ณ ์ •, ์• ๋งคํ•œ "์ค‘๋ฆฝ" ์ผ€์ด์Šค ํฌํ•จ
  • ๋งˆ์ง€๋ง‰ user๋งŒ ์‹ค์ œ ์งˆ๋ฌธ โ€” ๋ชจ๋ธ์€ ํ•™์Šต๋œ ํŒจํ„ด๋Œ€๋กœ "๊ธ์ •|โ€ฆ" ํ˜•์‹์œผ๋กœ ๋‹ตํ•ฉ๋‹ˆ๋‹ค
PART 3 ยท ํ•ต์‹ฌ ๊ธฐ๋ฒ•

Chain of Thought ํšจ๊ณผ

"๋‹จ๊ณ„๋ณ„๋กœ ์ƒ๊ฐํ•ด" ํ•œ ์ค„์„ ์ถ”๊ฐ€ํ•˜๋ฉด โ€” ์ •ํ™•๋„๊ฐ€ ๊ทน์ ์œผ๋กœ ํ–ฅ์ƒ๋˜๋Š” ์›๋ฆฌ

์ง์ ‘ ๋‹ต๋ณ€ CoT ์ ์šฉ
๋™์ž‘ ๋ฐฉ์‹ ๋ชจ๋ธ์ด ์ฆ‰์‹œ ์ตœ์ข… ๋‹ต์„ ์ƒ์„ฑ
์ค‘๊ฐ„ ๊ณผ์ •์ด ์—†์–ด ๊ฒ€์ฆ ๋ถˆ๊ฐ€
๋ณต์žกํ•œ ๋ฌธ์ œ์—์„œ ์˜ค๋‹ต๋ฅ  ๋†’์Œ
"Let's think step by step" ์ถ”๊ฐ€
์ค‘๊ฐ„ ์ถ”๋ก  ๊ณผ์ •์„ ๋ช…์‹œ์  ์ƒ์„ฑ
๊ฐ ๋‹จ๊ณ„๋ฅผ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ์Œ
๋น„์šฉ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„ ์ถœ๋ ฅ ํ† ํฐ ์ ์Œ (์ง์ ‘ ๋‹ต๋งŒ)
๋น ๋ฅด์ง€๋งŒ ๋ถ€์ •ํ™•
๋‹จ์ˆœ ํƒœ์Šคํฌ์— ์ ํ•ฉ
์ถœ๋ ฅ ํ† ํฐ ์ฆ๊ฐ€ (์ถ”๋ก  ๊ณผ์ • ํฌํ•จ)
๋А๋ฆฌ์ง€๋งŒ ์ •ํ™•
๋น„์šฉ vs ์ •ํ™•๋„ ํŒ๋‹จ ํ•„์š”
PART 3 ยท ํ•ต์‹ฌ ๊ธฐ๋ฒ•

CoT ์‹ค๋ฌผ โ€” ๊ฐ™์€ ์งˆ๋ฌธ, ๋‹ค๋ฅธ ์‘๋‹ต

"๋…ธํŠธ๋ถ 120๋งŒ์› 3๋Œ€์™€ ๋ชจ๋‹ˆํ„ฐ 45๋งŒ์› 2๋Œ€, ์˜ˆ์‚ฐ 500๋งŒ์›์œผ๋กœ ๋˜๋‚˜์š”?"




์ง์ ‘ ๋‹ต๋ณ€
"์•„๋‹ˆ์š”, ์˜ˆ์‚ฐ์„ ์ดˆ๊ณผํ•ฉ๋‹ˆ๋‹ค."

โ†’ ์˜ค๋‹ต โ€” ๊ทผ๊ฑฐ๊ฐ€ ์—†์–ด ์–ด๋””์„œ ํ‹€๋ ธ๋Š”์ง€๋„ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.



+ "๋‹จ๊ณ„๋ณ„๋กœ ๊ณ„์‚ฐํ•ด ์ฃผ์„ธ์š”"
1. ๋…ธํŠธ๋ถ: 120๋งŒ ร— 3 = 360๋งŒ
2. ๋ชจ๋‹ˆํ„ฐ: 45๋งŒ ร— 2 = 90๋งŒ
3. ํ•ฉ๊ณ„: 360๋งŒ + 90๋งŒ = 450๋งŒ โ‰ค 500๋งŒ
โ†’ ์˜ˆ์‚ฐ ๋‚ด์ž…๋‹ˆ๋‹ค (์—ฌ์œ  50๋งŒ์›)

โ†’ ์ •๋‹ต + ๋‹จ๊ณ„๋งˆ๋‹ค ๊ฒ€์ฆ ๊ฐ€๋Šฅ โ€” ํ‹€๋ ค๋„ ์–ด๋А ์ค„์ด ํ‹€๋ ธ๋Š”์ง€ ๋ณด์ž…๋‹ˆ๋‹ค.



takeaway

์ง€์‹œ ํ•œ ์ค„("๋‹จ๊ณ„๋ณ„๋กœ")์ด ์ถ”๋ก  ํ† ํฐ์„ ์ƒ์„ฑํ•˜๊ฒŒ ๋งŒ๋“ค์–ด ์ •ํ™•๋„๋ฅผ ๋Œ์–ด์˜ฌ๋ฆฝ๋‹ˆ๋‹ค โ€” genai-basics์—์„œ ๋ณธ "๋” ์˜ค๋ž˜ ์ƒ๊ฐํ•˜๋ฉด ๋” ์ •ํ™•ํ•˜๋‹ค"์˜ ํ”„๋กฌํ”„ํŠธ ๋ฒ„์ „์ž…๋‹ˆ๋‹ค.

PART 3 ยท ํ•ต์‹ฌ ๊ธฐ๋ฒ•

Role Prompting โ€” Persona๋ฅผ ๊ธฐ๋ฒ•์œผ๋กœ

๊ตฌ์ฒด์  ์—ญํ•  ๋ถ€์—ฌ๋กœ ํ™œ์„ฑํ™”๋˜๋Š” ๋„๋ฉ”์ธ ์ง€์‹๊ณผ ์–ด์กฐ

์—ญํ•  ์—†์Œ

  • "์ด ์ฝ”๋“œ๋ฅผ ๋ฆฌ๋ทฐํ•ด์ค˜"
  • ์ผ๋ฐ˜์ ์ด๊ณ  ํ”ผ์ƒ์ ์ธ ํ”ผ๋“œ๋ฐฑ
  • ๊ตฌ์ฒด์  ๊ด€์ ์ด ์—†์Œ
  • ๋„๋ฉ”์ธ ๋งฅ๋ฝ์„ ๊ณ ๋ คํ•˜์ง€ ์•Š์Œ

์—ญํ• ์ด ์—†์œผ๋ฉด ๋ชจ๋ธ์€ "์ผ๋ฐ˜์  AI ์–ด์‹œ์Šคํ„ดํŠธ"๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์‘๋‹ต์ด ๊ด‘๋ฒ”์œ„ํ•˜๊ณ  ๊นŠ์ด๊ฐ€ ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค.

์—ญํ•  ๋ถ€์—ฌ

  • "๋‹น์‹ ์€ 10๋…„์ฐจ ๋ณด์•ˆ ์—”์ง€๋‹ˆ์–ด์ž…๋‹ˆ๋‹ค. ์ด ์ฝ”๋“œ๋ฅผ OWASP ๊ธฐ์ค€์œผ๋กœ ๋ฆฌ๋ทฐํ•ด์ฃผ์„ธ์š”"
  • ๋ณด์•ˆ ์ทจ์•ฝ์ ์— ์ง‘์ค‘ํ•œ ๊ตฌ์ฒด์  ํ”ผ๋“œ๋ฐฑ
  • ์‹ฌ๊ฐ๋„ ๋ถ„๋ฅ˜(Critical/High/Medium) ํฌํ•จ
  • ์ˆ˜์ • ๋ฐฉํ–ฅ๊นŒ์ง€ ์ œ์•ˆ

๊ตฌ์ฒด์  ์—ญํ• (์งํ•จ+๊ฒฝ๋ ฅ+์ „๋ฌธ ๋ถ„์•ผ)์„ ๋ถ€์—ฌํ•˜๋ฉด, ๋ชจ๋ธ์ด ํ•ด๋‹น ๋„๋ฉ”์ธ์˜ ํ”„๋ ˆ์ž„์›Œํฌ์™€ ์šฉ์–ด๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๊นŠ์ด ์žˆ๋Š” ์‘๋‹ต์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

takeaway

์งํ•จยท๊ฒฝ๋ ฅยท์ „๋ฌธ ๋ถ„์•ผ๋ฅผ ๊ฐ–์ถ˜ ๊ตฌ์ฒด์  ์—ญํ• ์ด ๋„๋ฉ”์ธ ํ”„๋ ˆ์ž„์›Œํฌ์™€ ์šฉ์–ด๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค โ€” "๋„์™€์ค˜"์™€๋Š” ์‘๋‹ต์˜ ๊นŠ์ด๊ฐ€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

๊ณ ๊ธ‰ ๊ธฐ๋ฒ•

์ž…๋ ฅ ๊ตฌ์กฐํ™” ยท ๊ตฌ์กฐํ™” ์ถœ๋ ฅ ยท Prompt Chaining ยท ๋„ค๊ฑฐํ‹ฐ๋ธŒ ํ”„๋กฌํ”„ํŒ…

PART 4 ยท ๊ณ ๊ธ‰ ๊ธฐ๋ฒ•

๊ณ ๊ธ‰ ๊ธฐ๋ฒ•

ํ”„๋กœ๋•์…˜์—์„œ ๋ฐ˜๋ณต ๊ฒ€์ฆ๋œ ๋„ค ๊ฐ€์ง€ โ€” ๋ชฉ์ ์€ ํ•˜๋‚˜, ์ถœ๋ ฅ์˜ ์˜ˆ์ธก ๊ฐ€๋Šฅ์„ฑ

๊ตฌ์กฐํ™” ยท ๊ฐ•์ œ ยท ๋ถ„ํ•ด ยท ์ œ์•ฝ

์ž…๋ ฅ์„ ํƒœ๊ทธ๋กœ ๊ตฌ์กฐํ™”ํ•˜๊ณ , ์ถœ๋ ฅ์„ ์Šคํ‚ค๋งˆ๋กœ ๊ฐ•์ œํ•˜๊ณ , ์ž‘์—…์„ ๋‹จ๊ณ„๋กœ ๋‚˜๋ˆ„๊ณ , ๋ฒ”์œ„๋ฅผ ์ œ์•ฝ์œผ๋กœ ์ขํž™๋‹ˆ๋‹ค.

  • ์ž…๋ ฅ ๊ตฌ์กฐํ™” โ€” XML ํƒœ๊ทธ๋กœ ์ง€์‹œยท์ž๋ฃŒ ๋ถ„๋ฆฌ
  • ๊ตฌ์กฐํ™” ์ถœ๋ ฅ โ€” JSON Schema๋กœ ํ˜•์‹ ๊ฐ•์ œ
  • Prompt Chaining โ€” ๋‹จ๊ณ„ ๋ถ„ํ•ด + ๋‹จ๊ณ„๋ณ„ ๊ฒ€์ฆ
  • ๋„ค๊ฑฐํ‹ฐ๋ธŒ ํ”„๋กฌํ”„ํŒ… โ€” "ํ•˜์ง€ ๋งˆ"๋กœ ๋ฒ”์œ„ ์ถ•์†Œ
takeaway

ํ•ต์‹ฌ ๊ธฐ๋ฒ•์ด ํ•œ ํ˜ธ์ถœ์˜ ํ’ˆ์งˆ์„ ์˜ฌ๋ฆฐ๋‹ค๋ฉด, ๊ณ ๊ธ‰ ๊ธฐ๋ฒ•์€ ์ž‘์—… ์ „์ฒด์˜ ์‹ ๋ขฐ๋„๋ฅผ ์˜ฌ๋ฆฝ๋‹ˆ๋‹ค โ€” ๋„ค ๊ฐ€์ง€๋Š” ํ•จ๊ป˜ ์กฐํ•ฉํ•ด ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

PART 4 ยท ๊ณ ๊ธ‰ ๊ธฐ๋ฒ•

์ž…๋ ฅ ๊ตฌ์กฐํ™” โ€” XML ํƒœ๊ทธ๋กœ ์ง€์‹œ์™€ ์ž๋ฃŒ ๋ถ„๋ฆฌ

๊ธด ์ž๋ฃŒ์™€ ์ง€์‹œ๊ฐ€ ์„ž์ด๋ฉด ๋ชจ๋ธ๋„ ํ˜ผ๋™ โ€” ํƒœ๊ทธ ๊ฒฝ๊ณ„๊ฐ€ ๊ณง ๊ฐ€๋“œ๋ ˆ์ผ (Anthropic ๊ณต์‹ ๊ถŒ์žฅ)

์—ฐ๊ฒฐ

System Prompt(์—ญํ• ยท๊ทœ์น™, PART 2)๋ฅผ ์„ค๊ณ„ํ–ˆ๋‹ค๋ฉด, User ๋ฉ”์‹œ์ง€๋„ ํƒœ๊ทธ๋กœ ๊ตฌ์กฐํ™”ํ•ฉ๋‹ˆ๋‹ค โ€” ํ”„๋กฌํ”„ํŠธ ์ธ์ ์…˜ ์™„ํ™”์—๋„ ์œ ํšจํ•ฉ๋‹ˆ๋‹ค.

markdown
<instructions>
์•„๋ž˜ ํšŒ์˜๋ก์—์„œ ๊ฒฐ์ • ์‚ฌํ•ญ๋งŒ 3๊ฐœ ์ถ”์ถœํ•ด ์ฃผ์„ธ์š”.
์ถœ๋ ฅ์€ ๋ฒˆํ˜ธ ๋ชฉ๋ก์œผ๋กœ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
</instructions>

<document>
{{meeting_notes}}
</document>

<example>
1. ๋ฐฐํฌ ์ผ์ •์„ 8์›” 1์ฃผ๋กœ ํ™•์ •
</example>
  • ํƒœ๊ทธ๋กœ ๊ฒฝ๊ณ„ ์„ ์–ธ โ€” ์ง€์‹œยท์ž๋ฃŒยท์˜ˆ์‹œ๋ฅผ XML ํƒœ๊ทธ๋กœ ๋ถ„๋ฆฌ, ๋ชจ๋ธ์ด ์—ญํ•  ๊ฒฝ๊ณ„๋ฅผ ๋ช…ํ™•ํžˆ ์ธ์‹
  • ๊ธด ์ž๋ฃŒ๋Š” document ์•ˆ์— โ€” ์ง€์‹œ๊ฐ€ ์ž๋ฃŒ ๋ณธ๋ฌธ์— ๋ฌปํžˆ์ง€ ์•Š์Œ, ์ž๋ฃŒ ์•ˆ์˜ "์ง€์‹œ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ๋ฌธ์žฅ"๋„ ๋ฌด๋ ฅํ™”
  • Claude ๊ณ„์—ด ํŠนํ™” โ€” XML ํƒœ๊ทธ ์ธ์‹์— ์ตœ์ ํ™”๋˜์–ด ์žˆ์–ด Anthropic ๊ณต์‹ ๊ฐ€์ด๋“œ๊ฐ€ ๊ถŒ์žฅํ•˜๋Š” ๋ฐฉ์‹
PART 4 ยท ๊ณ ๊ธ‰ ๊ธฐ๋ฒ•

๊ตฌ์กฐํ™” ์ถœ๋ ฅ ์˜ˆ์‹œ

Strands SDK์˜ Structured Output โ€” Pydantic ์Šคํ‚ค๋งˆ๋กœ ์ถœ๋ ฅ์„ ๊ฐ•์ œ

python
from strands import Agent
from pydantic import BaseModel

# โ‘  ์ถœ๋ ฅ ๊ตฌ์กฐ๋ฅผ Pydantic ์Šคํ‚ค๋งˆ๋กœ ์„ ์–ธ
class ReviewResult(BaseModel):
    sentiment: str   # "positive" | "negative" | "neutral"
    confidence: float
    summary: str
    keywords: list[str]

agent = Agent(model=model, system_prompt="์ƒํ’ˆ ๋ฆฌ๋ทฐ๋ฅผ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.")

# โ‘ก ์Šคํ‚ค๋งˆ ์ค€์ˆ˜ ์‘๋‹ต์„ ๋ณด์žฅํ•˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ
result = agent(
    "์ด ์ œํ’ˆ ์ •๋ง ์ข‹์•„์š”! ๋ฐฐ์†ก๋„ ๋น ๋ฅด๊ณ  ํ’ˆ์งˆ๋„ ์ตœ๊ณ ",
    structured_output_model=ReviewResult,
)
# โ‘ข ํŒŒ์‹ฑ ์—†์ด ํƒ€์ž…์ด ๋ณด์žฅ๋œ ๊ฐ์ฒด๋กœ ๋ฐ”๋กœ ์‚ฌ์šฉ
print(result.structured_output)
# ReviewResult(sentiment='positive', confidence=0.95, ...)
  • BaseModel โ€” ์ถœ๋ ฅ ๊ตฌ์กฐ๋ฅผ Pydantic ์Šคํ‚ค๋งˆ๋กœ ์„ ์–ธ
  • structured_output_model โ€” ์Šคํ‚ค๋งˆ ์ค€์ˆ˜ ์‘๋‹ต์„ ๋ณด์žฅํ•˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ
  • result.structured_output โ€” ํŒŒ์‹ฑ ์—†์ด ํƒ€์ž…์ด ๋ณด์žฅ๋œ ๊ฐ์ฒด๋กœ ๋ฐ”๋กœ ์‚ฌ์šฉ, ํŒŒ์‹ฑ ์‹คํŒจ ์ œ๊ฑฐ โ†’ ๋‹ค์šด์ŠคํŠธ๋ฆผ ์ž๋™ํ™” ์—ฐ๊ฒฐ
PART 4 ยท ๊ณ ๊ธ‰ ๊ธฐ๋ฒ•

Prompt Chaining

๋ณต์žกํ•œ ์ž‘์—…์˜ ๋‹จ๊ณ„๋ณ„ ๋ถ„ํ•ด โ€” ์ž‘๊ณ  ๊ฒ€์ฆ ๊ฐ€๋Šฅํ•œ ๋‹จ๊ณ„๋“ค์˜ ์‚ฌ์Šฌ

๋‹จ์ผ ํ”„๋กฌํ”„ํŠธ

ํ•œ ๋ฒˆ์— ๋ชจ๋“  ๊ฒƒ

  • ํ•œ ๋ฒˆ์— ๋ชจ๋“  ๊ฒƒ์„ ์š”๊ตฌ
  • "๋ฌธ์„œ ์ฝ๊ณ , ์š”์•ฝํ•˜๊ณ , ๋ฒˆ์—ญํ•˜๊ณ , ์ด๋ฉ”์ผ ์ž‘์„ฑํ•ด"
  • ์ค‘๊ฐ„ ์‹คํŒจ ์‹œ ์ „์ฒด ์žฌ์‹œ์ž‘
  • ๋””๋ฒ„๊น… ๋ถˆ๊ฐ€๋Šฅ

์ค‘๊ฐ„ ๋‹จ๊ณ„๊ฐ€ ๋ณด์ด์ง€ ์•Š์•„ ์–ด๋””์„œ ์ž˜๋ชป๋๋Š”์ง€ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์‹คํŒจํ•˜๋ฉด ์ „์ฒด๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Chaining

๋‹จ๊ณ„ ๋ถ„ํ•ด + ๊ฒ€์ฆ

  • Step 1: ๋ฌธ์„œ ์š”์•ฝ โ†’ ๊ฒ€์ฆ
  • Step 2: ํ•ต์‹ฌ ํฌ์ธํŠธ ์ถ”์ถœ โ†’ ๊ฒ€์ฆ
  • Step 3: ์ด๋ฉ”์ผ ์ดˆ์•ˆ ์ž‘์„ฑ โ†’ ๊ฒ€์ฆ
  • ๊ฐ ๋‹จ๊ณ„ ๋…๋ฆฝ ์žฌ์‹œ๋„ ๊ฐ€๋Šฅ

๊ฐ ๋‹จ๊ณ„์˜ ์ถœ๋ ฅ์ด ๋‹ค์Œ ๋‹จ๊ณ„์˜ ์ž…๋ ฅ์ด ๋ฉ๋‹ˆ๋‹ค. ๋‹จ๊ณ„๋ณ„๋กœ ๊ฒ€์ฆํ•˜๊ณ , ์‹คํŒจํ•œ ๋‹จ๊ณ„๋งŒ ๋…๋ฆฝ์ ์œผ๋กœ ์žฌ์‹œ๋„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

takeaway

๋ณต์žกํ•œ ์ž‘์—…์ผ์ˆ˜๋ก ์ชผ๊ฐญ๋‹ˆ๋‹ค โ€” ์ž‘๊ณ  ๊ฒ€์ฆ ๊ฐ€๋Šฅํ•œ ๋‹จ๊ณ„์˜ ์‚ฌ์Šฌ์ด ์ „์ฒด ์‹ ๋ขฐ๋„๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

PART 4 ยท ๊ณ ๊ธ‰ ๊ธฐ๋ฒ•

Prompt Chaining ์ฝ”๋“œ

์š”์•ฝ โ†’ ์ถ”์ถœ โ†’ ์ž‘์„ฑ โ€” ์ด์ „ ๋‹จ๊ณ„์˜ ์ถœ๋ ฅ์ด ๋‹ค์Œ ๋‹จ๊ณ„์˜ ์ž…๋ ฅ

python
from strands import Agent

# ๋‹จ์ผ ์ฑ…์ž„ ํ”„๋กฌํ”„ํŠธ๋กœ ์—ญํ• ์„ ๋ถ„๋ฆฌ
summarizer = Agent(model=model, system_prompt="๋ฌธ์„œ๋ฅผ 3๋ฌธ์žฅ์œผ๋กœ ์š”์•ฝํ•ฉ๋‹ˆ๋‹ค.")
extractor = Agent(model=model, system_prompt="ํ•ต์‹ฌ ํฌ์ธํŠธ๋ฅผ 3๊ฐœ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค.")
writer = Agent(model=model, system_prompt="๊ณ ๊ฐ ์•ˆ๋‚ด ์ด๋ฉ”์ผ์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.")

# โ‘  Step 1 โ€” ์š”์•ฝ: ์ถœ๋ ฅ์„ ํ™•์ธยท๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ๋Š” ์ฒซ ๋ฒˆ์งธ ์ง€์ 
summary = str(summarizer(doc))

# โ‘ก Step 2 โ€” ์ด์ „ ๋‹จ๊ณ„์˜ ์ถœ๋ ฅ์ด ๊ทธ๋Œ€๋กœ ๋‹ค์Œ ๋‹จ๊ณ„์˜ ์ž…๋ ฅ
points = str(extractor(summary))

# โ‘ข Step 3 โ€” ์‹คํŒจํ•˜๋ฉด ์ด ๋‹จ๊ณ„๋งŒ ๋…๋ฆฝ ์žฌ์‹œ๋„
email = str(writer(points))
  • ๋‹จ๊ณ„ ๋ถ„ํ•ด โ€” ์š”์•ฝยท์ถ”์ถœยท์ž‘์„ฑ์„ ๋‹จ์ผ ์ฑ…์ž„ ํ”„๋กฌํ”„ํŠธ๋กœ ๋ถ„๋ฆฌ
  • ์ถœ๋ ฅ โ†’ ์ž…๋ ฅ ์—ฐ๊ฒฐ โ€” ๋‹จ๊ณ„ ์‚ฌ์ด๊ฐ€ ๊ณง ๊ฒ€์ฆ ์ง€์ 
  • ๋…๋ฆฝ ์žฌ์‹œ๋„ โ€” ์‹คํŒจํ•œ ๋‹จ๊ณ„๋งŒ ๋‹ค์‹œ ์‹คํ–‰, ์ „์ฒด ์žฌ์‹œ์ž‘ ๋ถˆํ•„์š”
PART 4 ยท ๊ณ ๊ธ‰ ๊ธฐ๋ฒ•

๋„ค๊ฑฐํ‹ฐ๋ธŒ ํ”„๋กฌํ”„ํŒ… โ€” ๋ฒ”์œ„๋ฅผ ์ขํžˆ๋Š” ์ œ์•ฝ

ํ•˜์ง€ ๋ง์•„์•ผ ํ•  ๊ฒƒ์„ ๋ช…์‹œ โ€” System Prompt Rules์˜ ํŒจํ„ด ํ™•์žฅ

๋ฒ”์œ„ ์ œํ•œ

"๋ฒ”์œ„ ๋ฐ– ์งˆ๋ฌธ์€ ๊ฑฐ์ ˆ"
๋‹ค๋ฃจ๋Š” ์ฃผ์ œ์˜ ๊ฒฝ๊ณ„๋ฅผ ์„ ์–ธ

๋ถˆํ™•์‹ค์„ฑ ๊ทœ์น™

"ํ™•์‹คํ•˜์ง€ ์•Š์œผ๋ฉด ๋ชจ๋ฅธ๋‹ค๊ณ  ๋‹ต๋ณ€"
์ถ”์ธก ๋Œ€์‹  ์ •์งํ•œ ํ•œ๊ณ„ ์„ ์–ธ

์ƒ์„ฑ ๊ธˆ์ง€ ๋ชฉ๋ก

"์™ธ๋ถ€ URL์„ ์ƒ์„ฑํ•˜์ง€ ๋งˆ๋ผ"
์ง€์–ด๋‚ด๊ธฐ ์‰ฌ์šด ์ถœ๋ ฅ์˜ ์›์ฒœ ์ฐจ๋‹จ

takeaway

System Prompt์˜ Rules(PART 2)๋ฅผ ํŒจํ„ด์œผ๋กœ ํ™•์žฅํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค โ€” "ํ•˜์ง€ ๋งˆ"์˜ ์ œ์•ฝ์œผ๋กœ ๋ฒ”์œ„๋ฅผ ์ขํžˆ๋ฉด ํ™˜๊ฐ์ด ์ค„๊ณ  ์ผ๊ด€์„ฑ์ด ์˜ฌ๋ผ๊ฐ‘๋‹ˆ๋‹ค.

์ถ”๋ก  ํŒŒ๋ผ๋ฏธํ„ฐ

Temperature ยท Top-P ยท Top-K ยท Max Tokens ยท Stop Sequences

PART 5 ยท ์ถ”๋ก  ํŒŒ๋ผ๋ฏธํ„ฐ

์ถ”๋ก  ํŒŒ๋ผ๋ฏธํ„ฐ

๋ฌด์—‡์„ ์ƒ์„ฑํ• ์ง€๋Š” ํ”„๋กฌํ”„ํŠธ๊ฐ€, ์–ด๋–ป๊ฒŒ ์ƒ์„ฑํ• ์ง€๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€

ํ’ˆ์งˆ์€ ํ”„๋กฌํ”„ํŠธ๋กœ, ์ƒ์„ฑ ๋ฐฉ์‹์€ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ

genai-basics์—์„œ ๋ณธ ์ถ”๋ก  ํŒŒ์ดํ”„๋ผ์ธ์˜ โ‘ค ํ™•๋ฅ  ยท โ‘ฅ ์ƒ˜ํ”Œ๋ง ยท โ‘ฆ ์ข…๋ฃŒ๋ฅผ ์กฐ์ ˆํ•˜๋Š” ์†์žก์ด ๋‹ค์„ฏ ๊ฐœ์ž…๋‹ˆ๋‹ค.

  • Temperature โ€” โ‘ค ๋ถ„ํฌ์˜ ๋พฐ์กฑํ•จ
  • Top-P โ€” โ‘ฅ ๋ˆ„์  ํ™•๋ฅ  ์ปท
  • Top-K โ€” โ‘ฅ ์ƒ์œ„ K๊ฐœ ์ปท
  • Max Tokens โ€” โ‘ฆ ๊ธธ์ด ์ƒํ•œ
  • Stop Sequences โ€” โ‘ฆ ์ค‘๋‹จ ๋ฌธ์ž์—ด
takeaway

๋‹ค์„ฏ ์†์žก์ด ์ค‘ ๋„ค ๊ฐœ๋Š” Converse inferenceConfig ๊ธฐ๋ณธ ์„ธํŠธ(temperature ยท topP ยท maxTokens ยท stopSequences)์ด๊ณ , Top-K๋Š” ๋ชจ๋ธ ๋„ค์ดํ‹ฐ๋ธŒ ํŒŒ๋ผ๋ฏธํ„ฐ์ž…๋‹ˆ๋‹ค.

PART 5 ยท ์ถ”๋ก  ํŒŒ๋ผ๋ฏธํ„ฐ

Temperature โ€” ๋ถ„ํฌ์˜ ๋พฐ์กฑํ•จ

๊ฐ™์€ ํ›„๋ณด, ๋‹ค๋ฅธ ์†์žก์ด โ€” ๋‚ฎ์œผ๋ฉด ๊ฒฐ์ •์ , ๋†’์œผ๋ฉด ๋‹ค์–‘ (๋ถ„ํฌ ์ˆ˜์น˜๋Š” ์˜ˆ์‹œ)




"์ด ๊ตฌ์„ฑ์˜ ์ฃผ์š” ์œ„ํ—˜์€ ___" ๋‹ค์Œ ํ† ํฐ ํ›„๋ณด
๊ฐ€์šฉ์„ฑ ยท ๋ณด์•ˆ ยท ๋น„์šฉ ยท ์ง€์—ฐ
๋ฒ”์œ„ 0~1 โ€” Converse ์Šคํ‚ค๋งˆ



temperature โ‰ˆ 0์ฒจ์˜ˆ โ€” ๊ฒฐ์ •์ 


๊ฐ€์šฉ์„ฑ
0.88

๋ณด์•ˆ
0.08

๋น„์šฉ
0.03

์ง€์—ฐ
0.01


โ†’ ์‹คํ–‰ํ•  ๋•Œ๋งˆ๋‹ค ๊ฐ™์€ ๋‹ต โ€” ์žฌํ˜„์ด ์ค‘์š”ํ•œ ํƒœ์Šคํฌ



temperature โ‰ˆ 1ํ‰ํƒ„ โ€” ๋‹ค์–‘


๊ฐ€์šฉ์„ฑ
0.38

๋ณด์•ˆ
0.28

๋น„์šฉ
0.20

์ง€์—ฐ
0.14


โ†’ ์‹คํ–‰๋งˆ๋‹ค ๋‹ค๋ฅธ ๋‹ต โ€” ๋‹ค์–‘์„ฑ์ด ํ•„์š”ํ•œ ํƒœ์Šคํฌ




ํƒœ์Šคํฌ๋ณ„ ๊ถŒ์žฅ
์ถ”์ถœ ยท ๋ถ„๋ฅ˜ ยท ์ฝ”๋“œ 0
RAG ์งˆ์˜์‘๋‹ต 0~0.3
์š”์•ฝ ยท ๋ฒˆ์—ญ 0.2~0.5
๋Œ€ํ™” โ‰ˆ0.7
์ฐฝ์ž‘ 0.9~1.0


takeaway

์–ด๋А ์ชฝ์œผ๋กœ ๋Œ๋ฆด์ง€๋Š” ํƒœ์Šคํฌ๊ฐ€ ์ •ํ•ฉ๋‹ˆ๋‹ค โ€” ์žฌํ˜„์ด ์ค‘์š”ํ•˜๋ฉด 0์œผ๋กœ, ๋‹ค์–‘์„ฑ์ด ์ค‘์š”ํ•˜๋ฉด 0.9 ์ด์ƒ์œผ๋กœ, ๋Œ€ํ™”๋Š” 0.7 ๋ถ€๊ทผ์ด ๊ท ํ˜•์ ์ž…๋‹ˆ๋‹ค.

PART 5 ยท ์ถ”๋ก  ํŒŒ๋ผ๋ฏธํ„ฐ

Top-P โ€” ๋ˆ„์  ํ™•๋ฅ  ์ปท

ํ™•๋ฅ  ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์Œ“๋‹ค๊ฐ€ ๋ˆ„์  p์—์„œ ์ž๋ฅด๋Š” ๋ฐฉ์‹ โ€” ๋‚จ์€ ํ›„๋ณด ์•ˆ์—์„œ๋งŒ ์ถ”์ฒจ (์ˆ˜์น˜๋Š” ์˜ˆ์‹œ)




ํ™•๋ฅ  ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ ํ›„ ๋ˆ„์  ํ•ฉ์‚ฐ
topP = 0.9
๋ฒ”์œ„ 0~1 ยท ์ฐฝ์ž‘ ํ”„๋ฆฌ์…‹ 0.95


๊ฐ€์šฉ์„ฑ
0.46 โ†’ ๋ˆ„์  0.46 โœ“

๋ณด์•ˆ
0.27 โ†’ ๋ˆ„์  0.73 โœ“

๋น„์šฉ
0.17 โ†’ ๋ˆ„์  0.90 โœ“ ์ปท

topP 0.9 ์ปท๋ผ์ธ

์ง€์—ฐ
0.10 โ†’ โœ• ์ œ์™ธ โ€” ๋ˆ„์  90% ๋ฐ–



๋‚จ์€ ํ›„๋ณด 3๊ฐœ ์ค‘ ํ™•๋ฅ  ๋น„์œจ๋กœ ์ถ”์ฒจ
โ€” ๋ถ„ํฌ๊ฐ€ ๋พฐ์กฑํ•˜๋ฉด ํ›„๋ณด๊ฐ€ ์ค„๊ณ , ํ‰ํƒ„ํ•˜๋ฉด ๋Š˜์–ด๋‚˜๋Š” ๊ฐ€๋ณ€ ์ปท


takeaway

์ปท์˜ ๊ธฐ์ค€์€ ๊ฐœ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ ๋ˆ„์  ํ™•๋ฅ ์ž…๋‹ˆ๋‹ค โ€” Temperature์™€ ํ•จ๊ป˜ ์กฐ์ ˆํ•˜๋˜, ๋‘˜์„ ๋™์‹œ์— ๊ทน๋‹จ์œผ๋กœ ์˜ฌ๋ฆฌ์ง€ ์•Š๋Š” ๊ฒƒ์ด ์•ˆ์ „ํ•œ ๊ธฐ๋ณธ๊ธฐ์ž…๋‹ˆ๋‹ค.

PART 5 ยท ์ถ”๋ก  ํŒŒ๋ผ๋ฏธํ„ฐ

Top-K โ€” ์ƒ์œ„ K๊ฐœ ์ปท

ํ™•๋ฅ ๊ณผ ๋ฌด๊ด€ํ•˜๊ฒŒ ์ƒ์œ„ K๊ฐœ๋งŒ ๋‚จ๊ธฐ๋Š” ๊ณ ์ • ์ปท โ€” Top-P์™€์˜ ์ฐจ์ด๋Š” ์ž๋ฅด๋Š” ๊ธฐ์ค€ (์ˆ˜์น˜๋Š” ์˜ˆ์‹œ)





๊ฐ™์€ ๋ถ„ํฌ์— ๊ฐœ์ˆ˜ ์ปท ์ ์šฉ
topK = 2


1์œ„ ๊ฐ€์šฉ์„ฑ 0.46
2์œ„ ๋ณด์•ˆ 0.27

3์œ„ ๋น„์šฉ 0.17
4์œ„ ์ง€์—ฐ 0.10
โ†’
์ƒ์œ„ 2๊ฐœ ์ค‘ ์ถ”์ฒจ

ํ™•๋ฅ  0.17์ด์–ด๋„ 3์œ„๋ฉด ํƒˆ๋ฝ โ€” ๋ถ„ํฌ๊ฐ€ ๋พฐ์กฑํ•˜๋“  ํ‰ํƒ„ํ•˜๋“  ํ›„๋ณด ์ˆ˜๊ฐ€ K๊ฐœ๋กœ ๊ณ ์ •๋ฉ๋‹ˆ๋‹ค.



Top-K โ€” ๊ฐœ์ˆ˜๋กœ ์ž๋ฆ„
ํ›„๋ณด ์ˆ˜ ๊ณ ์ • K๊ฐœ โ€” ๋ถ„ํฌ ๋ชจ์–‘๊ณผ ๋ฌด๊ด€ํ•˜๊ฒŒ ๊ฒฝ์ง

Top-P โ€” ๋ˆ„์  ํ™•๋ฅ ๋กœ ์ž๋ฆ„
ํ›„๋ณด ์ˆ˜ ๊ฐ€๋ณ€ โ€” ๋ถ„ํฌ๋ฅผ ๋”ฐ๋ผ ๋„“์–ด์ง€๊ณ  ์ข์•„์ง



์ฃผ์˜
Converse inferenceConfig ๊ธฐ๋ณธ ์„ธํŠธ(maxTokens ยท stopSequences ยท temperature ยท topP)์— Top-K๋Š” ์—†์Œ โ€” additionalModelRequestFields๋กœ ์ „๋‹ฌํ•˜๋Š” ๋ชจ๋ธ ๋„ค์ดํ‹ฐ๋ธŒ ํŒŒ๋ผ๋ฏธํ„ฐ (์˜ˆ: Anthropic top_k)


takeaway

๊ฐ™์€ "ํ›„๋ณด ์ž๋ฅด๊ธฐ"๋ผ๋„ Top-K๋Š” ๊ฐœ์ˆ˜ ๊ณ ์ •, Top-P๋Š” ๋ˆ„์  ํ™•๋ฅ  ๊ฐ€๋ณ€์ž…๋‹ˆ๋‹ค โ€” Converse์—์„œ๋Š” ๊ธฐ๋ณธ ์„ธํŠธ๊ฐ€ ์•„๋‹ˆ๋ผ additionalModelRequestFields๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

PART 5 ยท ์ถ”๋ก  ํŒŒ๋ผ๋ฏธํ„ฐ

Max Tokens โ€” ์ถœ๋ ฅ ๊ธธ์ด ์ƒํ•œ

์ƒํ•œ์— ๋‹ฟ์œผ๋ฉด ๋ฌธ์žฅ ์ค‘๊ฐ„์ด๋ผ๋„ ๋Š๊น€ โ€” ์ถœ๋ ฅ ํ† ํฐ ๊ณผ๊ธˆ์ด๋ฏ€๋กœ ๊ธธ์ด ์ƒํ•œ์ด ๊ณง ๋น„์šฉ ์ƒํ•œ





maxTokens ์ถฉ๋ถ„stopReason: "end_turn"

1. ๋ฐฐ์ƒ ํ•œ๋„: 5,000๋งŒ์›
2. ์ง€๊ธ‰ ๊ธฐํ•œ: 30์ผ ์ด๋‚ด
3. ์œ„์•ฝ๊ธˆ: ๊ณ„์•ฝ๊ธˆ์˜ 10%

โ†’ ๋ชจ๋ธ์ด ์Šค์Šค๋กœ ์‘๋‹ต์„ ์™„๊ฒฐ ์ง“๊ณ  ์ข…๋ฃŒ



maxTokens ๋ถ€์กฑstopReason: "max_tokens"

1. ๋ฐฐ์ƒ ํ•œ๋„: 5,000๋งŒ์›
2. ์ง€๊ธ‰ ๊ธฐํ•œ: 30์ผ ์ดโ–
โ”€ ์ƒํ•œ ๋„๋‹ฌ ยท ์—ฌ๊ธฐ์„œ ์ ˆ๋‹จ โ”€

โ†’ ๋ฌธ์žฅ ์ค‘๊ฐ„์ด๋ผ๋„ ์ฆ‰์‹œ ์ค‘๋‹จ โ€” ์˜ค๋ฅ˜๊ฐ€ ์•„๋‹ˆ๋ผ ์„ค๊ณ„๋œ ๋™์ž‘




๋น„์šฉ ๊ด€์ 
์ถœ๋ ฅ ํ† ํฐ ร— ๋‹จ๊ฐ€ = ์‘๋‹ต ๋น„์šฉ
โ†’
maxTokens = ์‘๋‹ต ํ•˜๋‚˜์˜ ์ง€์ถœ ์ƒํ•œ์„ 


takeaway

์‘๋‹ต์˜ stopReason์ด "max_tokens"๋ฉด ์ƒํ•œ์— ๋‹ฟ์•„ ์ž˜๋ฆฐ ๊ฒƒ์ž…๋‹ˆ๋‹ค โ€” ํ•„์š” ๊ธธ์ด์— ์—ฌ์œ ๋ฅผ ๋”ํ•ด ์ƒํ•œ์„ ์žก๋˜, ๋ฌดํ•œ์ • ์—ด์–ด ๋‘์ง€ ์•Š๋Š” ๊ฒƒ์ด ๋น„์šฉ ์•ˆ์ „์žฅ์น˜์ž…๋‹ˆ๋‹ค.

PART 5 ยท ์ถ”๋ก  ํŒŒ๋ผ๋ฏธํ„ฐ

Stop Sequences โ€” ์ค‘๋‹จ ๋ฌธ์ž์—ด

์ง€์ •ํ•œ ๋ฌธ์ž์—ด์ด ์ƒ์„ฑ ์ŠคํŠธ๋ฆผ์— ๋“ฑ์žฅํ•˜๋Š” ์ˆœ๊ฐ„ ์ฆ‰์‹œ ์ข…๋ฃŒ โ€” ๋๋‚˜๋Š” ์ง€์ ์„ ์˜ˆ์•ฝํ•˜๋Š” ์†์žก์ด




์ƒ์„ฑ ์ŠคํŠธ๋ฆผ
stopSequences: ["๋."]


1. ๋ฐฐ์ƒ ํ•œ๋„: 5,000๋งŒ์›
โ†’
2. ์ง€๊ธ‰ ๊ธฐํ•œ: 30์ผ ์ด๋‚ด
โ†’
๋.
์ฆ‰์‹œ ์ข…๋ฃŒ
stopReason: "stop_sequence"


์ด ์™ธ์— ์ฐธ๊ณ ํ•  ์ ์€โ€ฆ
์ถ”๊ฐ€ ์„ค๋ช… โ€ฆ
โœ• ์ƒ์„ฑ๋˜์ง€ ์•Š์Œ โ€” ๋ถˆํ•„์š”ํ•œ ๊ผฌ๋ฆฌ๊ฐ€ ์ž˜๋ฆผ


์“ฐ์ž„์ƒˆ
๋ชฉ๋ก์˜ ๋ ํ‘œ์‹œ
ํ„ด์˜ ๊ฒฝ๊ณ„ ๊ฐ•์ œ
์ถœ๋ ฅ ํ˜•์‹ ๊ณ ์ •


takeaway

๋ชจ๋ธ์ด ์Šค์Šค๋กœ ๋ฉˆ์ถ”๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ๋๋‚˜๋Š” ์ง€์ ์„ ๋ฌธ์ž์—ด๋กœ ์˜ˆ์•ฝํ•ฉ๋‹ˆ๋‹ค โ€” ๋ชฉ๋ก์˜ ๋, ํ„ด์˜ ๊ฒฝ๊ณ„์ฒ˜๋Ÿผ ์ถœ๋ ฅ ํ˜•์‹์„ ๊ฐ•์ œํ•˜๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

PART 5 ยท ์ถ”๋ก  ํŒŒ๋ผ๋ฏธํ„ฐ

inferenceConfig โ€” Bedrock์—์„œ ์ง€์ •ํ•˜๊ธฐ

Converse API ํ˜ธ์ถœ ํ•œ ๋ฒˆ์— ํ•จ๊ป˜ ๋“ค์–ด๊ฐ€๋Š” ํ”„๋กฌํ”„ํŠธ์™€ ํŒŒ๋ผ๋ฏธํ„ฐ

python
import boto3

client = boto3.client("bedrock-runtime", region_name="us-east-1")

response = client.converse(
    modelId="us.anthropic.claude-sonnet-4-6",
    system=[{"text": "๊ณ„์•ฝ์„œ์—์„œ ๊ธˆ์•ก ์กฐํ•ญ๋งŒ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค."}],
    messages=[{"role": "user", "content": [{"text": contract}]}],
    # โ‘  ๊ธฐ๋ณธ ์„ธํŠธ 4์ข…์€ inferenceConfig ํ•˜๋‚˜์— ๋ชจ์•„์„œ
    inferenceConfig={
        "temperature": 0,        # โ‘ก ์ถ”์ถœ ํƒœ์Šคํฌ โ€” ์žฌํ˜„ ๊ฐ€๋Šฅ์„ฑ ์šฐ์„ 
        "maxTokens": 1024,       # โ‘ข ์ถœ๋ ฅ ๊ธธ์ด ์ƒํ•œ = ๋น„์šฉ ์ƒํ•œ
        "stopSequences": ["๋."],
    },
    # โ‘ฃ Top-K ๋“ฑ ๊ธฐ๋ณธ ์„ธํŠธ ๋ฐ– ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ๋ชจ๋ธ ๋„ค์ดํ‹ฐ๋ธŒ ํ•„๋“œ๋กœ
    # additionalModelRequestFields={"top_k": 50},
)

print(response["output"]["message"]["content"][0]["text"])
  • inferenceConfig โ€” temperature ยท topP ยท maxTokens ยท stopSequences ๊ธฐ๋ณธ ์„ธํŠธ๋ฅผ ํ•œ ๊ฐ์ฒด๋กœ ์ „๋‹ฌ
  • temperature 0 โ€” ์ถ”์ถœ ํƒœ์Šคํฌ ๊ถŒ์žฅ, ๊ฐ™์€ ์ž…๋ ฅ์ด๋ฉด ํ•ญ์ƒ ๊ฐ™์€ ์ถœ๋ ฅ
  • maxTokens ยท stopSequences โ€” ๊ธธ์ด ์ƒํ•œ(๋น„์šฉ ์ƒํ•œ)๊ณผ ์ค‘๋‹จ ๋ฌธ์ž์—ด๋กœ ์ข…๋ฃŒ ์ง€์ ์„ ์ด์ค‘์œผ๋กœ ์˜ˆ์•ฝ
  • additionalModelRequestFields โ€” Top-K์ฒ˜๋Ÿผ ๊ธฐ๋ณธ ์„ธํŠธ์— ์—†๋Š” ๋ชจ๋ธ ๋„ค์ดํ‹ฐ๋ธŒ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ์ „๋‹ฌ ๊ฒฝ๋กœ
PART 5 ยท ์ถ”๋ก  ํŒŒ๋ผ๋ฏธํ„ฐ

๋‹ค์Œ ๋‹จ๊ณ„: ์ปจํ…์ŠคํŠธ ์—”์ง€๋‹ˆ์–ด๋ง

ํ”„๋กฌํ”„ํŠธ์™€ ํŒŒ๋ผ๋ฏธํ„ฐ๋งŒ์œผ๋กœ ๋ถ€์กฑํ•  ๋•Œ โ€” "๋ฌด์—‡์„ ๋„ฃ์„ ๊ฒƒ์ธ๊ฐ€"๋กœ ๋„“ํžˆ๋Š” ์‹œ์•ผ

ํ”„๋กฌํ”„ํŠธ๋Š” ์‹œ์ž‘์ผ ๋ฟ

ํ”„๋กฌํ”„ํŠธ ๊ธฐ๋ฒ•์„ ๋งˆ์Šคํ„ฐํ–ˆ๋‹ค๋ฉด, ๋‹ค์Œ์€ "๋ชจ๋ธ์— ๋ฌด์—‡์„ ๋ณด์—ฌ์ค„ ๊ฒƒ์ธ๊ฐ€"๋ฅผ ์„ค๊ณ„ํ•˜๋Š” ์ปจํ…์ŠคํŠธ ์—”์ง€๋‹ˆ์–ด๋ง์ž…๋‹ˆ๋‹ค โ€” ๋Š˜์–ด๋‚œ ํ”„๋กฌํ”„ํŠธ์˜ ๋ฒ„์ „ยท๋น„๊ตยท๋ฐฐํฌ๋Š” Prompt Management ๋ชจ๋“ˆ์—์„œ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

  • RAG
  • Memory
  • Tool Results
  • Compression
  • Ordering
takeaway

"์–ด๋–ป๊ฒŒ ์“ธ๊นŒ"์˜ ๋‹ค์Œ ์งˆ๋ฌธ์€ "๋ฌด์—‡์„ ๋ณด์—ฌ์ค„๊นŒ"์ž…๋‹ˆ๋‹ค โ€” ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผยท๋ฉ”๋ชจ๋ฆฌยท๋„๊ตฌ ๊ฒฐ๊ณผ๊นŒ์ง€ ํฌํ•จํ•œ ์ž…๋ ฅ ์ „์ฒด์˜ ์„ค๊ณ„๋กœ ์ด์–ด์ง‘๋‹ˆ๋‹ค.

์ž˜ ์“ด ํ”„๋กฌํ”„ํŠธ ํ•˜๋‚˜๊ฐ€ ์ฝ”๋“œ ๋ฐฑ ์ค„์„ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋กฌํ”„ํŠธ โ†’ ์ปจํ…์ŠคํŠธ โ†’ ํ•˜๋„ค์Šค๋กœ ์ด์–ด์ง€๋Š” ์—”์ง€๋‹ˆ์–ด๋ง์˜ ์ฒซ ๋‹จ๊ณ„.