개발에 사용할 Realtime 모델을 선택하세요. GPT-Live를 사용한다면 GPT-Live 프롬프팅을 참고하세요.
gpt-realtime-2는 지연 시간이 짧은 음성-음성 변환 애플리케이션을 위한 OpenAI의 최첨단 음성 추론 모델입니다. 말하기 전에 추론할 수 있으며, 이전 실시간 모델보다 지시를 더 충실히 따르고 더 큰 컨텍스트 윈도우를 활용하며 도구를 더 정확하게 호출합니다.
이러한 성능 향상을 활용하려면 원하는 동작을 구체적으로 고려해 프롬프트를 설계하세요. 어시스턴트가 무엇을 언제 해야 하고 무엇을 피해야 하는지 알 수 있도록 역할과 책임, 판단이 필요한 시점, 도구 호출 방식, 가드레일을 명시하세요.
간단하게 시작하세요. 처음부터 지시를 너무 많이 넣지 마세요. 최소한의 프롬프트로 평가를 실행한 뒤 테스트에서 기대대로 동작하지 않은 부분에만 지시를 추가하세요.
모델 선택
| 모델 | 적합한 상황 | 프롬프팅 시 중점 사항 |
|---|---|---|
gpt-realtime-2 | 실시간 추론, 도구 사용, 지시 이행에서 최고의 성능이 필요할 때 | 추론 수준, 사전 안내, 도구 사용 정책, 엔터티 값을 정확히 수집하는 방식, 장시간 세션의 상태 관리를 조정하세요. |
gpt-realtime-1.5 | 추론 없이 빠르고 안정적으로 동작하는 음성-음성 변환 모델이 필요할 때 | 실시간 프롬프트의 기본 구조를 따르고 지연 시간에 민감한 동작을 테스트하세요. |
Realtime 2.0 프롬프팅 가이드
음성 에이전트에 더 강력한 추론 능력, 적절한 도구 선택, 정확한 엔터티 처리 또는 장시간 세션의 상태 관리가 필요하면 gpt-realtime-2를 사용하세요.
reasoning.effort: “low”로 시작해 기본 사전 안내 동작을 테스트하고, 쓰기 작업 전에 어떤 경우에 사용자 확인을 받아야 하는지 명확히 정하세요.
Realtime 2에서 달라진 점
Realtime 2용 프롬프트는 단순한 음성 봇을 전제로 작성하기보다 추론할 수 있는 음성 에이전트에 맞춰 작성하세요.
| 변경 사항 | 프롬프트에 반영할 점 |
|---|---|
| 추론 | 복잡한 작업에서는 모델이 말하거나 도구를 호출하기 전에 내부적으로 추론할 수 있게 하세요. 어색한 침묵이나 불필요한 군말을 피하려면 사전 안내를 활용하세요. |
| 더 중요해진 프롬프트의 정확성 | “도움이 되도록 하세요” 같은 포괄적인 지시 대신 언제 동작하고 무엇을 하며 어떤 경우에는 하지 않아야 하는지 조건, 동작, 예외를 명시하세요. |
| 지시 충돌의 영향 증가 | 꼭 필요한 경우를 제외하고 always, never, only, must가 포함된 규칙 중 서로 겹치는 것을 제거하세요. 규칙이 충돌할 때의 우선순위를 정하세요. |
| 도구 사용 방식의 세밀한 제어 | 즉시 실행할 때, 누락된 정보를 물어볼 때, 정확해야 하는 정보를 확인할 때, 실패 후 재시도할 때, 상위 담당자에게 이관할 때를 각각 지정하세요. |
| 독립적으로 제어할 수 있는 사전 안내 | 모델은 시간이 걸리는 추론이나 도구 사용에 앞서 진행 상황을 짧게 말할 수 있습니다. 사전 안내를 언제, 얼마나 짧게 말하고 언제 생략해야 하는지 지정하세요. |
| 확장된 컨텍스트 윈도우 | gpt-realtime-2의 실시간 컨텍스트 윈도우가 32k 토큰에서 128k 토큰으로 늘어 장시간 세션과 큰 시스템 프롬프트에 더 적합합니다. |
사전 안내는 숨겨진 추론 과정과 다릅니다. “지금 주문 내역을 확인해 볼게요”처럼 진행 상황을 짧게 말하는 것입니다. 모델에 비공개 추론 과정을 밝히라고 요청하지 마세요.
권장 프롬프트 구조
프롬프트를 짧은 섹션으로 나누고 각 섹션에 제목을 붙이세요. 모델이 필요한 지시를 빠르게 찾을 수 있어야 합니다.
# 역할과 목표
# 성격과 말투
# 언어
# 추론
# 메시지 채널
# 사전 안내
# 응답 길이
# 도구
# 불명확한 음성
# 엔터티 수집
# 긴 컨텍스트에서의 동작
# 이관모든 사용 사례에 모든 섹션이 필요한 것은 아닙니다. 제품에 맞는 섹션을 추가하세요.
추론 수준 설정
gpt-realtime-2는 지연 시간을 더 허용하면 더 깊이 추론할 수 있습니다. 어시스턴트가 워크플로우를 수행하는 데 충분한 추론 능력을 확보할 수 있는 가장 낮은 수준을 사용하세요.
대부분의 프로덕션 음성 에이전트에서는 low로 시작하세요. 작업의 복잡도, 허용 가능한 지연 시간, 실패 비용에 따라 수준을 높이거나 낮추세요.
| 추론 수준 | 적합한 상황 | 예시 |
|---|---|---|
minimal |
지연 시간을 최소화하는 것이 가장 중요하고 작업이 단순할 때 | 스마트 홈 명령, 타이머, 간단한 일정 확인 |
low |
빠른 응답과 기본적인 추론이 모두 필요할 때 | 고객 지원, 주문 조회, 간단한 정책 질문 |
medium |
여러 단계로 이루어진 작업을 추론해야 할 때 | 기술 지원, 진단, 복잡한 라우팅 |
high |
더 깊은 추론이 성공률을 실질적으로 높일 때 | 높은 정확도가 필요한 워크플로우, 이관 여부 판단, 제약 조건이 있는 작업 |
xhigh |
지연 시간과 비용이 늘더라도 최대한 깊이 추론할 가치가 있을 때 | 복잡한 계획 수립, 중대한 사안의 우선순위 판단, 결과의 영향이 큰 도구 오케스트레이션 |
API 설정과 함께 언제 어느 정도로 추론해야 하는지 프롬프트로 안내하세요.
## 추론
- 바로 답할 수 있는 질문, 간단한 조회, 짧은 확인에는 추론하지 말고 빠르게 응답하세요.
- 여러 단계가 필요한 작업, 도구 선택, 문제 해결, 이관 시에는 실행하기 전에 추론하세요.
- 사용자의 음성이 불명확하면 오래 추론하지 말고 다시 말해 달라고 요청하세요.상황에 맞는 사전 안내
사전 안내는 음성 에이전트가 추론하거나 정보를 조회하거나 도구를 호출하는 동안 진행 상황을 짧게 말해 주는 기능입니다. 적절히 사용하면 사용자는 어시스턴트가 요청을 처리 중임을 알 수 있습니다. 잘못 사용하면 군말이 늘어 사용자가 더 오래 기다린다고 느낍니다.
gpt-realtime-2는 기본적으로 사전 안내를 생성합니다. 먼저 기본 동작을 테스트하세요. 제품에서 의도한 경험과 다르면 프롬프트에서 명시적으로 조정하세요.

## 사전 안내
요청을 처리 중이라는 사실을 알려 주는 것이 사용자에게 도움이 될 때만 짧게 안내하세요.
### 사전 안내를 할 때
다음과 같은 경우 사전 안내를 하세요.
- 사용자가 기다려야 할 만큼 시간이 걸릴 수 있는 도구를 호출하기 직전입니다.
- 여러 단계에 걸쳐 요청을 검토해야 합니다.
- 기록, 이용 가능 여부, 계정 상태 또는 정책 세부 사항을 확인하고 있습니다.
- 이관이나 인계를 준비하고 있습니다.
- 아무 말도 하지 않으면 어시스턴트가 응답하지 않는 것처럼 느껴질 수 있습니다.
안내가 필요하면 본격적인 추론이나 도구 사용을 시작하기 직전에 말하세요.
### 사전 안내를 생략할 때
다음과 같은 경우 사전 안내를 하지 마세요.
- 질문에 곧바로 답할 수 있습니다.
- 사용자가 단순히 확인하거나 정정하거나 거절했습니다.
- 음성이 불명확해 다시 물어봐야 합니다.
- 마지막으로 들린 소리가 침묵, 배경 소음, 통화 대기 음악, TV 소리 또는 주변 사람들의 대화입니다.
- 도구 호출이 금방 끝나고 진행 상황을 알려도 사용자에게 도움이 되지 않습니다.
### 사전 안내의 표현
사전 안내를 할 때는 다음 원칙을 따르세요.
- 자연스럽고 차분하게 짧게 말하세요.
- 턴마다 표현을 바꾸세요.
- 내부 추론 대신 수행할 작업을 설명하세요.
- 군말은 생략하세요.
다음과 같은 표현은 피하세요.
- “한번 생각해 볼게요…”
- “음…”
- “처리하는 동안 잠시만요…”
- “이제 도구에 접근하겠습니다…”
### 사전 안내의 길이
짧은 문장 하나로 말하세요.
영향이 큰 작업을 수행하기 전에 사용자에게 설명할 필요가 있는 경우를 제외하고는 짧은 두 문장을 넘기지 마세요.
### 권장하는 표현
- “지금 주문 내역을 확인해 볼게요.”
- “예약 내용을 조회해 볼게요.”
- “변경하기 전에 먼저 확인해 볼게요.”
- “정책을 확인하고 다음 단계를 안내해 드릴게요.”
- “계정 정보를 불러와서 맞는 계정인지 확인해 볼게요.”
### 피해야 할 표현
- “잠깐 생각해 볼게요.”
- “요청을 처리하는 동안 기다려 주세요.”
- “이제 도구를 사용하겠습니다.”
- “흥미로운 질문이네요. 신중하게 추론해 보겠습니다.”응답 길이 제어
gpt-realtime-2는 작업 유형별로 얼마나 상세하게 답해야 하는지 프롬프트에 지정했을 때 길이 지시를 가장 잘 따릅니다. 단순히 “간결하게 답하세요”라고 하기보다 상황별로 어느 정도가 간결한 답인지 정하세요. 직접적인 답변, 도구 결과, 문제 해결, 비교, 이관에는 각각 다른 응답 길이가 적합할 수 있습니다.
## 응답 길이
- 바로 답할 수 있는 질문에는 짧은 1~2문장으로 답하세요.
- 정보를 확인할 때는 한 번에 질문 하나만 하세요.
- 도구 결과는 먼저 요약하고, 이어서 사용자에게 도움이 될 다음 행동 하나만 안내하세요.
- 제품이나 옵션을 비교할 때는 주요 차이점, 각각의 장단점, 어떤 사용자에게 적합한지를 설명하세요.
- 문제를 해결할 때는 사용자가 전체 절차를 요청하지 않는 한 한 번에 한 단계씩 안내하세요.
- 이관할 때는 이관이 필요한 이유와 이후 절차를 간단히 설명하세요.예시
사용자: 어떤 요금제를 선택하면 될까요?
어시스턴트: 비용을 가장 낮추려면 Basic을 선택하세요. 팀 권한과 통합 청구가 필요하다면 Pro가 적합합니다. 규정 준수 검토나 관리자 제어 기능이 중요하다면 Enterprise를 선택하세요.
도구 사용 방식 설계
gpt-realtime-2는 도구 호출 성능이 향상되었지만, 도구를 사용하는 방식은 여전히 프롬프트와 도구 명세의 설계에 달려 있습니다. 언제 실행하고, 질문하고, 확인하고, 실패를 복구해야 하는지 정하지 않으면 어시스턴트가 너무 일찍 도구를 호출하거나 불필요한 질문을 하거나 실패한 호출을 반복할 수 있습니다.
도구 호출의 적극성 설정
위험이 낮은 읽기 전용 작업에는 적극적인 호출이 적합합니다. 도구가 데이터를 수정하거나 외부에 영향을 주거나 정확한 식별자를 요구하는 경우에는 더 신중하게 호출하는 편이 좋습니다.
| 도구 유형 | 기본 동작 |
|---|---|
| 위험이 낮은 읽기 전용 조회 | 의도와 필수 필드 값이 명확하면 호출합니다. |
| 정확한 식별자가 필요한 읽기 전용 조회 | 조회 전에 식별자를 확인합니다. |
| 사용자에게 보이는 메시지 전송 | 보내기 전에 초안을 작성하거나 내용을 요약합니다. |
| 계정 변경 | 호출 전에 확인을 받습니다. |
| 구매, 취소, 결제 | 호출 전에 금액, 대상, 실행 결과를 확인합니다. |
| 되돌릴 수 없거나 영향이 큰 작업 | 명시적으로 확인을 받고 필요한 경우 담당자 이관을 제안합니다. |
읽기 작업과 쓰기 작업이 섞여 있다면 다음 지시를 기본으로 사용하고, 사용 사례에 맞게 조정하세요.
## 도구
현재 도구 목록에 명시적으로 제공된 도구만 사용하세요. 도구를 지어내거나 있다고 가정하거나 동작을 흉내 내거나 이름을 바꾸지 마세요.
읽기 전용 도구:
- 사용자의 의도가 명확하고 필수 필드 값이 모두 있으면 도구를 호출하세요.
- 조회에 정확한 식별자가 필요하거나 잘못된 기록을 사용할 위험이 상당한 경우에만 확인을 요청하세요.
- 필수 필드 값이 누락되었거나 모호하거나 서로 충돌할 때만 다시 물어보세요.
쓰기 도구 또는 외부에 영향을 주는 작업:
- 도구를 호출하기 전에 수행하려는 작업을 요약하세요.
- 무엇이 변경, 전송, 취소, 주문 또는 청구되는지 등 주요 결과를 포함하세요.
- 사용자에게 확인을 요청하세요.
- 사용자가 명확하게 동의하기 전에는 도구를 호출하지 마세요.
정확한 식별자:
- 주문 ID, 운송장 번호, 계정 번호, 확인 코드, 전화번호, 이메일 주소는 한 글자도 틀려서는 안 되는 값으로 취급하세요.
- 필드 유형이 명확할 때만 정규화하세요.
- 특정 계정에 대한 조회, 검증 또는 쓰기 작업 전에 최종 값을 확인받으세요.
도구 호출 후:
- 도구 호출이 성공한 후에만 작업을 완료했다고 말하세요.
- 호출이 실패하면 원본 오류 메시지를 노출하지 말고 무엇이 실패했는지 짧게 설명한 뒤 다음 단계를 분명하게 안내하세요.위험이 큰 작업의 예시
사용자: 남은 잔액을 제 카드로 결제해 주세요.
나쁜 예시
어시스턴트: 카드로 결제했습니다.
좋은 예시
어시스턴트: 등록된 카드로 남은 잔액 $248.16을 결제하려고 합니다. 진행할까요?
도구 호출 실패 시 복구
도구 호출 실패도 대화의 일부입니다. 복구할 때는 무슨 일이 있었는지 설명하고 사용자가 다음에 무엇을 할 수 있는지 분명하게 안내하세요.
모든 실패를 똑같이 처리하지 마세요. 도구 유형, 실패 양상, 사용자에게 미치는 영향에 따라 복구 방식을 달리해야 합니다. 일부 실패는 별도 안내 없이 재시도하는 것이 적절합니다. 그 밖의 경우에는 사용자에게 설명을 요청하거나 식별자를 정정해 달라고 하거나, 새로운 작업에 대한 확인을 받거나 다른 방법을 선택하도록 안내해야 합니다.
## 도구 호출 실패
도구 호출이 실패하면 다음 순서로 대응하세요.
1. 무엇이 실패했는지 사용자가 이해하기 쉬운 말로 간단히 설명하세요.
2. 사용자를 탓하거나 도구에서 반환한 오류를 그대로 보여 주지 마세요.
3. 식별자가 정확하지 않아 실패했을 가능성이 있다면 사용한 값을 읽어 주고 틀린 부분을 정정해 달라고 하세요.
4. 일시적인 문제일 수 있다면 한 번 더 시도할지 물어보세요.
5. 같은 문제가 반복되면 다른 방법이나 담당자 이관을 제안하세요.
실패한 뒤 같은 인수로 같은 도구를 반복 호출하지 마세요.
받아 적은 값이 맞는지 먼저 확인한 뒤에만 다른 식별자를 요청하세요.나쁜 예시
어시스턴트: 문제가 발생했어요.
좋은 예시
어시스턴트: O R D 하이픈 3 1 2 5 B 2 3으로는 일치하는 주문을 찾을 수 없어요. 제가 잘못 들은 부분이 있을까요?
프롬프트와 사용 가능한 도구 목록 일치시키기
Realtime 모델은 사용자 요청을 적극적으로 처리하려고 합니다. 프롬프트에 실제로 사용할 수 없는 도구가 언급되거나 도구 목록과 프롬프트가 일치하지 않으면, 모델이 도구 이름을 지어내거나 작업을 완료한 것처럼 응답할 수 있습니다.
예를 들어 프롬프트에는 lookup_order가 있지만 제공된 도구 이름이 search_orders라면, 모델이 잘못된 이름으로 호출하거나 작업을 수행한 것처럼 응답할 수 있습니다.
## 사용 가능한 도구
현재 도구 목록에 명시적으로 제공된 도구만 사용하세요.
도구를 지어내거나 있다고 가정하거나 동작을 흉내 내지 마세요. 지시에 언급된 도구라도 도구 목록에 없으면 사용할 수 없는 것으로 간주하세요.
사용자가 요청한 작업에 사용할 수 없는 도구가 필요하다면 다음과 같이 대응하세요.
1. 작업을 완료한 것처럼 말하지 마세요.
2. 해당 도구를 사용할 수 없다고 짧게 설명하세요.
3. 지원되는 방법 중 사용자의 요청에 가장 가까운 다음 단계를 제안하세요.
해당 도구 호출이 성공한 후에만 작업을 완료했다고 말하세요.부록의 프롬프트 점검용 메타 프롬프트로 프로덕션 프롬프트에 모순된 지시, 누락된 도구, 상황이 조금만 달라져도 제대로 작동하지 않는 지시가 있는지 검토하세요.
침묵과 배경음 처리
음성 에이전트는 기본적으로 응답하려는 경향이 있습니다. 실제 환경에서는 침묵, 배경 소음, 통화 대기 음악, TV 소리, 주변 사람들의 대화처럼 음성으로 답할 필요가 없는 입력을 자주 받습니다.
어시스턴트가 말하지 않고 계속 들어야 할 때는 아무 작업도 수행하지 않는 대기 도구를 사용하세요. 이 도구를 사용하면 모델이 “듣고 있어요”나 “잘 못 들었어요”라고 말하는 대신, 말없이 턴을 마칠 수 있습니다.
도구 설계
{
"name": "wait_for_user",
"description": "Call this when the latest audio does not need a spoken response, such as silence, background noise, hold music, TV audio, side conversation, or speech not addressed to the assistant. This tool helps end the turn without a spoken reply.",
"parameters": {
"type": "object",
"properties": {},
"required": []
}
}다음 프롬프트 지시를 함께 사용하세요.
## 침묵과 배경 소음 처리
마지막 오디오 입력이 침묵, 배경 소음, 통화 대기 음악, TV 소리, 주변 사람들의 대화 또는 어시스턴트에게 건넨 말이 아닌 발화라면 `wait_for_user`를 호출하세요.
이 도구를 호출한 뒤에는 말로 응답하지 마세요.
“듣고 있어요”, “잘 못 들었어요”, “천천히 하세요”, “준비되면 말씀해 주세요” 같은 말도 하지 마세요.
사용자가 분명히 어시스턴트에게 말을 걸거나 도움을 요청할 때만 다시 정상적으로 응답하세요.이 방식은 어시스턴트를 향한 발화가 아닌 입력에 사용하세요. 사용자가 분명히 어시스턴트에게 말을 걸었지만 내용을 알아들을 수 없다면 다시 말해 달라고 요청하세요.
메시지 채널 구분하기
gpt-realtime-2는 commentary 채널에서 사용자에게 보이는 중간 메시지를, final 채널에서 사용자에게 전달할 최종 응답을 생성할 수 있습니다. 메시지가 표시되는 채널에 따라 원하는 동작이 다르다면 채널별 지시를 작성하세요.
| 채널 | 사용자에게 표시 | 용도 |
|---|---|---|
commentary |
예 | 사전 안내 및 도구 호출 |
final |
예 | 사용자에게 전달할 최종 메시지 |
예를 들어 도구 호출은 commentary 채널에서 이루어집니다. 도구를 사용하기 전이나 사용하는 동안 또는 사용한 후에 어시스턴트가 특정 내용을 말하도록 하려면 commentary 채널에서 언제 무엇을 해야 하는지 지정하세요.
commentary 채널에서 도구를 호출하기 전에 어떤 작업을 하는지 사용자에게 짧게 알려 주세요.gpt-realtime-2는 한 턴에서 여러 단계에 걸쳐 응답을 출력할 수 있습니다. API 출력에서는 response.done 이벤트에 포함된 phase 값으로 해당 내용이 중간 안내인지 최종 답변인지 구분합니다.
애플리케이션에서는 이 필드를 사용해 단계별로 다르게 처리할 수 있습니다. 예를 들어 중간 안내는 짧은 진행 상황으로 재생하거나 표시하고, final_answer는 어시스턴트의 완성된 응답을 전달하는 데 사용할 수 있습니다.
response.output[0].phase: "commentary"
response.output[1].phase: "final_answer"불명확한 음성 처리
모델은 확실하게 알아들은 음성에 대해서만 동작해야 합니다. 음성이 불명확하면 추측하지 말고 짧은 질문으로 다시 확인해야 합니다.
불명확한 음성을 들었을 때 모델이 누락된 단어를 추측하거나, 도구를 호출하거나, 엔터티를 수집하거나, 사전 안내를 생성하지 않도록 하세요. 사용자가 무슨 말을 했을지 재구성하는 데 내부 추론 시간을 쓰지 않도록 하세요.
## 불명확한 음성
- 명확한 음성이나 텍스트에만 답하세요.
- 사용자의 음성이 불명확하면 “Sorry, could you repeat that clearly?”처럼 짧은 영어 문장으로 다시 말해 달라고 하세요.
- 음성이 불명확할 때 같은 확인 문구를 두 번 반복하지 마세요.
- 입력이 모호하거나, 잡음이 있거나, 아무 소리도 없거나, 알아들을 수 없거나, 일부가 끊겼거나, 사용자가 말한 단어가 정확히 무엇인지 확신하기 어렵다면 음성이 불명확한 것으로 판단하세요.
- 불명확한 음성만으로 사용자의 의도를 추측하지 마세요.
- 음성이 불명확할 때는 추론하지 마세요.
- 음성이 불명확할 때는 commentary 채널에서 사전 안내를 하거나 도구를 호출하지 마세요.예시
사용자 음성: “주문 조회해 주세요. 번호는 삼 일…” [중간에 끊김]
나쁜 예시
어시스턴트: 지금 주문 번호 31을 조회해 볼게요.
좋은 예시
어시스턴트: 주문 번호가 일부만 들렸어요. 한 자리씩 다시 말씀해 주시겠어요?
엔터티 값 정확히 수집하기
많은 실시간 워크플로우에서는 주문 ID, 운송장 번호, 이메일 주소, 확인 코드, 계정 번호, 청구 번호, 티켓 ID, 지원 문의 번호, 전화번호 등의 값이 정확해야 합니다.
음성으로는 이런 값을 정확히 수집하기가 어렵습니다. 사용자는 빠르게 말하거나, 숫자를 여러 방식으로 묶어 읽거나, 값의 일부만 한 글자씩 불러 주거나, 군말을 섞거나, 말하는 도중에 정정하기도 합니다. 발음이 비슷한 문자를 혼동하기도 쉽습니다. 숫자 하나만 틀려도 조회에 실패하거나 다른 계정을 불러올 수 있습니다.
엔터티 값은 신중하게 수집하세요. 한 번에 하나의 값을 받고, 명확한 부분만 정규화하세요. 정확해야 하는 값은 도구 호출 전에 확인하고, 사용자가 어느 부분을 정정하더라도 이를 반영할 수 있도록 하세요.
한 번에 하나의 엔터티 수집하기
워크플로우에 여러 값이 필요하다면 하나씩 수집하세요. 특히 음성 대화에서 서로 다른 필드의 값이 뒤섞이는 것을 막을 수 있습니다.
## 엔터티 수집 순서
필수 값은 한 번에 하나씩 수집하세요.
- 아직 받지 못한 값 중 다음에 필요한 값 하나만 요청하세요.
- 한 턴에 여러 값을 요청하지 마세요.
- 물어보기 전에 이번 대화나 세션에서 사용자가 이미 알려 준 값인지 확인하세요.
- 사용할 만한 값이 이미 있다면 사용하기 전에 사용자에게 확인받으세요.
예시:
“앞서 알려 주신 운송장 번호 ABC-54321이 있어요. 이 번호로 조회할까요, 아니면 다른 운송장 번호가 있나요?”
현재 필요한 값을 수집하고 유효성을 검증한 뒤 사용자에게 확인받기 전까지는 도구를 호출하지 마세요.한 글자씩 불러 주는 값 처리하기
사용자가 ID, 코드, 이름, 이메일 주소를 한 글자씩 불러 줄 때 다음 지시를 사용하세요. 소리 내어 읽은 형태는 입력이며 최종 값으로 변환해야 합니다.
## 한 글자씩 불러 주는 값
사용자가 ID, 코드 또는 이메일 주소를 한 글자씩 불러 주면 이어 붙여 하나의 값으로 처리하세요. 하이픈, 점, 밑줄, 슬래시, 더하기 기호처럼 사용자가 명시적으로 말한 구분자는 유지하세요. 그 밖에는 공백이나 구분자를 추가하지 마세요.
예시:
- “에이 비 씨 일 이 삼” -> “ABC123”
- “비 씨 하이픈 구 팔 칠” -> “BC-987”
- “제이 오 에이치 엔 골뱅이 이그잼플 점 컴” -> “john@example.com”
사용자가 값에 공백이 있다고 명시적으로 말한 경우에만 글자 사이에 공백을 넣으세요.음성으로 입력된 숫자 정규화하기
숫자 식별자를 말할 때 사용자는 한 자리씩 읽거나 여러 자리를 묶어 읽거나 일반적인 수 읽기 방식을 사용할 수 있습니다. 필드에 연속된 숫자 값 하나가 필요하다면 명확하게 들린 수를 숫자로 변환하세요.
## 말로 읽은 숫자 처리
숫자 식별자를 수집할 때는 말로 읽은 수를 숫자로 변환하세요.
예시:
- “일 이 삼 사” -> “1234”
- “일 이십삼” -> “123”
- “일 십구” -> “119”
- “구십구 십일” -> “9911”
- “구천구백십일” -> “9911”
여러 해석이 가능하면 값을 사용하기 전에 사용자에게 다시 물어보세요.
예시:
“119인지 1-19인지 정확히 못 들었어요. 한 자리씩 다시 불러 주시겠어요?”도구 호출 전에 식별자 확인하기
주문 ID, 운송장 번호, 계정 번호, 청구 번호, 확인 코드와 같은 식별자는 한 글자도 틀려서는 안 되는 필드입니다. 도구 호출에 사용하기 전에 확인하세요.
숫자 식별자는 한 자리씩 다시 읽어 주세요. 전체를 하나의 수로 읽으면 오류를 알아차리기 어렵습니다.
예시
어시스턴트: 제가 들은 번호는 8… 3… 5… 2… 1입니다. 맞나요?
사용자가 문자나 숫자 하나를 정정하면 도구를 호출하기 전에 수정된 값 전체를 다시 읽으세요.
예시
어시스턴트: 네, 8… 3… 5… 7… 1로 수정했어요. 맞나요?
## 식별자가 정확한지 확인하기
정확한 식별자가 필요한 도구를 호출하기 전에 다음을 지키세요.
- 정규화한 최종 값이 맞는지 사용자에게 확인받으세요.
- 숫자 식별자는 한 자리씩 다시 읽어 주세요.
- 추측한 값, 일부만 들은 값, 모호한 값은 사용하지 마세요.
- 사용자가 값을 정정하면 도구를 호출하기 전에 수정된 값 전체를 다시 읽어 주세요.이메일 주소 한 글자씩 확인하기
이메일 주소는 정확히 수집해야 하는 값입니다. 마침표, 하이픈, 밑줄, 연속으로 나오는 같은 글자, 발음이 비슷한 이름 때문에 계정 조회에 실패하거나 잘못된 주소로 메시지가 전송될 수 있습니다.
사용자에게 이메일 주소를 한 글자씩 불러 달라고 요청하세요.
어시스턴트: 정확히 받아 적을 수 있도록 이메일 주소를 한 글자씩 불러 주시겠어요?
다시 읽어 줄 때는 최종 주소가 정확한지 확인하세요.
어시스턴트: 씨, 에이치, 이, 엔, 골뱅이 이그잼플 점 컴, 맞나요?
## 이메일 주소 확인
이메일 주소는 정확하게 받아 적어야 합니다.
사용자가 이메일 주소를 한 글자씩 불러 주지 않고 이어서 말하면 한 글자씩 다시 불러 달라고 하세요.
예시:
“정확히 받아 적을 수 있도록 이메일 주소를 한 글자씩 불러 주시겠어요?”
받아 적은 주소를 다시 읽어 주고 최종 이메일 주소가 정확한지 확인하세요.
예시:
“씨, 에이치, 이, 엔, 골뱅이 이그잼플 점 컴, 맞나요?”엔터티 수집 워크플로우
지시가 문자 그대로 해석될 때의 함정 피하기
gpt-realtime-2는 이전 실시간 모델보다 지시를 더 문자 그대로 따릅니다. 이전 모델에서 잘 작동했던 프롬프트도 조정이 필요할 수 있습니다.
정확한 표현을 사용하세요. 모델은 개발자가 의도한 전반적인 동작보다 지시에 쓰인 문구를 우선할 수 있습니다. 지나치게 포괄적이거나 엄격한 규칙은 예상치 못한 방식으로 어시스턴트의 동작을 좌우할 수 있습니다. 여러 규칙이 겹칠 때 특히 그렇습니다.
must, only, never, always처럼 제약을 나타내는 단어는 신중하게 사용하세요. 단순히 강조하려는 경우가 아니라 해당 동작이 꼭 필요한 경우에만 사용하세요. 엄격한 제약을 남용하면 어시스턴트가 경직되거나 지나치게 조심스러워져 합리적인 예외도 처리하기 어려울 수 있습니다.
적용 범위를 구체적으로 지정한 예시
사용자 데이터를 수정하는 쓰기 작업에서는 도구를 호출하기 전에 사용자에게 확인받으세요.피해야 할 포괄적인 지시
어떤 작업이든 시작하기 전에 항상 확인받으세요.두 번째 지시를 사용하면 주문 상태 확인, 예약 가능 여부 조회, 계정 정보 열람처럼 위험이 없는 읽기 전용 조회 전에도 불필요하게 확인을 요청할 수 있습니다.
문자 그대로 해석한 예시
프롬프팅에 관한 일반 권장 사항
- 의도를 암시하기보다 지시를 명시하세요.
- 동작을 엄격하게 제한해야 하는 경우에만 제약을 나타내는 단어를 사용하세요.
- 서로 모순되는 지시를 최소화하세요.
- 우선순위 지시를 여러 겹으로 두거나 서로 경쟁하게 할 때는 주의하세요.
- 프롬프트를 조금씩 바꾸며 테스트하세요. 작은 표현 차이로 동작이 크게 달라질 수 있습니다.
- 이전 실시간 모델에서 마이그레이션할 때는 최상의 결과를 위해 일부 프롬프트의 구조를 바꿔야 할 수 있습니다.
언어와 억양을 별도로 제어하기
언어와 억양은 별도로 제어해야 합니다.
사용자의 억양만으로 원하는 응답 언어를 알 수는 없습니다. 힌디어, 스페인어, 프랑스어, 표준 중국어 억양으로 영어를 말하는 사용자도 영어 답변을 기대할 수 있습니다.
다음과 같이 포괄적인 언어 지시는 피하세요.
사용자를 따라 하세요.
사용자의 언어로 자연스럽게 답하세요.
적절한 경우 언어를 바꾸세요.
현지인처럼 말하세요.
사용자의 억양에 맞추세요.이런 지시는 범위가 너무 넓습니다. 모델이 억양, 군말, 짧은 맞장구, 간혹 섞인 외국어 단어를 언어 전환의 근거로 해석할 수 있습니다.
영어 응답 정책
## 언어
기본 응답 언어는 영어입니다.
- 억양만으로 언어를 추정하지 마세요.
- 언어를 판단할 때 짧은 추임새나 맞장구, 간혹 섞인 외국어 단어는 무시하세요.
- 사용자가 명시적으로 요청하거나 다른 언어로 의미가 온전한 발화를 한 경우에만 언어를 전환하세요.
- 어떤 언어인지 확신하기 어렵다면 추측하지 말고 짧게 물어보세요.
- 사전 안내, 대화를 이어 주는 말, 도구 관련 메시지, 최종 답변에는 모두 같은 언어를 사용하세요.
- 억양을 조정하더라도 응답 언어는 바꾸지 마세요.다국어 응답 정책
## 언어
사용자가 다른 언어를 사용한다는 점이 분명하지 않으면 기본적으로 영어로 답하세요.
다음 경우에만 언어를 전환하세요.
- 사용자가 다른 언어를 사용해 달라고 명시적으로 요청합니다.
- 사용자가 다른 언어로 의미가 온전한 발화를 합니다. 이는 그 언어로 요청이나 질문을 끝까지 말하거나 내용을 정정하는 경우를 뜻합니다. 단순한 인사, 이름, 주소, 추임새 또는 차용 표현만으로는 충분하지 않습니다.
다음만을 근거로 언어를 바꾸지 마세요.
- 억양
- 발음
- 추임새
- 짧은 맞장구
- 이름
- 주소
- 간혹 섞인 외국어 단어
확실하지 않으면 이렇게 물어보세요.
“영어로 계속할까요, 아니면 [LANGUAGE]로 계속할까요?”억양 제어
gpt-realtime-2는 억양에 관한 지시를 더 충실히 따를 수 있습니다. 다만 억양 지시가 모호하면 말하는 도중 억양이 달라지거나 의도치 않게 언어가 바뀔 수 있습니다.
억양을 제어하는 프롬프트에는 다음 사항을 명시하는 것이 가장 효과적입니다.
- 목표 억양
- 일관되게 유지해야 하는 특성
- 원하는 말의 속도, 강세, 운율
- 억양 조정이 언어 선택에 영향을 주어야 하는지 여부
다음과 같은 지시 대신
호주 사람처럼 말하세요.이렇게 작성하세요.
## 억양
가벼운 호주식 억양으로 영어를 말하세요.
- 첫 단어부터 마지막 단어까지 억양을 일관되게 유지하세요.
- 자연스러운 호주식 모음 발음을 사용하되 알아듣기 쉽게 말하세요.
- 억양을 과장하지 마세요.
- 사용자의 억양에 따라 응답 언어를 바꾸지 마세요.맞춤 음성
기본 음성으로 브랜드, 억양, 캐릭터 요구 사항을 일관되게 충족하기 어려우면 맞춤 음성을 사용하세요.
프롬프트로 억양, 속도, 말하는 방식을 조절할 수 있지만 음성 설계를 완전히 대체할 수는 없습니다. 브랜드 고유의 목소리를 일관되게 유지하거나 특정 억양을 충실하게 재현해야 한다면 맞춤 음성을 고려하세요.
맞춤 음성은 승인된 고객만 사용할 수 있습니다. 사용 권한은 계정 담당 팀에 문의하세요.
장시간 세션에서 상태 유지하기
gpt-realtime-2는 실시간 컨텍스트 윈도우가 32k 토큰에서 128k 토큰으로 늘어 장시간 세션에 더 적합합니다. 양쪽이 쉴 새 없이 주고받는 대화라면 128k 토큰은 대략 1~2시간 분량의 원본 오디오 컨텍스트에 해당합니다. 실제 분량은 도구 사용, 내부 추론, 삽입된 레코드 등 세션의 세부 조건에 따라 달라집니다.
긴 컨텍스트를 사용하는 경우 gpt-realtime-2는 현재 유효한 정보와 배경 정보를 구분하고, 출처가 충돌할 때 어떤 정보를 무시해야 하는지 알 수 있을 때 가장 잘 동작합니다. 원본 대화 기록이나 대량의 컨텍스트를 그대로 넣고 모델이 출처의 우선순위를 알아서 추론하기를 기대하지 마세요. 정보를 구조화하세요.
조회한 레코드, 이전 대화 기록, 정책, 요약, 계정 메모, 배경 문서 등 많은 컨텍스트로 세션을 시작할 때는 일정한 구조에 맞춰 제공하세요.
이전 실시간 모델에서 마이그레이션하기
이전 실시간 모델에서 마이그레이션할 때는 프롬프트가 모델의 동작을 결정한다는 점을 고려하세요. 텍스트를 그대로 옮기는 것만으로는 충분하지 않습니다.
- Codex 또는 성능이 우수한 추론 모델을 사용해 최신 Realtime 프롬프팅 지침에 맞춰 프롬프트를 재구성하세요. 권장 방식에 따라 마이그레이션할 수 있도록 이 가이드의 링크를 포함하세요.
- 추론 수준을 기본값 대신
low로 설정하세요. 더 깊이 계획해야 하는 워크플로우에서만 수준을 높이세요. - 도구 이름, 매개변수, 열거형, JSON 스키마, 기타 설정이 의도한 구현과 일치하는지 점검하세요.
- 오래된 예시를 제거하세요. 정상 처리, 모호한 입력, 대화 중단, 도구 호출, 대체 동작에 대한 짧은 예시를 추가하세요.
- 마이그레이션 전후의 대표 대화를 비교하세요. 기존 평가로 성능 저하 여부를 확인하고 의도한 동작 변경 사항을 문서화하세요.
- 마지막으로 일관성을 점검하세요. 프롬프트에서 필수 요구 사항, 기본 동작, 도구 규칙, 안전 규칙, 대체 동작을 명확히 구분했는지 확인하세요.
- 평가를 실행하고 대표적인 실패 사례를 살펴보세요. 목표한 동작이 안정적으로 나타날 때까지 프롬프트를 반복해서 개선하세요.
Realtime 1.5 프롬프팅 가이드
gpt-realtime-1.5는 Realtime API의 음성-음성 변환 모델입니다. 이 모델에도 gpt-realtime의 프롬프팅 지침이 그대로 적용됩니다.
음성-음성 변환 시스템은 음성을 AI의 핵심 인터페이스로 활용하는 데 필수적입니다. gpt-realtime-1.5를 사용하면 업무에 핵심적인 워크플로우를 대규모로 처리하면서도 안정적이고 사용하기 편한 실시간 음성 에이전트를 구축할 수 있습니다.
이전 실시간 프리뷰 모델과 비교해 gpt-realtime-1.5는 지시를 더 충실히 따르고, 도구를 더 안정적으로 호출하며, 음성 품질과 전반적인 대화의 매끄러움이 향상되었습니다. 이러한 개선으로 여러 처리 단계를 연결하는 방식에서 실제 실시간 대화로 전환하기가 수월해졌습니다. 지연 시간은 줄어들고 응답은 더 자연스럽고 풍부하게 들립니다.
Realtime 모델에는 텍스트 기반 모델에 그대로 적용하기 어려운 프롬프팅 기법이 효과적입니다. 이 가이드에서는 먼저 권장 프롬프트의 뼈대를 제시합니다. 이어서 각 부분을 살펴보며 실용적인 팁과 바로 복사해 쓸 수 있는 짧은 패턴, 사용 사례에 맞게 조정할 수 있는 예시를 소개합니다.
일반 팁
- 반복해서 개선하세요. 사소한 표현 차이로 모델이 원하는 대로 동작할 수도 있고 그렇지 않을 수도 있습니다.
- 예를 들어 불명확한 음성에 관한 지시를 “들리지 않는”에서 “알아들을 수 없는”으로 바꾸자 잡음이 있는 입력을 더 잘 처리했습니다.
- 긴 문단보다 목록을 사용하세요. 짧고 명확한 항목이 긴 문단보다 효과적입니다.
- 예시로 안내하세요. 모델은 예시 문구를 충실히 따릅니다.
- 정확하게 작성하세요. GPT-5와 마찬가지로 지시가 모호하거나 서로 충돌하면 성능이 저하됩니다.
- 언어를 제어하세요. 원치 않는 언어 전환이 발생하면 출력 언어를 지정하세요.
- 반복을 줄이세요. 표현을 다양하게 하라는 규칙을 추가해 기계적인 말투를 줄이세요.
- 영문 지시를 강조할 때는 대문자를 사용하세요. 핵심 규칙을 대문자로 쓰면 눈에 띄어 모델이 더 쉽게 따를 수 있습니다.
- 기호로 된 규칙을 말로 풀어 쓰세요. 예를 들어 “IF x > 3 THEN ESCALATE” 대신 “IF MORE THAN THREE FAILURES THEN ESCALATE”처럼 실패 횟수가 세 번을 초과하면 이관하라고 쓰세요.
프롬프트 구조
프롬프트를 체계적으로 구성하면 모델이 컨텍스트를 더 쉽게 이해하고 여러 턴에 걸쳐 일관되게 동작합니다. 문제가 있는 섹션을 찾아 수정하고 반복해서 개선하기도 쉬워집니다.
- 구성 방법. 모델이 필요한 지시를 찾아 따를 수 있도록 시스템 프롬프트의 각 섹션에 명확한 제목을 붙이세요. 섹션 하나에는 한 가지 주제만 담으세요.
- 조정 방법. 규정 준수나 브랜드 정책처럼 도메인에 필요한 섹션을 추가하세요. 발음 문제가 없다면 발음 가이드를 생략하는 등 불필요한 섹션은 제거하세요.
예시
# 역할과 목표 — 누구이며 어떤 결과를 성공으로 보는지
# 성격과 말투 — 유지해야 할 목소리와 스타일
# 컨텍스트 — 조회한 컨텍스트와 관련 정보
# 발음 가이드 — 발음하기 어려운 단어를 읽는 법
# 도구 — 도구 이름, 사용 규칙, 사전 안내
# 지시 및 규칙 — 해야 할 일, 피해야 할 일, 접근 방법
# 대화 플로우 — 상태, 목표, 전이 조건
# 안전 및 이관 — 대체 절차와 인계 조건역할과 목표
이 섹션에서는 에이전트가 어떤 역할을 맡고 어떤 상태에 도달하면 작업이 완료되는지 정의합니다. 다음 예시는 두 가지 서로 다른 역할을 통해 역할과 목표를 명시했을 때 모델이 이를 얼마나 충실히 따르는지 보여 줍니다.
- 사용 시점. 모델이 원하는 페르소나나 역할을 따르지 않거나 의도한 작업 범위에 맞게 동작하지 않을 때 사용하세요.
- 효과. 음성 에이전트의 정체성을 명확히 설정해 정의된 역할에 맞게 응답하도록 합니다.
- 조정 방법. 사용 사례에 맞게 역할을 수정하세요.
예시(특정 억양 사용)
# 역할과 목표
당신은 퀘벡식 프랑스어로 말하는 고객 서비스 봇입니다. 사용자의 질문에 답하세요.이전 실시간 프리뷰 모델
gpt-realtime-1.5:
예시(캐릭터 연기)
# 역할과 목표
당신은 활기찬 게임 쇼 진행자입니다. 전화를 건 참가자가 1부터 100까지의 숫자 중 비밀 숫자를 맞혀 상금 1,000,000달러를 받을 수 있도록 게임을 진행하세요.이전 실시간 프리뷰 모델
gpt-realtime-1.5:
gpt-realtime-1.5는 이전 실시간 프리뷰 모델보다 지정된 역할을 더 안정적으로 수행합니다.
성격과 말투
gpt-realtime-1.5는 특정 성격이나 말투를 표현하라는 지시를 잘 따릅니다. 사용 사례에 맞춰 음성 경험과 전달 방식을 조정할 수 있습니다.
- 사용 시점. 응답이 단조롭거나 지나치게 길거나 턴마다 말투가 달라질 때 사용하세요.
- 효과. 목소리, 응답 길이, 말의 속도를 정해 자연스럽고 일관되게 답하도록 합니다.
- 조정 방법. 말투가 얼마나 따뜻하거나 격식을 갖춰야 하는지, 기본 응답 길이는 어느 정도인지 조정하세요. 규제가 적용되는 분야에서는 중립적이고 정확한 표현을 우선하세요. 사용 사례에 맞는 하위 섹션을 추가하세요.
예시
# 성격과 말투
## 성격
- 친절하고 차분하며 편하게 말을 걸 수 있는 고객 지원 전문가입니다.
## 말투
- 따뜻하고 간결하며 자신 있게 말하세요. 아첨하지 마세요.
## 길이
한 턴에 2~3문장으로 답하세요.예시(여러 감정 표현)
# 성격과 말투
- 응답을 시작할 때는 매우 기쁜 목소리로 말하세요.
- 중간에는 슬픈 목소리로 바꾸세요.
- 마지막에는 몹시 화가 난 목소리로 바꾸세요.gpt-realtime-1.5:
모델은 복합적인 지시를 따라 음성 응답을 진행하면서 세 가지 감정을 차례로 표현합니다.
말하기 속도 지시
Realtime API에서 speed 매개변수는 재생 속도를 바꿉니다. 모델이 발화를 구성하는 방식에는 영향을 주지 않습니다. 실제로 빠르게 말하는 것처럼 들리게 하려면 말의 속도와 리듬을 안내하는 지시를 추가하세요.
- 사용 시점. 사용자가 더 빠른 말투를 원하는데 speed 매개변수로 재생 속도만 바꿔서는 원하는 말하기 스타일을 구현하기 어려울 때 사용하세요.
- 효과. 클라이언트의 재생 속도와 독립적으로 간결함, 말의 리듬 등 발화 스타일을 조정합니다.
- 조정 방법. 사용 사례의 요구 사항에 맞게 속도 지시를 수정하세요.
예시
# 성격과 말투
## 성격
- 친절하고 차분하며 편하게 말을 걸 수 있는 고객 지원 전문가입니다.
## 말투
- 따뜻하고 간결하며 자신 있게 말하세요. 아첨하지 마세요.
## 길이
- 한 턴에 2~3문장으로 답하세요.
## 말하기 속도
- 음성 응답을 빠르게 전달하되 서두르는 듯한 인상을 주지 마세요.
- 응답 내용은 그대로 유지하고 말하는 속도만 높이세요.이전 실시간 프리뷰 모델
gpt-realtime-1.5:
속도 지시를 명시하면 gpt-realtime-1.5는 조급하게 들리지 않으면서도 눈에 띄게 빠른 속도로 말할 수 있습니다.
언어 제한
응답 언어를 제한하면 배경 소음이 있거나 여러 언어가 섞여 있는 상황에서도 모델이 의도한 언어로 일관되게 응답합니다.
- 사용 시점. 여러 언어가 쓰이거나 소음이 있는 환경에서 의도치 않은 언어 전환을 방지할 때 사용하세요.
- 효과. 선택한 언어로 출력을 고정해 응답 언어가 뜻하지 않게 바뀌는 것을 막습니다.
- 조정 방법. “영어”를 목표 언어로 바꾸거나 사용 사례에 맞춰 더 세부적인 지시를 추가하세요.
예시(한 언어로 고정)
# 성격과 말투
## 성격
- 친절하고 차분하며 편하게 말을 걸 수 있는 고객 지원 전문가입니다.
## 말투
- 따뜻하고 간결하며 자신 있게 말하세요. 아첨하지 마세요.
## 길이
- 한 턴에 2~3문장으로 답하세요.
## 언어
- 대화는 영어로만 진행하세요.
- 사용자가 요청해도 다른 언어로 답하지 마세요.
- 사용자가 다른 언어로 말하면 영어로만 지원할 수 있다고 정중하게 설명하세요.다음은 gpt-realtime-1.5에 이 지시를 적용한 후의 응답입니다.

예시(언어 학습 지도)
# 역할과 목표
- 당신은 프랑스어 학습자를 위한 친절하고 지식이 풍부한 음성 튜터입니다.
- 흥미로운 대화와 명확한 설명으로 사용자의 프랑스어 말하기와 듣기 실력을 키워 주세요.
- 사용자가 내용을 이해하고 실력을 키울 수 있도록 프랑스어로 몰입해 연습하는 시간과 영어로 도와주는 시간을 적절히 배분하세요.
# 성격과 말투
## 성격
- 친절하고 차분하며 편하게 말을 걸 수 있는 고객 지원 전문가입니다.
## 말투
- 따뜻하고 간결하며 자신 있게 말하세요. 아첨하지 마세요.
## 길이
- 한 턴에 2~3문장으로 답하세요.
## 언어
### 설명
문법, 어휘, 문화적 배경을 설명할 때는 영어를 사용하세요.
### 대화
연습을 진행하거나 예시를 들거나 대화를 나눌 때는 프랑스어를 사용하세요.다음은 gpt-realtime-1.5에 이 지시를 적용한 후의 응답입니다.

모델은 맞춤 지시에 따라 한 언어에서 다른 언어로 전환할 수 있습니다.
반복 줄이기
실시간 모델은 브랜드 말투를 유지하기 위해 예시 문구를 충실히 따르지만, 같은 문구를 지나치게 사용해 응답이 기계적이거나 반복적으로 들릴 수 있습니다. 반복을 제한하는 규칙을 추가하면 명료함과 브랜드 고유의 말투를 유지하면서 표현을 다양하게 할 수 있습니다.
- 사용 시점. 여러 턴이나 세션에서 같은 첫마디, 군말, 문장 패턴이 반복될 때 사용하세요.
- 효과. 표현을 다양하게 하라는 제약을 추가해 같은 문구의 반복을 줄이고, 필수 용어는 유지하면서 동의어나 다른 문장 구조를 사용하도록 유도합니다.
- 조정 방법. 예를 들어 “N턴 동안 같은 첫마디를 두 번 이상 쓰지 마세요”처럼 규칙의 강도를 조절하세요. 법적 요건, 규정 준수, 브랜드 정책에 따라 유지해야 하는 문구는 예외로 지정하고, 일관성이 중요한 경우에는 표현의 변화를 제한하세요.
예시
# 성격과 말투
## 성격
- 친절하고 차분하며 편하게 말을 걸 수 있는 고객 지원 전문가입니다.
## 말투
- 따뜻하고 간결하며 자신 있게 말하세요. 아첨하지 마세요.
## 길이
- 한 턴에 2~3문장으로 답하세요.
## 언어
- 대화는 영어로만 진행하세요.
- 사용자가 요청해도 다른 언어로 답하지 마세요.
- 사용자가 다른 언어로 말하면 영어로만 지원할 수 있다고 정중하게 설명하세요.
## 표현의 다양성
- 같은 문장을 두 번 반복하지 마세요.
- 기계적으로 들리지 않도록 응답 표현을 바꾸세요.다음은 이 지시를 적용하기 전의 gpt-realtime-1.5 응답입니다. 모델은 확인할 때마다 Got it을 반복합니다.

다음은 이 지시를 적용한 후의 gpt-realtime-1.5 응답입니다.

이제 모델이 응답과 확인 문구를 다양하게 표현해 말투가 한결 자연스럽습니다.
발음 가이드
이 섹션에서는 음성 대화 중 모델이 중요한 단어, 숫자, 이름, 용어를 정확히 발음하도록 하는 방법을 설명합니다.
- 사용 시점. 브랜드명, 기술 용어, 지명을 자주 잘못 발음할 때 사용하세요.
- 효과. 발음 단서를 제공해 말을 더 명확하게 전달하고 신뢰도를 높입니다.
- 조정 방법. 목록을 짧게 유지하고 잘못된 발음을 발견할 때마다 갱신하세요.
예시
# 발음 가이드
다음 단어를 말할 때는 각각 지정된 발음을 사용하세요.
- “SQL”은 “sequel”로 발음하세요.
- “PostgreSQL”은 “post-gress”로 발음하세요.
- “Kyiv”는 “KEE-iv”로 발음하세요.
- “Huawei”는 “HWAH-way”로 발음하세요.이전 실시간 프리뷰 모델
gpt-realtime-1.5:
발음 가이드를 제공하면 gpt-realtime-1.5는 SQL을 “시퀄”이라고 정확하게 발음할 수 있습니다.
영숫자 발음
실시간 음성-음성 변환에서는 전화번호, 신용카드 번호, 주문 ID 등 주요 정보를 다시 읽을 때 숫자나 글자가 불분명하게 들리거나 서로 붙어 들릴 수 있습니다. 한 글자씩 분명하게 확인하도록 지시하면 잘못 알아듣는 일을 방지하고 더 또렷한 합성 음성을 생성할 수 있습니다.
- 사용 시점. 모델이 전화번호, 카드 번호, 2단계 인증 코드, 주문 ID, 일련번호, 주소, 호수 또는 문자와 숫자가 섞인 문자열을 정확히 받아 적거나 다시 읽기 어려워할 때 사용하세요.
- 효과. 문자를 하나씩 구분해서 읽고 사용자에게 확인을 받으며, 정정한 뒤에는 다시 확인하도록 합니다. 필요하면 “Alpha의 A”처럼 예시 단어로 문자를 구분할 수도 있습니다.
예시(일반 지시 섹션)
# 지시 및 규칙
- 숫자나 코드를 읽을 때는 4-1-5처럼 하이픈으로 구분해 한 글자씩 읽으세요.
- 알려 준 번호를 정확히 그대로 반복하세요. 숫자를 한 자리도 빠뜨리지 마세요.팁: 대화 플로우에 따라 프롬프트를 구성한다면 어떤 대화 상태에서 영숫자 발음 지시를 적용할지 지정할 수 있습니다.
예시(대화 상태에 포함된 지시)
(openai-realtime-agents의 프롬프트에 있는 대화 플로우에서 발췌)
{
"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-1.5 응답입니다.
네! 번호는 55119765423입니다. 더 필요한 게 있으면 말씀해 주세요!
다음은 이 지시를 적용한 후의 gpt-realtime-1.5 응답입니다.
네! 번호는 5-5-1-1-1-9-7-6-5-4-2-3입니다. 더 필요한 게 있으면 말씀해 주세요!
지시 작성
이 섹션에서는 모델이 작업을 해결하고 권장 방식을 적용하며 발생할 수 있는 문제를 바로잡도록 프롬프트로 지시하는 방법을 설명합니다.
최상의 결과를 얻으려면 GPT-4.1 프롬프팅 가이드와 유사한 프롬프팅 패턴을 사용하는 것이 좋습니다.
지시 이행
GPT-4.1 및 GPT-5와 마찬가지로 지시가 충돌하거나 모호하거나 불명확하면 gpt-realtime-1.5의 성능도 저하됩니다.
- 사용 시점. 모델의 출력이 규칙을 벗어나거나, 단계를 건너뛰거나, 도구를 잘못 사용할 때 적용하세요.
- 효과. 출시 전에 LLM으로 모호한 표현, 충돌하는 지시, 누락된 정의를 찾아냅니다.
지시 품질 점검용 프롬프트(ChatGPT 또는 API에서 사용 가능)
다음 프롬프트를 GPT-5와 함께 사용해 프롬프트에서 수정할 부분을 찾으세요.
## 역할과 목표
당신은 **프롬프트 검토 전문가**입니다.
아래 지시에 따라 사용자가 제공한 LLM 프롬프트를 검토하고 문제점을 찾아내세요.
## 지시
LLM이 따라야 할 프롬프트를 검토해 다음 문제를 찾으세요.
- 모호한 표현: 두 가지 이상으로 해석할 수 있는 문구가 있나요?
- 누락된 정의: 분류 레이블, 용어, 개념 중 정의가 없어 LLM이 잘못 해석할 수 있는 것이 있나요?
- 충돌하거나 누락되거나 불분명한 지시: 지시가 불완전하거나 서로 모순되나요?
- 명시되지 않은 가정: 명시하지 않은 어떤 일을 모델이 수행할 수 있어야 한다고 가정하나요?
## 다음 유형의 문제는 **포함하지 마세요**.
- 새로운 지시, 도구 호출 또는 외부 정보를 지어내지 마세요. 누락된 도구 중 무엇을 추가해야 하는지는 알 수 없습니다.
- 확신할 수 없는 문제는 포함하지 마세요.
## 출력 형식
"""
# 문제점
- 번호 목록으로 작성하고 문제가 있는 문구를 짧게 인용하세요.
# 개선 사항
- 번호 목록으로 작성하고 어떤 줄을 어떻게 바꿀지 수정 문구를 제시하세요.
# 수정한 프롬프트
- 원본을 최소한으로 수정하면서 제안한 개선 사항을 모두 반영한 프롬프트를 제공하세요.
"""프롬프트 최적화용 메타 프롬프트(ChatGPT 또는 API에서 사용 가능)
이 메타 프롬프트를 사용하면 특정 실패 양상에 초점을 맞춰 기본 시스템 프롬프트를 개선할 수 있습니다. 현재 프롬프트와 관찰된 문제를 제공하면 모델(GPT-5)이 제약을 더 명확히 하고 문제를 줄이는 베리언트를 제안합니다.
현재 LLM에 사용하는 프롬프트입니다.
[BEGIN OF CURRENT PROMPT]
{CURRENT_PROMPT}
[END OF CURRENT PROMPT]
이 프롬프트를 사용하면 LLM에서 다음 문제가 발생합니다.
[BEGIN OF ISSUE]
{ISSUE}
[END OF ISSUE]
모델이 제약 조건을 더 잘 이해하고 문제를 줄일 수 있도록 프롬프트 베리언트를 몇 가지 제안해 주시겠어요?음성이 없거나 불명확한 경우
모델은 때때로 무언가를 들었다고 판단해 응답하려고 합니다. 음성이나 사용자 입력이 불명확할 때 어떻게 동작해야 하는지 맞춤 지시를 추가할 수 있습니다. 원하는 동작은 사용 사례에 맞게 조정하세요. 예를 들어 사용자에게 다시 말해 달라고 요청하는 대신 모델이 직전 질문을 반복하도록 할 수 있습니다.
- 사용 시점. 배경 소음, 중간에 끊긴 단어, 침묵에 모델이 불필요하게 답할 때 사용하세요.
- 효과. 불필요한 응답을 막고 자연스럽게 다시 확인하도록 합니다.
- 조정 방법. 사용 사례에 맞게 다시 말해 달라고 할지, 직전 질문을 반복할지 선택하세요.
예시(기침과 불명확한 음성)
# 지시 및 규칙
...
## 불명확한 음성
- 사용자의 말을 알아들을 수 없는 경우에도 항상 사용자가 말하는 언어로 답하세요.
- 명확한 음성이나 텍스트에만 답하세요.
- 사용자의 음성이 불명확하거나(모호한 입력, 배경 소음, 침묵, 알아들을 수 없는 말 등) 사용자의 말을 끝까지 듣거나 이해하지 못했다면 {preferred_language} 표현을 사용해 다시 말해 달라고 요청하세요.다음은 이 지시를 적용한 후의 gpt-realtime-1.5 응답입니다.
이 예시에서 모델은 제가 낸 (아주) 큰 기침 소리와 불명확한 음성을 들은 뒤 다시 말해 달라고 요청합니다.
배경 음악과 소리
모델이 음성을 생성할 때 의도치 않게 배경 음악, 콧노래, 규칙적인 잡음이나 다른 소리가 섞이는 경우가 있습니다. 이런 소리는 말을 알아듣기 어렵게 하고 사용자의 주의를 분산시키며 어시스턴트가 덜 전문적으로 느껴지게 할 수 있습니다. 다음 지시는 이런 현상을 방지하거나 크게 줄이는 데 도움이 됩니다.
- 사용 시점. Realtime 음성 응답에서 의도치 않은 음악적 요소나 효과음이 들릴 때 사용하세요.
- 효과. 모델이 원치 않는 소리를 생성하지 않도록 유도합니다.
- 조정 방법. 실제로 들리는 소리 패턴을 명시적으로 억제하도록 지시를 조정하세요.
예시
# 지시 및 규칙
...
- 응답에 효과음이나 의성어를 넣지 마세요.도구
이 섹션에는 함수와 도구를 사용하는 방법을 작성하세요. 도구를 호출해야 할 때와 호출하지 말아야 할 때, 수집할 인수, 호출이 진행되는 동안 할 말, 오류나 부분 결과의 처리 방식을 명시하세요.
도구 선택
gpt-realtime-1.5는 지시를 충실히 따릅니다. 하지만 도구 목록에 전달하지 않은 도구를 프롬프트에 언급하는 등 지시와 모델이 실제로 접근할 수 있는 대상이 일치하지 않으면 부정확한 응답이 나올 수 있습니다.
- 사용 시점. 프롬프트가 실제로 사용할 수 없는 도구를 언급할 때 점검하세요.
- 효과. 사용 가능한 도구와 시스템 프롬프트를 검토해 서로 일치하도록 합니다.
예시
# 도구
## lookup_account(email_or_phone)
...
## check_outage(address)
...같은 도구가 실제로 제공되는지, 각 설명이 서로 모순되지 않는지 확인하세요.
[
{
"name": "lookup_account",
"description": "Retrieve a customer account using either an email or phone number to enable verification and account-specific actions.",
"parameters": {
...
},
{
"name": "check_outage",
"description": "Check for network outages affecting a given service address and return status and ETA if applicable.",
"parameters": {
...
}
]도구 호출 사전 안내
일부 사용 사례에서는 Realtime 모델이 도구를 호출하면서 음성으로도 응답하면 좋습니다. 사용자가 지연을 덜 느껴 대화 경험이 개선됩니다. 예시 문구는 사용 사례에 맞게 수정할 수 있습니다.
- 사용 시점. 도구 호출과 동시에 요청을 처리하고 있음을 알려 지연이 덜 느껴지도록 해야 할 때 사용하세요.
- 효과. 도구를 호출하기 전에 짧고 일관된 사전 안내를 추가합니다.
예시
# 도구
- 어떤 도구든 호출하기 전에 “지금 확인해 볼게요”처럼 한 문장으로 짧게 안내한 뒤 바로 호출하세요.다음은 gpt-realtime-1.5에 이 지시를 적용한 후의 응답입니다.

이 지시를 사용하면 모델은 도구를 호출하면서 “지금 바로 확인하고 있어요”라는 음성 응답을 출력합니다.
도구 호출 사전 안내와 예시 문구
도구를 호출하면서 어떤 문구를 말할지 더 세밀하게 제어하려면 도구 명세의 설명에 예시 문구를 추가하세요.
예시
tools = [
{
"type": "function",
"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": {
"type": "object",
"properties": {
"email": {"type": "string"},
"phone": {"type": "string"},
},
"additionalProperties": False,
},
},
{
"type": "function",
"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": {
"type": "object",
"properties": {
"service_address": {"type": "string"},
},
"required": ["service_address"],
"additionalProperties": False,
},
},
]확인 없이 도구 호출하기
모델은 도구 호출 전에 사용자에게 확인을 요청할 수 있습니다. 일부 사용 사례에서는 모델이 먼저 처리하지 않고 매번 확인하는 것이 사용자 경험을 저해합니다.
- 사용 시점. 호출 여부가 분명한 도구를 사용하기 전에도 에이전트가 허락을 구할 때 사용하세요.
- 효과. 불필요하게 확인을 주고받는 과정을 없앱니다.
예시
# 도구
- 도구를 호출할 때 사용자에게 확인을 요청하지 마세요. 적극적으로 호출하세요.다음은 이 지시를 적용한 후의 gpt-realtime-1.5 응답입니다.

이 예시에서 실시간 모델은 음성 응답을 생성하지 않고 해당 도구를 바로 호출했습니다.
팁: 모델이 너무 성급하게 도구를 호출한다면 지시의 표현을 완화해 보세요. 예를 들어 “적극적으로” 같은 강한 표현을 더 부드러운 말로 바꾸면 모델이 한층 차분하고 신중하게 동작하도록 유도할 수 있습니다.
도구 호출 성능
사용 사례가 복잡해지고 사용 가능한 도구가 늘어날수록 각 도구를 언제 사용하고 언제 사용하지 말아야 하는지 명시하는 것이 중요합니다. 사용 규칙이 명확하면 도구 호출의 정확도가 높아지고 모델이 적절한 시점에 적절한 도구를 선택하기 쉬워집니다.
- 사용 시점. 도구 호출 성능이 좋지 않아 잘못된 사용을 줄일 명시적인 지시가 필요할 때 사용하세요.
- 효과. 각 도구를 사용할 조건과 피해야 할 조건을 지정합니다. 도구 A를 호출한 뒤 B 또는 C를 호출할 수 있다는 식으로 호출 순서도 지정할 수 있습니다.
예시
# 도구
- 어떤 도구든 호출할 때는 호출과 동시에 사용자에게 도구를 호출하고 있음을 알리는 응답을 출력하세요.
## lookup_account(email_or_phone)
사용 조건: 본인을 확인하거나 요금제 및 장애 관련 표시를 조회할 때.
사용 금지 조건: 사용자가 명백히 익명이고 일반적인 질문만 할 때.
## check_outage(address)
사용 조건: 사용자가 연결 문제나 느린 속도를 신고할 때.
사용 금지 조건: 청구에 관한 질문만 할 때.
## refund_credit(account_id, minutes)
사용 조건: 지난 7일 동안 확인된 장애 시간이 240분을 초과할 때.
사용 금지 조건: 장애가 확인되지 않았을 때. 먼저 진단 단계에서 check_outage를 실행하세요.
## schedule_technician(account_id, window)
사용 조건: 재부팅 후에도 문제가 반복되고 장애 상태가 false일 때.
사용 금지 조건: 장애 상태가 true일 때. 대신 상태와 예상 복구 시간을 알려 주세요.
## escalate_to_human(account_id, reason)
사용 조건: 사용자가 매우 답답해 보이거나, 폭언 또는 괴롭힘이 있거나, 실패가 반복되거나, 청구 분쟁 금액이 $50를 초과하거나, 사용자가 이관을 요청할 때.팁: 도구 호출이 예기치 않게 실패할 수 있다면 모델이 자연스럽게 대응할 수 있도록 실패 처리 지시를 명확히 추가하세요.
도구별 동작
모든 도구에 하나의 규칙을 적용하는 대신 도구별로 모델의 동작을 세밀하게 조정할 수 있습니다. 예를 들어 읽기 도구는 먼저 호출하고 쓰기 도구는 명시적인 확인을 받은 뒤 호출하도록 할 수 있습니다.
- 사용 시점. 적극적인 호출, 사용자 확인, 사전 안내에 관한 공통 지시가 모든 도구에 적합하지 않을 때 사용하세요.
- 효과. 도구를 즉시 호출할지, 먼저 확인을 받을지, 호출 전에 사전 안내를 할지 도구별 규칙으로 정합니다.
예시
# 도구
- 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
사용 조건: 재부팅과 회선 점검으로 문제가 해결되지 않았고 outage=false일 때.
방문 가능 시간대: “10am–12pm ET” 또는 “2pm–4pm ET”.
확인 문구: “기사 방문을 예약해 드릴 수 있어요. 예약할까요?”
## escalate_to_human(account_id, reason) — PREAMBLES
사용 조건: 괴롭힘, 위협, 자해, 반복된 실패, $50를 초과하는 청구 분쟁이 있거나 통화자가 답답해하거나 이관을 요청할 때.
사전 안내: “추가로 도와드릴 수 있는 선임 상담원에게 연결해 드릴게요.”도구 출력 형식
일부 도구 출력은 모델이 학습 중에 접한 일반적인 형식과 다를 수 있습니다. 특히 그대로 읽어야 하는 긴 문자열이 그렇습니다. 학습 데이터에서 도구 출력은 대개 이름이 있는 필드로 구성된 JSON 객체입니다. 도구가 문자열만 반환하고 모델에 별도로 “그대로 반복하세요”라고 지시하면, 모델이 표현을 바꾸거나 내용을 잘라 내거나 자체적인 사전 안내를 섞을 가능성이 커집니다.
실용적인 해결책은 도구 출력을 일반적인 도구 결과와 같은 형식으로 만들고, 원문을 그대로 출력해야 한다는 요구 사항을 기계가 명확히 판별할 수 있게 표시하는 것입니다.
-
사용 시점. 도구가 길거나 복잡한 구조화 콘텐츠(여러 문장으로 된 지시, 인계 자료, ID나 링크, 정책 요약, 여러 단계로 된 절차 등)를 반환하는데 내용이 잘리거나 바뀌고, 필드가 누락되거나 순서가 달라지거나, 모델 자체의 사전 안내나 설명이 섞일 때 사용하세요.
-
효과. 도구 출력을 작고 명시적인 JSON 객체로 감쌉니다. 예를 들어
response_text와 함께require_repeat_verbatim,format또는content_type같은 플래그를 제공합니다. 그러면 응답 형식이 학습 데이터에서 자주 본 형식에 가까워지고, 기대하는 출력 방식도 기계가 명확히 판별할 수 있습니다. -
조정 방법. 스키마는 최소한으로 구성하고 안정적으로 유지하세요. 예상되는 도구 출력 구조를 도구 사용 지시와 도구 정의 옆에 모두 명확히 문서화하세요. 예를 들어 “
require_repeat_verbatim이 true이면response_text만 정확히 그대로 출력하세요” 또는 “response_text를 그대로 표시하세요. 도구 출력의 필드를 추가하거나 생략하거나 순서를 바꾸지 마세요”라고 지시할 수 있습니다.
예시
예시: 원시 문자열(오류 발생 가능성이 더 높음)
도구 반환값
I just sent you an email with the verification link. Please open it and click “Confirm”.모델에서 나타날 수 있는 응답
-
“인증 링크를 이메일로 보내 드렸어요…”라고 표현을 바꿉니다.
-
마지막 문장을 누락해 내용이 잘립니다.
-
“더 도와드릴 일이 있나요?” 같은 말을 덧붙입니다.
예시: JSON으로 감싼 출력(학습 데이터의 형식에 더 가까워 안정적)
도구 반환값
{
"response_text": "I just sent you an email with the verification link. Please open it and click “Confirm”.",
"require_repeat_verbatim": true
}이 형식은 일반적인 도구 결과인 JSON 객체와 비슷하므로 모델이 대체로 다음을 더 쉽게 수행합니다.
-
어떤 내용이 기준이 되는 원문인지 파악합니다(response_text).
-
출력할 때 지켜야 할 제약을 이해합니다(require_repeat_verbatim).
-
내용을 잘라 내거나 추가 설명을 덧붙이지 않고 도구 출력을 그대로 전달합니다.
감독 도구 응답을 바꿔 말하기(응답 모델과 추론 모델을 분리한 아키텍처)
많은 음성 시스템에서 실시간 모델은 사용자에게 말하는 응답 역할을 맡고, 더 강력한 텍스트 모델은 계획 수립, 정책 조회, 표준 운영 절차 수행 등 추론 역할을 맡습니다. 텍스트 답변이 그대로 말하기에 적합한 것은 아니므로, 응답 모델은 음성을 생성하기 전에 추론 모델의 텍스트를 듣기 좋은 표현으로 바꿔야 합니다.
- 사용 시점. 추론 모델의 답변을 받은 뒤 응답 모델의 발화가 기계적으로 들리거나 너무 길거나 어색할 때 사용하세요.
- 효과. 추론 모델의 텍스트를 짧고 자연스러운 구어체 응답으로 바꾸도록 명확하게 지시합니다.
- 조정 방법. 사용 사례에서 기대하는 말투, 첫마디, 길이 제한에 맞춰 지시를 조정하세요.
예시
# 도구
## 감독 도구
이름: getNextResponseFromSupervisor(relevantContextFromLastUserMessage: string)
호출할 때:
- 허용 목록에 없는 모든 요청.
- 사실, 정책, 계정 또는 절차에 관한 모든 질문.
- 내부 조회나 시스템 변경이 필요할 수 있는 모든 작업.
호출하지 않을 때:
- 간단한 인사나 일상적인 잡담.
- 다시 말해 달라거나 설명해 달라는 요청.
- 나중에 감독 도구에서 사용할 매개변수를 수집하는 경우:
- 계정 지원용 phone_number(getUserAccountInfo)
- 매장 조회용 zip_code(findNearestStore)
- 정책 조회용 topic 또는 keyword(lookupPolicyDocument)
사용 규칙과 사전 안내:
1) 사용자에게 중립적인 안내 문구를 말한 뒤 즉시 도구를 호출하세요. 사용할 수 있는 문구는 “잠시만요”, “확인해 볼게요”, “잠깐만요”, “잠시만 기다려 주세요”, “한번 볼게요”, “알아볼게요”입니다. 성공이나 실패를 암시하지 마세요.
2) 안내 문구를 말할 때 ‘감독 도구’를 언급하지 마세요.
3) relevantContextFromLastUserMessage에는 사용자의 마지막 메시지를 한 줄로 요약해 넣으세요. 특별히 전달할 내용이 없으면 빈 문자열을 사용하세요.
4) 도구가 결과를 반환하면 아래의 ‘감독 도구 응답 바꿔 말하기’ 지시에 따라 답하세요.
### 감독 도구 응답 바꿔 말하기
- “기다려 주셔서 감사합니다”, “방금 확인했어요”, “지금 내역을 불러왔어요”처럼 주체와 행동이 드러나는 짧은 첫마디로 시작한 뒤 자연스럽게 답변으로 이어 가세요.
- 두 문장 이내로 짧게 답하세요.
- 첫마디 + 한 문장으로 요약한 핵심 + 주요 세부 사항 최대 3개 + 짧은 확인 또는 선택 질문 순서로 말하세요. 예를 들어 “예상하신 내용과 맞나요?” 또는 “어떤 선택지가 있는지 살펴볼까요?”라고 물을 수 있습니다.
- 숫자는 듣기 쉽게 읽으세요. 금액은 자연스럽게 읽고(“$45.20” → “사십오 달러 이십 센트”), 전화번호는 3-3-4자리씩 묶어 읽으세요. 주소의 숫자는 한 자리씩, 날짜와 시간은 “8월 12일”, “오후 세 시 반”처럼 쉽게 말하세요.바꿔 말하라는 지시가 없는 예시
어시스턴트: 현재 신용카드 계정의 잔액은 플러스 32,323,232 AUD입니다.
같은 예시에 바꿔 말하라는 지시를 적용한 경우
어시스턴트: 방금 확인했는데요, 카드 계정에 삼천이백삼십이만 삼천이백삼십이 호주 달러가 고객님 몫으로 남아 있어요. 마지막 결제는 8월 1일에 처리됐어요. 예상하신 내용과 맞나요?
자주 사용하는 도구
gpt-realtime-1.5는 다음과 같이 자주 사용하는 도구를 효과적으로 활용하도록 학습되었습니다. 사용 사례에 비슷한 동작이 필요하다면 이름, 시그니처, 설명을 다음 예시와 유사하게 유지하세요. 학습 데이터에 가까운 형식일수록 안정적으로 동작합니다.
다음은 모델이 학습한 대표적인 도구입니다.
예시
# answer(question: string)
설명: 고객이 질문했는데 어시스턴트가 답을 모르는 경우 또는 고객이 작업 수행을 요청한 경우에 호출하세요.
# escalate_to_human()
설명: 고객이 이관을 요청하거나 다른 사람과 이야기하고 싶다고 하거나 통화에 불만을 표현하면 호출하세요.
# finish_session()
설명: 고객이 용건이 끝났거나 더 진행하고 싶지 않다고 말하면 호출하세요. 의도가 모호하면 호출 전에 고객에게 확인하세요.대화 플로우
이 섹션에서는 대화를 목표가 분명한 단계로 나누어 모델이 각 단계에서 무엇을 해야 하는지 정확히 알 수 있도록 합니다. 각 단계의 목적, 진행 지시, 다음 단계로 넘어가기 위한 구체적인 종료 조건을 정의하세요. 그러면 모델이 한 단계에 머물거나 필요한 단계를 건너뛰거나 너무 일찍 다음 단계로 넘어가는 일을 막고, 인사부터 문제 해결까지 대화를 체계적으로 진행할 수 있습니다.
또한 프롬프트를 여러 대화 상태로 나누면 어떤 상태에서 어떤 오류가 발생하는지 쉽게 파악하고 더 효과적으로 개선할 수 있습니다.
- 사용 시점. 대화가 산만하거나 목표에 도달하기 전에 멈추거나 모델이 목표를 효과적으로 달성하지 못할 때 사용하세요.
- 효과. 상호작용을 목표, 지시, 종료 조건이 명확한 단계로 나눕니다.
- 조정 방법. 워크플로우에 맞게 단계 이름을 바꾸고, 의도한 동작에 맞춰 단계별 지시를 수정하세요. 종료 조건은 구체적이고 간단하게 유지하세요.
예시
# 대화 플로우
## 1) 인사
목표: 대화의 분위기를 정하고 전화한 이유를 물어봅니다.
응답 방법:
- NorthLoop 인터넷 고객 지원팀이라고 소개하세요.
- 짧게 인사하고 어떤 도움이 필요한지 물어보세요.
- 통화자가 Northloop 고객인지 확인하세요.
문의 파악 단계로 넘어가는 조건: 통화자가 Northloop 고객이라고 밝히고 원하는 일이나 증상을 처음으로 설명합니다.
## 2) 문의 파악
목표: 문의를 분류하고 꼭 필요한 정보만 수집합니다.
응답 방법:
- 질문 하나로 청구 문의인지 연결 문제인지 파악하세요.
- 연결 문제라면 서비스 이용 주소를 받으세요.
- 청구 또는 계정 문의라면 계정에 등록된 이메일 주소나 전화번호를 받으세요.
종료 조건: 사용자의 의도를 파악했고, 연결 문제라면 주소를, 청구 문의라면 이메일 주소나 전화번호를 확보했습니다.
## 3) 본인 확인
목표: 본인을 확인하고 계정을 조회합니다.
응답 방법:
- 이메일 주소나 전화번호를 받으면 lookup_account(email_or_phone)을 호출하세요.
- 조회에 실패하면 다른 식별자로 한 번 시도하세요. 그래도 실패하면 일반적인 안내를 제공하거나, 계정에서 작업해야 하는 경우 담당자 이관을 제안하세요.
종료 조건: 계정 ID가 반환됩니다.
## 4) 진단
목표: 서비스 장애인지 개별 이용 환경의 문제인지 판단합니다.
응답 방법:
- 연결 문제라면 check_outage(address)를 호출하세요.
- outage=true이면 개별 환경 점검을 건너뛰고 장애 정보를 가지고 해결 단계로 이동하세요.
- outage=false이면 간단히 재부팅하고 케이블을 점검하도록 안내하세요. 각 단계의 결과를 확인한 뒤 다음 단계로 넘어가세요.
종료 조건: 근본 원인을 파악했습니다.
## 5) 해결
목표: 문제를 해결하거나 요금 크레딧을 적용하거나 방문을 예약합니다.
응답 방법:
- 지난 7일 동안 확인된 장애 시간이 240분을 초과하면 refund_credit(account_id, 60)을 호출하세요.
- outage=false이고 기본 점검 후에도 문제가 계속되면 “10am–12pm ET” 또는 “2pm–4pm ET”를 제안하고 schedule_technician(account_id, chosen window)를 호출하세요.
- 개별 환경에서 조치한 결과 문제가 해결되면 결과와 다음 단계를 짧게 안내하세요.
종료 조건: 해결 조치, 요금 크레딧 적용 또는 방문 예약이 완료되었으며 통화자가 결과를 확인했습니다.
## 6) 결과 확인 및 종료
목표: 결과를 확인하고 통화를 마무리합니다.
응답 방법:
- 결과와 다음 단계(안정화까지 걸리는 시간이나 기사 도착 예정 시간 등)를 다시 안내하세요.
- 마지막으로 궁금한 점이 있는지 묻고, 없으면 정중하게 마무리하세요.
종료 조건: 통화자가 더 이상 도움이 필요 없다고 합니다.예시 문구
예시 문구는 모델이 참고할 기준이 됩니다. 한 가지 응답을 그대로 반복하게 하지 않으면서 원하는 스타일, 길이, 말투를 보여 줍니다.
- 사용 시점. 응답이 브랜드 스타일을 살리지 못하거나 일관되지 않을 때 사용하세요.
- 효과. 모델이 응용할 수 있는 예시 문구를 제공해 자연스럽고 짧게 답하도록 합니다.
- 조정 방법. 브랜드에 맞게 예시를 교체하되 항상 같은 예시를 쓰지 말라는 주의 문구는 유지하세요.
예시
# 예시 문구
- 다음 예시는 표현을 고를 때 참고하세요. 매번 같은 예시를 쓰지 말고 다양하게 답하세요.
요청에 응답할 때: “바로 확인할게요.” “잠시만요.” “좋은 질문이에요.”
다시 확인할 때: “A와 B 중 어느 쪽을 원하세요?” “언제까지 필요한가요?”
다음 내용으로 넘어갈 때: “어떻게 진행할지 간단히 말씀드릴게요.” “간단하게 해 볼게요.”
짧게 공감할 때: “답답하시겠어요. 같이 해결해 봐요.”
마무리할 때: “마치기 전에 더 필요한 게 있으세요?” “다음에도 편하게 문의해 주세요.”참고: 음성 시스템이 예시 문구만 계속 반복해 기계적으로 들린다면 표현을 다양하게 하라는 제약을 추가해 보세요. 실제로 이 방법으로 문제를 해결한 사례가 있습니다.
대화 플로우와 예시 문구
대화 플로우의 각 상태에 예시 문구를 넣으면 해당 단계에서 어떤 응답이 적절한지 모델에 보여 줄 수 있습니다.
예시
# 대화 플로우
## 1) 인사
목표: 대화의 분위기를 정하고 전화한 이유를 물어봅니다.
응답 방법:
- NorthLoop 인터넷 고객 지원팀이라고 소개하세요.
- 짧게 인사하고 어떤 도움이 필요한지 물어보세요.
예시 문구(매번 같은 문구를 반복하지 말고 표현을 바꾸세요):
- “NorthLoop 인터넷에 전화해 주셔서 감사합니다. 무엇을 도와드릴까요?”
- “NorthLoop 고객 지원팀입니다. 서비스를 이용하면서 어떤 문제가 있으셨나요?”
- “안녕하세요. 어떤 도움이 필요한지 말씀해 주세요.”
종료 조건: 통화자가 원하는 일이나 증상을 처음으로 설명합니다.
## 2) 문의 파악
목표: 문의를 분류하고 꼭 필요한 정보만 수집합니다.
응답 방법:
- 질문 하나로 청구 문의인지 연결 문제인지 파악하세요.
- 연결 문제라면 서비스 이용 주소를 받으세요.
- 청구 또는 계정 문의라면 계정에 등록된 이메일 주소나 전화번호를 받으세요.
예시 문구(매번 같은 문구를 반복하지 말고 표현을 바꾸세요):
- “요금 청구서에 관한 문의인가요, 아니면 인터넷 속도에 관한 문의인가요?”
- “인터넷을 이용하시는 곳의 주소가 어떻게 되나요?”
- “계정에 등록된 이메일 주소나 전화번호가 어떻게 되나요?”
종료 조건: 사용자의 의도를 파악했고, 연결 문제라면 주소를, 청구 문의라면 이메일 주소나 전화번호를 확보했습니다.
## 3) 본인 확인
목표: 본인을 확인하고 계정을 조회합니다.
응답 방법:
- 이메일 주소나 전화번호를 받으면 lookup_account(email_or_phone)을 호출하세요.
- 조회에 실패하면 다른 식별자로 한 번 시도하세요. 그래도 실패하면 일반적인 안내를 제공하거나, 계정에서 작업해야 하는 경우 담당자 이관을 제안하세요.
예시 문구:
- “감사합니다. 지금 계정을 조회하고 있어요.”
- “이 정보로 조회되지 않으면 다른 연락처로 확인할게요. 이메일 주소나 전화번호 중 다른 쪽을 알려 주시겠어요?”
- “계정을 찾았어요. 제가 처리해 드릴게요.”
종료 조건: 계정 ID가 반환됩니다.
## 4) 진단
목표: 서비스 장애인지 개별 이용 환경의 문제인지 판단합니다.
응답 방법:
- 연결 문제라면 check_outage(address)를 호출하세요.
- outage=true이면 개별 환경 점검을 건너뛰고 장애 정보를 가지고 해결 단계로 이동하세요.
- outage=false이면 간단히 재부팅하고 케이블을 점검하도록 안내하세요. 각 단계의 결과를 확인한 뒤 다음 단계로 넘어가세요.
예시 문구(매번 같은 문구를 반복하지 말고 표현을 바꾸세요):
- “고객님 지역에 장애가 있는지 확인하고 있어요.”
- “신고된 장애는 없네요. 모뎀을 한번 껐다 켜 볼까요?”
- “모뎀의 인터넷 표시등을 봐 주시겠어요? 계속 켜져 있나요, 아니면 깜박이나요?”
종료 조건: 근본 원인을 파악했습니다.
## 5) 해결
목표: 문제를 해결하거나 요금 크레딧을 적용하거나 방문을 예약합니다.
응답 방법:
- 지난 7일 동안 확인된 장애 시간이 240분을 초과하면 refund_credit(account_id, 60)을 호출하세요.
- outage=false이고 기본 점검 후에도 문제가 계속되면 “10am–12pm ET” 또는 “2pm–4pm ET”를 제안하고 schedule_technician(account_id, chosen window)를 호출하세요.
- 개별 환경에서 조치한 결과 문제가 해결되면 결과와 다음 단계를 짧게 안내하세요.
예시 문구(매번 같은 문구를 반복하지 말고 표현을 바꾸세요):
- “장시간 장애가 있었네요. 지금 60분에 해당하는 요금 크레딧을 적용할게요.”
- “서비스 장애는 없네요. 기사 방문을 예약해 드릴게요. 미국 동부 시간으로 오전 10시~정오 또는 오후 2시~4시 중 선택하실 수 있어요.”
- “크레딧을 적용했어요. 다음 청구서에서 확인하실 수 있어요.”
종료 조건: 해결 조치, 요금 크레딧 적용 또는 방문 예약이 완료되었으며 통화자가 결과를 확인했습니다.
## 6) 결과 확인 및 종료
목표: 결과를 확인하고 통화를 마무리합니다.
응답 방법:
- 결과와 다음 단계(안정화까지 걸리는 시간이나 기사 도착 예정 시간 등)를 다시 안내하세요.
- 마지막으로 궁금한 점이 있는지 묻고, 없으면 정중하게 마무리하세요.
예시 문구(매번 같은 문구를 반복하지 말고 표현을 바꾸세요):
- “처리가 끝났습니다. [credit applied / appointment booked / service restored].”
- “몇 분 안에 속도가 안정될 거예요.”
- “기사 방문 예정 시간은 미국 동부 시간으로 오전 10시부터 정오까지예요.”
종료 조건: 통화자가 더 이상 도움이 필요 없다고 합니다.고급 대화 플로우
사용 사례가 복잡해질수록 모델의 성능을 유지하면서 확장할 수 있는 구조가 필요합니다. 유지보수하기 쉬우면서도 단순하게 구성하세요. 경직된 상태가 너무 많으면 모델의 부담이 커져 성능이 저하되고 대화가 기계적으로 느껴질 수 있습니다.
모델이 처리해야 할 복잡성을 줄이는 방향으로 플로우를 설계하는 편이 좋습니다. 상태를 체계적이면서 유연하게 관리하면 모델이 현재 작업에 집중해 빠르게 응답할 수 있어 사용자 경험이 개선됩니다.
복잡한 시나리오를 관리하는 두 가지 일반적인 패턴은 다음과 같습니다.
- 상태 머신으로 대화 플로우 구성하기
- session.updates를 사용해 대화 플로우를 동적으로 변경하기
상태 머신으로 대화 플로우 구성하기
상태와 전이를 모두 담는 JSON 구조로 대화를 정의하세요. 그러면 플로우가 어떤 경우를 처리하는지 검토하고, 예외 사례를 찾고, 시간에 따른 변경 사항을 추적하기 쉽습니다. 코드로 저장하므로 플로우가 발전함에 따라 버전을 관리하고 변경 내용을 비교하거나 확장할 수 있습니다. 상태 머신을 사용하면 대화가 한 상태에서 다른 상태로 언제 어떻게 이동하는지도 세밀하게 제어할 수 있습니다.
예시
# 대화 상태
[
{
"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를 사용해 다음 상태로 전환하고, 프롬프트와 도구를 다음 단계에 필요한 것으로 교체하세요.
이 방법은 모델의 인지 부담을 줄여 불필요한 컨텍스트에 주의를 빼앗기지 않고 복잡한 작업을 더 쉽게 처리하도록 합니다.
예시
from typing import 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": {
"type": "realtime",
"instructions": INSTRUCTIONS_BY_STATE[state],
"tools": TOOLS_BY_STATE[state] + [build_state_change_tool(state)],
},
}안전 및 담당자 이관
Realtime 음성 에이전트에서는 필요할 때 사람에게 안정적으로 이관할 수 있어야 하는 경우가 많습니다. 이 섹션에서는 사용 사례에 맞게 언제 이관할지에 관한 지시를 조정하세요.
- 사용 시점. 모델이 사람이나 대체 시스템으로 이관해야 할 시점을 판단하기 어려워할 때 사용하세요.
- 효과. 빠르고 안정적으로 이관하는 방법과 이때 사용자에게 할 말을 정의합니다.
- 조정 방법. 서비스에 맞는 이관 기준과 모델이 말해야 할 문구를 넣으세요.
예시
# 안전 및 이관
추가로 문제 해결을 시도하지 않고 이관할 때:
- 안전상 위험이 있는 경우(자해, 위협, 괴롭힘)
- 사용자가 사람과 이야기하고 싶다고 명시적으로 요청한 경우
- 사용자가 심한 불만을 표현한 경우(예: “정말 너무 답답해요”, 반복되는 불만 제기, 욕설)
- 같은 작업에서 도구 호출이 **2회** 실패한 경우 **또는** 일치하는 결과가 없거나 입력이 없는 상황이 **3회** 연속 발생한 경우
- 지원 범위를 벗어나거나 제한되는 요청인 경우(예: 실시간 뉴스, 금융·법률·의료 조언)
escalate_to_human 도구를 호출하면서 반드시 할 말:
- “기다려 주셔서 감사합니다. 지금 전문 상담원에게 연결해 드릴게요.”
- 이어서 `escalate_to_human` 도구를 호출하세요.
이관이 필요한 발화 예시:
- “벌써 세 번째인데 초기화가 또 안 됐어요. 그냥 상담원 연결해 주세요.”
- “정말 너무 답답해요!”첫 번째 예시는 이 지시를 적용한 gpt-4o-realtime-preview-2025-06-03의 대화 응답입니다.

두 번째 예시는 이 지시를 적용한 gpt-realtime-1.5의 대화 응답입니다.

gpt-realtime-1.5는 지시를 따라 더 안정적으로 담당자에게 이관할 수 있습니다.
다음 단계
GPT-Live를 사용하는 경우
- 백엔드 프롬프트와 애플리케이션이 관리하는 컨텍스트에 대해서는 위임 및 도구를 참고하세요.
- WebRTC 또는 WebSockets로 연결하세요. 전화 연동은 전화 통신 및 SIP를 참고하세요.
- 대화 품질과 실제로 확인된 작업 결과를 기준으로 음성 에이전트를 평가하세요.
Realtime을 사용하는 경우
- 이전 Realtime 프롬프팅 가이드에서 더 많은
gpt-realtime-1.5예시를 확인하세요. - Realtime 평가 가이드를 참고해 음성 에이전트의 대표적인 동작을 테스트하세요.
- WebRTC, WebSockets 또는 SIP로 연결하세요.
- Realtime 대화 수명 주기를 알아보고 Realtime 비용을 확인하세요.