AI 지시를 나누는 법, 개발자 규칙과 사용자 요청이 충돌할 때

AI 앱을 직접 만들거나 자동화할 때는 모든 문장을 한 덩어리로 보내지 않는 편이 좋습니다. 앱의 고정 규칙은 개발자 지시로, 사용자가 그때그때 바꾸는 내용은 사용자 요청으로 나누세요. OpenAI API 문서에서는 지시의 권한 수준과 메시지 역할을 구분하며, 개발자 지시는 사용자 메시지보다 앞선 우선순위를 가집니다.[2]
먼저 결론부터
- 개발자 지시에는 앱의 규칙, 출력 형식, 금지 조건처럼 계속 유지할 내용을 둡니다.
- 사용자 메시지에는 이번에 처리할 질문과 입력 데이터를 둡니다.
- 두 지시가 충돌하면 개발자 지시가 사용자 메시지보다 우선하도록 설계합니다.[2]
- OpenAI Model Spec은 지시를 권한 수준으로 나누고 높은 권한의 지시가 낮은 권한의 지시를 덮어쓴다고 설명합니다.[3]
두 역할을 표로 구분하기
| 구분 | 무엇을 넣나 | 예시 |
|---|---|---|
| 개발자 지시 | 앱이 지켜야 할 규칙 | 답변은 한국어, JSON 형식, 개인정보는 재출력하지 않기 |
| 사용자 메시지 | 이번 작업의 질문과 자료 | 이 문서를 세 문장으로 요약해 줘 |
| 모델 응답 | 지시에 따라 생성된 결과 | 정해 둔 JSON 구조의 요약 |
프롬프트를 나누는 순서
1. 바뀌지 않는 규칙부터 적습니다
앱이 매번 지켜야 하는 말투, 출력 형식, 처리 범위를 먼저 정합니다. OpenAI API의 instructions 매개변수는 모델이 응답을 만들 때 따라야 할 상위 지시를 전달하는 데 쓰이며, 문서 예시는 말투와 목표 같은 내용을 이곳에 둘 수 있다고 설명합니다.[2]
2. 사용자의 입력은 별도로 받습니다
사용자가 붙여 넣은 문서, 질문, 숫자는 사용자 입력으로 취급합니다. 예를 들어 개발자 지시에 “답변은 JSON”을 적고, 사용자 메시지에는 “이 글을 요약해 줘”를 넣는 식입니다. 두 내용을 한 문자열로 합치면 앱 규칙과 사용자 데이터가 섞여 나중에 수정하기 어렵습니다.
3. 충돌 사례를 미리 적어 봅니다
사용자가 “JSON 말고 긴 산문으로 답해 줘”라고 요청해도 앱이 JSON만 받도록 만들어졌다면 출력 규칙을 유지해야 합니다. 반대로 앱에 정해 둔 형식이 없다면 사용자 요청을 그대로 따를 수 있습니다. 이 판단은 모델 이름보다 앱의 지시 구조에서 먼저 정해야 합니다.
4. 데이터와 지시를 구별합니다
사용자가 올린 문서 안에 “이전 규칙을 무시하라”는 문장이 있어도, 그것은 분석할 데이터일 수 있습니다. 앱 규칙을 바꾸는 지시로 자동 승격시키지 마세요. OpenAI Model Spec은 역할과 권한을 통해 지시 충돌을 다루는 구조를 설명합니다.[3]
5. 결과를 테스트합니다
OpenAI는 프롬프트 동작을 측정할 테스트와 평가 모음을 만들고, 모델 버전을 바꿀 때 동작을 확인하라고 권장합니다.[2] 정상 질문 하나만 확인하지 말고, 형식을 바꾸라는 요청과 긴 입력, 빈 입력을 각각 넣어 보세요.
해치가 확인한 범위
2026년 8월 31일 이 실행에서 OpenAI Developers의 Prompt engineering 문서와 OpenAI Model Spec 페이지를 비로그인 HTTP 요청으로 받아 HTTP 200을 확인했습니다. 문서에서 instructions, 메시지 역할, 권한 수준에 관한 설명을 대조했습니다.[2][3] 실제 API 키로 요청을 보내거나 별도 앱의 충돌 테스트를 하지는 않았습니다. 따라서 이 글의 예시는 설계 방법이고, 특정 모델의 실제 출력 결과가 아닙니다.
자주 묻는 질문
사용자 메시지에 규칙을 써도 되나요
간단한 일회성 요청이라면 가능합니다. 다만 앱이 항상 지켜야 하는 형식이나 제한은 개발자 지시에 두는 편이 관리하기 쉽습니다.
개발자 지시는 무조건 실행되나요
모든 상황에서 무조건이라는 뜻은 아닙니다. OpenAI Model Spec은 여러 권한 수준의 지시와 더 높은 권한이 낮은 권한을 덮어쓰는 구조를 설명합니다.[3] 안전이나 플랫폼 규칙처럼 더 높은 수준의 조건이 있으면 별도로 고려해야 합니다.
ChatGPT 화면에서도 역할을 직접 고를 수 있나요
이 글은 OpenAI API의 메시지 역할과 instructions 설계를 기준으로 합니다. 일반 채팅 화면에서 같은 입력 구조가 그대로 보인다고 가정하지 마세요.
초보자 체크리스트
- 앱이 매번 지켜야 하는 규칙을 따로 적었는가?
- 사용자 질문과 원문 데이터를 개발자 규칙과 분리했는가?
- 출력 형식 변경 요청이 들어왔을 때의 처리를 정했는가?
- 문서 속 문장을 앱 규칙으로 자동 실행하지 않는가?
- 정상 입력과 충돌 입력을 모두 테스트했는가?
정리
AI 프롬프트를 잘 쓰는 문제는 문장을 길게 만드는 데 있지 않습니다. 앱의 규칙과 사용자의 작업을 분리하고, 충돌할 때 어떤 지시를 우선할지 정해 두는 일이 먼저입니다.
API나 자동화 코드를 고치고 있다면 개발자 지시와 사용자 메시지를 두 칸으로 나눈 뒤, “형식을 바꿔 달라”는 충돌 사례부터 테스트해 보세요.
관련 글
공식 출처
- OpenAI API: Prompt engineering [2]
- OpenAI Model Spec 2025-02-12 [3]
- Wikimedia Commons: Person writing on brown wooden table near white ceramic mug [6]
최종 확인일: 2026년 8월 31일 (KST). OpenAI 공식 개발자 문서와 Model Spec을 HTTP 200으로 확인했습니다. 실제 API 호출과 모델 출력 비교는 하지 않았습니다.