[OpenAI][λ²ˆμ—­] Realtime Prompting Guide

Posted by Euisuk's Dev Log on August 31, 2025

[OpenAI][λ²ˆμ—­] Realtime Prompting Guide

원본 κ²Œμ‹œκΈ€: https://velog.io/@euisuk-chung/OpenAI-Realtime-Prompting-Guide

OpenAI Realtime API ν”„λ‘¬ν”„νŒ… κ°€μ΄λ“œ

https://cookbook.openai.com/examples/realtime_prompting_guide

μ†Œκ°œ

였늘 OpenAIλŠ” APIμ—μ„œ κ°€μž₯ κ°•λ ₯ν•œ μŒμ„± λŒ€ μŒμ„± λͺ¨λΈμΈ gpt-realtime을 μΆœμ‹œν•˜κ³  Realtime API의 일반 μ‚¬μš© κ°€λŠ₯성을 λ°œν‘œν–ˆμŠ΅λ‹ˆλ‹€.

μŒμ„± λŒ€ μŒμ„± μ‹œμŠ€ν…œμ€ μŒμ„±μ„ 핡심 AI μΈν„°νŽ˜μ΄μŠ€λ‘œ κ΅¬ν˜„ν•˜λŠ” 데 ν•„μˆ˜μ μž…λ‹ˆλ‹€. μƒˆλ‘œμš΄ μΆœμ‹œλŠ” 견고성과 μ‚¬μš©μ„±μ„ ν–₯μƒμ‹œμΌœ 기업이 λ―Έμ…˜ 크리티컬 μŒμ„± μ—μ΄μ „νŠΈλ₯Ό λŒ€κ·œλͺ¨λ‘œ 배포할 수 μžˆλŠ” 신뒰성을 μ œκ³΅ν•©λ‹ˆλ‹€.

μƒˆλ‘œμš΄ gpt-realtime λͺ¨λΈμ€ 더 κ°•λ ₯ν•œ μ§€μ‹œ 사항 μ€€μˆ˜, 더 μ‹ λ’°ν•  수 μžˆλŠ” 도ꡬ 호좜, λˆˆμ— λ„κ²Œ 더 λ‚˜μ€ μŒμ„± ν’ˆμ§ˆ, 그리고 μ „λ°˜μ μœΌλ‘œ 더 λΆ€λ“œλŸ¬μš΄ λŠλ‚Œμ„ μ œκ³΅ν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ ν–₯μƒμœΌλ‘œ 연쇄적 μ ‘κ·Όλ²•μ—μ„œ μ§„μ •ν•œ μ‹€μ‹œκ°„ κ²½ν—˜μœΌλ‘œ μ „ν™˜ν•  수 μžˆμ–΄ μ§€μ—° μ‹œκ°„μ„ 쀄이고 더 μžμ—°μŠ€λŸ½κ³  ν‘œν˜„λ ₯ μžˆλŠ” 응닡을 생성할 수 μžˆμŠ΅λ‹ˆλ‹€.

Realtime λͺ¨λΈμ€ ν…μŠ€νŠΈ 기반 λͺ¨λΈμ— 직접 μ μš©λ˜μ§€ μ•ŠλŠ” λ‹€μ–‘ν•œ ν”„λ‘¬ν”„νŒ… κΈ°λ²•μ˜ 이점을 μ–»μŠ΅λ‹ˆλ‹€. 이 ν”„λ‘¬ν”„νŒ… κ°€μ΄λ“œλŠ” μ œμ•ˆλœ ν”„λ‘¬ν”„νŠΈ ꡬ쑰뢀터 μ‹œμž‘ν•˜μ—¬ 각 뢀뢄을 μ‹€μš©μ μΈ 팁, 볡사할 수 μžˆλŠ” μž‘μ€ νŒ¨ν„΄, 그리고 μ‚¬μš© 사둀에 μ μš©ν•  수 μžˆλŠ” μ˜ˆμ‹œμ™€ ν•¨κ»˜ μ•ˆλ‚΄ν•©λ‹ˆλ‹€.

일반적인 팁

  • λŠμž„μ—†μ΄ λ°˜λ³΅ν•˜μ„Έμš”: μž‘μ€ 단어 변경이 행동을 μ’Œμš°ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

    • μ˜ˆμ‹œ: 뢈λͺ…ν™•ν•œ μ˜€λ””μ˜€ μ§€μ‹œμ‚¬ν•­μ—μ„œ β€œinaudible” β†’ β€œunintelligibleβ€λ‘œ λ°”κΎΈλ©΄ λ…Έμ΄μ¦ˆκ°€ μžˆλŠ” μž…λ ₯ μ²˜λ¦¬κ°€ κ°œμ„ λ©λ‹ˆλ‹€.
  • 문단보닀 뢈릿 포인트λ₯Ό μ„ ν˜Έν•˜μ„Έμš”: λͺ…ν™•ν•˜κ³  짧은 뢈릿 ν¬μΈνŠΈκ°€ κΈ΄ 문단보닀 더 λ‚˜μ€ μ„±λŠ₯을 λ³΄μž…λ‹ˆλ‹€.
  • μ˜ˆμ‹œλ‘œ μ•ˆλ‚΄ν•˜μ„Έμš”: λͺ¨λΈμ€ μƒ˜ν”Œ 문ꡬλ₯Ό λ°€μ ‘ν•˜κ²Œ λ”°λ¦…λ‹ˆλ‹€.
  • μ •ν™•ν•˜κ²Œ ν‘œν˜„ν•˜μ„Έμš”: λͺ¨ν˜Έν•¨μ΄λ‚˜ μƒμΆ©ν•˜λŠ” μ§€μ‹œμ‚¬ν•­ = GPT-5와 μœ μ‚¬ν•œ μ„±λŠ₯ μ €ν•˜.
  • μ–Έμ–΄ μ œμ–΄: μ›μΉ˜ μ•ŠλŠ” μ–Έμ–΄ μ „ν™˜μ„ λ°©μ§€ν•˜λ €λ©΄ λŒ€μƒ μ–Έμ–΄λ₯Ό κ³ μ •ν•˜μ„Έμš”.
  • 반볡 쀄이기: λ‘œλ΄‡μ μΈ ν‘œν˜„μ„ 쀄이기 μœ„ν•΄ λ‹€μ–‘μ„± κ·œμΉ™μ„ μΆ”κ°€ν•˜μ„Έμš”.
  • κ°•μ‘°λ₯Ό μœ„ν•œ λŒ€λ¬Έμž ν…μŠ€νŠΈ μ‚¬μš©: 핡심 κ·œμΉ™μ„ λŒ€λ¬Έμžλ‘œ μ“°λ©΄ λͺ¨λΈμ΄ 더 잘 λ”°λ₯Ό 수 μžˆμŠ΅λ‹ˆλ‹€.
  • ν…μŠ€νŠΈκ°€ μ•„λ‹Œ κ·œμΉ™μ„ ν…μŠ€νŠΈλ‘œ λ³€ν™˜: β€œIF x > 3 THEN ESCALATE” λŒ€μ‹  β€œIF MORE THAN THREE FAILURES THEN ESCALATEβ€λ‘œ μž‘μ„±ν•˜μ„Έμš”.

ν”„λ‘¬ν”„νŠΈ ꡬ쑰

ν”„λ‘¬ν”„νŠΈλ₯Ό κ΅¬μ„±ν•˜λ©΄ λͺ¨λΈμ΄ λ§₯락을 μ΄ν•΄ν•˜κ³  ν„΄ μ „λ°˜μ— 걸쳐 일관성을 μœ μ§€ν•˜κΈ° μ‰¬μ›Œμ§‘λ‹ˆλ‹€. λ˜ν•œ λ¬Έμ œκ°€ μžˆλŠ” μ„Ήμ…˜μ„ λ°˜λ³΅ν•˜κ³  μˆ˜μ •ν•˜κΈ°λ„ μ‰¬μ›Œμ§‘λ‹ˆλ‹€.

  • 효과: μ‹œμŠ€ν…œ ν”„λ‘¬ν”„νŠΈμ—μ„œ λͺ…ν™•ν•˜κ³  라벨이 뢙은 μ„Ήμ…˜μ„ μ‚¬μš©ν•˜μ—¬ λͺ¨λΈμ΄ μ°Ύμ•„μ„œ λ”°λ₯Ό 수 μžˆλ„λ‘ ν•©λ‹ˆλ‹€. 각 μ„Ήμ…˜μ€ ν•˜λ‚˜μ˜ λ‚΄μš©μ— μ§‘μ€‘ν•˜λ„λ‘ μœ μ§€ν•©λ‹ˆλ‹€.
  • 적용 방법: 도메인 νŠΉμ • μ„Ήμ…˜μ„ μΆ”κ°€ν•˜κ³  (예: μ»΄ν”ŒλΌμ΄μ–ΈμŠ€, λΈŒλžœλ“œ μ •μ±…), ν•„μš”ν•˜μ§€ μ•Šμ€ μ„Ήμ…˜μ€ μ œκ±°ν•©λ‹ˆλ‹€ (예: 발음 λ¬Έμ œκ°€ μ—†λ‹€λ©΄ μ°Έκ³  발음).
  • μ˜ˆμ‹œ:
1
2
3
4
5
6
7
8
# Role & Objective        β€” 당신이 λˆ„κ΅¬μ΄κ³  "성곡"이 무엇을 μ˜λ―Έν•˜λŠ”μ§€
# Personality & Tone      β€” μœ μ§€ν•  μŒμ„±κ³Ό μŠ€νƒ€μΌ
# Context                 β€” κ²€μƒ‰λœ λ§₯락, κ΄€λ ¨ 정보
# Reference Pronunciations β€” κΉŒλ‹€λ‘œμš΄ 단어에 λŒ€ν•œ μŒμ„±ν•™μ  κ°€μ΄λ“œ
# Tools                   β€” 이름, μ‚¬μš© κ·œμΉ™, 그리고 μ„œλ¬Έ
# Instructions / Rules    β€” ν•΄μ•Ό ν•  것, ν•˜μ§€ 말아야 ν•  것, 접근법
# Conversation Flow       β€” μƒνƒœ, λͺ©ν‘œ, 그리고 μ „ν™˜
# Safety & Escalation     β€” λŒ€μ²΄ 및 인계 논리

μ—­ν•  및 λͺ©ν‘œ

이 μ„Ήμ…˜μ€ μ—μ΄μ „νŠΈκ°€ λˆ„κ΅¬μΈμ§€μ™€ β€œμ™„λ£Œβ€κ°€ 무엇을 μ˜λ―Έν•˜λŠ”μ§€ μ •μ˜ν•©λ‹ˆλ‹€. μ˜ˆμ‹œλ“€μ€ λͺ¨λΈμ΄ μ—­ν• κ³Ό λͺ©ν‘œκ°€ λͺ…μ‹œμ μΌ λ•Œ μ–Όλ§ˆλ‚˜ λ°€μ ‘ν•˜κ²Œ μ€€μˆ˜ν•˜λŠ”μ§€ 보여주기 μœ„ν•΄ 두 κ°€μ§€ λ‹€λ₯Έ 정체성을 λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

  • μ‚¬μš© μ‹œκΈ°: λͺ¨λΈμ΄ ν•„μš”ν•œ 페λ₯΄μ†Œλ‚˜, μ—­ν• , λ˜λŠ” μž‘μ—… λ²”μœ„λ₯Ό μ·¨ν•˜μ§€ μ•Šμ„ λ•Œ.
  • 효과: μŒμ„± μ—μ΄μ „νŠΈμ˜ 정체성을 κ³ μ •ν•˜μ—¬ 응닡이 ν•΄λ‹Ή μ—­ν•  μ„€λͺ…에 μ‘°κ±΄ν™”λ˜λ„λ‘ ν•©λ‹ˆλ‹€.
  • 적용 방법: μ‚¬μš© 사둀에 따라 역할을 μˆ˜μ •ν•©λ‹ˆλ‹€.

μ˜ˆμ‹œ (λͺ¨λΈμ΄ νŠΉμ • 얡양을 취함)

  • 원문:
1
2
# Role & Objective
You are french quebecois speaking customer service bot. Your task is to answer the user's question.
  • ν•œκ΅­μ–΄ λ²ˆμ—­:
1
2
# μ—­ν•  및 λͺ©ν‘œ
당신은 ν”„λž‘μŠ€κ³„ ν€˜λ²‘ 얡양을 μ‚¬μš©ν•˜λŠ” 고객 μ„œλΉ„μŠ€ λ΄‡μž…λ‹ˆλ‹€. λ‹Ήμ‹ μ˜ μž„λ¬΄λŠ” μ‚¬μš©μžμ˜ μ§ˆλ¬Έμ— λ‹΅ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

μ˜ˆμ‹œ (λͺ¨λΈμ΄ 캐릭터λ₯Ό 취함)

원문:

1
2
# Role & Objective
You are a high-energy game-show host guiding the caller to guess a secret number from 1 to 100 to win 1,000,000$.

ν•œκ΅­μ–΄ λ²ˆμ—­:

1
2
# μ—­ν•  및 λͺ©ν‘œ
당신은 λ°œμ‹ μžκ°€ 1λΆ€ν„° 100κΉŒμ§€μ˜ λΉ„λ°€ 번호λ₯Ό λ§žμΆ°μ„œ 1,000,000λ‹¬λŸ¬λ₯Ό νšλ“ν•˜λ„λ‘ μ•ˆλ‚΄ν•˜λŠ” κ³ μ—λ„ˆμ§€ κ²Œμž„μ‡Ό μ§„ν–‰μžμž…λ‹ˆλ‹€.

μƒˆλ‘œμš΄ realtime λͺ¨λΈμ€ 역할을 더 잘 μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

성격 및 톀

μƒˆλ‘œμš΄ λͺ¨λΈ μŠ€λƒ…μƒ·μ€ νŠΉμ • μ„±κ²©μ΄λ‚˜ 톀을 λͺ¨λ°©ν•˜λŠ” μ§€μ‹œμ‚¬ν•­μ„ 정말 잘 λ”°λ¦…λ‹ˆλ‹€. μ‚¬μš© μ‚¬λ‘€μ—μ„œ κΈ°λŒ€ν•˜λŠ” 바에 따라 μŒμ„± κ²½ν—˜κ³Ό 전달을 λ§žμΆ€ν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  • μ‚¬μš© μ‹œκΈ°: 응닡이 ν‰ν‰ν•˜κ±°λ‚˜ μ§€λ‚˜μΉ˜κ²Œ μž₯ν™©ν•˜κ±°λ‚˜ ν„΄ μ „λ°˜μ— 걸쳐 일관성이 없을 λ•Œ.
  • 효과: μŒμ„±, 간결함, 그리고 νŽ˜μ΄μ‹±μ„ μ„€μ •ν•˜μ—¬ 닡변이 μžμ—°μŠ€λŸ½κ³  μΌκ΄€λ˜κ²Œ 듀리도둝 ν•©λ‹ˆλ‹€.
  • 적용 방법: λ”°λœ»ν•¨/격식과 κΈ°λ³Έ 길이λ₯Ό μ‘°μ •ν•©λ‹ˆλ‹€. 규제 λ„λ©”μΈμ˜ 경우 쀑립적 정확성을 μ„ ν˜Έν•©λ‹ˆλ‹€. μ‚¬μš© 사둀와 κ΄€λ ¨λœ λ‹€λ₯Έ ν•˜μœ„ μ„Ήμ…˜μ„ μΆ”κ°€ν•©λ‹ˆλ‹€.

μ˜ˆμ‹œ

원문:

1
2
3
4
5
6
7
# Personality & Tone
## Personality
- Friendly, calm and approachable expert customer service assistant.
## Tone
- Warm, concise, confident, never fawning.
## Length
2–3 sentences per turn.

ν•œκ΅­μ–΄ λ²ˆμ—­:

1
2
3
4
5
6
7
# 성격 및 톀
## 성격
- μΉœκ·Όν•˜κ³  μ°¨λΆ„ν•˜λ©° μ ‘κ·Όν•˜κΈ° μ‰¬μš΄ μ „λ¬Έ 고객 μ„œλΉ„μŠ€ μ–΄μ‹œμŠ€ν„΄νŠΈ.
## 톀
- λ”°λœ»ν•˜κ³  κ°„κ²°ν•˜λ©° μžμ‹ κ° 있게, κ²°μ½” μ•„μ²¨ν•˜μ§€ μ•ŠμŒ.
## 길이
ν„΄λ‹Ή 2-3 λ¬Έμž₯.

μ˜ˆμ‹œ (닀쀑 감정)

원문:

1
2
3
4
# Personality & Tone
- Start your response very happy
- Midway, change to sad
- At the end change your mood to very angry

ν•œκ΅­μ–΄ λ²ˆμ—­:

1
2
3
4
# 성격 및 톀
- 맀우 ν–‰λ³΅ν•œ μƒνƒœλ‘œ 응닡을 μ‹œμž‘ν•˜μ„Έμš”
- 쀑간에 μŠ¬ν”ˆ μƒνƒœλ‘œ λ³€κ²½ν•˜μ„Έμš”
- λ§ˆμ§€λ§‰μ— 맀우 ν™”λ‚œ λΆ„μœ„κΈ°λ‘œ λ³€κ²½ν•˜μ„Έμš”

λͺ¨λΈμ€ λ³΅μž‘ν•œ μ§€μ‹œμ‚¬ν•­μ„ λ”°λ₯΄κ³  μ˜€λ””μ˜€ 응닡 μ „λ°˜μ— 걸쳐 3κ°€μ§€ 감정을 μ „ν™˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

속도 μ§€μ‹œμ‚¬ν•­

Realtime APIμ—μ„œ 속도 λ§€κ°œλ³€μˆ˜λŠ” μž¬μƒ 속도λ₯Ό λ³€κ²½ν•˜μ§€ λͺ¨λΈμ΄ μŒμ„±μ„ κ΅¬μ„±ν•˜λŠ” 방식은 λ³€κ²½ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ‹€μ œλ‘œ 더 λΉ λ₯΄κ²Œ λ“€λ¦¬κ²Œ ν•˜λ €λ©΄ νŽ˜μ΄μ‹±μ„ μ•ˆλ‚΄ν•  수 μžˆλŠ” μ§€μ‹œμ‚¬ν•­μ„ μΆ”κ°€ν•˜μ„Έμš”.

  • μ‚¬μš© μ‹œκΈ°: μ‚¬μš©μžκ°€ 더 λΉ λ₯Έ μŒμ„±μ„ μ›ν•˜μ§€λ§Œ μž¬μƒ 속도(속도 λ§€κ°œλ³€μˆ˜ μ‚¬μš©)λ§ŒμœΌλ‘œλŠ” λ§ν•˜κΈ° μŠ€νƒ€μΌμ„ κ³ μΉ˜μ§€ λͺ»ν•  λ•Œ.
  • 효과: ν΄λΌμ΄μ–ΈνŠΈ μž¬μƒ 속도와 λ…λ¦½μ μœΌλ‘œ λ§ν•˜κΈ° μŠ€νƒ€μΌ(간결함, 리듬)을 μ‘°μ •ν•©λ‹ˆλ‹€.
  • 적용 방법: μ‚¬μš© 사둀 μš”κ΅¬ 사항에 맞게 속도 μ§€μ‹œμ‚¬ν•­μ„ μˆ˜μ •ν•©λ‹ˆλ‹€.

μ˜ˆμ‹œ

원문:

1
2
3
4
5
6
7
8
9
10
# Personality & Tone
## Personality
- Friendly, calm and approachable expert customer service assistant.
## Tone
- Warm, concise, confident, never fawning.
## Length
- 2–3 sentences per turn.
## Pacing
- Deliver your audio response fast, but do not sound rushed.
- Do not modify the content of your response, only increase speaking speed for the same response.

ν•œκ΅­μ–΄ λ²ˆμ—­:

1
2
3
4
5
6
7
8
9
10
# 성격 및 톀
## 성격
- μΉœκ·Όν•˜κ³  μ°¨λΆ„ν•˜λ©° μ ‘κ·Όν•˜κΈ° μ‰¬μš΄ μ „λ¬Έ 고객 μ„œλΉ„μŠ€ μ–΄μ‹œμŠ€ν„΄νŠΈ.
## 톀
- λ”°λœ»ν•˜κ³  κ°„κ²°ν•˜λ©° μžμ‹ κ° 있게, κ²°μ½” μ•„μ²¨ν•˜μ§€ μ•ŠμŒ.
## 길이
- ν„΄λ‹Ή 2-3 λ¬Έμž₯.
## νŽ˜μ΄μ‹±
- μ˜€λ””μ˜€ 응닡을 λΉ λ₯΄κ²Œ μ „λ‹¬ν•˜λ˜, κΈ‰ν•˜κ²Œ 듀리지 μ•Šλ„λ‘ ν•˜μ„Έμš”.
- μ‘λ‹΅μ˜ λ‚΄μš©μ„ μˆ˜μ •ν•˜μ§€ 말고, λ™μΌν•œ 응닡에 λŒ€ν•΄ λ§ν•˜κΈ° μ†λ„λ§Œ μ¦κ°€μ‹œν‚€μ„Έμš”.

μƒˆλ‘œμš΄ realtime λͺ¨λΈμ˜ μ˜€λ””μ˜€λŠ” (λ„ˆλ¬΄ κΈ‰ν•˜κ²Œ 듀리지 μ•ŠμœΌλ©΄μ„œλ„!) νŽ˜μ΄μŠ€κ°€ λˆˆμ— λ„κ²Œ λΉ λ¦…λ‹ˆλ‹€.

μ–Έμ–΄ μ œμ•½

μ–Έμ–΄ μ œμ•½μ€ λ°°κ²½ μ†ŒμŒμ΄λ‚˜ λ‹€κ΅­μ–΄ μž…λ ₯κ³Ό 같은 κΉŒλ‹€λ‘œμš΄ μ‘°κ±΄μ—μ„œλ„ λͺ¨λΈμ΄ μ˜λ„λœ μ–Έμ–΄λ‘œ μΌκ΄€λ˜κ²Œ μ‘λ‹΅ν•˜λ„λ‘ 보μž₯ν•©λ‹ˆλ‹€.

  • μ‚¬μš© μ‹œκΈ°: λ‹€κ΅­μ–΄ λ˜λŠ” λ…Έμ΄μ¦ˆκ°€ μžˆλŠ” ν™˜κ²½μ—μ„œ μ‹€μˆ˜λ‘œ μ–Έμ–΄κ°€ λ°”λ€ŒλŠ” 것을 λ°©μ§€ν•˜κΈ° μœ„ν•΄.
  • 효과: 우발적인 μ–Έμ–΄ 변경을 λ°©μ§€ν•˜κΈ° μœ„ν•΄ μ„ νƒν•œ μ–Έμ–΄λ‘œ 좜λ ₯을 κ³ μ •ν•©λ‹ˆλ‹€.
  • 적용 방법: β€œEnglish”λ₯Ό λŒ€μƒ μ–Έμ–΄λ‘œ λ³€κ²½ν•˜κ±°λ‚˜, μ‚¬μš© 사둀에 따라 더 λ³΅μž‘ν•œ μ§€μ‹œμ‚¬ν•­μ„ μΆ”κ°€ν•©λ‹ˆλ‹€.

μ˜ˆμ‹œ (ν•˜λ‚˜μ˜ μ–Έμ–΄λ‘œ κ³ μ •)

원문:

1
2
3
4
5
6
7
8
9
10
11
# Personality & Tone
## Personality
- Friendly, calm and approachable expert customer service assistant.
## Tone
- Warm, concise, confident, never fawning.
## Length
- 2–3 sentences per turn.
## Language
- The conversation will be only in English.
- Do not respond in any other language even if the user asks.
- If the user speaks another language, politely explain that support is limited to English.

ν•œκ΅­μ–΄ λ²ˆμ—­:

1
2
3
4
5
6
7
8
9
10
11
# 성격 및 톀
## 성격
- μΉœκ·Όν•˜κ³  μ°¨λΆ„ν•˜λ©° μ ‘κ·Όν•˜κΈ° μ‰¬μš΄ μ „λ¬Έ 고객 μ„œλΉ„μŠ€ μ–΄μ‹œμŠ€ν„΄νŠΈ.
## 톀
- λ”°λœ»ν•˜κ³  κ°„κ²°ν•˜λ©° μžμ‹ κ° 있게, κ²°μ½” μ•„μ²¨ν•˜μ§€ μ•ŠμŒ.
## 길이
- ν„΄λ‹Ή 2-3 λ¬Έμž₯.
## μ–Έμ–΄
- λŒ€ν™”λŠ” μ˜μ–΄λ‘œλ§Œ μ§„ν–‰λ©λ‹ˆλ‹€.
- μ‚¬μš©μžκ°€ μš”μ²­ν•˜λ”λΌλ„ λ‹€λ₯Έ μ–Έμ–΄λ‘œ μ‘λ‹΅ν•˜μ§€ λ§ˆμ„Έμš”.
- μ‚¬μš©μžκ°€ λ‹€λ₯Έ μ–Έμ–΄λ‘œ λ§ν•˜λ©΄ 지원이 μ˜μ–΄λ‘œ μ œν•œλœλ‹€κ³  μ •μ€‘νžˆ μ„€λͺ…ν•˜μ„Έμš”.

μ˜ˆμ‹œ (λͺ¨λΈμ΄ μ–Έμ–΄λ₯Ό κ°€λ₯΄μΉ¨)

원문:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# Role & Objective
- You are a friendly, knowledgeable voice tutor for French learners.  
- Your goal is to help the user improve their French speaking and listening skills through engaging conversation and clear explanations.  
- Balance immersive French practice with supportive English guidance to ensure understanding and progress.
# Personality & Tone
## Personality
- Friendly, calm and approachable expert customer service assistant.
## Tone
- Warm, concise, confident, never fawning.
## Length
- 2–3 sentences per turn.
## Language
### Explanations
Use English when explaining grammar, vocabulary, or cultural context.
### Conversation
Speak in French when conducting practice, giving examples, or engaging in dialogue.

ν•œκ΅­μ–΄ λ²ˆμ—­:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# μ—­ν•  및 λͺ©ν‘œ
- 당신은 ν”„λž‘μŠ€μ–΄ ν•™μŠ΅μžλ₯Ό μœ„ν•œ μΉœκ·Όν•˜κ³  지식이 ν’λΆ€ν•œ μŒμ„± νŠœν„°μž…λ‹ˆλ‹€.
- λ‹Ήμ‹ μ˜ λͺ©ν‘œλŠ” λ§€λ ₯적인 λŒ€ν™”μ™€ λͺ…ν™•ν•œ μ„€λͺ…을 톡해 μ‚¬μš©μžκ°€ ν”„λž‘μŠ€μ–΄ λ§ν•˜κΈ°μ™€ λ“£κΈ° λŠ₯λ ₯을 ν–₯μƒμ‹œν‚€λ„λ‘ λ•λŠ” κ²ƒμž…λ‹ˆλ‹€.
- 이해와 진보λ₯Ό 보μž₯ν•˜κΈ° μœ„ν•΄ λͺ°μž…ν˜• ν”„λž‘μŠ€μ–΄ μ—°μŠ΅κ³Ό 지원적인 μ˜μ–΄ κ°€μ΄λ“œμ˜ κ· ν˜•μ„ λ§žμΆ”μ„Έμš”.
# 성격 및 톀
## 성격
- μΉœκ·Όν•˜κ³  μ°¨λΆ„ν•˜λ©° μ ‘κ·Όν•˜κΈ° μ‰¬μš΄ μ „λ¬Έ 고객 μ„œλΉ„μŠ€ μ–΄μ‹œμŠ€ν„΄νŠΈ.
## 톀
- λ”°λœ»ν•˜κ³  κ°„κ²°ν•˜λ©° μžμ‹ κ° 있게, κ²°μ½” μ•„μ²¨ν•˜μ§€ μ•ŠμŒ.
## 길이
- ν„΄λ‹Ή 2-3 λ¬Έμž₯.
## μ–Έμ–΄
### μ„€λͺ…
문법, μ–΄νœ˜, λ˜λŠ” 문화적 λ§₯락을 μ„€λͺ…ν•  λ•ŒλŠ” μ˜μ–΄λ₯Ό μ‚¬μš©ν•˜μ„Έμš”.
### λŒ€ν™”
μ—°μŠ΅μ„ μ§„ν–‰ν•˜κ±°λ‚˜ μ˜ˆμ‹œλ₯Ό μ œκ³΅ν•˜κ±°λ‚˜ λŒ€ν™”μ— μ°Έμ—¬ν•  λ•ŒλŠ” ν”„λž‘μŠ€μ–΄λ‘œ λ§ν•˜μ„Έμš”.

λͺ¨λΈμ€ 우리의 λ§žμΆ€ν˜• μ§€μ‹œμ‚¬ν•­μ— 따라 ν•œ μ–Έμ–΄μ—μ„œ λ‹€λ₯Έ μ–Έμ–΄λ‘œ μ‰½κ²Œ μ½”λ“œ μ „ν™˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€!

반볡 쀄이기

realtime λͺ¨λΈμ€ μƒ˜ν”Œ 문ꡬλ₯Ό λ°€μ ‘ν•˜κ²Œ 따라 λΈŒλžœλ“œλ₯Ό μœ μ§€ν•  수 μžˆμ§€λ§Œ, κ³Όλ„ν•˜κ²Œ μ‚¬μš©ν•˜μ—¬ 응닡이 λ‘œλ΄‡μ μ΄κ±°λ‚˜ 반볡적으둜 듀릴 수 μžˆμŠ΅λ‹ˆλ‹€. 반볡 κ·œμΉ™μ„ μΆ”κ°€ν•˜λ©΄ λͺ…ν™•μ„±κ³Ό λΈŒλžœλ“œ μŒμ„±μ„ μœ μ§€ν•˜λ©΄μ„œ 닀양성을 μœ μ§€ν•˜λŠ” 데 도움이 λ©λ‹ˆλ‹€.

  • μ‚¬μš© μ‹œκΈ°: 좜λ ₯이 ν„΄μ΄λ‚˜ μ„Έμ…˜ μ „λ°˜μ— 걸쳐 λ™μΌν•œ μ‹œμž‘κ΅¬, μ—°κ²°μ–΄, λ˜λŠ” λ¬Έμž₯ νŒ¨ν„΄μ„ μž¬μ‚¬μš©ν•  λ•Œ.
  • 효과: λ‹€μ–‘μ„± μ œμ•½μ„ μΆ”κ°€ν•©λ‹ˆλ‹€β€”λ°˜λ³΅λ˜λŠ” ꡬ문을 μ–΅μ œν•˜κ³ , λ™μ˜μ–΄μ™€ λŒ€μ²΄ λ¬Έμž₯ ꡬ쑰λ₯Ό μœ λ„ν•˜λ©°, ν•„μˆ˜ μš©μ–΄λŠ” κ·ΈλŒ€λ‘œ μœ μ§€ν•©λ‹ˆλ‹€.
  • 적용 방법: 엄격함을 μ‘°μ •ν•˜κ³  (예: β€œN ν„΄λ§ˆλ‹€ ν•œ λ²ˆλ³΄λ‹€ 더 자주 λ™μΌν•œ μ‹œμž‘κ΅¬λ₯Ό μž¬μ‚¬μš©ν•˜μ§€ λ§ˆμ„Έμš”β€), μœ μ§€ν•΄μ•Ό ν•  ꡬ문을 ν™”μ΄νŠΈλ¦¬μŠ€νŠΈμ— μΆ”κ°€ν•˜κ³  (법적/κ·œμ • μ€€μˆ˜/λΈŒλžœλ“œ), 일관성이 μ€‘μš”ν•œ 경우 더 μ—„κ²©ν•œ ν‘œν˜„μ„ ν—ˆμš©ν•©λ‹ˆλ‹€.

μ˜ˆμ‹œ

원문:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# Personality & Tone
## Personality
- Friendly, calm and approachable expert customer service assistant.
## Tone
- Warm, concise, confident, never fawning.
## Length
- 2–3 sentences per turn.
## Language
- The conversation will be only in English.
- Do not respond in any other language even if the user asks.
- If the user speaks another language, politely explain that support is limited to English.
## Variety
- Do not repeat the same sentence twice.
- Vary your responses so it doesn't sound robotic.

ν•œκ΅­μ–΄ λ²ˆμ—­:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 성격 및 톀
## 성격
- μΉœκ·Όν•˜κ³  μ°¨λΆ„ν•˜λ©° μ ‘κ·Όν•˜κΈ° μ‰¬μš΄ μ „λ¬Έ 고객 μ„œλΉ„μŠ€ μ–΄μ‹œμŠ€ν„΄νŠΈ.
## 톀
- λ”°λœ»ν•˜κ³  κ°„κ²°ν•˜λ©° μžμ‹ κ° 있게, κ²°μ½” μ•„μ²¨ν•˜μ§€ μ•ŠμŒ.
## 길이
- ν„΄λ‹Ή 2-3 λ¬Έμž₯.
## μ–Έμ–΄
- λŒ€ν™”λŠ” μ˜μ–΄λ‘œλ§Œ μ§„ν–‰λ©λ‹ˆλ‹€.
- μ‚¬μš©μžκ°€ μš”μ²­ν•˜λ”λΌλ„ λ‹€λ₯Έ μ–Έμ–΄λ‘œ μ‘λ‹΅ν•˜μ§€ λ§ˆμ„Έμš”.
- μ‚¬μš©μžκ°€ λ‹€λ₯Έ μ–Έμ–΄λ‘œ λ§ν•˜λ©΄ 지원이 μ˜μ–΄λ‘œ μ œν•œλœλ‹€κ³  μ •μ€‘νžˆ μ„€λͺ…ν•˜μ„Έμš”.
## λ‹€μ–‘μ„±
- λ™μΌν•œ λ¬Έμž₯을 두 번 λ°˜λ³΅ν•˜μ§€ λ§ˆμ„Έμš”.
- λ‘œλ΄‡μ μœΌλ‘œ 듀리지 μ•Šλ„λ‘ 응닡을 λ‹€μ–‘ν™”ν•˜μ„Έμš”.

이제 λͺ¨λΈμ€ 응닡과 확인을 λ‹€μ–‘ν™”ν•˜μ—¬ λ‘œλ΄‡μ μœΌλ‘œ 듀리지 μ•Šμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.

참고 발음

이 μ„Ήμ…˜μ€ μŒμ„± μƒν˜Έμž‘μš© 쀑에 λͺ¨λΈμ΄ μ€‘μš”ν•œ 단어, 숫자, 이름, 그리고 μš©μ–΄λ₯Ό μ˜¬λ°”λ₯΄κ²Œ λ°œμŒν•˜λ„λ‘ 보μž₯ν•˜λŠ” 방법을 λ‹€λ£Ήλ‹ˆλ‹€.

  • μ‚¬μš© μ‹œκΈ°: λΈŒλžœλ“œλͺ…, 기술 μš©μ–΄, λ˜λŠ” μœ„μΉ˜κ°€ 자주 잘λͺ» 발음될 λ•Œ.
  • 효과: μŒμ„±ν•™μ  힌트둜 μ‹ λ’°μ„±κ³Ό λͺ…확성을 ν–₯μƒμ‹œν‚΅λ‹ˆλ‹€.
  • 적용 방법: 짧은 λͺ©λ‘μœΌλ‘œ μœ μ§€ν•˜κ³ , 였λ₯˜λ₯Ό 듀을 λ•Œλ§ˆλ‹€ μ—…λ°μ΄νŠΈν•©λ‹ˆλ‹€.

μ˜ˆμ‹œ

원문:

1
2
3
4
5
6
# Reference Pronunciations
When voicing these words, use the respective pronunciations:
- Pronounce "SQL" as "sequel."
- Pronounce "PostgreSQL" as "post-gress."
- Pronounce "Kyiv" as "KEE-iv."
- Pronounce "Huawei" as "HWAH-way"

ν•œκ΅­μ–΄ λ²ˆμ—­:

1
2
3
4
5
6
# 참고 발음
μ΄λŸ¬ν•œ 단어λ₯Ό μŒμ„±μœΌλ‘œ ν‘œν˜„ν•  λ•Œ, ν•΄λ‹Ή λ°œμŒμ„ μ‚¬μš©ν•˜μ„Έμš”:
- "SQL"을 "sequel"둜 λ°œμŒν•˜μ„Έμš”.
- "PostgreSQL"을 "post-gress"둜 λ°œμŒν•˜μ„Έμš”.
- "Kyiv"λ₯Ό "KEE-iv"둜 λ°œμŒν•˜μ„Έμš”.
- "Huawei"λ₯Ό "HWAH-way"둜 λ°œμŒν•˜μ„Έμš”.

μƒˆλ‘œμš΄ GA λͺ¨λΈ gpt-realtime은 μ°Έκ³  λ°œμŒμ„ μ‚¬μš©ν•˜μ—¬ SQL을 β€œsequelβ€λ‘œ μ˜¬λ°”λ₯΄κ²Œ λ°œμŒν•  수 μžˆμŠ΅λ‹ˆλ‹€.

영숫자 발음

Realtime S2SλŠ” 핡심 정보(μ „ν™”, μ‹ μš©μΉ΄λ“œ, μ£Όλ¬Έ ID)λ₯Ό 읽을 λ•Œ 숫자/문자λ₯Ό 흐리게 ν•˜κ±°λ‚˜ 병합할 수 μžˆμŠ΅λ‹ˆλ‹€. λͺ…μ‹œμ μΈ λ¬Έμžλ³„ 확인은 μ˜€ν•΄λ₯Ό λ°©μ§€ν•˜κ³  더 λͺ…ν™•ν•œ μŒμ„± 합성을 μœ λ„ν•©λ‹ˆλ‹€.

  • μ‚¬μš© μ‹œκΈ°: λͺ¨λΈμ΄ μ „ν™”λ²ˆν˜Έ, μΉ΄λ“œ 번호, 2FA μ½”λ“œ, μ£Όλ¬Έ ID, 일련번호, μ£Όμ†Œ/λ‹¨μœ„ 번호, λ˜λŠ” ν˜Όν•©λœ 영숫자 λ¬Έμžμ—΄μ„ μΊ‘μ²˜ν•˜κ±°λ‚˜ μ½λŠ” 데 어렀움이 μžˆμ„ λ•Œ.
  • 효과: λͺ¨λΈμ΄ ν•œ λ²ˆμ— ν•œ λ¬Έμžμ”© λ§ν•˜λ„λ‘ κ°•μ œν•˜κ³  (κ΅¬λΆ„μž 포함), μ‚¬μš©μžμ™€ ν™•μΈν•˜κ³  μˆ˜μ • ν›„ μž¬ν™•μΈν•©λ‹ˆλ‹€. μ„ νƒμ μœΌλ‘œ λ¬Έμžμ— λŒ€ν•œ μŒμ„±ν•™μ  λͺ…ν™•ν™”κΈ°λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€ (예: β€œA as in Alpha”).

μ˜ˆμ‹œ (일반 μ§€μ‹œμ‚¬ν•­ μ„Ήμ…˜)

원문:

1
2
3
# Instructions/Rules
- When reading numbers or codes, speak each character separately, separated by hyphens (e.g., 4-1-5). 
- Repeat EXACTLY the provided number, do not forget any.

ν•œκ΅­μ–΄ λ²ˆμ—­:

1
2
3
# μ§€μ‹œμ‚¬ν•­/κ·œμΉ™
- μˆ«μžλ‚˜ μ½”λ“œλ₯Ό 읽을 λ•Œ, 각 문자λ₯Ό ν•˜μ΄ν”ˆμœΌλ‘œ κ΅¬λΆ„ν•˜μ—¬ λ³„λ„λ‘œ λ§ν•˜μ„Έμš” (예: 4-1-5).
- 제곡된 번호λ₯Ό μ •ν™•νžˆ λ°˜λ³΅ν•˜κ³ , λΉ λœ¨λ¦¬μ§€ λ§ˆμ„Έμš”.

μ˜ˆμ‹œ (λŒ€ν™” μƒνƒœμ˜ μ§€μ‹œμ‚¬ν•­)

원문:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{
    "id": "3_get_and_verify_phone",
    "description": "Request phone number and verify by repeating it back.",
    "instructions": [
      "Politely request the user's phone number.",
      "Once provided, confirm it by repeating each digit and ask if it's correct.",
      "If the user corrects you, confirm AGAIN to make sure you understand.",
    ],
    "examples": [
      "I'll need some more information to access your account if that's okay. May I have your phone number, please?",
      "You said 0-2-1-5-5-5-1-2-3-4, correct?",
      "You said 4-5-6-7-8-9-0-1-2-3, correct?"
    ],
    "transitions": [{
      "next_step": "4_authentication_DOB",
      "condition": "Once phone number is confirmed"
    }]
}

ν•œκ΅­μ–΄ λ²ˆμ—­:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{
    "id": "3_get_and_verify_phone",
    "description": "μ „ν™”λ²ˆν˜Έλ₯Ό μš”μ²­ν•˜κ³  λ‹€μ‹œ λ°˜λ³΅ν•˜μ—¬ ν™•μΈν•©λ‹ˆλ‹€.",
    "instructions": [
      "μ‚¬μš©μžμ˜ μ „ν™”λ²ˆν˜Έλ₯Ό μ •μ€‘νžˆ μš”μ²­ν•˜μ„Έμš”.",
      "제곡되면 각 자릿수λ₯Ό λ°˜λ³΅ν•˜μ—¬ ν™•μΈν•˜κ³  λ§žλŠ”μ§€ λ¬Όμ–΄λ³΄μ„Έμš”.",
      "μ‚¬μš©μžκ°€ μˆ˜μ •ν•˜λ©΄ μ΄ν•΄ν–ˆλŠ”μ§€ ν™•μΈν•˜κΈ° μœ„ν•΄ λ‹€μ‹œ ν™•μΈν•˜μ„Έμš”.",
    ],
    "examples": [
      "계정에 μ ‘κ·Όν•˜κΈ° μœ„ν•΄ μΆ”κ°€ 정보가 ν•„μš”ν•©λ‹ˆλ‹€. μ „ν™”λ²ˆν˜Έλ₯Ό μ•Œλ €μ£Όμ‹œκ² μ–΄μš”?",
      "0-2-1-5-5-5-1-2-3-4라고 ν•˜μ…¨λ‚˜μš”, λ§žλ‚˜μš”?",
      "4-5-6-7-8-9-0-1-2-3라고 ν•˜μ…¨λ‚˜μš”, λ§žλ‚˜μš”?"
    ],
    "transitions": [{
      "next_step": "4_authentication_DOB",
      "condition": "μ „ν™”λ²ˆν˜Έκ°€ ν™•μΈλ˜λ©΄"
    }]
}

μ§€μ‹œμ‚¬ν•­μ„ μ μš©ν•œ ν›„ gpt-realtime을 μ‚¬μš©ν•˜λ©΄: β€œλ¬Όλ‘ μž…λ‹ˆλ‹€! λ²ˆν˜ΈλŠ” 5-5-1-1-1-9-7-6-5-4-2-3μž…λ‹ˆλ‹€. λ‹€λ₯Έ 도움이 ν•„μš”ν•˜μ‹œλ©΄ μ•Œλ €μ£Όμ„Έμš”!”

μ§€μ‹œμ‚¬ν•­

이 μ„Ήμ…˜μ€ λͺ¨λΈμ΄ μž‘μ—…μ„ ν•΄κ²°ν•˜κ³  잠재적인 λͺ¨λ²” 사둀와 κ°€λŠ₯ν•œ 문제λ₯Ό ν•΄κ²°ν•˜λŠ” 방법에 λŒ€ν•œ ν”„λ‘¬ν”„νŠΈ 지침을 λ‹€λ£Ήλ‹ˆλ‹€.

λ†€λžμ§€ μ•Šκ²Œλ„, μ΅œμƒμ˜ κ²°κ³Όλ₯Ό μœ„ν•΄ GPT-4.1κ³Ό μœ μ‚¬ν•œ ν”„λ‘¬ν”„νŒ… νŒ¨ν„΄μ„ ꢌμž₯ν•©λ‹ˆλ‹€.

μ§€μ‹œμ‚¬ν•­ μ€€μˆ˜

GPT-4.1 및 GPT-5와 λ§ˆμ°¬κ°€μ§€λ‘œ, μ§€μ‹œμ‚¬ν•­μ΄ μƒμΆ©λ˜κ±°λ‚˜ λͺ¨ν˜Έν•˜κ±°λ‚˜ λͺ…ν™•ν•˜μ§€ μ•ŠμœΌλ©΄ μƒˆλ‘œμš΄ realtime λͺ¨λΈμ˜ μ„±λŠ₯이 μ €ν•˜λ©λ‹ˆλ‹€.

  • μ‚¬μš© μ‹œκΈ°: 좜λ ₯이 κ·œμΉ™μ—μ„œ λ²—μ–΄λ‚˜κ±°λ‚˜ 단계λ₯Ό κ±΄λ„ˆλ›°κ±°λ‚˜ 도ꡬλ₯Ό 잘λͺ» μ‚¬μš©ν•  λ•Œ.
  • 효과: LLM을 μ‚¬μš©ν•˜μ—¬ λ°°ν¬ν•˜κΈ° 전에 λͺ¨ν˜Έν•¨, κ°ˆλ“±, 그리고 λˆ„λ½λœ μ •μ˜λ₯Ό μ§€μ ν•©λ‹ˆλ‹€.

μ§€μ‹œμ‚¬ν•­ ν’ˆμ§ˆ ν”„λ‘¬ν”„νŠΈ (ChatGPT λ˜λŠ” API와 ν•¨κ»˜ μ‚¬μš© κ°€λŠ₯)

원문:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
## Role & Objective  
You are a **Prompt-Critique Expert**.
Examine a user-supplied LLM prompt and surface any weaknesses following the instructions below.
## Instructions
Review the prompt that is meant for an LLM to follow and identify the following issues:
- Ambiguity: Could any wording be interpreted in more than one way?
- Lacking Definitions: Are there any class labels, terms, or concepts that are not defined that might be misinterpreted by an LLM?
- Conflicting, missing, or vague instructions: Are directions incomplete or contradictory?
- Unstated assumptions: Does the prompt assume the model has to be able to do something that is not explicitly stated?
## Do **NOT** list issues of the following types:
- Invent new instructions, tool calls, or external information. You do not know what tools need to be added that are missing.
- Issues that you are unsure about.
## Output Format
"""
# Issues
- Numbered list; include brief quote snippets.
# Improvements
- Numbered list; provide the revised lines you would change and how you would change them.
# Revised Prompt
- Revised prompt where you have applied all your improvements surgically with minimal edits to the original prompt
"""

ν•œκ΅­μ–΄ λ²ˆμ—­:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
## μ—­ν•  및 λͺ©ν‘œ
당신은 **ν”„λ‘¬ν”„νŠΈ 비평 μ „λ¬Έκ°€**μž…λ‹ˆλ‹€.
μ‚¬μš©μžκ°€ μ œκ³΅ν•œ LLM ν”„λ‘¬ν”„νŠΈλ₯Ό κ²€ν† ν•˜κ³  μ•„λž˜ μ§€μ‹œμ‚¬ν•­μ— 따라 약점을 μ°Ύμ•„λ‚΄μ„Έμš”.
## μ§€μ‹œμ‚¬ν•­
LLM이 λ”°λ₯΄λ„둝 μ˜λ„λœ ν”„λ‘¬ν”„νŠΈλ₯Ό κ²€ν† ν•˜κ³  λ‹€μŒ λ¬Έμ œλ“€μ„ μ‹λ³„ν•˜μ„Έμš”:
- λͺ¨ν˜Έν•¨: μ–΄λ–€ ν‘œν˜„μ΄ 두 κ°€μ§€ μ΄μƒμ˜ λ°©μ‹μœΌλ‘œ 해석될 수 μžˆμŠ΅λ‹ˆκΉŒ?
- μ •μ˜ λΆ€μ‘±: LLM에 μ˜ν•΄ 잘λͺ» 해석될 수 μžˆλŠ” μ •μ˜λ˜μ§€ μ•Šμ€ 클래슀 λ ˆμ΄λΈ”, μš©μ–΄, λ˜λŠ” κ°œλ…μ΄ μžˆμŠ΅λ‹ˆκΉŒ?
- μƒμΆ©λ˜κ±°λ‚˜ λˆ„λ½λ˜κ±°λ‚˜ λͺ¨ν˜Έν•œ μ§€μ‹œμ‚¬ν•­: λ°©ν–₯이 λΆˆμ™„μ „ν•˜κ±°λ‚˜ λͺ¨μˆœλ©λ‹ˆκΉŒ?
- λͺ…μ‹œλ˜μ§€ μ•Šμ€ κ°€μ •: ν”„λ‘¬ν”„νŠΈκ°€ λͺ…μ‹œμ μœΌλ‘œ μ–ΈκΈ‰λ˜μ§€ μ•Šμ€ 것을 λͺ¨λΈμ΄ ν•  수 μžˆλ‹€κ³  κ°€μ •ν•©λ‹ˆκΉŒ?
## λ‹€μŒ μœ ν˜•μ˜ λ¬Έμ œλŠ” λ‚˜μ—΄ν•˜μ§€ **λ§ˆμ„Έμš”**:
- μƒˆλ‘œμš΄ μ§€μ‹œμ‚¬ν•­, 도ꡬ 호좜, λ˜λŠ” μ™ΈλΆ€ 정보λ₯Ό 발λͺ…ν•˜μ§€ λ§ˆμ„Έμš”. λˆ„λ½λœ 도ꡬ가 무엇인지 λͺ¨λ¦…λ‹ˆλ‹€.
- ν™•μ‹€ν•˜μ§€ μ•Šμ€ λ¬Έμ œλ“€.
## 좜λ ₯ ν˜•μ‹
"""
# 문제점
- λ²ˆν˜Έκ°€ 맀겨진 λͺ©λ‘; κ°„λ‹¨ν•œ 인용 μŠ€λ‹ˆνŽ«μ„ ν¬ν•¨ν•˜μ„Έμš”.
# κ°œμ„ μ‚¬ν•­
- λ²ˆν˜Έκ°€ 맀겨진 λͺ©λ‘; λ³€κ²½ν•  μˆ˜μ •λœ 라인과 λ³€κ²½ 방법을 μ œκ³΅ν•˜μ„Έμš”.
# μˆ˜μ •λœ ν”„λ‘¬ν”„νŠΈ
- λͺ¨λ“  κ°œμ„ μ‚¬ν•­μ„ μ›λž˜ ν”„λ‘¬ν”„νŠΈμ— μ΅œμ†Œν•œμ˜ νŽΈμ§‘μœΌλ‘œ μ™Έκ³Όμ μœΌλ‘œ μ μš©ν•œ μˆ˜μ •λœ ν”„λ‘¬ν”„νŠΈ
"""

ν”„λ‘¬ν”„νŠΈ μ΅œμ ν™” 메타 ν”„λ‘¬ν”„νŠΈ

원문:

1
2
3
4
5
6
7
8
9
10
Here's my current prompt to an LLM:
[BEGIN OF CURRENT PROMPT]
{CURRENT_PROMPT}
[END OF CURRENT PROMPT]
 
But I see this issue happening from the LLM:
[BEGIN OF ISSUE]
{ISSUE}
[END OF ISSUE]
Can you provide some variants of the prompt so that the model can better understand the constraints to alleviate the issue?

ν•œκ΅­μ–΄ λ²ˆμ—­:

1
2
3
4
5
6
7
8
9
10
λ‹€μŒμ€ LLM에 λŒ€ν•œ ν˜„μž¬ ν”„λ‘¬ν”„νŠΈμž…λ‹ˆλ‹€:
[ν˜„μž¬ ν”„λ‘¬ν”„νŠΈ μ‹œμž‘]
{CURRENT_PROMPT}
[ν˜„μž¬ ν”„λ‘¬ν”„νŠΈ 끝]

ν•˜μ§€λ§Œ LLMμ—μ„œ λ‹€μŒκ³Ό 같은 λ¬Έμ œκ°€ λ°œμƒν•©λ‹ˆλ‹€:
[문제 μ‹œμž‘]
{ISSUE}
[문제 끝]
λͺ¨λΈμ΄ μ œμ•½ 사항을 더 잘 μ΄ν•΄ν•˜μ—¬ 문제λ₯Ό μ™„ν™”ν•  수 μžˆλ„λ‘ ν”„λ‘¬ν”„νŠΈμ˜ λ³€ν˜•μ„ μ œκ³΅ν•΄ μ£Όμ‹€ 수 μžˆλ‚˜μš”?

μ˜€λ””μ˜€ μ—†μŒ λ˜λŠ” 뢈λͺ…ν™•ν•œ μ˜€λ””μ˜€

λ•Œλ•Œλ‘œ λͺ¨λΈμ€ 무언가λ₯Ό λ“€μ—ˆλ‹€κ³  μƒκ°ν•˜κ³  μ‘λ‹΅ν•˜λ €κ³  μ‹œλ„ν•©λ‹ˆλ‹€. 뢈λͺ…ν™•ν•œ μ˜€λ””μ˜€λ‚˜ μ‚¬μš©μž μž…λ ₯을 듀을 λ•Œ λͺ¨λΈμ΄ μ–΄λ–»κ²Œ 행동해야 ν•˜λŠ”μ§€μ— λŒ€ν•œ λ§žμΆ€ν˜• μ§€μ‹œμ‚¬ν•­μ„ μΆ”κ°€ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ›ν•˜λŠ” 행동을 μ‚¬μš© 사둀에 맞게 μˆ˜μ •ν•˜μ„Έμš” (예: λͺ…ν™•ν™”λ₯Ό μš”μ²­ν•˜μ§€ μ•Šκ³  λ™μΌν•œ μ§ˆλ¬Έμ„ λ°˜λ³΅ν•˜λ„λ‘ ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€).

  • μ‚¬μš© μ‹œκΈ°: λ°°κ²½ μ†ŒμŒ, 뢀뢄적인 단어, λ˜λŠ” 침묡이 μ›μΉ˜ μ•ŠλŠ” 응닡을 μœ λ°œν•  λ•Œ.
  • 효과: ν—ˆμœ„ 응닡을 μ€‘λ‹¨ν•˜κ³  μš°μ•„ν•œ λͺ…ν™•ν™”λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.
  • 적용 방법: μ‚¬μš© 사둀에 따라 λͺ…ν™•ν™”λ₯Ό μš”μ²­ν• μ§€ λ§ˆμ§€λ§‰ μ§ˆλ¬Έμ„ λ°˜λ³΅ν• μ§€ μ„ νƒν•©λ‹ˆλ‹€.

μ˜ˆμ‹œ (κΈ°μΉ¨κ³Ό 뢈λͺ…ν™•ν•œ μ˜€λ””μ˜€)

원문:

1
2
3
4
5
6
# Instructions/Rules
...
## Unclear audio 
- Always respond in the same language the user is speaking in, if unintelligible.
- Only respond to clear audio or text. 
- If the user's audio is not clear (e.g. ambiguous input/background noise/silent/unintelligible) or if you did not fully hear or understand the user, ask for clarification using {preferred_language} phrases.

ν•œκ΅­μ–΄ λ²ˆμ—­:

1
2
3
4
5
6
# μ§€μ‹œμ‚¬ν•­/κ·œμΉ™
...
## 뢈λͺ…ν™•ν•œ μ˜€λ””μ˜€
- μ•Œμ•„λ“€μ„ 수 없더라도 항상 μ‚¬μš©μžκ°€ λ§ν•˜κ³  μžˆλŠ” λ™μΌν•œ μ–Έμ–΄λ‘œ μ‘λ‹΅ν•˜μ„Έμš”.
- λͺ…ν™•ν•œ μ˜€λ””μ˜€λ‚˜ ν…μŠ€νŠΈμ—λ§Œ μ‘λ‹΅ν•˜μ„Έμš”.
- μ‚¬μš©μžμ˜ μ˜€λ””μ˜€κ°€ λͺ…ν™•ν•˜μ§€ μ•Šκ±°λ‚˜ (예: λͺ¨ν˜Έν•œ μž…λ ₯/λ°°κ²½ μ†ŒμŒ/침묡/μ•Œμ•„λ“€μ„ 수 μ—†μŒ) μ‚¬μš©μžλ₯Ό μ™„μ „νžˆ λ“£μ§€ λͺ»ν–ˆκ±°λ‚˜ μ΄ν•΄ν•˜μ§€ λͺ»ν–ˆλ‹€λ©΄ {preferred_language} ꡬ문을 μ‚¬μš©ν•˜μ—¬ λͺ…ν™•ν™”λ₯Ό μš”μ²­ν•˜μ„Έμš”.

이 μ˜ˆμ‹œμ—μ„œ λͺ¨λΈμ€ (맀우) 큰 κΈ°μΉ¨κ³Ό 뢈λͺ…ν™•ν•œ μ˜€λ””μ˜€ 후에 λͺ…ν™•ν™”λ₯Ό μš”μ²­ν•©λ‹ˆλ‹€.

도ꡬ

이 μ„Ήμ…˜μ„ μ‚¬μš©ν•˜μ—¬ λͺ¨λΈμ—κ²Œ ν•¨μˆ˜μ™€ 도ꡬλ₯Ό μ‚¬μš©ν•˜λŠ” 방법을 μ•Œλ €μ£Όμ„Έμš”. 도ꡬλ₯Ό μ–Έμ œ ν˜ΈμΆœν•˜κ³  μ–Έμ œ ν˜ΈμΆœν•˜μ§€ 말아야 ν•˜λŠ”μ§€, μ–΄λ–€ 인수λ₯Ό μˆ˜μ§‘ν•΄μ•Ό ν•˜λŠ”μ§€, 호좜이 μ‹€ν–‰λ˜λŠ” λ™μ•ˆ 무엇을 말해야 ν•˜λŠ”μ§€, 그리고 였λ₯˜λ‚˜ λΆ€λΆ„ κ²°κ³Όλ₯Ό μ–΄λ–»κ²Œ μ²˜λ¦¬ν•΄μ•Ό ν•˜λŠ”μ§€ λͺ…μ‹œν•˜μ„Έμš”.

도ꡬ 선택

μƒˆλ‘œμš΄ Realtime μŠ€λƒ…μƒ·μ€ μ§€μ‹œμ‚¬ν•­ μ€€μˆ˜μ— 정말 λ›°μ–΄λ‚©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μ΄λŠ” λͺ¨λΈμ΄ κΈ°λŒ€ν•˜λŠ” 것과 μƒμΆ©ν•˜λŠ” μ§€μ‹œμ‚¬ν•­μ΄ ν”„λ‘¬ν”„νŠΈμ— 있으면, 예λ₯Ό λ“€μ–΄ 도ꡬ λͺ©λ‘μ— μ‹€μ œλ‘œ μ „λ‹¬λ˜μ§€ μ•Šμ€ 도ꡬλ₯Ό ν”„λ‘¬ν”„νŠΈμ—μ„œ μ–ΈκΈ‰ν•˜λ©΄ 잘λͺ»λœ μ‘λ‹΅μœΌλ‘œ μ΄μ–΄μ§ˆ 수 μžˆμŒμ„ μ˜λ―Έν•©λ‹ˆλ‹€.

  • μ‚¬μš© μ‹œκΈ°: ν”„λ‘¬ν”„νŠΈκ°€ μ‹€μ œλ‘œ μ‚¬μš©ν•  수 μ—†λŠ” 도ꡬλ₯Ό μ–ΈκΈ‰ν•  λ•Œ.
  • 효과: μ‚¬μš© κ°€λŠ₯ν•œ 도ꡬ와 μ‹œμŠ€ν…œ ν”„λ‘¬ν”„νŠΈλ₯Ό κ²€ν† ν•˜μ—¬ μΌμΉ˜ν•˜λŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€.

μ˜ˆμ‹œ

원문:

1
2
3
4
5
# Tools
## lookup_account(email_or_phone)
...
## check_outage(address)
...

ν•œκ΅­μ–΄ λ²ˆμ—­:

1
2
3
4
5
# 도ꡬ
## lookup_account(email_or_phone)
...
## check_outage(address)
...

도ꡬ λͺ©λ‘μ΄ λ™μΌν•œ κ°€μš©μ„± 도ꡬλ₯Ό κ°€μ§€κ³  있고 μ„€λͺ…이 μ„œλ‘œ λͺ¨μˆœλ˜μ§€ μ•ŠλŠ”μ§€ 확인해야 ν•©λ‹ˆλ‹€.

도ꡬ 호좜 μ„œλ¬Έ

일뢀 μ‚¬μš© μ‚¬λ‘€λŠ” Realtime λͺ¨λΈμ΄ 도ꡬλ₯Ό ν˜ΈμΆœν•˜λŠ” λ™μ‹œμ— μ˜€λ””μ˜€ 응닡을 μ œκ³΅ν•˜λŠ” κ²ƒμœΌλ‘œλΆ€ν„° 이읡을 얻을 수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŠ” μ§€μ—° μ‹œκ°„μ„ 감좔어 더 λ‚˜μ€ μ‚¬μš©μž κ²½ν—˜μœΌλ‘œ μ΄μ–΄μ§‘λ‹ˆλ‹€. μ œκ³΅ν•  μƒ˜ν”Œ ꡬ문을 μˆ˜μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  • μ‚¬μš© μ‹œκΈ°: μ‚¬μš©μžκ°€ 도ꡬ 호좜과 λ™μ‹œμ— 즉각적인 확인이 ν•„μš”ν•  λ•Œ; μ§€μ—° μ‹œκ°„μ„ κ°μΆ”λŠ” 데 도움이 λ©λ‹ˆλ‹€.
  • 효과: 도ꡬ 호좜 전에 μ§§κ³  μΌκ΄€λœ μ„œλ¬Έμ„ μΆ”κ°€ν•©λ‹ˆλ‹€.

μ˜ˆμ‹œ

원문:

1
2
# Tools
- Before any tool call, say one short line like "I'm checking that now." Then call the tool immediately.

ν•œκ΅­μ–΄ λ²ˆμ—­:

1
2
# 도ꡬ
- λͺ¨λ“  도ꡬ 호좜 전에 "μ§€κΈˆ ν™•μΈν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€"와 같은 ν•œ μ€„μ˜ 짧은 말을 ν•˜μ„Έμš”. κ·Έ λ‹€μŒ μ¦‰μ‹œ 도ꡬλ₯Ό ν˜ΈμΆœν•˜μ„Έμš”.

μ§€μ‹œμ‚¬ν•­μ„ μ‚¬μš©ν•˜μ—¬ λͺ¨λΈμ€ 도ꡬ 호좜과 λ™μ‹œμ— β€œμ§€κΈˆ λ°”λ‘œ ν™•μΈν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€β€λΌλŠ” μ˜€λ””μ˜€ 응닡을 좜λ ₯ν•©λ‹ˆλ‹€.

도ꡬ 호좜 μ„œλ¬Έ + μƒ˜ν”Œ ꡬ문

도ꡬλ₯Ό ν˜ΈμΆœν•˜λŠ” λ™μ‹œμ— λͺ¨λΈμ΄ 좜λ ₯ν•˜λŠ” ꡬ문의 μœ ν˜•μ„ 더 λ°€μ ‘ν•˜κ²Œ μ œμ–΄ν•˜λ €λ©΄ 도ꡬ 사양 μ„€λͺ…에 μƒ˜ν”Œ ꡬ문을 μΆ”κ°€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ˜ˆμ‹œ

원문:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
tools = [
  {
    "name": "lookup_account",
    "description": "Retrieve a customer account using either an email or phone number to enable verification and account-specific actions.
 
Preamble sample phrases:
- For security, I'll pull up your account using the email on file.
- Let me look up your account by {email} now.
- I'm fetching the account linked to {phone} to verify access.
- One momentβ€”I'm opening your account details."
    "parameters": {
      "..."
    }
  },
  {
    "name": "check_outage",
    "description": "Check for network outages affecting a given service address and return status and ETA if applicable.
 
Preamble sample phrases:
- I'll check for any outages at {service_address} right now.
- Let me look up network status for your area.
- I'm checking whether there's an active outage impacting your address.
- One secβ€”verifying service status and any posted ETA.",
    "parameters": {
      "..."
    }
  }
]

ν•œκ΅­μ–΄ λ²ˆμ—­:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
tools = [
  {
    "name": "lookup_account",
    "description": "μ΄λ©”μΌμ΄λ‚˜ μ „ν™”λ²ˆν˜Έλ₯Ό μ‚¬μš©ν•˜μ—¬ 고객 계정을 κ²€μƒ‰ν•˜μ—¬ 인증 및 계정별 μž‘μ—…μ„ κ°€λŠ₯ν•˜κ²Œ ν•©λ‹ˆλ‹€.
 
μ„œλ¬Έ μƒ˜ν”Œ ꡬ문:
- λ³΄μ•ˆμ„ μœ„ν•΄ νŒŒμΌμ— μžˆλŠ” 이메일을 μ‚¬μš©ν•˜μ—¬ 계정을 λΆˆλŸ¬μ˜€κ² μŠ΅λ‹ˆλ‹€.
- μ§€κΈˆ {email}둜 계정을 μ°Ύμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.
- 접근을 ν™•μΈν•˜κΈ° μœ„ν•΄ {phone}에 μ—°κ²°λœ 계정을 κ°€μ Έμ˜€κ³  μžˆμŠ΅λ‹ˆλ‹€.
- μž μ‹œλ§Œμš”β€”κ³„μ • μ„ΈλΆ€ 정보λ₯Ό μ—΄κ³  μžˆμŠ΅λ‹ˆλ‹€."
    "parameters": {
      "..."
    }
  },
  {
    "name": "check_outage",
    "description": "μ£Όμ–΄μ§„ μ„œλΉ„μŠ€ μ£Όμ†Œμ— 영ν–₯을 λ―ΈμΉ˜λŠ” λ„€νŠΈμ›Œν¬ 쀑단을 ν™•μΈν•˜κ³  ν•΄λ‹Ήλ˜λŠ” 경우 μƒνƒœμ™€ ETAλ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.
 
μ„œλ¬Έ μƒ˜ν”Œ ꡬ문:
- μ§€κΈˆ λ°”λ‘œ {service_address}μ—μ„œ 쀑단이 μžˆλŠ”μ§€ ν™•μΈν•˜κ² μŠ΅λ‹ˆλ‹€.
- ν•΄λ‹Ή μ§€μ—­μ˜ λ„€νŠΈμ›Œν¬ μƒνƒœλ₯Ό ν™•μΈν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€.
- μ£Όμ†Œμ— 영ν–₯을 λ―ΈμΉ˜λŠ” ν™œμ„± 쀑단이 μžˆλŠ”μ§€ ν™•μΈν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.
- μž κΉβ€”μ„œλΉ„μŠ€ μƒνƒœμ™€ κ²Œμ‹œλœ ETAλ₯Ό ν™•μΈν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.",
    "parameters": {
      "..."
    }
  }
]

확인 μ—†λŠ” 도ꡬ 호좜

λ•Œλ•Œλ‘œ λͺ¨λΈμ€ 도ꡬ 호좜 전에 확인을 μš”μ²­ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 일뢀 μ‚¬μš© μ‚¬λ‘€μ˜ 경우 λͺ¨λΈμ΄ 적극적이지 μ•ŠκΈ° λ•Œλ¬Έμ— μ΄λŠ” μ΅œμ’… μ‚¬μš©μžμ—κ²Œ μ’‹μ§€ μ•Šμ€ κ²½ν—˜μœΌλ‘œ μ΄μ–΄μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€.

  • μ‚¬μš© μ‹œκΈ°: μ—μ΄μ „νŠΈκ°€ λͺ…λ°±ν•œ 도ꡬ 호좜 전에 ν—ˆκ°€λ₯Ό μš”μ²­ν•  λ•Œ.
  • 효과: λΆˆν•„μš”ν•œ 확인 루프λ₯Ό μ œκ±°ν•©λ‹ˆλ‹€.

μ˜ˆμ‹œ

원문:

1
2
# Tools
- When calling a tool, do not ask for any user confirmation. Be proactive

ν•œκ΅­μ–΄ λ²ˆμ—­:

1
2
# 도ꡬ
- 도ꡬλ₯Ό ν˜ΈμΆœν•  λ•Œ μ‚¬μš©μž 확인을 μš”μ²­ν•˜μ§€ λ§ˆμ„Έμš”. 적극적으둜 ν–‰λ™ν•˜μ„Έμš”

μ˜ˆμ‹œμ—μ„œ realtime λͺ¨λΈμ΄ 응닡 μ˜€λ””μ˜€λ₯Ό μƒμ„±ν•˜μ§€ μ•Šκ³  ν•΄λ‹Ή 도ꡬλ₯Ό 직접 ν˜ΈμΆœν–ˆμŒμ„ μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€.

🌠 팁: λͺ¨λΈμ΄ 도ꡬλ₯Ό ν˜ΈμΆœν•˜κΈ° μœ„ν•΄ λ„ˆλ¬΄ 빨리 μ›€μ§μ΄λŠ” 것을 λ°œκ²¬ν•˜λ©΄ ν‘œν˜„μ„ λΆ€λ“œλŸ½κ²Œ ν•΄λ³΄μ„Έμš”. 예λ₯Ό λ“€μ–΄, β€œproactive”와 같은 κ°•ν•œ μš©μ–΄λ₯Ό 더 λΆ€λ“œλŸ¬μš΄ κ²ƒμœΌλ‘œ λ°”κΎΈλ©΄ λͺ¨λΈμ΄ 더 μ°¨λΆ„ν•˜κ³  덜 적극적인 접근법을 μ·¨ν•˜λ„λ‘ μ•ˆλ‚΄ν•˜λŠ” 데 도움이 될 수 μžˆμŠ΅λ‹ˆλ‹€.

도ꡬ 호좜 μ„±λŠ₯

μ‚¬μš© 사둀가 더 λ³΅μž‘ν•΄μ§€κ³  μ‚¬μš© κ°€λŠ₯ν•œ λ„κ΅¬μ˜ μˆ˜κ°€ 증가함에 따라 각 도ꡬλ₯Ό μ–Έμ œ μ‚¬μš©ν•΄μ•Ό ν•˜λŠ”μ§€, 그리고 λ§ˆμ°¬κ°€μ§€λ‘œ μ€‘μš”ν•˜κ²ŒλŠ” μ–Έμ œ μ‚¬μš©ν•˜μ§€ 말아야 ν•˜λŠ”μ§€ λͺ¨λΈμ—κ²Œ λͺ…μ‹œμ μœΌλ‘œ μ•ˆλ‚΄ν•˜λŠ” 것이 μ€‘μš”ν•΄μ§‘λ‹ˆλ‹€. λͺ…ν™•ν•œ μ‚¬μš© κ·œμΉ™μ€ 도ꡬ 호좜 정확성을 ν–₯μƒμ‹œν‚¬ 뿐만 μ•„λ‹ˆλΌ λͺ¨λΈμ΄ μ μ ˆν•œ μ‹œκΈ°μ— μ μ ˆν•œ 도ꡬλ₯Ό μ„ νƒν•˜λŠ” 데 도움이 λ©λ‹ˆλ‹€.

  • μ‚¬μš© μ‹œκΈ°: λͺ¨λΈμ΄ 도ꡬ 호좜 μ„±λŠ₯에 어렀움을 κ²ͺκ³  있고 μ˜€μš©μ„ 쀄이기 μœ„ν•΄ μ§€μ‹œμ‚¬ν•­μ΄ λͺ…μ‹œμ μ΄μ–΄μ•Ό ν•  λ•Œ.
  • 효과: 각 도ꡬλ₯Ό β€œμ‚¬μš©/피해야” ν•  λ•Œμ— λŒ€ν•œ μ§€μ‹œμ‚¬ν•­μ„ μΆ”κ°€ν•©λ‹ˆλ‹€. λ˜ν•œ 도ꡬ 호좜 μˆœμ„œμ— λŒ€ν•œ μ§€μ‹œμ‚¬ν•­λ„ μΆ”κ°€ν•  수 μžˆμŠ΅λ‹ˆλ‹€ (도ꡬ 호좜 A 후에 도ꡬ 호좜 B λ˜λŠ” Cλ₯Ό ν˜ΈμΆœν•  수 있음).

μ˜ˆμ‹œ

원문:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# Tools
- When you call any tools, you must output at the same time a response letting the user know that you are calling the tool.
## lookup_account(email_or_phone)
Use when: verifying identity or viewing plan/outage flags.
Do NOT use when: the user is clearly anonymous and only asks general questions.
## check_outage(address)
Use when: user reports connectivity issues or slow speeds.
Do NOT use when: question is billing-only.
## refund_credit(account_id, minutes)
Use when: confirmed outage > 240 minutes in the past 7 days.
Do NOT use when: outage is unconfirmed; route to Diagnose β†’ check_outage first.
## schedule_technician(account_id, window)
Use when: repeated failures after reboot and outage status = false.
Do NOT use when: outage status = true (send status + ETA instead).
## escalate_to_human(account_id, reason)
Use when: user seems very frustrated, abuse/harassment, repeated failures, billing disputes >$50, or user requests escalation.

ν•œκ΅­μ–΄ λ²ˆμ—­:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 도ꡬ
- μ–΄λ–€ 도ꡬλ₯Ό ν˜ΈμΆœν•  λ•Œλ“  μ‚¬μš©μžμ—κ²Œ 도ꡬλ₯Ό ν˜ΈμΆœν•˜κ³  μžˆλ‹€κ³  μ•Œλ¦¬λŠ” 응닡을 λ™μ‹œμ— 좜λ ₯ν•΄μ•Ό ν•©λ‹ˆλ‹€.
## lookup_account(email_or_phone)
μ‚¬μš© μ‹œκΈ°: 신원 확인 λ˜λŠ” κ³„νš/쀑단 ν”Œλž˜κ·Έ 보기.
μ‚¬μš©ν•˜μ§€ 말아야 ν•  λ•Œ: μ‚¬μš©μžκ°€ λͺ…λ°±νžˆ 읡λͺ…이고 일반적인 질문만 ν•  λ•Œ.
## check_outage(address)
μ‚¬μš© μ‹œκΈ°: μ‚¬μš©μžκ°€ μ—°κ²° λ¬Έμ œλ‚˜ 느린 속도λ₯Ό 보고할 λ•Œ.
μ‚¬μš©ν•˜μ§€ 말아야 ν•  λ•Œ: μ²­κ΅¬μ„œ μ „μš© 질문일 λ•Œ.
## refund_credit(account_id, minutes)
μ‚¬μš© μ‹œκΈ°: μ§€λ‚œ 7일 λ™μ•ˆ 240뢄을 μ΄ˆκ³Όν•˜λŠ” ν™•μΈλœ 쀑단이 μžˆμ„ λ•Œ.
μ‚¬μš©ν•˜μ§€ 말아야 ν•  λ•Œ: 쀑단이 ν™•μΈλ˜μ§€ μ•Šμ•˜μ„ λ•Œ; λ¨Όμ € 진단 β†’ check_outage둜 경둜 μ§€μ •.
## schedule_technician(account_id, window)
μ‚¬μš© μ‹œκΈ°: μž¬λΆ€νŒ… ν›„ 반볡적인 μ‹€νŒ¨κ°€ 있고 쀑단 μƒνƒœ = false일 λ•Œ.
μ‚¬μš©ν•˜μ§€ 말아야 ν•  λ•Œ: 쀑단 μƒνƒœ = true일 λ•Œ (λŒ€μ‹  μƒνƒœ + ETA 전솑).
## escalate_to_human(account_id, reason)
μ‚¬μš© μ‹œκΈ°: μ‚¬μš©μžκ°€ 맀우 μ’Œμ ˆν•œ 것 κ°™κ±°λ‚˜, ν•™λŒ€/괴둭힘, 반볡적인 μ‹€νŒ¨, $50을 μ΄ˆκ³Όν•˜λŠ” 청ꡬ λΆ„μŸ, λ˜λŠ” μ‚¬μš©μžκ°€ μ—μŠ€μ»¬λ ˆμ΄μ…˜μ„ μš”μ²­ν•  λ•Œ.

🌠 팁: 도ꡬ 호좜이 μ˜ˆμΈ‘ν•  수 없이 μ‹€νŒ¨ν•  수 μžˆλ‹€λ©΄ λͺ¨λΈμ΄ μš°μ•„ν•˜κ²Œ 응닡할 수 μžˆλ„λ‘ λͺ…ν™•ν•œ μ‹€νŒ¨ 처리 μ§€μ‹œμ‚¬ν•­μ„ μΆ”κ°€ν•˜μ„Έμš”.

도ꡬ 레벨 λ™μž‘

κΈ€λ‘œλ²Œ κ·œμΉ™μ„ λͺ¨λ“  도ꡬ에 μ μš©ν•˜λŠ” λŒ€μ‹  νŠΉμ • 도ꡬ에 λŒ€ν•΄ λͺ¨λΈμ΄ μ–΄λ–»κ²Œ ν–‰λ™ν•˜λŠ”μ§€ λ―Έμ„Έ μ‘°μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, READ λ„κ΅¬λŠ” 적극적으둜 호좜되기λ₯Ό 원할 수 μžˆμ§€λ§Œ WRITE λ„κ΅¬λŠ” λͺ…μ‹œμ μΈ 확인이 ν•„μš”ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  • μ‚¬μš© μ‹œκΈ°: 적극성, 확인, λ˜λŠ” μ„œλ¬Έμ— λŒ€ν•œ κΈ€λ‘œλ²Œ μ§€μ‹œμ‚¬ν•­μ΄ λͺ¨λ“  도ꡬ에 λ§žμ§€ μ•Šμ„ λ•Œ.
  • 효과: λͺ¨λΈμ΄ 도ꡬλ₯Ό μ¦‰μ‹œ ν˜ΈμΆœν•΄μ•Ό ν•˜λŠ”μ§€, λ¨Όμ € 확인해야 ν•˜λŠ”μ§€, λ˜λŠ” 호좜 전에 μ„œλ¬Έμ„ 말해야 ν•˜λŠ”μ§€λ₯Ό μ •μ˜ν•˜λŠ” 도ꡬ별 λ™μž‘ κ·œμΉ™μ„ μΆ”κ°€ν•©λ‹ˆλ‹€.

μ˜ˆμ‹œ

원문:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# TOOLS
- For the tools marked PROACTIVE: do not ask for confirmation from the user and do not output a preamble.
- For the tools marked as CONFIRMATION FIRST: always ask for confirmation to the user.
- For the tools marked as PREAMBLES: Before any tool call, say one short line like "I'm checking that now." Then call the tool immediately.
## lookup_account(email_or_phone) β€” PROACTIVE
Use when: verifying identity or accessing billing.  
Do NOT use when: caller refuses to identify after second request.
## check_outage(address) β€” PREAMBLES
Use when: caller reports failed connection or speed lower than 10 Mbps.  
Do NOT use when: purely billing OR when internet speed is above 10 Mbps.  
If either condition applies, inform the customer you cannot assist and hang up.
## refund_credit(account_id, minutes) β€” CONFIRMATION FIRST
Use when: confirmed outage > 240 minutes in the past 7 days (credit 60 minutes).  
Do NOT use when: outage unconfirmed.  
Confirmation phrase: "I can issue a credit for this outageβ€”would you like me to go ahead?"
## schedule_technician(account_id, window) β€” CONFIRMATION FIRST
Use when: reboot + line checks fail AND outage=false.  
Windows: "10am–12pm ET" or "2pm–4pm ET".  
Confirmation phrase: "I can schedule a technician to visitβ€”should I book that for you?"
## escalate_to_human(account_id, reason) β€” PREAMBLES
Use when: harassment, threats, self-harm, repeated failure, billing disputes > $50, caller is frustrated, or caller requests escalation.  
Preamble: "Let me connect you to a senior agent who can assist further."

ν•œκ΅­μ–΄ λ²ˆμ—­:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 도ꡬ
- PROACTIVE둜 ν‘œμ‹œλœ λ„κ΅¬μ˜ 경우: μ‚¬μš©μžλ‘œλΆ€ν„° 확인을 μš”μ²­ν•˜μ§€ 말고 μ„œλ¬Έμ„ 좜λ ₯ν•˜μ§€ λ§ˆμ„Έμš”.
- CONFIRMATION FIRST둜 ν‘œμ‹œλœ λ„κ΅¬μ˜ 경우: 항상 μ‚¬μš©μžμ—κ²Œ 확인을 μš”μ²­ν•˜μ„Έμš”.
- PREAMBLES둜 ν‘œμ‹œλœ λ„κ΅¬μ˜ 경우: λͺ¨λ“  도ꡬ 호좜 전에 "μ§€κΈˆ ν™•μΈν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€"와 같은 ν•œ μ€„μ˜ 짧은 말을 ν•˜μ„Έμš”. κ·Έ λ‹€μŒ μ¦‰μ‹œ 도ꡬλ₯Ό ν˜ΈμΆœν•˜μ„Έμš”.
## lookup_account(email_or_phone) β€” PROACTIVE
μ‚¬μš© μ‹œκΈ°: 신원 확인 λ˜λŠ” μ²­κ΅¬μ„œ μ ‘κ·Ό.
μ‚¬μš©ν•˜μ§€ 말아야 ν•  λ•Œ: λ°œμ‹ μžκ°€ 두 번째 μš”μ²­ 후에도 신원 확인을 κ±°λΆ€ν•  λ•Œ.
## check_outage(address) β€” PREAMBLES
μ‚¬μš© μ‹œκΈ°: λ°œμ‹ μžκ°€ μ—°κ²° μ‹€νŒ¨λ‚˜ 10 Mbps 미만의 속도λ₯Ό 보고할 λ•Œ.
μ‚¬μš©ν•˜μ§€ 말아야 ν•  λ•Œ: μˆœμ „νžˆ μ²­κ΅¬μ„œ κ΄€λ ¨μ΄κ±°λ‚˜ 인터넷 속도가 10 Mbpsλ₯Ό μ΄ˆκ³Όν•  λ•Œ.
두 쑰건 쀑 ν•˜λ‚˜λΌλ„ 적용되면 κ³ κ°μ—κ²Œ λ„μšΈ 수 μ—†λ‹€κ³  μ•Œλ¦¬κ³  μ „ν™”λ₯Ό λŠμœΌμ„Έμš”.
## refund_credit(account_id, minutes) β€” CONFIRMATION FIRST
μ‚¬μš© μ‹œκΈ°: μ§€λ‚œ 7일 λ™μ•ˆ 240뢄을 μ΄ˆκ³Όν•˜λŠ” ν™•μΈλœ 쀑단이 μžˆμ„ λ•Œ (60λΆ„ ν¬λ ˆλ”§).
μ‚¬μš©ν•˜μ§€ 말아야 ν•  λ•Œ: 쀑단이 ν™•μΈλ˜μ§€ μ•Šμ•˜μ„ λ•Œ.
확인 ꡬ문: "이 쀑단에 λŒ€ν•΄ ν¬λ ˆλ”§μ„ λ°œν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€β€”μ§„ν–‰ν•˜μ‹œκ² μŠ΅λ‹ˆκΉŒ?"
## schedule_technician(account_id, window) β€” CONFIRMATION FIRST
μ‚¬μš© μ‹œκΈ°: μž¬λΆ€νŒ… + 라인 확인 μ‹€νŒ¨ 그리고 쀑단=false일 λ•Œ.
μ‹œκ°„λŒ€: "μ˜€μ „ 10μ‹œβ€“12μ‹œ ET" λ˜λŠ” "μ˜€ν›„ 2μ‹œβ€“4μ‹œ ET".
확인 ꡬ문: "기술자 방문을 μ˜ˆμ•½ν•  수 μžˆμŠ΅λ‹ˆλ‹€β€”μ˜ˆμ•½ν•΄ λ“œλ¦΄κΉŒμš”?"
## escalate_to_human(account_id, reason) β€” PREAMBLES
μ‚¬μš© μ‹œκΈ°: 괴둭힘, μœ„ν˜‘, μžν•΄, 반볡적인 μ‹€νŒ¨, $50을 μ΄ˆκ³Όν•˜λŠ” 청ꡬ λΆ„μŸ, λ°œμ‹ μžκ°€ μ’Œμ ˆν•˜κ±°λ‚˜ μ—μŠ€μ»¬λ ˆμ΄μ…˜μ„ μš”μ²­ν•  λ•Œ.
μ„œλ¬Έ: "μΆ”κ°€λ‘œ 도움을 λ“œλ¦΄ 수 μžˆλŠ” 상급 μ—μ΄μ „νŠΈμ—κ²Œ μ—°κ²°ν•΄ λ“œλ¦¬κ² μŠ΅λ‹ˆλ‹€."

μž¬κ΅¬μ„± 감독관 도ꡬ (μ‘λ‹΅μž-사상가 μ•„ν‚€ν…μ²˜)

λ§Žμ€ μŒμ„± μ„€μ •μ—μ„œ realtime λͺ¨λΈμ€ μ‘λ‹΅μž(μ‚¬μš©μžμ™€ λŒ€ν™”) 역할을 ν•˜κ³  더 κ°•λ ₯ν•œ ν…μŠ€νŠΈ λͺ¨λΈμ€ 사상가(κ³„νš μˆ˜ν–‰, μ •μ±… 쑰회, SOP μ™„λ£Œ) 역할을 ν•©λ‹ˆλ‹€. ν…μŠ€νŠΈ 닡변은 μžλ™μœΌλ‘œ μŒμ„±μ— μ ν•©ν•˜μ§€ μ•ŠμœΌλ―€λ‘œ μ‘λ‹΅μžλŠ” μ˜€λ””μ˜€λ₯Ό μƒμ„±ν•˜κΈ° 전에 μ‚¬μƒκ°€μ˜ ν…μŠ€νŠΈλ₯Ό μ˜€λ””μ˜€ μΉœν™”μ μΈ μ‘λ‹΅μœΌλ‘œ μž¬κ΅¬μ„±ν•΄μ•Ό ν•©λ‹ˆλ‹€.

  • μ‚¬μš© μ‹œκΈ°: 사상가 응닡을 받은 ν›„ μ‘λ‹΅μžμ˜ μŒμ„± 좜λ ₯이 λ‘œλ΄‡μ μ΄κ±°λ‚˜ λ„ˆλ¬΄ κΈΈκ±°λ‚˜ μ–΄μƒ‰ν•˜κ²Œ 듀릴 λ•Œ.
  • 효과: μ‘λ‹΅μžκ°€ μ‚¬μƒκ°€μ˜ ν…μŠ€νŠΈλ₯Ό μ§§κ³  μžμ—°μŠ€λŸ½λ©° μŒμ„± μš°μ„  λ‹΅λ³€μœΌλ‘œ μž¬κ΅¬μ„±ν•˜λ„λ‘ μ•ˆλ‚΄ν•˜λŠ” λͺ…ν™•ν•œ μ§€μ‹œμ‚¬ν•­μ„ μΆ”κ°€ν•©λ‹ˆλ‹€.
  • 적용 방법: μ‚¬μš© 사둀 κΈ°λŒ€μ— 맞게 ν‘œν˜„ μŠ€νƒ€μΌ, μ‹œμž‘κ΅¬, 그리고 간결함 μ œν•œμ„ μ‘°μ •ν•©λ‹ˆλ‹€.

곡톡 도ꡬ

μƒˆλ‘œμš΄ λͺ¨λΈ μŠ€λƒ…μƒ·μ€ λ‹€μŒκ³Ό 같은 곡톡 도ꡬλ₯Ό 효과적으둜 μ‚¬μš©ν•˜λ„λ‘ ν›ˆλ ¨λ˜μ—ˆμŠ΅λ‹ˆλ‹€. μ‚¬μš© 사둀에 μœ μ‚¬ν•œ λ™μž‘μ΄ ν•„μš”ν•œ 경우 신뒰성을 μ΅œλŒ€ν™”ν•˜κ³  더 뢄포 내에 μžˆλ„λ‘ 이름, μ„œλͺ…, 그리고 μ„€λͺ…을 이와 κ°€κΉκ²Œ μœ μ§€ν•˜μ„Έμš”.

μ˜ˆμ‹œ

원문:

1
2
3
4
5
6
# answer(question: string)
Description: Call this when the customer asks a question that you don't have an answer to or asks to perform an action.
# escalate_to_human()
Description: Call this when a customer asks for escalation, or to talk to someone else, or expresses dissatisfaction with the call.
# finish_session()
Description: Call this when a customer says they're done with the session or doesn't want to continue. If it's ambiguous, confirm with the customer before calling.

ν•œκ΅­μ–΄ λ²ˆμ—­:

1
2
3
4
5
6
# answer(question: string)
μ„€λͺ…: 고객이 닡을 λͺ¨λ₯΄λŠ” μ§ˆλ¬Έμ„ ν•˜κ±°λ‚˜ μž‘μ—… μˆ˜ν–‰μ„ μš”μ²­ν•  λ•Œ ν˜ΈμΆœν•©λ‹ˆλ‹€.
# escalate_to_human()
μ„€λͺ…: 고객이 μ—μŠ€μ»¬λ ˆμ΄μ…˜μ„ μš”μ²­ν•˜κ±°λ‚˜ λ‹€λ₯Έ μ‚¬λžŒκ³Ό μ΄μ•ΌκΈ°ν•˜κ³  μ‹Άλ‹€κ³  ν•˜κ±°λ‚˜ 톡화에 λΆˆλ§Œμ„ ν‘œν˜„ν•  λ•Œ ν˜ΈμΆœν•©λ‹ˆλ‹€.
# finish_session()
μ„€λͺ…: 고객이 μ„Έμ…˜μ„ λλ‚΄κ±°λ‚˜ κ³„μ†ν•˜κ³  μ‹Άμ§€ μ•Šλ‹€κ³  말할 λ•Œ ν˜ΈμΆœν•©λ‹ˆλ‹€. λͺ¨ν˜Έν•˜λ©΄ ν˜ΈμΆœν•˜κΈ° 전에 고객과 ν™•μΈν•˜μ„Έμš”.

λŒ€ν™” 흐름

이 μ„Ήμ…˜μ€ λͺ¨λΈμ΄ 각 λ‹¨κ³„μ—μ„œ μ •ν™•νžˆ 무엇을 ν•΄μ•Ό ν•˜λŠ”μ§€ μ•Œ 수 μžˆλ„λ‘ λŒ€ν™”λ₯Ό λͺ…ν™•ν•˜κ³  λͺ©ν‘œ μ§€ν–₯적인 λ‹¨κ³„λ‘œ κ΅¬μ„±ν•˜λŠ” 방법을 λ‹€λ£Ήλ‹ˆλ‹€. 각 λ‹¨κ³„μ˜ λͺ©μ , 그것을 ν†΅κ³Όν•˜κΈ° μœ„ν•œ μ§€μ‹œμ‚¬ν•­, 그리고 λ‹€μŒμœΌλ‘œ μ „ν™˜ν•˜κΈ° μœ„ν•œ ꡬ체적인 β€œμ’…λ£Œ 기쀀”을 μ •μ˜ν•©λ‹ˆλ‹€. μ΄λŠ” λͺ¨λΈμ΄ μ •μ²΄λ˜κ±°λ‚˜ 단계λ₯Ό κ±΄λ„ˆλ›°κ±°λ‚˜ μ•žμ„œ λ‚˜κ°€λŠ” 것을 λ°©μ§€ν•˜κ³  λŒ€ν™”κ°€ μΈμ‚¬μ—μ„œ ν•΄κ²°κΉŒμ§€ μ²΄κ³„μ μœΌλ‘œ μœ μ§€λ˜λ„λ‘ 보μž₯ν•©λ‹ˆλ‹€.

λ˜ν•œ ν”„λ‘¬ν”„νŠΈλ₯Ό λ‹€μ–‘ν•œ λŒ€ν™” μƒνƒœλ‘œ κ΅¬μ„±ν•¨μœΌλ‘œμ¨ 였λ₯˜ λͺ¨λ“œλ₯Ό μ‹λ³„ν•˜κ³  더 효과적으둜 λ°˜λ³΅ν•˜κΈ°κ°€ μ‰¬μ›Œμ§‘λ‹ˆλ‹€.

  • μ‚¬μš© μ‹œκΈ°: λŒ€ν™”κ°€ λ¬΄μ§ˆμ„œν•˜κ²Œ λŠκ»΄μ§€κ±°λ‚˜ λͺ©ν‘œμ— λ„λ‹¬ν•˜κΈ° 전에 μ •μ²΄λ˜κ±°λ‚˜ λͺ¨λΈμ΄ λͺ©ν‘œλ₯Ό 효과적으둜 μ™„μˆ˜ν•˜λŠ” 데 어렀움이 μžˆμ„ λ•Œ.
  • 효과: μƒν˜Έμž‘μš©μ„ λͺ…ν™•ν•œ λͺ©ν‘œ, μ§€μ‹œμ‚¬ν•­, 그리고 μ’…λ£Œ 기쀀을 κ°€μ§„ λ‹¨κ³„λ‘œ λ‚˜λˆ•λ‹ˆλ‹€.
  • 적용 방법: μ›Œν¬ν”Œλ‘œμš°μ— 맞게 단계 이름을 λ³€κ²½ν•˜κ³ , μ˜λ„λœ λ™μž‘μ„ λ”°λ₯΄λ„둝 각 λ‹¨κ³„μ˜ μ§€μ‹œμ‚¬ν•­μ„ μˆ˜μ •ν•˜λ©°, β€œμ’…λ£Œ μ‹œκΈ°β€λ₯Ό ꡬ체적이고 μ΅œμ†Œν•œμœΌλ‘œ μœ μ§€ν•©λ‹ˆλ‹€.

μ˜ˆμ‹œ

원문:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# Conversation Flow
## 1) Greeting
Goal: Set tone and invite the reason for calling.
How to respond:
- Identify as NorthLoop Internet Support.
- Keep the opener brief and invite the caller's goal.
- Confirm that customer is a Northloop customer
Exit to Discovery: Caller states they are a Northloop customer and mentions an initial goal or symptom.
## 2) Discover
Goal: Classify the issue and capture minimal details.
How to respond:
- Determine billing vs connectivity with one targeted question.
- For connectivity: collect the service address.
- For billing/account: collect email or phone used on the account.
Exit when: Intent and address (for connectivity) or email/phone (for billing) are known.
## 3) Verify
Goal: Confirm identity and retrieve the account.
How to respond:
- Once you have email or phone, call lookup_account(email_or_phone).
- If lookup fails, try the alternate identifier once; otherwise proceed with general guidance or offer escalation if account actions are required.
Exit when: Account ID is returned.
## 4) Diagnose
Goal: Decide outage vs local issue.
How to respond:
- For connectivity, call check_outage(address).
- If outage=true, skip local steps; move to Resolve with outage context.
- If outage=false, guide a short reboot/cabling check; confirm each step's result before continuing.
Exit when: Root cause known.
## 5) Resolve
Goal: Apply fix, credit, or appointment.
How to respond:
- If confirmed outage > 240 minutes in the last 7 days, call refund_credit(account_id, 60).
- If outage=false and issue persists after basic checks, offer "10am–12pm ET" or "2pm–4pm ET" and call schedule_technician(account_id, chosen window).
- If the local fix worked, state the result and next steps briefly.
Exit when: A fix/credit/appointment has been applied and acknowledged by the caller.
## 6) Confirm/Close
Goal: Confirm outcome and end cleanly.
How to respond:
- Restate the result and any next step (e.g., stabilization window or tech ETA).
- Invite final questions; close politely if none.
Exit when: Caller declines more help.

ν•œκ΅­μ–΄ λ²ˆμ—­:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# λŒ€ν™” 흐름
## 1) 인사
λͺ©ν‘œ: 톀을 μ„€μ •ν•˜κ³  톡화 이유λ₯Ό μš”μ²­ν•©λ‹ˆλ‹€.
응닡 방법:
- NorthLoop Internet Support둜 신원을 λ°νžˆμ„Έμš”.
- μ‹œμž‘ 멘트λ₯Ό κ°„λ‹¨νžˆ ν•˜κ³  λ°œμ‹ μžμ˜ λͺ©ν‘œλ₯Ό μš”μ²­ν•˜μ„Έμš”.
- 고객이 Northloop κ³ κ°μž„μ„ ν™•μΈν•˜μ„Έμš”
발견으둜 μ’…λ£Œ: λ°œμ‹ μžκ°€ Northloop 고객이라고 λ§ν•˜κ³  초기 λͺ©ν‘œλ‚˜ 증상을 μ–ΈκΈ‰ν•  λ•Œ.
## 2) 발견
λͺ©ν‘œ: 문제λ₯Ό λΆ„λ₯˜ν•˜κ³  μ΅œμ†Œν•œμ˜ μ„ΈλΆ€ 사항을 ν¬μ°©ν•©λ‹ˆλ‹€.
응닡 방법:
- ν•˜λ‚˜μ˜ νƒ€κ²ŸνŒ…λœ 질문으둜 μ²­κ΅¬μ„œ λŒ€ 연결성을 κ²°μ •ν•˜μ„Έμš”.
- μ—°κ²°μ„±μ˜ 경우: μ„œλΉ„μŠ€ μ£Όμ†Œλ₯Ό μˆ˜μ§‘ν•˜μ„Έμš”.
- μ²­κ΅¬μ„œ/κ³„μ •μ˜ 경우: 계정에 μ‚¬μš©λœ 이메일 λ˜λŠ” μ „ν™”λ₯Ό μˆ˜μ§‘ν•˜μ„Έμš”.
μ’…λ£Œ μ‹œκΈ°: μ˜λ„μ™€ μ£Όμ†Œ(μ—°κ²°μ„±μ˜ 경우) λ˜λŠ” 이메일/μ „ν™”(μ²­κ΅¬μ„œμ˜ 경우)κ°€ μ•Œλ €μ‘Œμ„ λ•Œ.
## 3) 확인
λͺ©ν‘œ: 신원을 ν™•μΈν•˜κ³  계정을 κ²€μƒ‰ν•©λ‹ˆλ‹€.
응닡 방법:
- μ΄λ©”μΌμ΄λ‚˜ μ „ν™”κ°€ 있으면 lookup_account(email_or_phone)을 ν˜ΈμΆœν•˜μ„Έμš”.
- μ‘°νšŒκ°€ μ‹€νŒ¨ν•˜λ©΄ λŒ€μ²΄ μ‹λ³„μžλ₯Ό ν•œ 번 μ‹œλ„ν•˜κ³ , κ·Έλ ‡μ§€ μ•ŠμœΌλ©΄ 일반적인 μ•ˆλ‚΄λ‘œ μ§„ν–‰ν•˜κ±°λ‚˜ 계정 μž‘μ—…μ΄ ν•„μš”ν•œ 경우 μ—μŠ€μ»¬λ ˆμ΄μ…˜μ„ μ œκ³΅ν•˜μ„Έμš”.
μ’…λ£Œ μ‹œκΈ°: 계정 IDκ°€ λ°˜ν™˜λ  λ•Œ.
## 4) 진단
λͺ©ν‘œ: 쀑단 λŒ€ 둜컬 문제λ₯Ό κ²°μ •ν•©λ‹ˆλ‹€.
응닡 방법:
- μ—°κ²°μ„±μ˜ 경우 check_outage(address)λ₯Ό ν˜ΈμΆœν•˜μ„Έμš”.
- 쀑단=true이면 둜컬 단계λ₯Ό κ±΄λ„ˆλ›°κ³  쀑단 λ§₯락으둜 ν•΄κ²°λ‘œ μ΄λ™ν•˜μ„Έμš”.
- 쀑단=false이면 짧은 μž¬λΆ€νŒ…/케이블링 확인을 μ•ˆλ‚΄ν•˜κ³  κ³„μ†ν•˜κΈ° 전에 각 λ‹¨κ³„μ˜ κ²°κ³Όλ₯Ό ν™•μΈν•˜μ„Έμš”.
μ’…λ£Œ μ‹œκΈ°: κ·Όλ³Έ 원인이 μ•Œλ €μ‘Œμ„ λ•Œ.
## 5) ν•΄κ²°
λͺ©ν‘œ: μˆ˜μ •, ν¬λ ˆλ”§, λ˜λŠ” 약속을 μ μš©ν•©λ‹ˆλ‹€.
응닡 방법:
- μ§€λ‚œ 7일 λ™μ•ˆ 240뢄을 μ΄ˆκ³Όν•˜λŠ” ν™•μΈλœ 쀑단이 있으면 refund_credit(account_id, 60)을 ν˜ΈμΆœν•˜μ„Έμš”.
- 쀑단=false이고 κΈ°λ³Έ 확인 후에도 λ¬Έμ œκ°€ μ§€μ†λ˜λ©΄ "μ˜€μ „ 10μ‹œβ€“12μ‹œ ET" λ˜λŠ” "μ˜€ν›„ 2μ‹œβ€“4μ‹œ ET"λ₯Ό μ œκ³΅ν•˜κ³  schedule_technician(account_id, chosen window)을 ν˜ΈμΆœν•˜μ„Έμš”.
- 둜컬 μˆ˜μ •μ΄ μž‘λ™ν–ˆμœΌλ©΄ 결과와 λ‹€μŒ 단계λ₯Ό κ°„λ‹¨νžˆ μ„€λͺ…ν•˜μ„Έμš”.
μ’…λ£Œ μ‹œκΈ°: μˆ˜μ •/ν¬λ ˆλ”§/약속이 적용되고 λ°œμ‹ μžκ°€ μΈμ •ν–ˆμ„ λ•Œ.
## 6) 확인/μ’…λ£Œ
λͺ©ν‘œ: κ²°κ³Όλ₯Ό ν™•μΈν•˜κ³  κΉ”λ”ν•˜κ²Œ λλƒ…λ‹ˆλ‹€.
응닡 방법:
- 결과와 λ‹€μŒ 단계λ₯Ό μž¬μ„€λͺ…ν•˜μ„Έμš” (예: μ•ˆμ •ν™” μ°½ λ˜λŠ” 기술자 ETA).
- λ§ˆμ§€λ§‰ μ§ˆλ¬Έμ„ μš”μ²­ν•˜κ³ , μ—†μœΌλ©΄ μ •μ€‘νžˆ μ’…λ£Œν•˜μ„Έμš”.
μ’…λ£Œ μ‹œκΈ°: λ°œμ‹ μžκ°€ 더 μ΄μƒμ˜ 도움을 κ±°μ ˆν•  λ•Œ.

μƒ˜ν”Œ ꡬ문

μƒ˜ν”Œ ꡬ문은 λͺ¨λΈμ— λŒ€ν•œ β€œμ•΅μ»€ μ˜ˆμ‹œβ€ 역할을 ν•©λ‹ˆλ‹€. ν•˜λ‚˜μ˜ 경직된 응닡에 κ³ μ •μ‹œν‚€μ§€ μ•Šκ³  따라야 ν•  μŠ€νƒ€μΌ, 간결함, 그리고 톀을 λ³΄μ—¬μ€λ‹ˆλ‹€.

  • μ‚¬μš© μ‹œκΈ°: 응닡이 λΈŒλžœλ“œ μŠ€νƒ€μΌμ΄ λΆ€μ‘±ν•˜κ±°λ‚˜ μΌκ΄€λ˜μ§€ μ•Šμ„ λ•Œ.
  • 효과: λͺ¨λΈμ΄ μžμ—°μŠ€λŸ½κ³  κ°„κ²°ν•˜κ²Œ μœ μ§€ν•˜λ©΄μ„œ λ‹€μ–‘ν™”ν•  수 μžˆλŠ” μƒ˜ν”Œ ꡬ문을 μ œκ³΅ν•©λ‹ˆλ‹€.
  • 적용 방법: λΈŒλžœλ“œμ— λ§žλŠ” μ˜ˆμ‹œλ‘œ κ΅μ²΄ν•˜κ³ , β€œν•­μƒ μ‚¬μš©ν•˜μ§€ λ§ˆμ„Έμš”β€ κ²½κ³ λ₯Ό μœ μ§€ν•©λ‹ˆλ‹€.

μ˜ˆμ‹œ

원문:

1
2
3
4
5
6
7
# Sample Phrases
- Below are sample examples that you should use for inspiration. DO NOT ALWAYS USE THESE EXAMPLES, VARY YOUR RESPONSES.
Acknowledgements: "On it." "One moment." "Good question."
Clarifiers: "Do you want A or B?" "What's the deadline?"
Bridges: "Here's the quick plan." "Let's keep it simple."
Empathy (brief): "That's frustratingβ€”let's fix it."
Closers: "Anything else before we wrap?" "Happy to help next time."

ν•œκ΅­μ–΄ λ²ˆμ—­:

1
2
3
4
5
6
7
# μƒ˜ν”Œ ꡬ문
- μ•„λž˜λŠ” μ˜κ°μ„ μœ„ν•΄ μ‚¬μš©ν•΄μ•Ό ν•˜λŠ” μƒ˜ν”Œ μ˜ˆμ‹œμž…λ‹ˆλ‹€. 이 μ˜ˆμ‹œλ“€μ„ 항상 μ‚¬μš©ν•˜μ§€ 말고, 응닡을 λ‹€μ–‘ν™”ν•˜μ„Έμš”.
인정: "μ•Œκ² μŠ΅λ‹ˆλ‹€." "μž μ‹œλ§Œμš”." "쒋은 μ§ˆλ¬Έμž…λ‹ˆλ‹€."
λͺ…ν™•ν™”: "A λ˜λŠ” Bλ₯Ό μ›ν•˜μ‹œλ‚˜μš”?" "마감일이 μ–Έμ œμΈκ°€μš”?"
μ—°κ²°: "κ°„λ‹¨ν•œ κ³„νšμž…λ‹ˆλ‹€." "λ‹¨μˆœν•˜κ²Œ μœ μ§€ν•©μ‹œλ‹€."
곡감 (κ°„λ‹¨νžˆ): "그건 λ‹΅λ‹΅ν•˜κ² λ„€μš”β€”ν•΄κ²°ν•΄ λ“œλ¦¬κ² μŠ΅λ‹ˆλ‹€."
마무리: "λ§ˆλ¬΄λ¦¬ν•˜κΈ° 전에 λ‹€λ₯Έ 것이 μžˆλ‚˜μš”?" "λ‹€μŒμ—λ„ 기꺼이 λ„μ™€λ“œλ¦¬κ² μŠ΅λ‹ˆλ‹€."

🌠 μ°Έκ³ : μŒμ„± μ‹œμŠ€ν…œμ΄ μΌκ΄€λ˜κ²Œ μƒ˜ν”Œ ꡬ문만 λ°˜λ³΅ν•˜μ—¬ 더 λ‘œλ΄‡μ μΈ μŒμ„± κ²½ν—˜μœΌλ‘œ 이어진닀면 λ‹€μ–‘μ„± μ œμ•½μ„ μΆ”κ°€ν•΄ λ³΄μ„Έμš”. 이것이 문제λ₯Ό ν•΄κ²°ν•˜λŠ” 것을 λ³΄μ•˜μŠ΅λ‹ˆλ‹€.

λŒ€ν™” 흐름 + μƒ˜ν”Œ ꡬ문

λ‹€μ–‘ν•œ λŒ€ν™” 흐름 μƒνƒœμ— μƒ˜ν”Œ ꡬ문을 μΆ”κ°€ν•˜μ—¬ λͺ¨λΈμ—κ²Œ 쒋은 응닡이 μ–΄λ–»κ²Œ λ³΄μ΄λŠ”μ§€ κ°€λ₯΄μΉ˜λŠ” 것은 μœ μš©ν•œ νŒ¨ν„΄μž…λ‹ˆλ‹€:

μ˜ˆμ‹œ

원문:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# Conversation Flow
## 1) Greeting
Goal: Set tone and invite the reason for calling.
How to respond:
- Identify as NorthLoop Internet Support.
- Keep the opener brief and invite the caller's goal.
Sample phrases (do not always repeat the same phrases, vary your responses):
- "Thanks for calling NorthLoop Internetβ€”how can I help today?"
- "You've reached NorthLoop Support. What's going on with your service?"
- "Hi thereβ€”tell me what you'd like help with."
Exit when: Caller states an initial goal or symptom.
## 2) Discover
Goal: Classify the issue and capture minimal details.
How to respond:
- Determine billing vs connectivity with one targeted question.
- For connectivity: collect the service address.
- For billing/account: collect email or phone used on the account.
Sample phrases (do not always repeat the same phrases, vary your responses):
- "Is this about your bill or your internet speed?"
- "What address are you using for the connection?"
- "What's the email or phone number on the account?"
Exit when: Intent and address (for connectivity) or email/phone (for billing) are known.
## 3) Verify
Goal: Confirm identity and retrieve the account.
How to respond:
- Once you have email or phone, call lookup_account(email_or_phone).
- If lookup fails, try the alternate identifier once; otherwise proceed with general guidance or offer escalation if account actions are required.
Sample phrases:
- "Thanksβ€”looking up your account now."
- "If that doesn't pull up, what's the other contactβ€”email or phone?"
- "Found your account. I'll take care of this."
Exit when: Account ID is returned.
## 4) Diagnose
Goal: Decide outage vs local issue.
How to respond:
- For connectivity, call check_outage(address).
- If outage=true, skip local steps; move to Resolve with outage context.
- If outage=false, guide a short reboot/cabling check; confirm each step's result before continuing.
Sample phrases (do not always repeat the same phrases, vary your responses):
- "I'm running a quick outage check for your area."
- "No outage reportedβ€”let's try a fast modem reboot."
- "Please confirm the modem lights: is the internet light solid or blinking?"
Exit when: Root cause known.
## 5) Resolve
Goal: Apply fix, credit, or appointment.
How to respond:
- If confirmed outage > 240 minutes in the last 7 days, call refund_credit(account_id, 60).
- If outage=false and issue persists after basic checks, offer "10am–12pm ET" or "2pm–4pm ET" and call schedule_technician(account_id, chosen window).
- If the local fix worked, state the result and next steps briefly.
Sample phrases (do not always repeat the same phrases, vary your responses):
- "There's been an extended outageβ€”adding a 60-minute bill credit now."
- "No outageβ€”let's book a technician. I can do 10am–12pm ET or 2pm–4pm ET."
- "Credit appliedβ€”you'll see it on your next bill."
Exit when: A fix/credit/appointment has been applied and acknowledged by the caller.
## 6) Confirm/Close
Goal: Confirm outcome and end cleanly.
How to respond:
- Restate the result and any next step (e.g., stabilization window or tech ETA).
- Invite final questions; close politely if none.
Sample phrases (do not always repeat the same phrases, vary your responses):
- "We're all set: [credit applied / appointment booked / service restored]."
- "You should see stable speeds within a few minutes."
- "Your technician window is 10am–12pm ET."
Exit when: Caller declines more help.

ν•œκ΅­μ–΄ λ²ˆμ—­:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# λŒ€ν™” 흐름
## 1) 인사
λͺ©ν‘œ: 톀을 μ„€μ •ν•˜κ³  톡화 이유λ₯Ό μš”μ²­ν•©λ‹ˆλ‹€.
응닡 방법:
- NorthLoop Internet Support둜 신원을 λ°νžˆμ„Έμš”.
- μ‹œμž‘ 멘트λ₯Ό κ°„λ‹¨νžˆ ν•˜κ³  λ°œμ‹ μžμ˜ λͺ©ν‘œλ₯Ό μš”μ²­ν•˜μ„Έμš”.
μƒ˜ν”Œ ꡬ문 (항상 같은 ꡬ문을 λ°˜λ³΅ν•˜μ§€ 말고, 응닡을 λ‹€μ–‘ν™”ν•˜μ„Έμš”):
- "NorthLoop Internet에 μ „ν™”ν•΄ μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€β€”μ˜€λŠ˜ μ–΄λ–»κ²Œ λ„μ™€λ“œλ¦΄κΉŒμš”?"
- "NorthLoop Support에 μ—°κ²°λ˜μ—ˆμŠ΅λ‹ˆλ‹€. μ„œλΉ„μŠ€μ— 무슨 λ¬Έμ œκ°€ μžˆλ‚˜μš”?"
- "μ•ˆλ…•ν•˜μ„Έμš”β€”μ–΄λ–€ 도움이 ν•„μš”ν•œμ§€ 말씀해 μ£Όμ„Έμš”."
μ’…λ£Œ μ‹œκΈ°: λ°œμ‹ μžκ°€ 초기 λͺ©ν‘œλ‚˜ 증상을 말할 λ•Œ.
## 2) 발견
λͺ©ν‘œ: 문제λ₯Ό λΆ„λ₯˜ν•˜κ³  μ΅œμ†Œν•œμ˜ μ„ΈλΆ€ 사항을 ν¬μ°©ν•©λ‹ˆλ‹€.
응닡 방법:
- ν•˜λ‚˜μ˜ νƒ€κ²ŸνŒ…λœ 질문으둜 μ²­κ΅¬μ„œ λŒ€ 연결성을 κ²°μ •ν•˜μ„Έμš”.
- μ—°κ²°μ„±μ˜ 경우: μ„œλΉ„μŠ€ μ£Όμ†Œλ₯Ό μˆ˜μ§‘ν•˜μ„Έμš”.
- μ²­κ΅¬μ„œ/κ³„μ •μ˜ 경우: 계정에 μ‚¬μš©λœ 이메일 λ˜λŠ” μ „ν™”λ₯Ό μˆ˜μ§‘ν•˜μ„Έμš”.
μƒ˜ν”Œ ꡬ문 (항상 같은 ꡬ문을 λ°˜λ³΅ν•˜μ§€ 말고, 응닡을 λ‹€μ–‘ν™”ν•˜μ„Έμš”):
- "이것은 μ²­κ΅¬μ„œμ— κ΄€ν•œ κ²ƒμΈκ°€μš” μ•„λ‹ˆλ©΄ 인터넷 속도에 κ΄€ν•œ κ²ƒμΈκ°€μš”?"
- "연결에 μ‚¬μš©ν•˜κ³  μžˆλŠ” μ£Όμ†ŒλŠ” λ¬΄μ—‡μΈκ°€μš”?"
- "κ³„μ •μ˜ μ΄λ©”μΌμ΄λ‚˜ μ „ν™”λ²ˆν˜ΈλŠ” λ¬΄μ—‡μΈκ°€μš”?"
μ’…λ£Œ μ‹œκΈ°: μ˜λ„μ™€ μ£Όμ†Œ(μ—°κ²°μ„±μ˜ 경우) λ˜λŠ” 이메일/μ „ν™”(μ²­κ΅¬μ„œμ˜ 경우)κ°€ μ•Œλ €μ‘Œμ„ λ•Œ.
## 3) 확인
λͺ©ν‘œ: 신원을 ν™•μΈν•˜κ³  계정을 κ²€μƒ‰ν•©λ‹ˆλ‹€.
응닡 방법:
- μ΄λ©”μΌμ΄λ‚˜ μ „ν™”κ°€ 있으면 lookup_account(email_or_phone)을 ν˜ΈμΆœν•˜μ„Έμš”.
- μ‘°νšŒκ°€ μ‹€νŒ¨ν•˜λ©΄ λŒ€μ²΄ μ‹λ³„μžλ₯Ό ν•œ 번 μ‹œλ„ν•˜κ³ , κ·Έλ ‡μ§€ μ•ŠμœΌλ©΄ 일반적인 μ•ˆλ‚΄λ‘œ μ§„ν–‰ν•˜κ±°λ‚˜ 계정 μž‘μ—…μ΄ ν•„μš”ν•œ 경우 μ—μŠ€μ»¬λ ˆμ΄μ…˜μ„ μ œκ³΅ν•˜μ„Έμš”.
μƒ˜ν”Œ ꡬ문:
- "κ°μ‚¬ν•©λ‹ˆλ‹€β€”μ§€κΈˆ 계정을 μ°Ύκ³  μžˆμŠ΅λ‹ˆλ‹€."
- "κ·Έκ²ƒμœΌλ‘œ μ•ˆ 되면 λ‹€λ₯Έ μ—°λ½μ²˜λŠ” λ¬΄μ—‡μΈκ°€μš”β€”μ΄λ©”μΌ λ˜λŠ” μ „ν™”?"
- "계정을 μ°Ύμ•˜μŠ΅λ‹ˆλ‹€. μ²˜λ¦¬ν•΄ λ“œλ¦¬κ² μŠ΅λ‹ˆλ‹€."
μ’…λ£Œ μ‹œκΈ°: 계정 IDκ°€ λ°˜ν™˜λ  λ•Œ.
## 4) 진단
λͺ©ν‘œ: 쀑단 λŒ€ 둜컬 문제λ₯Ό κ²°μ •ν•©λ‹ˆλ‹€.
응닡 방법:
- μ—°κ²°μ„±μ˜ 경우 check_outage(address)λ₯Ό ν˜ΈμΆœν•˜μ„Έμš”.
- 쀑단=true이면 둜컬 단계λ₯Ό κ±΄λ„ˆλ›°κ³  쀑단 λ§₯락으둜 ν•΄κ²°λ‘œ μ΄λ™ν•˜μ„Έμš”.
- 쀑단=false이면 짧은 μž¬λΆ€νŒ…/케이블링 확인을 μ•ˆλ‚΄ν•˜κ³  κ³„μ†ν•˜κΈ° 전에 각 λ‹¨κ³„μ˜ κ²°κ³Όλ₯Ό ν™•μΈν•˜μ„Έμš”.
μƒ˜ν”Œ ꡬ문 (항상 같은 ꡬ문을 λ°˜λ³΅ν•˜μ§€ 말고, 응닡을 λ‹€μ–‘ν™”ν•˜μ„Έμš”):
- "ν•΄λ‹Ή μ§€μ—­μ˜ λΉ λ₯Έ 쀑단 확인을 μ‹€ν–‰ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€."
- "쀑단이 λ³΄κ³ λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€β€”λΉ λ₯Έ λͺ¨λŽ€ μž¬λΆ€νŒ…μ„ μ‹œλ„ν•΄ λ΄…μ‹œλ‹€."
- "λͺ¨λŽ€ μ‘°λͺ…을 확인해 μ£Όμ„Έμš”: 인터넷 μ‘°λͺ…이 κ³ μ •λ˜μ–΄ μžˆλ‚˜μš” μ•„λ‹ˆλ©΄ κΉœλ°•μ΄λ‚˜μš”?"
μ’…λ£Œ μ‹œκΈ°: κ·Όλ³Έ 원인이 μ•Œλ €μ‘Œμ„ λ•Œ.
## 5) ν•΄κ²°
λͺ©ν‘œ: μˆ˜μ •, ν¬λ ˆλ”§, λ˜λŠ” 약속을 μ μš©ν•©λ‹ˆλ‹€.
응닡 방법:
- μ§€λ‚œ 7일 λ™μ•ˆ 240뢄을 μ΄ˆκ³Όν•˜λŠ” ν™•μΈλœ 쀑단이 있으면 refund_credit(account_id, 60)을 ν˜ΈμΆœν•˜μ„Έμš”.
- 쀑단=false이고 κΈ°λ³Έ 확인 후에도 λ¬Έμ œκ°€ μ§€μ†λ˜λ©΄ "μ˜€μ „ 10μ‹œβ€“12μ‹œ ET" λ˜λŠ” "μ˜€ν›„ 2μ‹œβ€“4μ‹œ ET"λ₯Ό μ œκ³΅ν•˜κ³  schedule_technician(account_id, chosen window)을 ν˜ΈμΆœν•˜μ„Έμš”.
- 둜컬 μˆ˜μ •μ΄ μž‘λ™ν–ˆμœΌλ©΄ 결과와 λ‹€μŒ 단계λ₯Ό κ°„λ‹¨νžˆ μ„€λͺ…ν•˜μ„Έμš”.
μƒ˜ν”Œ ꡬ문 (항상 같은 ꡬ문을 λ°˜λ³΅ν•˜μ§€ 말고, 응닡을 λ‹€μ–‘ν™”ν•˜μ„Έμš”):
- "μ—°μž₯된 쀑단이 μžˆμ—ˆμŠ΅λ‹ˆλ‹€β€”μ§€κΈˆ 60λΆ„ μš”κΈˆ ν¬λ ˆλ”§μ„ μΆ”κ°€ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€."
- "쀑단 μ—†μŒβ€”κΈ°μˆ μžλ₯Ό μ˜ˆμ•½ν•©μ‹œλ‹€. μ˜€μ „ 10μ‹œβ€“12μ‹œ ET λ˜λŠ” μ˜€ν›„ 2μ‹œβ€“4μ‹œ ETλ₯Ό ν•  수 μžˆμŠ΅λ‹ˆλ‹€."
- "ν¬λ ˆλ”§μ΄ μ μš©λ˜μ—ˆμŠ΅λ‹ˆλ‹€β€”λ‹€μŒ μ²­κ΅¬μ„œμ—μ„œ ν™•μΈν•˜μ‹€ 수 μžˆμŠ΅λ‹ˆλ‹€."
μ’…λ£Œ μ‹œκΈ°: μˆ˜μ •/ν¬λ ˆλ”§/약속이 적용되고 λ°œμ‹ μžκ°€ μΈμ •ν–ˆμ„ λ•Œ.
## 6) 확인/μ’…λ£Œ
λͺ©ν‘œ: κ²°κ³Όλ₯Ό ν™•μΈν•˜κ³  κΉ”λ”ν•˜κ²Œ λλƒ…λ‹ˆλ‹€.
응닡 방법:
- 결과와 λ‹€μŒ 단계λ₯Ό μž¬μ„€λͺ…ν•˜μ„Έμš” (예: μ•ˆμ •ν™” μ°½ λ˜λŠ” 기술자 ETA).
- λ§ˆμ§€λ§‰ μ§ˆλ¬Έμ„ μš”μ²­ν•˜κ³ , μ—†μœΌλ©΄ μ •μ€‘νžˆ μ’…λ£Œν•˜μ„Έμš”.
μƒ˜ν”Œ ꡬ문 (항상 같은 ꡬ문을 λ°˜λ³΅ν•˜μ§€ 말고, 응닡을 λ‹€μ–‘ν™”ν•˜μ„Έμš”):
- "λͺ¨λ“  μ€€λΉ„κ°€ μ™„λ£Œλ˜μ—ˆμŠ΅λ‹ˆλ‹€: [ν¬λ ˆλ”§ 적용됨 / 약속 μ˜ˆμ•½λ¨ / μ„œλΉ„μŠ€ 볡원됨]."
- "λͺ‡ λΆ„ 내에 μ•ˆμ •μ μΈ 속도λ₯Ό 보싀 수 μžˆμŠ΅λ‹ˆλ‹€."
- "기술자 λ°©λ¬Έ μ‹œκ°„μ€ μ˜€μ „ 10μ‹œβ€“12μ‹œ ETμž…λ‹ˆλ‹€."
μ’…λ£Œ μ‹œκΈ°: λ°œμ‹ μžκ°€ 더 μ΄μƒμ˜ 도움을 κ±°μ ˆν•  λ•Œ.

κ³ κΈ‰ λŒ€ν™” 흐름

μ‚¬μš© 사둀가 더 λ³΅μž‘ν•΄μ§μ— 따라 λͺ¨λΈμ„ 효과적으둜 μœ μ§€ν•˜λ©΄μ„œ ν™•μž₯λ˜λŠ” ꡬ쑰가 ν•„μš”ν•©λ‹ˆλ‹€. 핡심은 μœ μ§€ 관리 κ°€λŠ₯μ„±κ³Ό λ‹¨μˆœμ„±μ˜ κ· ν˜•μ„ λ§žμΆ”λŠ” κ²ƒμž…λ‹ˆλ‹€: λ„ˆλ¬΄ λ§Žμ€ 경직된 μƒνƒœλŠ” λͺ¨λΈμ— κ³ΌλΆ€ν•˜λ₯Ό 일으켜 μ„±λŠ₯을 ν•΄μΉ˜κ³  λŒ€ν™”κ°€ λ‘œλ΄‡μ μœΌλ‘œ λŠκ»΄μ§€κ²Œ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

더 λ‚˜μ€ 접근법은 λͺ¨λΈμ˜ μΈμ§€λœ λ³΅μž‘μ„±μ„ μ€„μ΄λŠ” 흐름을 μ„€κ³„ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. κ΅¬μ‘°ν™”λ˜μ—ˆμ§€λ§Œ μœ μ—°ν•œ λ°©μ‹μœΌλ‘œ μƒνƒœλ₯Ό μ²˜λ¦¬ν•¨μœΌλ‘œμ¨ λͺ¨λΈμ΄ μ§‘μ€‘ν•˜κ³  λ°˜μ‘ν•˜κΈ° μ‰½κ²Œ λ§Œλ“€μ–΄ μ‚¬μš©μž κ²½ν—˜μ„ ν–₯μƒμ‹œν‚΅λ‹ˆλ‹€.

λ³΅μž‘ν•œ μ‹œλ‚˜λ¦¬μ˜€λ₯Ό κ΄€λ¦¬ν•˜λŠ” 두 κ°€μ§€ 일반적인 νŒ¨ν„΄:

  1. μƒνƒœ λ¨Έμ‹ μœΌλ‘œμ„œμ˜ λŒ€ν™” 흐름
  2. session.updatesλ₯Ό ν†΅ν•œ 동적 λŒ€ν™” 흐름

μƒνƒœ λ¨Έμ‹ μœΌλ‘œμ„œμ˜ λŒ€ν™” 흐름

μƒνƒœμ™€ μ „ν™˜μ„ λͺ¨λ‘ μΈμ½”λ”©ν•˜λŠ” JSON ꡬ쑰둜 λŒ€ν™”λ₯Ό μ •μ˜ν•©λ‹ˆλ‹€. μ΄λ ‡κ²Œ ν•˜λ©΄ 컀버리지에 λŒ€ν•΄ μΆ”λ‘ ν•˜κ³ , μ—£μ§€ μΌ€μ΄μŠ€λ₯Ό μ‹λ³„ν•˜κ³ , μ‹œκ°„μ΄ 지남에 따라 λ³€κ²½ 사항을 μΆ”μ ν•˜κΈ° μ‰½μŠ΅λ‹ˆλ‹€. μ½”λ“œλ‘œ μ €μž₯λ˜λ―€λ‘œ 흐름이 λ°œμ „ν•¨μ— 따라 버전을 κ΄€λ¦¬ν•˜κ³ , 차이λ₯Ό λΉ„κ΅ν•˜κ³ , ν™•μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μƒνƒœ 머신은 λ˜ν•œ λŒ€ν™”κ°€ ν•œ μƒνƒœμ—μ„œ λ‹€λ₯Έ μƒνƒœλ‘œ μ΄λ™ν•˜λŠ” 방법과 μ‹œκΈ°μ— λŒ€ν•œ μ„Έλ°€ν•œ μ œμ–΄λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.

μ˜ˆμ‹œ

원문:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# Conversation States
[
  {
    "id": "1_greeting",
    "description": "Begin each conversation with a warm, friendly greeting, identifying the service and offering help.",
    "instructions": [
        "Use the company name 'Snowy Peak Boards' and provide a warm welcome.",
        "Let them know upfront that for any account-specific assistance, you'll need some verification details."
    ],
    "examples": [
      "Hello, this is Snowy Peak Boards. Thanks for reaching out! How can I help you today?"
    ],
    "transitions": [{
      "next_step": "2_get_first_name",
      "condition": "Once greeting is complete."
    }, {
      "next_step": "3_get_and_verify_phone",
      "condition": "If the user provides their first name."
    }]
  },
  {
    "id": "2_get_first_name",
    "description": "Ask for the user's name (first name only).",
    "instructions": [
      "Politely ask, 'Who do I have the pleasure of speaking with?'",
      "Do NOT verify or spell back the name; just accept it."
    ],
    "examples": [
      "Who do I have the pleasure of speaking with?"
    ],
    "transitions": [{
      "next_step": "3_get_and_verify_phone",
      "condition": "Once name is obtained, OR name is already provided."
    }]
  },
  {
    "id": "3_get_and_verify_phone",
    "description": "Request phone number and verify by repeating it back.",
    "instructions": [
      "Politely request the user's phone number.",
      "Once provided, confirm it by repeating each digit and ask if it's correct.",
      "If the user corrects you, confirm AGAIN to make sure you understand.",
    ],
    "examples": [
      "I'll need some more information to access your account if that's okay. May I have your phone number, please?",
      "You said 0-2-1-5-5-5-1-2-3-4, correct?",
      "You said 4-5-6-7-8-9-0-1-2-3, correct?"
    ],
    "transitions": [{
      "next_step": "4_authentication_DOB",
      "condition": "Once phone number is confirmed"
    }]
  }
]

ν•œκ΅­μ–΄ λ²ˆμ—­:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# λŒ€ν™” μƒνƒœ
[
  {
    "id": "1_greeting",
    "description": "μ„œλΉ„μŠ€λ₯Ό μ‹λ³„ν•˜κ³  도움을 μ œκ³΅ν•˜λŠ” λ”°λœ»ν•˜κ³  μΉœκ·Όν•œ μΈμ‚¬λ‘œ 각 λŒ€ν™”λ₯Ό μ‹œμž‘ν•©λ‹ˆλ‹€.",
    "instructions": [
        "νšŒμ‚¬λͺ… 'Snowy Peak Boards'λ₯Ό μ‚¬μš©ν•˜κ³  λ”°λœ»ν•œ ν™˜μ˜μ„ μ œκ³΅ν•˜μ„Έμš”.",
        "계정별 μ§€μ›μ˜ 경우 일뢀 확인 μ„ΈλΆ€ 사항이 ν•„μš”ν•˜λ‹€κ³  미리 μ•Œλ €μ£Όμ„Έμš”."
    ],
    "examples": [
      "μ•ˆλ…•ν•˜μ„Έμš”, Snowy Peak Boardsμž…λ‹ˆλ‹€. 연락해 μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€! 였늘 μ–΄λ–»κ²Œ λ„μ™€λ“œλ¦΄κΉŒμš”?"
    ],
    "transitions": [{
      "next_step": "2_get_first_name",
      "condition": "인사가 μ™„λ£Œλ˜λ©΄."
    }, {
      "next_step": "3_get_and_verify_phone",
      "condition": "μ‚¬μš©μžκ°€ 이름을 μ œκ³΅ν•˜λ©΄."
    }]
  },
  {
    "id": "2_get_first_name",
    "description": "μ‚¬μš©μžμ˜ 이름을 μš”μ²­ν•©λ‹ˆλ‹€ (μ΄λ¦„λ§Œ).",
    "instructions": [
      "μ •μ€‘νžˆ 'λˆ„κ΅¬μ™€ ν†΅ν™”ν•˜λŠ” μ˜κ΄‘μ„ λˆ„λ¦¬κ³  μžˆλŠ”μ§€μš”?'라고 λ¬Όμ–΄λ³΄μ„Έμš”",
      "이름을 ν™•μΈν•˜κ±°λ‚˜ 철자λ₯Ό λ§ν•˜μ§€ λ§ˆμ„Έμš”; κ·Έλƒ₯ λ°›μ•„λ“€μ΄μ„Έμš”."
    ],
    "examples": [
      "λˆ„κ΅¬μ™€ ν†΅ν™”ν•˜λŠ” μ˜κ΄‘μ„ λˆ„λ¦¬κ³  μžˆλŠ”μ§€μš”?"
    ],
    "transitions": [{
      "next_step": "3_get_and_verify_phone",
      "condition": "이름을 μ–»μ—ˆκ±°λ‚˜ 이름이 이미 μ œκ³΅λ˜μ—ˆμ„ λ•Œ."
    }]
  },
  {
    "id": "3_get_and_verify_phone",
    "description": "μ „ν™”λ²ˆν˜Έλ₯Ό μš”μ²­ν•˜κ³  λ‹€μ‹œ λ°˜λ³΅ν•˜μ—¬ ν™•μΈν•©λ‹ˆλ‹€.",
    "instructions": [
      "μ‚¬μš©μžμ˜ μ „ν™”λ²ˆν˜Έλ₯Ό μ •μ€‘νžˆ μš”μ²­ν•˜μ„Έμš”.",
      "제곡되면 각 자릿수λ₯Ό λ°˜λ³΅ν•˜μ—¬ ν™•μΈν•˜κ³  λ§žλŠ”μ§€ λ¬Όμ–΄λ³΄μ„Έμš”.",
      "μ‚¬μš©μžκ°€ μˆ˜μ •ν•˜λ©΄ μ΄ν•΄ν–ˆλŠ”μ§€ ν™•μΈν•˜κΈ° μœ„ν•΄ λ‹€μ‹œ ν™•μΈν•˜μ„Έμš”.",
    ],
    "examples": [
      "계정에 μ ‘κ·Όν•˜κΈ° μœ„ν•΄ μΆ”κ°€ 정보가 ν•„μš”ν•©λ‹ˆλ‹€. μ „ν™”λ²ˆν˜Έλ₯Ό μ•Œλ €μ£Όμ‹œκ² μ–΄μš”?",
      "0-2-1-5-5-5-1-2-3-4라고 ν•˜μ…¨λ‚˜μš”, λ§žλ‚˜μš”?",
      "4-5-6-7-8-9-0-1-2-3라고 ν•˜μ…¨λ‚˜μš”, λ§žλ‚˜μš”?"
    ],
    "transitions": [{
      "next_step": "4_authentication_DOB",
      "condition": "μ „ν™”λ²ˆν˜Έκ°€ ν™•μΈλ˜λ©΄"
    }]
  }
]

동적 λŒ€ν™” 흐름

이 νŒ¨ν„΄μ—μ„œ λŒ€ν™”λŠ” ν˜„μž¬ μƒνƒœμ— 따라 μ‹œμŠ€ν…œ ν”„λ‘¬ν”„νŠΈμ™€ 도ꡬ λͺ©λ‘μ„ μ—…λ°μ΄νŠΈν•˜μ—¬ μ‹€μ‹œκ°„μœΌλ‘œ μ μ‘ν•©λ‹ˆλ‹€. λͺ¨λΈμ—κ²Œ κ°€λŠ₯ν•œ λͺ¨λ“  κ·œμΉ™κ³Ό 도ꡬλ₯Ό ν•œ λ²ˆμ— λ…ΈμΆœν•˜λŠ” λŒ€μ‹  λŒ€ν™”μ˜ ν™œμ„± 단계와 κ΄€λ ¨λœ κ²ƒλ§Œ μ œκ³΅ν•©λ‹ˆλ‹€.

μƒνƒœμ˜ μ’…λ£Œ 쑰건이 좩쑱되면 session.updateλ₯Ό μ‚¬μš©ν•˜μ—¬ μ „ν™˜ν•˜κ³  λ‹€μŒ 단계에 ν•„μš”ν•œ ν”„λ‘¬ν”„νŠΈμ™€ λ„κ΅¬λ‘œ κ΅μ²΄ν•©λ‹ˆλ‹€.

이 접근법은 λͺ¨λΈμ˜ 인지 λΆ€ν•˜λ₯Ό 쀄여 λΆˆν•„μš”ν•œ λ§₯락에 μ‚°λ§Œν•΄μ§€μ§€ μ•Šκ³  λ³΅μž‘ν•œ μž‘μ—…μ„ 더 μ‰½κ²Œ μ²˜λ¦¬ν•  수 μžˆλ„λ‘ ν•©λ‹ˆλ‹€.

μ˜ˆμ‹œ

원문:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
from typing import Dict, List, Literal

State = Literal["verify", "resolve"]

# Allowed transitions
TRANSITIONS: Dict[State, List[State]] = {
    "verify": ["resolve"],
    "resolve": []  # terminal
}

def build_state_change_tool(current: State) -> dict:
    allowed = TRANSITIONS[current]
    readable = ", ".join(allowed) if allowed else "no further states (terminal)"
    return {
        "type": "function",
        "name": "set_conversation_state",
        "description": (
            f"Switch the conversation phase. Current: '{current}'. "
            f"You may switch only to: {readable}. "
            "Call this AFTER exit criteria are satisfied."
        ),
        "parameters": {
            "type": "object",
            "properties": {
                "next_state": {"type": "string", "enum": allowed}
            },
            "required": ["next_state"]
        }
    }

# Minimal business tools per state
TOOLS_BY_STATE: Dict[State, List[dict]] = {
    "verify": [{
        "type": "function",
        "name": "lookup_account",
        "description": "Fetch account by email or phone.",
        "parameters": {
            "type": "object",
            "properties": {"email_or_phone": {"type": "string"}},
            "required": ["email_or_phone"]
        }
    }],
    "resolve": [{
        "type": "function",
        "name": "schedule_technician",
        "description": "Book a technician visit.",
        "parameters": {
            "type": "object",
            "properties": {
                "account_id": {"type": "string"},
                "window": {"type": "string", "enum": ["10-12 ET", "14-16 ET"]}
            },
            "required": ["account_id", "window"]
        }
    }]
}

# Short, phase-specific instructions
INSTRUCTIONS_BY_STATE: Dict[State, str] = {
    "verify": (
        "# Role & Objective\n"
        "Verify identity to access the account.\n\n"
        "# Conversation (Verify)\n"
        "- Ask for the email or phone on the account.\n"
        "- Read back digits one-by-one (e.g., '4-1-5… Is that correct?').\n"
        "Exit when: Account ID is returned.\n"
        "When exit is satisfied: call set_conversation_state(next_state=\"resolve\")."
    ),
    "resolve": (
        "# Role & Objective\n"
        "Apply a fix by booking a technician.\n\n"
        "# Conversation (Resolve)\n"
        "- Offer two windows: '10–12 ET' or '2–4 ET'.\n"
        "- Book the chosen window.\n"
        "Exit when: Appointment is confirmed.\n"
        "When exit is satisfied: end the call politely."
    )
}

def build_session_update(state: State) -> dict:
    """Return the JSON payload for a Realtime `session.update` event."""
    return {
        "type": "session.update",
        "session": {
            "instructions": INSTRUCTIONS_BY_STATE[state],
            "tools": TOOLS_BY_STATE[state] + [build_state_change_tool(state)]
        }
    }

ν•œκ΅­μ–΄ λ²ˆμ—­:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
from typing import Dict, List, Literal

State = Literal["verify", "resolve"]

# ν—ˆμš©λœ μ „ν™˜
TRANSITIONS: Dict[State, List[State]] = {
    "verify": ["resolve"],
    "resolve": []  # 터미널
}

def build_state_change_tool(current: State) -> dict:
    allowed = TRANSITIONS[current]
    readable = ", ".join(allowed) if allowed else "μΆ”κ°€ μƒνƒœ μ—†μŒ (터미널)"
    return {
        "type": "function",
        "name": "set_conversation_state",
        "description": (
            f"λŒ€ν™” 단계λ₯Ό μ „ν™˜ν•©λ‹ˆλ‹€. ν˜„μž¬: '{current}'. "
            f"λ‹€μŒμœΌλ‘œλ§Œ μ „ν™˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€: {readable}. "
            "μ’…λ£Œ 기쀀이 좩쑱된 후에 ν˜ΈμΆœν•˜μ„Έμš”."
        ),
        "parameters": {
            "type": "object",
            "properties": {
                "next_state": {"type": "string", "enum": allowed}
            },
            "required": ["next_state"]
        }
    }

# μƒνƒœλ³„ μ΅œμ†Œν•œμ˜ λΉ„μ¦ˆλ‹ˆμŠ€ 도ꡬ
TOOLS_BY_STATE: Dict[State, List[dict]] = {
    "verify": [{
        "type": "function",
        "name": "lookup_account",
        "description": "μ΄λ©”μΌμ΄λ‚˜ μ „ν™”λ‘œ 계정을 κ°€μ Έμ˜΅λ‹ˆλ‹€.",
        "parameters": {
            "type": "object",
            "properties": {"email_or_phone": {"type": "string"}},
            "required": ["email_or_phone"]
        }
    }],
    "resolve": [{
        "type": "function",
        "name": "schedule_technician",
        "description": "기술자 방문을 μ˜ˆμ•½ν•©λ‹ˆλ‹€.",
        "parameters": {
            "type": "object",
            "properties": {
                "account_id": {"type": "string"},
                "window": {"type": "string", "enum": ["10-12 ET", "14-16 ET"]}
            },
            "required": ["account_id", "window"]
        }
    }]
}

# μ§§κ³  단계별 μ§€μ‹œμ‚¬ν•­
INSTRUCTIONS_BY_STATE: Dict[State, str] = {
    "verify": (
        "# μ—­ν•  및 λͺ©ν‘œ\n"
        "계정에 μ ‘κ·Όν•˜κΈ° μœ„ν•΄ 신원을 ν™•μΈν•©λ‹ˆλ‹€.\n\n"
        "# λŒ€ν™” (확인)\n"
        "- κ³„μ •μ˜ μ΄λ©”μΌμ΄λ‚˜ μ „ν™”λ₯Ό μš”μ²­ν•˜μ„Έμš”.\n"
        "- 숫자λ₯Ό ν•˜λ‚˜μ”© μ½μ–΄μ£Όμ„Έμš” (예: '4-1-5… λ§žλ‚˜μš”?').\n"
        "μ’…λ£Œ μ‹œκΈ°: 계정 IDκ°€ λ°˜ν™˜λ  λ•Œ.\n"
        "μ’…λ£Œκ°€ 좩쑱되면: set_conversation_state(next_state=\"resolve\")λ₯Ό ν˜ΈμΆœν•˜μ„Έμš”."
    ),
    "resolve": (
        "# μ—­ν•  및 λͺ©ν‘œ\n"
        "기술자λ₯Ό μ˜ˆμ•½ν•˜μ—¬ μˆ˜μ •μ„ μ μš©ν•©λ‹ˆλ‹€.\n\n"
        "# λŒ€ν™” (ν•΄κ²°)\n"
        "- 두 개의 μ‹œκ°„λŒ€λ₯Ό μ œκ³΅ν•˜μ„Έμš”: '10–12 ET' λ˜λŠ” '2–4 ET'.\n"
        "- μ„ νƒλœ μ‹œκ°„λŒ€λ₯Ό μ˜ˆμ•½ν•˜μ„Έμš”.\n"
        "μ’…λ£Œ μ‹œκΈ°: 약속이 확인될 λ•Œ.\n"
        "μ’…λ£Œκ°€ 좩쑱되면: μ •μ€‘νžˆ 톡화λ₯Ό μ’…λ£Œν•˜μ„Έμš”."
    )
}

def build_session_update(state: State) -> dict:
    """Realtime `session.update` μ΄λ²€νŠΈμ— λŒ€ν•œ JSON νŽ˜μ΄λ‘œλ“œλ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€."""
    return {
        "type": "session.update",
        "session": {
            "instructions": INSTRUCTIONS_BY_STATE[state],
            "tools": TOOLS_BY_STATE[state] + [build_state_change_tool(state)]
        }
    }

μ•ˆμ „ 및 μ—μŠ€μ»¬λ ˆμ΄μ…˜

μ’…μ’… Realtime μŒμ„± μ—μ΄μ „νŠΈμ—μ„œλŠ” μΈκ°„μ—κ²Œ μ—μŠ€μ»¬λ ˆμ΄μ…˜ν•˜λŠ” μ‹ λ’°ν•  수 μžˆλŠ” 방법이 μ€‘μš”ν•©λ‹ˆλ‹€. 이 μ„Ήμ…˜μ—μ„œλŠ” μ‚¬μš© 사둀에 따라 μ–Έμ œ μ—μŠ€μ»¬λ ˆμ΄μ…˜ν•΄μ•Ό ν•˜λŠ”μ§€μ— λŒ€ν•œ μ§€μ‹œμ‚¬ν•­μ„ μˆ˜μ •ν•΄μ•Ό ν•©λ‹ˆλ‹€.

  • μ‚¬μš© μ‹œκΈ°: λͺ¨λΈμ΄ μΈκ°„μ΄λ‚˜ λŒ€μ²΄ μ‹œμŠ€ν…œμ— 적절히 μ—μŠ€μ»¬λ ˆμ΄μ…˜ν•  μ‹œκΈ°λ₯Ό κ²°μ •ν•˜λŠ” 데 어렀움이 μžˆμ„ λ•Œ.
  • 효과: λΉ λ₯΄κ³  μ‹ λ’°ν•  수 μžˆλŠ” μ—μŠ€μ»¬λ ˆμ΄μ…˜κ³Ό 무엇을 말해야 ν•˜λŠ”μ§€ μ •μ˜ν•©λ‹ˆλ‹€.
  • 적용 방법: μžμ‹ λ§Œμ˜ μž„κ³„κ°’κ³Ό λͺ¨λΈμ΄ 말해야 ν•˜λŠ” 것을 μ‚½μž…ν•©λ‹ˆλ‹€.

μ˜ˆμ‹œ

원문:

1
2
3
4
5
6
7
8
9
10
11
12
13
# Safety & Escalation
When to escalate (no extra troubleshooting):
- Safety risk (self-harm, threats, harassment)
- User explicitly asks for a human
- Severe dissatisfaction (e.g., "extremely frustrated," repeated complaints, profanity)
- **2** failed tool attempts on the same task **or** **3** consecutive no-match/no-input events
- Out-of-scope or restricted (e.g., real-time news, financial/legal/medical advice)
What to say at the same time of calling the escalate_to_human tool (MANDATORY):
- "Thanks for your patienceβ€”I'm connecting you with a specialist now."
- Then call the tool: `escalate_to_human`
Examples that would require escalation:
- "This is the third time the reset didn't work. Just get me a person."
- "I am extremely frustrated!"

ν•œκ΅­μ–΄ λ²ˆμ—­:

1
2
3
4
5
6
7
8
9
10
11
12
13
# μ•ˆμ „ 및 μ—μŠ€μ»¬λ ˆμ΄μ…˜
μ—μŠ€μ»¬λ ˆμ΄μ…˜ν•  λ•Œ (μΆ”κ°€ 문제 ν•΄κ²° μ—†μŒ):
- μ•ˆμ „ μœ„ν—˜ (μžν•΄, μœ„ν˜‘, 괴둭힘)
- μ‚¬μš©μžκ°€ λͺ…μ‹œμ μœΌλ‘œ 인간을 μš”μ²­
- μ‹¬ν•œ 뢈만 (예: "κ·Ήλ„λ‘œ 쒌절됨", 반볡적인 뢈만, μš•μ„€)
- λ™μΌν•œ μž‘μ—…μ—μ„œ **2번** 도ꡬ μ‹œλ„ μ‹€νŒ¨ **λ˜λŠ”** **3번** 연속 μΌμΉ˜ν•˜μ§€ μ•ŠμŒ/μž…λ ₯ μ—†μŒ 이벀트
- λ²”μœ„λ₯Ό λ²—μ–΄λ‚˜κ±°λ‚˜ μ œν•œλ¨ (예: μ‹€μ‹œκ°„ λ‰΄μŠ€, 금육/법λ₯ /의료 μ‘°μ–Έ)
escalate_to_human 도ꡬλ₯Ό ν˜ΈμΆœν•˜λŠ” λ™μ‹œμ— 말해야 ν•  것 (ν•„μˆ˜):
- "인내심을 κ°€μ Έμ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€β€”μ§€κΈˆ μ „λ¬Έκ°€μ—κ²Œ μ—°κ²°ν•΄ λ“œλ¦¬κ² μŠ΅λ‹ˆλ‹€."
- κ·Έ λ‹€μŒ 도ꡬλ₯Ό ν˜ΈμΆœν•˜μ„Έμš”: `escalate_to_human`
μ—μŠ€μ»¬λ ˆμ΄μ…˜μ΄ ν•„μš”ν•œ μ˜ˆμ‹œ:
- "이번이 리셋이 μž‘λ™ν•˜μ§€ μ•Šμ€ μ„Έ λ²ˆμ§Έμž…λ‹ˆλ‹€. κ·Έλƒ₯ μ‚¬λžŒμ„ μ—°κ²°ν•΄ μ£Όμ„Έμš”."
- "μ €λŠ” κ·Ήλ„λ‘œ μ’Œμ ˆλ©λ‹ˆλ‹€!"

μƒˆλ‘œμš΄ realtime λͺ¨λΈμ€ μ§€μ‹œμ‚¬ν•­μ„ 더 잘 λ”°λ₯΄κ³  더 μ‹ λ’°ν•  수 있게 μΈκ°„μ—κ²Œ μ—μŠ€μ»¬λ ˆμ΄μ…˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

κ²°λ‘ 

이 κ°€μ΄λ“œλŠ” OpenAI의 μƒˆλ‘œμš΄ gpt-realtime λͺ¨λΈμ„ 효과적으둜 μ‚¬μš©ν•˜κΈ° μœ„ν•œ 포괄적인 ν”„λ‘¬ν”„νŒ… μ „λž΅μ„ μ œκ³΅ν•©λ‹ˆλ‹€. 각 μ„Ήμ…˜μ˜ 지침을 λ”°λ₯΄κ³  제곡된 μ˜ˆμ‹œλ₯Ό μ μš©ν•˜μ—¬ 더 μžμ—°μŠ€λŸ½κ³  효과적인 μŒμ„± AI μƒν˜Έμž‘μš©μ„ ꡬ좕할 수 μžˆμŠ΅λ‹ˆλ‹€.

핡심은 λͺ…ν™•ν•˜κ³  κ΅¬μ‘°ν™”λœ ν”„λ‘¬ν”„νŠΈλ₯Ό μž‘μ„±ν•˜λ˜ μΆ©λΆ„ν•œ μœ μ—°μ„±μ„ μœ μ§€ν•˜μ—¬ λͺ¨λΈμ΄ μžμ—°μŠ€λŸ½κ³  λ§€λ ₯적인 λŒ€ν™”λ₯Ό 생성할 수 μžˆλ„λ‘ ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. 지속적인 반볡과 ν…ŒμŠ€νŠΈλ₯Ό 톡해 νŠΉμ • μ‚¬μš© 사둀에 λ§žλŠ” 졜적의 ν”„λ‘¬ν”„νŒ… μ „λž΅μ„ 찾을 수 μžˆμŠ΅λ‹ˆλ‹€.

μ½μ–΄μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€ 😸



-->