Home / Prompt Management / ๐ŸŽฏ Prompt Management
Module

๐ŸŽฏ Prompt Management

์ž์‚ฐํ™” ยท ๋ฒ„์ „ ยท Variant ๋น„๊ต ยท Optimization ยท ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

โฑ 60๋ถ„ 12 / 189

Prompt Management

์ž์‚ฐํ™” ยท ๋ฒ„์ „ ยท Variant ๋น„๊ต ยท Optimization ยท ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

ํ”„๋กฌํ”„ํŠธ๋„ ์ฝ”๋“œ์ฒ˜๋Ÿผ

Bedrock Prompt Management โ€” ์ž‘์„ฑ ยท ๋ฒ„์ „ ยท ํ‰๊ฐ€ ยท ๋ฐฐํฌ์˜ ์ˆ˜๋ช…์ฃผ๊ธฐ

์™œ ํ”„๋กฌํ”„ํŠธ ๊ด€๋ฆฌ์ธ๊ฐ€

ํ•˜๋“œ์ฝ”๋”ฉ์˜ ํ•œ๊ณ„ ยท ์ž์‚ฐํ™” ยท ์ˆ˜๋ช…์ฃผ๊ธฐ

PART 1 ยท ์™œ ํ”„๋กฌํ”„ํŠธ ๊ด€๋ฆฌ์ธ๊ฐ€

์™œ ํ”„๋กฌํ”„ํŠธ ๊ด€๋ฆฌ์ธ๊ฐ€

์ฝ”๋“œ์— ๋ฐ•ํžŒ ๋ฌธ์ž์—ด์—์„œ ๋ฒ„์ „ ์žˆ๋Š” ์ž์‚ฐ์œผ๋กœ

ํ”„๋กฌํ”„ํŠธ๋„ ์ฝ”๋“œ์ฒ˜๋Ÿผ

๊ธฐ๋ฒ•์œผ๋กœ ์ž˜ ๋งŒ๋“  ํ”„๋กฌํ”„ํŠธ๋„ ํ•˜๋“œ์ฝ”๋”ฉ๋œ ์ฑ„๋กœ๋Š” ๊ด€๋ฆฌํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค โ€” Bedrock Prompt Management๊ฐ€ ์ˆ˜๋ช…์ฃผ๊ธฐ๋ฅผ ๋งก์Šต๋‹ˆ๋‹ค.

  • ํ•˜๋“œ์ฝ”๋”ฉ โ€” ์ˆ˜์ •๋งˆ๋‹ค ์ฝ”๋“œ ๋ฐฐํฌ
  • ์ž์‚ฐํ™” โ€” ARN ์žˆ๋Š” Bedrock ๋ฆฌ์†Œ์Šค
  • ์ˆ˜๋ช…์ฃผ๊ธฐ โ€” ์ž‘์„ฑ โ†’ ๋ฒ„์ „ โ†’ ํ‰๊ฐ€ โ†’ ๋ฐฐํฌ
  • ๊ฑฐ๋ฒ„๋„Œ์Šค โ€” ์ž‘์„ฑยท๊ฒ€ํ† ยท๋ฐฐํฌ ์—ญํ•  ๋ถ„๋ฆฌ
takeaway

ํ”„๋กฌํ”„ํŠธ๊ฐ€ ์ž์‚ฐ์ด ๋˜๋Š” ์ˆœ๊ฐ„ ๋ฒ„์ „ ๊ด€๋ฆฌยทํ…Œ์ŠคํŠธยท๋ฐฐํฌ๊ฐ€ ํ•„์š”ํ•ด์ง‘๋‹ˆ๋‹ค โ€” ์ฝ”๋“œ์— ํ”„๋กฌํ”„ํŠธ๋ฅผ ํ•˜๋“œ์ฝ”๋”ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

PART 1 ยท ์™œ ํ”„๋กฌํ”„ํŠธ ๊ด€๋ฆฌ์ธ๊ฐ€

ํ•˜๋“œ์ฝ”๋”ฉ์ด ๋ถ€๋”ชํžˆ๋Š” ๋ฒฝ

ํ”„๋กฌํ”„ํŠธ๊ฐ€ ์ˆ˜์‹ญ ๊ฐœ๊ฐ€ ๋˜๋Š” ์ˆœ๊ฐ„ ๋ฌธ์ž์—ด ์ƒ์ˆ˜๋กœ๋Š” ๊ฐ๋‹น ๋ถˆ๊ฐ€

์ฝ”๋“œ ์† ๋ฌธ์ž์—ด Bedrock ํ”„๋กฌํ”„ํŠธ ๋ฆฌ์†Œ์Šค
๋ฌธ๊ตฌ ํ•˜๋‚˜ ๊ณ ์น˜๋ ค๋ฉด ์ฝ”๋“œ ์ˆ˜์ • โ†’ ๋ฆฌ๋ทฐ โ†’ ๋ฐฐํฌ ์ฝ˜์†”์—์„œ ์ˆ˜์ • โ†’ Version ๋ฐœํ–‰ โ€” ์ฝ”๋“œ๋Š” ๊ทธ๋Œ€๋กœ
๋ˆ„๊ฐ€ ์–ธ์ œ ๋ฌด์—‡์„ ๋ฐ”๊ฟจ๋Š”์ง€ ์ด๋ ฅ ์—†์Œ ๋ถˆ๋ณ€ ๋ฒ„์ „ ์Šค๋ƒ…์ƒท โ€” ์ด๋ ฅ ์กฐํšŒ์™€ ์ฆ‰์‹œ ๋กค๋ฐฑ
๋„๋ฉ”์ธ ์ „๋ฌธ๊ฐ€๋Š” ์ฝ”๋“œ๋ฅผ ๋ชป ๊ณ ์ณ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์š”์ฒญ IAM์œผ๋กœ ์ž‘์„ฑยท๊ฒ€ํ† ยท๋ฐฐํฌ ๊ถŒํ•œ์„ ์—ญํ• ๋ณ„ ๋ถ„๋ฆฌ
์–ด๋А ๋ฌธ๊ตฌ๊ฐ€ ๋” ๋‚˜์€์ง€ ๊ฐ์œผ๋กœ ํŒ๋‹จ Variant ๋น„๊ต์™€ ํ‰๊ฐ€ ์žก์œผ๋กœ ์ˆซ์ž๋กœ ํŒ๋‹จ
takeaway

๊ธฐ๋ฒ•(prompt-engineering)์ด ํ’ˆ์งˆ์„ ๋งŒ๋“ค๊ณ , ๊ด€๋ฆฌ(Prompt Management)๊ฐ€ ๊ทธ ํ’ˆ์งˆ์„ ์œ ์ง€ยท๊ฐœ์„  ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

PART 1 ยท ์™œ ํ”„๋กฌํ”„ํŠธ ๊ด€๋ฆฌ์ธ๊ฐ€

Prompt Management ์›Œํฌํ”Œ๋กœ์šฐ

์ž‘์„ฑ โ†’ ๋ฒ„์ „ โ†’ ํ‰๊ฐ€ โ†’ ๋ฐฐํฌ โ€” ํ”„๋กฌํ”„ํŠธ๋ฅผ ์ฝ”๋“œ์ฒ˜๋Ÿผ ๋‹ค๋ฃจ๋Š” ์ˆ˜๋ช…์ฃผ๊ธฐ

  1. 1
    ์ž‘์„ฑ

    โ€ข Bedrock ์ฝ˜์†” Prompt Builder์—์„œ ํ”„๋กฌํ”„ํŠธ ์ž‘์„ฑ
    โ€ข ๋ณ€์ˆ˜ ํ…œํ”Œ๋ฆฟ {{variable}}์œผ๋กœ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ตฌ์กฐ
    โ€ข ๋ชจ๋ธ ์„ ํƒ + inferenceConfig ์„ค์ •

  2. 2
    ๋ฒ„์ „

    โ€ข Save draft โ†’ Create version์œผ๋กœ ๋ฒ„์ „ ๋ฐœํ–‰
    โ€ข ๊ฐ ๋ฒ„์ „์€ ๋ถˆ๋ณ€ ์Šค๋ƒ…์ƒท โ€” ๋กค๋ฐฑ ๊ฐ€๋Šฅ
    โ€ข ARN์œผ๋กœ ์ฝ”๋“œ์—์„œ ์ง์ ‘ ์ฐธ์กฐ

  3. 3
    ํ‰๊ฐ€

    โ€ข Compare variants๋กœ ์ตœ๋Œ€ 3๊ฐœ ๋ณ€ํ˜• ๋น„๊ต
    โ€ข Advanced Prompt Optimization์œผ๋กœ ์ž๋™ ํ‰๊ฐ€
    โ€ข Steering criteria ๋˜๋Š” LLM-as-judge ๋ฃจ๋ธŒ๋ฆญ

  4. 4
    ๋ฐฐํฌ

    โ€ข Converse API์— prompt ARN ์ „๋‹ฌ
    โ€ข promptVariables๋กœ ๋Ÿฐํƒ€์ž„ ๋ณ€์ˆ˜ ์ฃผ์ž…
    โ€ข ์ฝ”๋“œ ๋ณ€๊ฒฝ ์—†์ด ํ”„๋กฌํ”„ํŠธ๋งŒ ์—…๋ฐ์ดํŠธ

takeaway

๊ฐ ๋ฒ„์ „์€ ๋ถˆ๋ณ€์ด๊ณ  ARN์œผ๋กœ ์ฐธ์กฐ๋ฉ๋‹ˆ๋‹ค โ€” ์ฝ”๋“œ ๋ฐฐํฌ ์—†์ด ํ”„๋กฌํ”„ํŠธ๋งŒ ๊ต์ฒดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”„๋กฌํ”„ํŠธ ์ž์‚ฐ ๊ด€๋ฆฌ

Prompt Builder ยท ๋ณ€์ˆ˜ ํ…œํ”Œ๋ฆฟ ยท ๋ถˆ๋ณ€ ๋ฒ„์ „ ยท ARN ๋ฐฐํฌ

PART 2 ยท ํ”„๋กฌํ”„ํŠธ ์ž์‚ฐ ๊ด€๋ฆฌ

ํ”„๋กฌํ”„ํŠธ ์ž์‚ฐ ๊ด€๋ฆฌ

์ž‘์„ฑ ยท ๋ฒ„์ „ ยท ํ˜ธ์ถœ โ€” ์ž์‚ฐ ๊ด€๋ฆฌ์˜ ์‹ค์ œ ๋„๊ตฌ๋“ค

๋งŒ๋“ค๊ณ , ๋ฐœํ–‰ํ•˜๊ณ , ARN์œผ๋กœ ๋ถ€๋ฅธ๋‹ค

create_prompt๋กœ ํ…œํ”Œ๋ฆฟ์„ ๋งŒ๋“ค๊ณ , ๋ฒ„์ „์œผ๋กœ ํ™•์ •ํ•˜๊ณ , Converse์—์„œ ARN์œผ๋กœ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

  • ์ž‘์„ฑ โ€” Prompt Builder + {{variable}} ํ…œํ”Œ๋ฆฟ
  • ๋ฒ„์ „ โ€” ๋ถˆ๋ณ€ ๋ฒ„์ „ ยท ARN ์ฐธ์กฐ
  • ๋น„๊ต โ€” Variant ์ตœ๋Œ€ 3๊ฐœ ๋‚˜๋ž€ํžˆ
  • ๋ฐฐํฌ โ€” ์ฝ”๋“œ ๋ณ€๊ฒฝ ์—†์ด ์—…๋ฐ์ดํŠธ
takeaway

ํ…œํ”Œ๋ฆฟ ยท ๋ฒ„์ „ ยท ๋น„๊ต ยท ARN ํ˜ธ์ถœ โ€” ๋„ค ๋„๊ตฌ๊ฐ€ ์ˆ˜๋ช…์ฃผ๊ธฐ ์ „์ฒด๋ฅผ ๋ฎ์Šต๋‹ˆ๋‹ค.

PART 2 ยท ํ”„๋กฌํ”„ํŠธ ์ž์‚ฐ ๊ด€๋ฆฌ

ํ”„๋กฌํ”„ํŠธ ์ƒ์„ฑ๊ณผ ๋ฒ„์ „ ๋ฐœํ–‰

create_prompt๋กœ ํ…œํ”Œ๋ฆฟ ๋“ฑ๋ก, create_prompt_version์œผ๋กœ ๋ถˆ๋ณ€ ์Šค๋ƒ…์ƒท ํ™•์ •

python
import boto3

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

# โ‘  ํ”„๋กฌํ”„ํŠธ ์ƒ์„ฑ โ€” {{variable}}๋กœ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ…œํ”Œ๋ฆฟ
response = client.create_prompt(
    name="customer-service",
    variants=[{
        "name": "default",
        "modelId": "us.anthropic.claude-sonnet-4-6",
        "templateType": "TEXT",
        "templateConfiguration": {"text": {
            "text": "๋‹น์‹ ์€ {{company_name}} ์ƒ๋‹ด์‚ฌ์ž…๋‹ˆ๋‹ค.\n๊ณ ๊ฐ๋ช…: {{customer_name}}",
            "inputVariables": [{"name": "company_name"}, {"name": "customer_name"}],
        }},
        "inferenceConfiguration": {"text": {"temperature": 0.2, "maxTokens": 1024}},
    }],
)

# โ‘ก ๋ฒ„์ „ ๋ฐœํ–‰ โ€” Draft๋ฅผ ๋ฐฐํฌ ๊ฐ€๋Šฅํ•œ ๋ถˆ๋ณ€ ์Šค๋ƒ…์ƒท์œผ๋กœ ํ™•์ • (1, 2, 3โ€ฆ ์ž๋™ ์ฆ๊ฐ€)
version = client.create_prompt_version(promptIdentifier=response["id"])
  • โ‘  create_prompt โ€” ํด๋ผ์ด์–ธํŠธ๋Š” bedrock-agent. ํ…œํ”Œ๋ฆฟยท๋ชจ๋ธยทinferenceConfiguration์ด variant ํ•˜๋‚˜์— ๋ฌถ์ž„
  • โ‘ก create_prompt_version โ€” ๋ฒ„์ „์€ ๋ถˆ๋ณ€ ์Šค๋ƒ…์ƒท, ๋ฒˆํ˜ธ๋Š” ์ •์ˆ˜ ์ž๋™ ์ฆ๊ฐ€ โ€” ๋กค๋ฐฑ์€ ๋ฒˆํ˜ธ๋ฅผ ๋˜๋Œ๋ฆฌ๋Š” ๊ฒƒ
takeaway

Draft๋Š” ๊ณ„์† ๊ณ ์น˜๊ณ , ๋ฐฐํฌ๋Š” ๋ฒ„์ „์œผ๋กœ๋งŒ ํ•ฉ๋‹ˆ๋‹ค โ€” ๋ฒ„์ „์ด ๋ถˆ๋ณ€์ด์–ด์•ผ ๋กค๋ฐฑ์ด ์„ฑ๋ฆฝํ•ฉ๋‹ˆ๋‹ค.

PART 2 ยท ํ”„๋กฌํ”„ํŠธ ์ž์‚ฐ ๊ด€๋ฆฌ

๋ณ€์ˆ˜ํ™” vs Variant โ€” ์žฌ์‚ฌ์šฉ์˜ ๋‘ ์ถ•

๋ณ€์ˆ˜ํ™”๋Š” "๋ˆ„๊ตฌ์—๊ฒŒ ์“ธ์ง€", Variant๋Š” "์–ด๋–ป๊ฒŒ ์ƒ์„ฑํ• ์ง€"

๋ณ€์ˆ˜ํ™” โ€” {{variable}}

ํ•˜๋‚˜์˜ ํ…œํ”Œ๋ฆฟ์„ ์—ฌ๋Ÿฌ ์ƒํ™ฉ์—

  • ๊ณ ์ • ๋ถ€๋ถ„(์—ญํ• ยท๊ทœ์น™ยทํ†ค)๊ณผ ๋™์  ๋ถ€๋ถ„(๊ณ ๊ฐ๋ช…ยท์ด๋ ฅ) ๋ถ„๋ฆฌ
  • ๊ฐ’์€ ํ˜ธ์ถœ ์‹œ์ ์— promptVariables๋กœ ์ฃผ์ž…
  • ํ…œํ”Œ๋ฆฟ 1๊ฐœ = ๊ณ ๊ฐ ยท ์ƒํ’ˆ ยท ์ƒํ™ฉ ์ „๋ถ€ ์ปค๋ฒ„

์žฌ์‚ฌ์šฉ์„ ์œ„ํ•œ ์ถ•์ž…๋‹ˆ๋‹ค. ๊ฐ™์€ ํ”„๋กฌํ”„ํŠธ๋ฅผ ๋‹ค๋ฅธ ์ž…๋ ฅ์— ์“ฐ๋Š” ๋ฌธ์ œ๋ฅผ ํ’‰๋‹ˆ๋‹ค.

Variant โ€” ๋ณ€ํ˜•

๊ฐ™์€ ๋ชฉ์ ์„ ๋‹ค๋ฅธ ์„ค์ •์œผ๋กœ

  • ๋ชจ๋ธ์„ ๋‹ค๋ฅด๊ฒŒ โ€” Sonnet vs Haiku ํ’ˆ์งˆยท๋น„์šฉ ๋น„๊ต
  • ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋‹ค๋ฅด๊ฒŒ โ€” temperature 0.1 vs 0.5
  • ๋ฉ”์‹œ์ง€๋ฅผ ๋‹ค๋ฅด๊ฒŒ โ€” ๊ฐ„๊ฒฐํ˜• vs ์ƒ์„ธํ˜• ๋ฌธ๊ตฌ

์‹คํ—˜์„ ์œ„ํ•œ ์ถ•์ž…๋‹ˆ๋‹ค. ์–ด๋А ์„ค์ •์ด ๋” ๋‚˜์€์ง€ ๋น„๊ตํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ํ’‰๋‹ˆ๋‹ค.

takeaway

๋‘ ์ถ•์€ ํ•จ๊ป˜ ์”๋‹ˆ๋‹ค โ€” ๋ณ€์ˆ˜๋กœ ์žฌ์‚ฌ์šฉํ•˜๊ณ , Variant๋กœ ์‹คํ—˜ํ•ด์„œ ์ด๊ธด ์ชฝ์„ ๋ฒ„์ „์œผ๋กœ ๋ฐœํ–‰ํ•ฉ๋‹ˆ๋‹ค.

PART 2 ยท ํ”„๋กฌํ”„ํŠธ ์ž์‚ฐ ๊ด€๋ฆฌ

๋ณ€์ˆ˜ ๋ฐฐ์น˜์™€ ์บ์‹ฑ

๊ณ ์ • ๋ถ€๋ถ„์€ ์•ž์œผ๋กœ, ๊ฐ€๋ณ€ ๋ถ€๋ถ„์€ ๋’ค๋กœ โ€” ๋ฐฐ์น˜๊ฐ€ ์บ์‹œ ํžˆํŠธ์œจ์„ ๊ฒฐ์ •





๊ณ ์ • โ€” ์บ์‹œ ๋Œ€์ƒ
๋‹น์‹ ์€ {{company_name}} ๊ณ ๊ฐ์„ผํ„ฐ ์ƒ๋‹ด์‚ฌ์ž…๋‹ˆ๋‹ค.
์ •์ค‘ํ•˜๊ฒŒ ์‘๋Œ€ํ•˜๊ณ , ๋ชจ๋ฅด๋Š” ๊ฒƒ์€ ๋ชจ๋ฅธ๋‹ค๊ณ  ๋‹ตํ•ฉ๋‹ˆ๋‹ค.
์ถœ๋ ฅ ํ˜•์‹: ์ธ์‚ฌ โ†’ ๋‹ต๋ณ€ โ†’ ๋‹ค์Œ ์•ˆ๋‚ด ์ˆœ์„œ์˜ 3๋ฌธ๋‹จ.



๊ฐ€๋ณ€ โ€” ๋งค๋ฒˆ ๋ฐ”๋€œ
๊ณ ๊ฐ๋ช…: {{customer_name}}
์ด์ „ ๋ฌธ์˜ ์š”์•ฝ: {{history_summary}}




์•ž๋ถ€๋ถ„ ๊ณ ์ • โ€” ํ”„๋กฌํ”„ํŠธ ์บ์‹ฑ์ด ์žฌ์‚ฌ์šฉํ•˜๋Š” prefix
๊ฐ€๋ณ€์€ ๋์œผ๋กœ โ€” ์ค‘๊ฐ„์— ๋ผ์šฐ๋ฉด ๊ทธ ๋’ค ์บ์‹œ๊ฐ€ ์ „๋ถ€ ๋ฌดํšจ


takeaway

์—ญํ• ยท๊ทœ์น™ยทํ˜•์‹ ๊ฐ™์€ ๊ณ ์ • ๋ธ”๋ก์„ ์•ž์— ๋ชฐ์•„ ๋‘๋ฉด ์บ์‹œ๋œ prefix๊ฐ€ ์ปค์ ธ ๋น„์šฉ์ด ์ค„์–ด๋“ญ๋‹ˆ๋‹ค โ€” ๋งค๋ฒˆ ๋ฐ”๋€Œ๋Š” ๋ณ€์ˆ˜๋Š” ํ…œํ”Œ๋ฆฟ ๋์— ๋‘ก๋‹ˆ๋‹ค.

PART 2 ยท ํ”„๋กฌํ”„ํŠธ ์ž์‚ฐ ๊ด€๋ฆฌ

ARN์œผ๋กœ ํ˜ธ์ถœ โ€” ์ฝ”๋“œ์—์„œ ํ”„๋กฌํ”„ํŠธ ๋ถ„๋ฆฌ

ํ”„๋กฌํ”„ํŠธ ๋ฒ„์ „ ARN์„ modelId ์ž๋ฆฌ์— โ€” ๋ณ€์ˆ˜๋Š” ๋Ÿฐํƒ€์ž„์— ์ฃผ์ž…

python
import boto3

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

response = client.converse(
    # โ‘  ํ”„๋กฌํ”„ํŠธ ๋ฒ„์ „ ARN์„ modelId ์ž๋ฆฌ์— โ€” ๋ชจ๋ธยท๋ฉ”์‹œ์ง€ยทํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ๋ฒ„์ „์— ๋‚ด์žฅ
    modelId="arn:aws:bedrock:us-east-1:111122223333:prompt/PROMPT12345:2",
    # โ‘ก ํ…œํ”Œ๋ฆฟ ๋ณ€์ˆ˜ {{genre}}, {{number}}๋ฅผ ๋Ÿฐํƒ€์ž„์— ์ฃผ์ž…
    promptVariables={
        "genre":  {"text": "pop"},
        "number": {"text": "3"},
    },
)

print(response["output"]["message"]["content"][0]["text"])
  • prompt ARN = modelId โ€” ๋ฒ„์ „ ์Šค๋ƒ…์ƒท์— ๋ชจ๋ธยท๋ฉ”์‹œ์ง€ยทinferenceConfig๊ฐ€ ๋ชจ๋‘ ๋‚ด์žฅ
  • promptVariables โ€” {{variable}} ์ž๋ฆฌ์— ๋Ÿฐํƒ€์ž„ ๊ฐ’ ์ฃผ์ž…, ํ˜ธ์ถœ๋งˆ๋‹ค ๋‹ค๋ฅด๊ฒŒ
  • bedrock:RenderPrompt ๊ถŒํ•œ ํ•„์š” โ€” ํ”„๋กฌํ”„ํŠธ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ Œ๋”๋งํ•˜๋Š” ๋ณ„๋„ IAM ์•ก์…˜
  • ์ œ์•ฝ โ€” ARN ํ˜ธ์ถœ ์‹œ inferenceConfigยทsystemยทtoolConfig๋ฅผ ํ•จ๊ป˜ ์ „๋‹ฌํ•  ์ˆ˜ ์—†์Œ(๋ฒ„์ „์— ๋‚ด์žฅ๋œ ์„ค์ • ์‚ฌ์šฉ)
takeaway

ํ”„๋กฌํ”„ํŠธ ๊ฐœ์„ ์ด ์ฝ”๋“œ ๋ฐฐํฌ์™€ ๋ถ„๋ฆฌ๋ฉ๋‹ˆ๋‹ค โ€” ARN์˜ ๋ฒ„์ „ ๋ฒˆํ˜ธ๋งŒ ์˜ฌ๋ฆฌ๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๊ทธ๋Œ€๋กœ ์ƒˆ ํ”„๋กฌํ”„ํŠธ๋ฅผ ์”๋‹ˆ๋‹ค.

PART 2 ยท ํ”„๋กฌํ”„ํŠธ ์ž์‚ฐ ๊ด€๋ฆฌ

Compare Variants โ€” ๋‚˜๋ž€ํžˆ ๋น„๊ต

๋ฐฐํฌ ์ „์— ๋ณ€ํ˜•์„ ๋‚˜๋ž€ํžˆ ์‹คํ–‰ โ€” ์ตœ๋Œ€ 3๊ฐœ๊นŒ์ง€, ๋ณ€ํ˜•๋งˆ๋‹ค ๋ชจ๋ธ๋„ ๋‹ค๋ฅด๊ฒŒ

๋ฌด์—‡์„ ๋ฐ”๊ฟ” ๋ณผ ์ˆ˜ ์žˆ๋‚˜

  • ๋ฉ”์‹œ์ง€ โ€” ์ง€์‹œ ๋ฌธ๊ตฌยท์˜ˆ์‹œยทํ˜•์‹์„ ๋ณ€ํ˜•๋ณ„๋กœ ๋‹ค๋ฅด๊ฒŒ
  • ๋ชจ๋ธ โ€” ๊ฐ™์€ ํ”„๋กฌํ”„ํŠธ๋ฅผ ๋‹ค๋ฅธ ๋ชจ๋ธ๋กœ (Sonnet vs Haiku)
  • ํŒŒ๋ผ๋ฏธํ„ฐ โ€” temperatureยทtopP๋ฅผ ๋ณ€ํ˜•๋ณ„๋กœ ์กฐ์ •

ํ•œ๋„์™€ ์‚ฌ์šฉ๋ฒ•

  • ์ตœ๋Œ€ 3๊ฐœ โ€” ๋ณ€ํ˜•์„ ๋‚˜๋ž€ํžˆ(side-by-side) ์‹คํ–‰ยท๋น„๊ต
  • ๊ฐ™์€ ์ž…๋ ฅ โ€” ๋™์ผ ๋ณ€์ˆ˜ ๊ฐ’์œผ๋กœ ์„ธ ๋ณ€ํ˜•์„ ๋™์‹œ ํ…Œ์ŠคํŠธ
  • ์Šน์ž ์ฑ„ํƒ โ€” ์ด๊ธด ๋ณ€ํ˜•์„ ์ƒˆ ๋ฒ„์ „์œผ๋กœ ๋ฐœํ–‰
takeaway

๊ฐ์œผ๋กœ ๊ณ ๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค โ€” ๊ฐ™์€ ์ž…๋ ฅ์— ์„ธ ๋ณ€ํ˜•์„ ๋‚˜๋ž€ํžˆ ๋Œ๋ ค ๋ณด๊ณ  ์ด๊ธด ์ชฝ์„ ๋ฒ„์ „์œผ๋กœ ๋ฐœํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์šด์˜ ์›Œํฌํ”Œ๋กœ์šฐ

๋กค๋ฐฑ ยท ์—ญํ•  ๋ถ„๋ฆฌ ยท ๋‹จ๊ณ„์  ๋„์ž…

PART 3 ยท ์šด์˜ ์›Œํฌํ”Œ๋กœ์šฐ

์šด์˜ ์›Œํฌํ”Œ๋กœ์šฐ

๋งŒ๋“  ์ž์‚ฐ์„ ํŒ€์ด ์•ˆ์ „ํ•˜๊ฒŒ ๊ตด๋ฆฌ๋Š” ๋ฐฉ๋ฒ•

๋ฒ„์ „์ด ์žˆ์œผ๋ฉด ์šด์˜์ด ์—ด๋ฆฝ๋‹ˆ๋‹ค

๋กค๋ฐฑ์€ ๋ฒˆํ˜ธ๋ฅผ ๋ฐ”๊พธ๋Š” ์ผ์ด ๋˜๊ณ , ๊ถŒํ•œ์€ ์—ญํ• ๋ณ„๋กœ ๋‚˜๋‰˜๊ณ , ๋„์ž…์€ ๋‹จ๊ณ„์ ์œผ๋กœ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค.

  • ๋กค๋ฐฑ โ€” Version ๋ฒˆํ˜ธ๋งŒ ๋˜๋Œ๋ฆฌ๊ธฐ
  • ์—ญํ•  ๋ถ„๋ฆฌ โ€” ์ž‘์„ฑยท๊ฒ€ํ† ยท๋ฐฐํฌ๋ฅผ IAM์œผ๋กœ
  • ๋‹จ๊ณ„์  ๋„์ž… โ€” Git โ†’ ๋“ฑ๋ก โ†’ CI/CD
  • Git์ด ์†Œ์Šค ยท Bedrock์ด ๋Ÿฐํƒ€์ž„
takeaway

์šด์˜์˜ ํ•ต์‹ฌ์€ ์ „๋ถ€ ๋ฒ„์ „์—์„œ ๋‚˜์˜ต๋‹ˆ๋‹ค โ€” ๋ถˆ๋ณ€ ๋ฒ„์ „์ด ์—†์œผ๋ฉด ๋กค๋ฐฑ๋„ ์Šน์ธ ๊ฒŒ์ดํŠธ๋„ ์„ฑ๋ฆฝํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

PART 3 ยท ์šด์˜ ์›Œํฌํ”Œ๋กœ์šฐ

๋กค๋ฐฑ 3ํŒจํ„ด

์–ด๋А ํŒจํ„ด์ด๋“  ์ฝ”๋“œ ๋ณ€๊ฒฝ ์—†์Œ โ€” ARN์˜ Version ๋ฒˆํ˜ธ๊ฐ€ ์Šค์œ„์น˜

์ˆ˜๋™ ๋กค๋ฐฑ

์ด์ƒ ๊ฐ์ง€ ์‹œ ์‚ฌ๋žŒ์ด ๋˜๋Œ๋ฆฌ๊ธฐ

  • ๊ณ ๊ฐ ๋ถˆ๋งŒ ๊ธ‰์ฆ ยท ์˜ค๋‹ต ์ œ๋ณด ๊ฐ์ง€
  • ์šด์˜ํŒ€์ด ์ฐธ์กฐ ๋ฒ„์ „์„ ์ด์ „ ๋ฒˆํ˜ธ๋กœ ๋ณ€๊ฒฝ
  • ์ฆ‰์‹œ ์ ์šฉ โ€” ๋ฐฐํฌ ํŒŒ์ดํ”„๋ผ์ธ ๋ถˆํ•„์š”

์ž๋™ ๋กค๋ฐฑ

ํ‰๊ฐ€ ์ ์ˆ˜๊ฐ€ ๊ฒŒ์ดํŠธ

  • ์ƒˆ ๋ฒ„์ „ ๋ฐฐํฌ ํ›„ ํ‰๊ฐ€ ์žก์œผ๋กœ ํ’ˆ์งˆ ์ธก์ •
  • ์ ์ˆ˜๊ฐ€ ์ž„๊ณ„๊ฐ’(์˜ˆ: 0.8) ๋ฏธ๋งŒ์ด๋ฉด ์ด์ „ ๋ฒ„์ „์œผ๋กœ ๋ณต์›
  • ํ‰๊ฐ€ ๋ฐ์ดํ„ฐ์…‹์ด ์žˆ์–ด์•ผ ์„ฑ๋ฆฝํ•˜๋Š” ํŒจํ„ด

๋ธ”๋ฃจ/๊ทธ๋ฆฐ

๋‘ ๋ฒ„์ „์„ ์•ฑ ๋ ˆ๋ฒจ์—์„œ ๋ณ‘ํ–‰

  • ๊ตฌ ๋ฒ„์ „ยท์ƒˆ ๋ฒ„์ „ ARN์„ ๋™์‹œ์— ์šด์˜
  • ์•ฑ์ด ํ˜ธ์ถœ ๋น„์ค‘์„ ์กฐ์ ˆ โ€” ์ƒˆ ๋ฒ„์ „์ด ์•ˆ์ •๋˜๋ฉด ๊ตฌ ๋ฒ„์ „ ๋น„์ค‘์„ 0์œผ๋กœ
  • ๋ฌธ์ œ ์‹œ ๊ตฌ ๋ฒ„์ „์œผ๋กœ ์ฆ‰์‹œ ๋ณต๊ท€
takeaway

๋กค๋ฐฑ์ด ๋ฒˆํ˜ธ ํ•˜๋‚˜ ๋ฐ”๊พธ๋Š” ์ผ์ด ๋˜๋Š” ๊ฒƒ โ€” ์ด๊ฒƒ์ด ๋ฒ„์ „ ๊ด€๋ฆฌ๊ฐ€ ์ฃผ๋Š” ๊ฐ€์žฅ ํฐ ์šด์˜ ์ด๋“์ž…๋‹ˆ๋‹ค.

PART 3 ยท ์šด์˜ ์›Œํฌํ”Œ๋กœ์šฐ

ํŒ€ ์—ญํ•  ๋ถ„๋ฆฌ

์ž‘์„ฑ ยท ๊ฒ€ํ†  ยท ๋ฐฐํฌ๋ฅผ ์„œ๋กœ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด โ€” IAM์ด ๊ฒŒ์ดํŠธ๋ฅผ ๊ฐ•์ œ

  1. 1
    ๊ฐœ๋ฐœ์ž โ€” ์ž‘์„ฑ

    โ€ข Draft ์ž‘์„ฑยท์ˆ˜์ • ๊ถŒํ•œ
    โ€ข ํ…œํ”Œ๋ฆฟ ๊ตฌ์กฐ์™€ ๋ณ€์ˆ˜ ์„ค๊ณ„
    โ€ข Variant๋กœ ํ›„๋ณด ๋ณ€ํ˜• ์ค€๋น„

  2. 2
    ๋„๋ฉ”์ธ ์ „๋ฌธ๊ฐ€ โ€” ๊ฒ€ํ† 

    โ€ข ๋ฌธ๊ตฌยท์ •์ฑ…ยทํ†ค ๊ฒ€ํ† 
    โ€ข ์ฝ˜์†”์—์„œ ์ง์ ‘ ์ˆ˜์ • ๊ฐ€๋Šฅ โ€” ์ฝ”๋“œ ์ง€์‹ ๋ถˆํ•„์š”
    โ€ข Compare variants๋กœ ํ›„๋ณด ๋น„๊ต

  3. 3
    ์šด์˜ํŒ€ โ€” ๋ฐฐํฌ ์Šน์ธ

    โ€ข ๋ฒ„์ „ ๋ฐœํ–‰ยท์ฐธ์กฐ ์ „ํ™˜ ๊ถŒํ•œ
    โ€ข ํ‰๊ฐ€ ๊ฒฐ๊ณผ ํ™•์ธ ํ›„ ์Šน์ธ
    โ€ข ์ด์ƒ ์‹œ ๋กค๋ฐฑ ๊ฒฐ์ •

takeaway

์—ญํ• ๋ณ„๋กœ IAM ๊ถŒํ•œ์„ ๋ถ„๋ฆฌํ•˜๋ฉด ๊ฒ€ํ†  ์—†์ด ํ”„๋กœ๋•์…˜ ํ”„๋กฌํ”„ํŠธ๊ฐ€ ๋ฐ”๋€Œ๋Š” ์‚ฌ๊ณ ๋ฅผ ๊ตฌ์กฐ์ ์œผ๋กœ ๋ง‰์Šต๋‹ˆ๋‹ค.

PART 3 ยท ์šด์˜ ์›Œํฌํ”Œ๋กœ์šฐ

๋‹จ๊ณ„์  ๋„์ž…

์ฒ˜์Œ๋ถ€ํ„ฐ ์™„๋ฒฝํ•œ ์›Œํฌํ”Œ๋กœ์šฐ ๋Œ€์‹  โ€” 2~4์ฃผ ๊ฐ„๊ฒฉ์˜ ์„ธ ๋‹จ๊ณ„

  1. 1
    Git + PR ๋ฆฌ๋ทฐ

    ํ”„๋กฌํ”„ํŠธ ํ…์ŠคํŠธ๋ฅผ ์ €์žฅ์†Œ์— ๋‘๊ณ  ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋กœ ๋ณ€๊ฒฝ์„ ํ†ต์ œํ•ฉ๋‹ˆ๋‹ค โ€” ๋„๊ตฌ ์ถ”๊ฐ€ ์—†์ด ์‹œ์ž‘.

  2. 2
    Prompt Management ๋“ฑ๋ก

    Bedrock์— ๋“ฑ๋กํ•ด Version ๊ด€๋ฆฌ์™€ ARN ํ˜ธ์ถœ๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค โ€” ์ฝ”๋“œ์™€ ํ”„๋กฌํ”„ํŠธ๊ฐ€ ๋ถ„๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

  3. 3
    CI/CD + ์ž๋™ ํ‰๊ฐ€

    ๋ฒ„์ „ ๋ฐœํ–‰ ์‹œ ํ‰๊ฐ€ ์žก์„ ์ž๋™ ์‹คํ–‰ํ•˜๊ณ , ์ ์ˆ˜ ๊ฒŒ์ดํŠธ๋ฅผ ํ†ต๊ณผํ•ด์•ผ ๋ฐฐํฌ๋˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

takeaway

๋ ๊ทธ๋ฆผ์€ Git์ด ์†Œ์Šค, Bedrock์ด ๋Ÿฐํƒ€์ž„์ž…๋‹ˆ๋‹ค โ€” ๊ฐ ๋‹จ๊ณ„๋ฅผ 2~4์ฃผ ๊ฐ„๊ฒฉ์œผ๋กœ ๋„์ž…ํ•˜๋ฉด ํŒ€ ์ €ํ•ญ ์—†์ด ์ •์ฐฉ๋ฉ๋‹ˆ๋‹ค.

Prompt Optimization

Simple vs Advanced ยท ํ‰๊ฐ€ ๋ฐ์ดํ„ฐ์…‹ ยท ํ‰๊ฐ€ ๋ฐฉ๋ฒ• 3์ข…

PART 4 ยท Prompt Optimization

Prompt Optimization

์†์œผ๋กœ ๋‹ค๋“ฌ๋Š” ์‹œ๋Œ€์—์„œ ํ‰๊ฐ€๊ฐ€ ์กฐํ–ฅํ•˜๋Š” ์‹œ๋Œ€๋กœ

ํ‰๊ฐ€๊ฐ€ ์žฌ์ž‘์„ฑ์„ ์กฐํ–ฅํ•ฉ๋‹ˆ๋‹ค

Simple์€ ํœด๋ฆฌ์Šคํ‹ฑ ์žฌ์ž‘์„ฑ, Advanced๋Š” ํ‰๊ฐ€ ๊ธฐ๋ฐ˜ ์ตœ์ ํ™” ์žก โ€” ๊ทœ๋ชจ์™€ ๋ชฉ์ ์œผ๋กœ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  • Simple โ€” ๋‹จ์ผ ํ”„๋กฌํ”„ํŠธ ์ฆ‰์‹œ ์žฌ์ž‘์„ฑ
  • Advanced โ€” ํ‰๊ฐ€ ๋ฃจํ”„ ยท ๋น„๋™๊ธฐ ์žก (2026-05 ์ถœ์‹œ)
  • ํ‰๊ฐ€ โ€” Steering criteria ยท LLM-as-judge ยท Lambda
  • ๋ฐ์ดํ„ฐ์…‹ โ€” ์ตœ์†Œ 10~20์Œ์ด ๊ธฐ๋ฐ˜
takeaway

์ดˆ๊ธฐ์—๋Š” ์ˆ˜๋™๊ณผ Simple๋กœ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค โ€” ํ”„๋กฌํ”„ํŠธ๊ฐ€ ์ˆ˜์‹ญ ๊ฐœ๋ฅผ ๋„˜๊ณ  ๋ชจ๋ธ ๊ต์ฒด๊ฐ€ ๊ฑธ๋ฆฌ๋ฉด Advanced๋กœ ๊ฐ‘๋‹ˆ๋‹ค.

PART 4 ยท Prompt Optimization

Simple vs Advanced Optimization

๊ฐ™์€ "์ตœ์ ํ™”" ๋ฒ„ํŠผ์ด ์•„๋‹™๋‹ˆ๋‹ค โ€” ์ž…๋ ฅยทํ‰๊ฐ€ยท์ถœ๋ ฅ์ด ์ „๋ถ€ ๋‹ค๋ฅธ ๋‘ ๊ธฐ๋Šฅ

Simple Optimization

ํœด๋ฆฌ์Šคํ‹ฑ ์žฌ์ž‘์„ฑ ยท ์ฆ‰์‹œ

  • ๋‹จ์ผ ํ”„๋กฌํ”„ํŠธ๋ฅผ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋กœ ์žฌ์ž‘์„ฑ
  • ํ‰๊ฐ€ ๋ฐ์ดํ„ฐ ๋ฏธ์‚ฌ์šฉ โ€” ๋‹ค์ค‘ ๋ชจ๋ธ ๋ฏธ์ง€์›
  • ~1K ํ† ํฐ ์ดํ•˜ ํ”„๋กฌํ”„ํŠธ์— ๊ถŒ์žฅ
  • ๋™๊ธฐ ์‹คํ–‰ โ€” ๊ฒฐ๊ณผ ์ฆ‰์‹œ ํ™•์ธ

Prompt Builder์˜ Optimize ๋ฒ„ํŠผ์ž…๋‹ˆ๋‹ค. ๋ฌธ๊ตฌ๋ฅผ ๋‹ค๋“ฌ๋Š” ๋น ๋ฅธ 1์ฐจ ๊ฐœ์„ ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

Advanced Prompt Optimization

ํ‰๊ฐ€ ๊ธฐ๋ฐ˜ ์žก ยท ๋น„๋™๊ธฐ (2026-05)

  • ํ‰๊ฐ€๊ฐ€ ์žฌ์ž‘์„ฑ์„ ์กฐํ–ฅ โ€” ๋ฉ”ํŠธ๋ฆญ ํ”ผ๋“œ๋ฐฑ ๋ฃจํ”„
  • Steering criteria ยท LLM-as-judge ๋ฃจ๋ธŒ๋ฆญ ยท ์ปค์Šคํ…€ Lambda
  • ์žก๋‹น ํ…œํ”Œ๋ฆฟ 10๊ฐœ ยท ํ…œํ”Œ๋ฆฟ๋‹น ์˜ˆ์‹œ 100๊ฐœ ยท ๋ฉ€ํ‹ฐ๋ชจ๋‹ฌ ์ž…๋ ฅ
  • ๊ฒฐ๊ณผ์— ํ‰๊ฐ€ ์ ์ˆ˜ ยท ๋น„์šฉ ์ถ”์ • ยท ์ง€์—ฐ์‹œ๊ฐ„ ํฌํ•จ

๋น„๋™๊ธฐ ์žก(15๋ถ„~์ˆ˜ ์‹œ๊ฐ„)์œผ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์‚ฌ๋žŒ์ด ์ƒ๊ฐํ•˜์ง€ ๋ชปํ•œ ๋ณ€ํ˜•์„ ํ‰๊ฐ€ ์ ์ˆ˜๋กœ ํƒ์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.

takeaway

Simple์€ ๋ฌธ๊ตฌ๋ฅผ, Advanced๋Š” ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•ฉ๋‹ˆ๋‹ค โ€” ํ‰๊ฐ€ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์–ด์•ผ Advanced์˜ ๊ฐ€์น˜๊ฐ€ ๋‚˜์˜ต๋‹ˆ๋‹ค.

PART 4 ยท Prompt Optimization

Simple ์‹ค๋ฌผ โ€” optimize_prompt

ํ‰๊ฐ€ ๋ฐ์ดํ„ฐ ์—†์ด ํ”„๋กฌํ”„ํŠธ ํ…์ŠคํŠธ๋งŒ โ€” ์ฆ‰์‹œ ๊ฐœ์„ ์•ˆ์„ ์ŠคํŠธ๋ฆฌ๋ฐ์œผ๋กœ ์ˆ˜์‹ 

python
import boto3

# โ‘  ํด๋ผ์ด์–ธํŠธ๋Š” bedrock-agent-runtime โ€” ๋™๊ธฐ API
client = boto3.client("bedrock-agent-runtime", region_name="us-east-1")

response = client.optimize_prompt(
    input={"textPrompt": {
        "text": "๋‹น์‹ ์€ ๊ณ ๊ฐ์„ผํ„ฐ ์ƒ๋‹ด์‚ฌ์ž…๋‹ˆ๋‹ค. ๊ณ ๊ฐ ์งˆ๋ฌธ์— ๋‹ต๋ณ€ํ•˜์„ธ์š”."
    }},
    # โ‘ก ์ตœ์ ํ™” ํƒ€๊ฒŸ ๋ชจ๋ธ โ€” ๋ชจ๋ธ๋ณ„ ๋ชจ๋ฒ” ์‚ฌ๋ก€์— ๋งž์ถฐ ์žฌ์ž‘์„ฑ
    targetModelId="us.anthropic.claude-sonnet-4-6",
)

# โ‘ข ์ŠคํŠธ๋ฆฌ๋ฐ์œผ๋กœ ์ตœ์ ํ™” ๊ฒฐ๊ณผ ์ˆ˜์‹ 
for event in response["optimizedPrompt"]:
    if "optimizePromptEvent" in event:
        text = event["optimizePromptEvent"]["optimizedPrompt"]["textPrompt"]["text"]
        print(text)
  • โ‘  bedrock-agent-runtime โ€” Advanced ์žก(bedrock ํด๋ผ์ด์–ธํŠธ)๊ณผ ํด๋ผ์ด์–ธํŠธ๋ถ€ํ„ฐ ๋‹ค๋ฆ„
  • โ‘ก targetModelId โ€” ์–ด๋А ๋ชจ๋ธ์— ๋งž์ถฐ ๋‹ค๋“ฌ์„์ง€ ์ง€์ •, ์งง์€ ํ”„๋กฌํ”„ํŠธ(~1K ํ† ํฐ)์— ๊ถŒ์žฅ
  • โ‘ข ์ŠคํŠธ๋ฆฌ๋ฐ ์‘๋‹ต โ€” ๊ฐœ์„ ์•ˆ์„ ๋ฐ›์•„ ์‚ฌ๋žŒ์ด ๊ฒ€ํ†  ํ›„ ์ฑ„ํƒ โ€” ์ž๋™ ์ ์šฉ์ด ์•„๋‹˜
takeaway

์ดˆ์•ˆ์„ ๋น ๋ฅด๊ฒŒ ๋‹ค๋“ฌ๋Š” ์šฉ๋„์ž…๋‹ˆ๋‹ค โ€” ๊ฐœ์„ ์•ˆ์€ ๊ฒ€ํ†  ํ›„ ์ฑ„ํƒํ•˜๊ณ , ์ฑ„ํƒํ•˜๋ฉด ์ƒˆ ๋ฒ„์ „์œผ๋กœ ๋ฐœํ–‰ํ•ฉ๋‹ˆ๋‹ค.

PART 4 ยท Prompt Optimization

ํ‰๊ฐ€ ๋ฐ์ดํ„ฐ์…‹ ์„ค๊ณ„

"๋А๋‚Œ์ƒ ์ข‹์•„์กŒ๋‹ค"๋ฅผ ์ˆซ์ž๋กœ โ€” ์ž…๋ ฅยท๊ธฐ๋Œ€ ์ถœ๋ ฅ ์Œ์ด ์ตœ์ ํ™”์˜ ๊ธฐ๋ฐ˜

json
// ๋‹จ์ˆœ ์กฐํšŒ 30% โ€” ์ •๋‹ต์ด ๋ช…ํ™•ํ•œ ๋ฒ ์ด์Šค๋ผ์ธ
{"input": "์˜์—…์‹œ๊ฐ„์ด ์–ด๋–ป๊ฒŒ ๋˜๋‚˜์š”?", "expected": "ํ‰์ผ 9์‹œ~18์‹œ, ์ฃผ๋ง ํœด๋ฌด์ž…๋‹ˆ๋‹ค."}
{"input": "๋ฐ˜ํ’ˆ ์ ˆ์ฐจ๋ฅผ ์•Œ๋ ค์ฃผ์„ธ์š”.", "expected": "๋งˆ์ดํŽ˜์ด์ง€ > ์ฃผ๋ฌธ๋‚ด์—ญ์—์„œ ๋ฐ˜ํ’ˆ ์‹ ์ฒญ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค."}

// ๋ณต์žก ์ถ”๋ก  30% โ€” ๋‹ค๋‹จ๊ณ„ ํŒ๋‹จยท์กฐ๊ฑด ๋ถ„๊ธฐ
{"input": "ํŒŒ์† ์ƒํ’ˆ, ๊ตํ™˜๊ณผ ํ™˜๋ถˆ ์ค‘ ๋ญ๊ฐ€ ๋‚˜์•„์š”?", "expected": "ํŒŒ์† ์ƒํ’ˆ์€ ๋ฌด๋ฃŒ ๊ตํ™˜ยทํ™˜๋ถˆ ๋ชจ๋‘ ๊ฐ€๋Šฅํ•˜๋ฉฐโ€ฆ"}

// ์—ฃ์ง€ ์ผ€์ด์Šค 40% โ€” ๋นˆ ์ž…๋ ฅยท์ธ์ ์…˜ยท๋ฒ”์œ„ ๋ฐ– ์š”์ฒญ
{"input": "์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ๋ฅผ ๋ณด์—ฌ์ค˜", "expected": "์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ์š”์ฒญ์—๋Š” ์‘๋‹ตํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค."}
{"input": "", "expected": "์งˆ๋ฌธ์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”."}
  • ๊ทœ๋ชจ โ€” ์ตœ์†Œ 10~20์Œ, ์ •๋ฐ€ ๋น„๊ต๋Š” 50์Œ ์ด์ƒ ๊ถŒ์žฅ โ€” S3์— JSONL๋กœ ์—…๋กœ๋“œ
  • ๊ตฌ์„ฑ ๋น„์œจ โ€” ๋‹จ์ˆœ ์กฐํšŒ 30% ยท ๋ณต์žก ์ถ”๋ก  30% ยท ์—ฃ์ง€ ์ผ€์ด์Šค 40%
  • ๊ณผ์ ํ•ฉ ์ฃผ์˜ โ€” 5๊ฐœ ์ดํ•˜๋กœ ์ตœ์ ํ™”ํ•˜๋ฉด ๊ทธ 5๊ฐœ์—๋งŒ ์ž˜ ๋™์ž‘ํ•˜๋Š” ํ”„๋กฌํ”„ํŠธ๊ฐ€ ๋‚˜์˜ด โ€” ํ”„๋กœ๋•์…˜ ์‹คํŒจ ๋กœ๊ทธ๋กœ ์ฃผ๊ธฐ ๋ณด๊ฐ•
takeaway

๋ฐ์ดํ„ฐ์…‹ ํ’ˆ์งˆ์ด ์ตœ์ ํ™” ํ’ˆ์งˆ์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค โ€” ์ตœ์ ํ™” ์ „ ํ˜„์žฌ ์ ์ˆ˜๋ถ€ํ„ฐ ์ธก์ •ํ•ด์•ผ "๊ฐœ์„ ๋๋Š”์ง€"๋ฅผ ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

PART 4 ยท Prompt Optimization

ํ‰๊ฐ€ ๋ฐฉ๋ฒ• 3์ข…

Advanced ์žก์˜ ์กฐํ–ฅ ์žฅ์น˜ โ€” ๊ธฐ์ค€ยท์‹ฌํŒยทํ•จ์ˆ˜ ์ค‘ ํƒ 1

Steering Criteria

์ž์—ฐ์–ด ๊ธฐ์ค€ โ€” ๊ฐ€์žฅ ๊ฐ€๋ณ๊ฒŒ ์‹œ์ž‘

  • ์ตœ์ ํ™” ๋ฐฉํ–ฅ์„ ๋ฌธ์žฅ์œผ๋กœ ์ง€์‹œ โ€” "3๋ฌธ์žฅ ์ด๋‚ด, ๊ตฌ์ฒด์  ์‹๋‹น๋ช… ํฌํ•จ"
  • ๊ธฐ์ค€์€ ์ตœ๋Œ€ 5๊ฐœ๊นŒ์ง€
  • ๋ณ„๋„ ์‹ฌํŒยท์ฝ”๋“œ ์—†์ด ๋ฐ”๋กœ ์‚ฌ์šฉ

์–ธ์ œ โ€” ๊ธฐ์ค€์„ ๋ง๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์„ ๋•Œ

LLM-as-a-judge

customLLMJConfig โ€” ๋ฃจ๋ธŒ๋ฆญ ์ฑ„์ 

  • ์‹ฌํŒ ๋ชจ๋ธ์ด ๋ฃจ๋ธŒ๋ฆญ์œผ๋กœ ์ถœ๋ ฅ ํ’ˆ์งˆ์„ ์ฑ„์ 
  • ์‹ฌํŒ ํ—ˆ์šฉ ๋ชจ๋ธ โ€” Opus 4.6 ยท Sonnet 4.5 ยท Sonnet 4.6(๊ธฐ๋ณธ)
  • Opus 4.8์€ ์‹ฌํŒ ๋ถˆ๊ฐ€ (์ตœ์ ํ™” ํƒ€๊นƒ์œผ๋กœ๋Š” ์ง€์›)

์–ธ์ œ โ€” ์ •์„ฑ ํ’ˆ์งˆ(ํ†คยท์™„๊ฒฐ์„ฑ)์„ ์ฑ„์ ํ•  ๋•Œ

์ปค์Šคํ…€ Lambda

evaluationMetricLambdaArn โ€” ๊ฒฐ์ •๋ก  ์ฑ„์ 

  • ์ž์ฒด ํ‰๊ฐ€ ํ•จ์ˆ˜๋กœ ์ •๋‹ต ๋Œ€์กฐยทํ˜•์‹ ๊ฒ€์ฆ
  • ์ƒ˜ํ”Œ๋ณ„ ์ •๋‹ต์€ referenceResponse ํ•„๋“œ๋กœ ์ œ๊ณต
  • ๊ธฐ์กด ํ‰๊ฐ€ ๋กœ์ง ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅ

์–ธ์ œ โ€” ์ •๋‹ต์ด ๋ช…ํ™•ํ•ด ์ฝ”๋“œ๋กœ ์ฑ„์ ํ•  ๋•Œ

takeaway

์ตœ์ ํ™” ๊ฒฐ๊ณผ๋ฅผ ๋ฐ”๋กœ ์ ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค โ€” ํ‰๊ฐ€ ๋ฐ์ดํ„ฐ์…‹์œผ๋กœ ์žฌ๊ฒ€์ฆํ•ด ์ ์ˆ˜๊ฐ€ ์˜ค๋ฅธ ๊ฒฝ์šฐ์—๋งŒ ์ƒˆ ๋ฒ„์ „์œผ๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋ธ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

์‹œ๋‚˜๋ฆฌ์˜ค ยท ์žก ์‹คํ–‰ ยท ์ „ํ™˜ ์ฒดํฌ๋ฆฌ์ŠคํŠธ

PART 5 ยท ๋ชจ๋ธ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์‹œ๋‚˜๋ฆฌ์˜ค 3๊ฐ€์ง€

๋ชจ๋ธ ๊ต์ฒด๋Š” ํ”„๋กฌํ”„ํŠธ ์žฌ์ž‘์„ฑ์„ ๋™๋ฐ˜ โ€” ๋น„์šฉ ์ ˆ๊ฐ ยท ์„ฑ๋Šฅ ํ–ฅ์ƒ ยท ๋ฆฌ์ „ ํ™•์žฅ์ด ๊ณ„๊ธฐ

๋น„์šฉ ์ ˆ๊ฐ

์ƒ์œ„ ๋ชจ๋ธ โ†’ ๊ฒฝ๋Ÿ‰ ๋ชจ๋ธ

  • Opus โ†’ Sonnet์ฒ˜๋Ÿผ ๋‹จ๊ฐ€๊ฐ€ ๋‚ฎ์€ ๋ชจ๋ธ๋กœ
  • ํ’ˆ์งˆ ์œ ์ง€๊ฐ€ ์กฐ๊ฑด โ€” ํ‰๊ฐ€ ์ ์ˆ˜๋กœ ํ™•์ธ
  • ๋Œ€๋Ÿ‰ ํ˜ธ์ถœ ์›Œํฌ๋กœ๋“œ์ผ์ˆ˜๋ก ์ ˆ๊ฐ ํญ์ด ํผ

์„ฑ๋Šฅ ํ–ฅ์ƒ

๊ตฌ๋ฒ„์ „ โ†’ ์‹ ๋ฒ„์ „

  • ๋” ๋‚˜์€ ์ง€์‹œ ๋”ฐ๋ฅด๊ธฐยท์ถ”๋ก  ๋Šฅ๋ ฅ์œผ๋กœ
  • ๊ธฐ์กด ํ”„๋กฌํ”„ํŠธ์˜ ์šฐํšŒ ์žฅ์น˜๊ฐ€ ๋ถˆํ•„์š”ํ•ด์ง€๊ธฐ๋„
  • ์‹ ๋ชจ๋ธ ๊ธฐ์ค€์œผ๋กœ ํ”„๋กฌํ”„ํŠธ ์žฌ์ตœ์ ํ™”

๋ฆฌ์ „ ํ™•์žฅ

์ „์šฉ ๋ชจ๋ธ โ†’ Cross-Region

  • ํŠน์ • ๋ฆฌ์ „ ์ „์šฉ ๋ชจ๋ธ์—์„œ Cross-Region ํ”„๋กœํŒŒ์ผ๋กœ
  • ๊ฐ€์šฉ์„ฑยท์ฒ˜๋ฆฌ๋Ÿ‰ ํ™•๋ณด๊ฐ€ ๋ชฉ์ 
  • ๋ฆฌ์ „๋ณ„ ๋ชจ๋ธ ๊ฐ€์šฉ์„ฑ๋ถ€ํ„ฐ ํ™•์ธ
takeaway

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

PART 5 ยท ๋ชจ๋ธ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

๋ชจ๋ธ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํ”Œ๋กœ์šฐ

ํ›„๋ณด ๋น„๊ต๊นŒ์ง€ ๋Œ€์‹ ํ•˜๋Š” Advanced ์žก โ€” ์žฌ์ตœ์ ํ™”์™€ ๋น„๊ต๋ฅผ ํ•œ ๋ฒˆ์—

  1. 1
    ํ‰๊ฐ€ ๋ฐ์ดํ„ฐ ์ค€๋น„

    โ€ข ์‹ค์ œ ์ž…๋ ฅยท๊ธฐ๋Œ€ ์ถœ๋ ฅ ์˜ˆ์‹œ ์ˆ˜์ง‘
    โ€ข ์žก๋‹น ํ…œํ”Œ๋ฆฟ ์ตœ๋Œ€ 10๊ฐœ, ํ…œํ”Œ๋ฆฟ๋‹น ์˜ˆ์‹œ 100๊ฐœ
    โ€ข ์ด๋ฏธ์ง€ยทPDF ๋“ฑ ๋ฉ€ํ‹ฐ๋ชจ๋‹ฌ ์ž…๋ ฅ ์ง€์›

  2. 2
    ์ตœ์ ํ™” ์žก ์‹คํ–‰

    โ€ข ํ˜„์žฌ ๋ชจ๋ธ 1๊ฐœ + ํ›„๋ณด ๋ชจ๋ธ ์ตœ๋Œ€ 4๊ฐœ ์ง€์ •
    โ€ข ๋ชจ๋ธ๋ณ„๋กœ ํ”„๋กฌํ”„ํŠธ๋ฅผ ๊ฐ๊ฐ ์žฌ์ตœ์ ํ™”
    โ€ข ๋น„๋™๊ธฐ โ€” 15๋ถ„์—์„œ ์ˆ˜ ์‹œ๊ฐ„

  3. 3
    ๊ฒฐ๊ณผ ๋น„๊ต ยท ์ฑ„ํƒ

    โ€ข ์ตœ๋Œ€ 5๊ฐœ ๋ชจ๋ธ side-by-side ๊ฒฐ๊ณผ
    โ€ข ํ‰๊ฐ€ ์ ์ˆ˜ ยท ๋น„์šฉ ์ถ”์ • ยท ์ง€์—ฐ์‹œ๊ฐ„ ํ•จ๊ป˜ ์ œ๊ณต
    โ€ข ์ด๊ธด ์กฐํ•ฉ์„ ์ƒˆ ๋ฒ„์ „์œผ๋กœ ๋ฐœํ–‰

takeaway

๋ชจ๋ธ ๊ต์ฒด๋Š” ํ”„๋กฌํ”„ํŠธ ์žฌ์ž‘์„ฑ์„ ๋™๋ฐ˜ํ•ฉ๋‹ˆ๋‹ค โ€” ํ›„๋ณด ๋ชจ๋ธ๋ณ„ ์žฌ์ตœ์ ํ™”์™€ ๋น„๊ต๋ฅผ ์žก ํ•˜๋‚˜๋กœ ๋๋ƒ…๋‹ˆ๋‹ค.

PART 5 ยท ๋ชจ๋ธ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

์ „ํ™˜ ์ „ ์ฒดํฌ๋ฆฌ์ŠคํŠธ

์žก์„ ๋Œ๋ฆฌ๊ธฐ ์ „์— ํ™•์ธํ•˜๋Š” ๋„ค ๊ฐ€์ง€

๋ฆฌ์ „ ๊ฐ€์šฉ์„ฑ
์ƒˆ ๋ชจ๋ธ์ด ์„œ๋น„์Šค ๋ฆฌ์ „์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ์ง€ โ€” Cross-Region ํ”„๋กœํŒŒ์ผ ์—ฌ๋ถ€๊นŒ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
์ปจํ…์ŠคํŠธ ๊ธธ์ด
๊ธฐ์กด ํ”„๋กฌํ”„ํŠธ + ๋ณ€์ˆ˜ ์ฃผ์ž…๋ถ„์ด ์ƒˆ ๋ชจ๋ธ์˜ ์ปจํ…์ŠคํŠธ ์œˆ๋„์šฐ์— ๋“ค์–ด๊ฐ€๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
๋„๊ตฌ ํ˜ธ์ถœ ํ˜•์‹
Tool Use ์Šคํ‚ค๋งˆยทํ˜ธ์ถœ ๊ด€์Šต์ด ๋‹ฌ๋ผ์กŒ๋Š”์ง€ โ€” ์—์ด์ „ํŠธ ์—ฐ๋™ ํ”„๋กฌํ”„ํŠธ์ผ์ˆ˜๋ก ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.
๊ฐ€๊ฒฉ ์ฐจ์ด
์ž…๋ ฅยท์ถœ๋ ฅ ๋‹จ๊ฐ€์™€ ์˜ˆ์ƒ ํ˜ธ์ถœ๋Ÿ‰์œผ๋กœ ์ „ํ™˜ ํ›„ ๋น„์šฉ์„ ๋ฏธ๋ฆฌ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.
takeaway

์ฒดํฌ๋ฆฌ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•ด์•ผ ์žก ์‹คํ–‰์ด ์˜๋ฏธ ์žˆ์Šต๋‹ˆ๋‹ค โ€” ์• ์ดˆ์— ๋ชป ๋“ค์–ด๊ฐ€๋Š” ๋ชจ๋ธ์€ ๋น„๊ต ๋Œ€์ƒ์ด ์•„๋‹™๋‹ˆ๋‹ค.

PART 5 ยท ๋ชจ๋ธ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

ํ”„๋กฌํ”„ํŠธ = ์ž์‚ฐ

๋ถˆ๋ณ€ ๋ฒ„์ „ ยท Variant ๋น„๊ต ยท ARN ๋ฐฐํฌ โ€” ์ฝ”๋“œ์™€ ๋ถ„๋ฆฌ๋˜๋Š” ํ”„๋กฌํ”„ํŠธ ์ˆ˜๋ช…์ฃผ๊ธฐ

ํ”„๋กฌํ”„ํŠธ๋Š” ์ž์‚ฐ์ž…๋‹ˆ๋‹ค

๋ฒ„์ „์ด ์žˆ๊ณ , ๋น„๊ตํ•  ์ˆ˜ ์žˆ๊ณ , ์ฝ”๋“œ์™€ ๋ถ„๋ฆฌ๋˜์–ด ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค โ€” ์‹ค์Šต 2์ข…(Prompt Management ยท Advanced Prompt Optimization)์—์„œ ์ฝ˜์†”๊ณผ SDK๋กœ ์ง์ ‘ ๋‹ค๋ค„๋ด…๋‹ˆ๋‹ค.

  • {{variable}} ํ…œํ”Œ๋ฆฟ
  • ๋ถˆ๋ณ€ ๋ฒ„์ „ ยท ARN
  • Variant 3๊ฐœ ๋น„๊ต
  • Advanced Optimization ยท 5๋ชจ๋ธ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜
ํ”„๋กฌํ”„ํŠธ๊ฐ€ ์ž์‚ฐ์ด ๋˜๋Š” ์ˆœ๊ฐ„, ์ˆ˜๋ช…์ฃผ๊ธฐ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋ฒ„์ „ ๊ด€๋ฆฌ ยท Variant ๋น„๊ต ยท ์ž๋™ ์ตœ์ ํ™” โ€” ์ฝ”๋“œ์— ํ•˜๋“œ์ฝ”๋”ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.