GPT-4.1은 이전 세대인 GPT-4o에 비해 코딩, 지시사항 준수, 긴 문맥 처리 등에서 크게 향상된 모델입니다. 이 가이드는 OpenAI의 내부 테스트를 바탕으로, 개발자가 GPT-4.1의 능력을 최대한 활용할 수 있도록 프롬프트 작성법을 체계적으로 정리한 문서입니다.
아래는 시간순, 주제별로 빠짐없이 정리한 요약입니다.
중요한 대사와 인상 깊은 문구는 실제 맥락에 맞게 한글로 번역해 인용했습니다.
키워드와 중요 개념은 강조 표시, 이모지와 함께 친절하게 설명드릴게요! 😊
1. GPT-4.1의 특징 및 프롬프트 작성 기본 원칙
- GPT-4.1은 기존 모델보다 지시사항을 더 정확하고 문자 그대로 따릅니다.
- 명확하고 구체적인 프롬프트가 중요합니다.
- 프롬프트 마이그레이션이 필요할 수 있습니다. 기존 프롬프트가 잘 작동하지 않을 수 있으니, 새 모델에 맞게 조정하세요.
- 모델의 행동이 기대와 다르다면, 한 문장으로 명확하게 원하는 행동을 지시하면 거의 항상 원하는 대로 동작합니다.
"모델의 행동이 기대와 다르다면, 단 한 문장으로 확실하게 원하는 행동을 명확히 지시하세요. 거의 항상 그 한 문장만으로도 모델을 원하는 방향으로 이끌 수 있습니다."
- AI 엔지니어링은 실험적입니다.
- 평가 지표(evals)를 만들고, 자주 반복적으로 실험하세요.
2. Agentic Workflow (에이전트형 워크플로우)
2-1. 에이전트형 워크플로우란?
- GPT-4.1은 에이전트형 문제 해결에 매우 적합합니다.
- 다양한 문제 해결 경로를 학습했고, SWE-bench Verified 벤치마크에서 비추론(non-reasoning) 모델 중 최고 성능(55% 해결)을 기록했습니다.
2-2. 시스템 프롬프트에 꼭 넣어야 할 3가지 리마인더
-
Persistence (지속성)
- 모델이 여러 번의 메시지로 문제를 끝까지 해결하도록 유도합니다.
-
"당신은 에이전트입니다. 사용자의 요청이 완전히 해결될 때까지 계속 진행하세요. 문제를 확실히 해결했다고 판단될 때만 턴을 종료하세요."
-
Tool-calling (도구 사용)
- 도구를 적극적으로 사용하게 하여, 추측이나 허구의 답변을 줄입니다.
-
"사용자의 요청과 관련된 파일 내용이나 코드베이스 구조가 확실하지 않다면, 도구를 사용해 파일을 읽고 필요한 정보를 수집하세요. 절대 추측하거나 만들어내지 마세요."
-
Planning (계획 수립, 선택사항)
- 각 도구 호출 전후로 계획을 세우고 결과를 반성하게 합니다.
-
"각 함수 호출 전에 반드시 충분히 계획을 세우고, 이전 함수 호출의 결과를 충분히 반성하세요. 함수 호출만 연속적으로 하지 마세요. 그렇게 하면 문제 해결과 통찰력이 떨어질 수 있습니다."
- 이 3가지 리마인더를 프롬프트에 넣으면, 챗봇 같은 수동적 상태에서 자율적이고 적극적인 에이전트로 변신합니다.
2-3. 도구(tool) 정의 및 사용 팁
- 도구는 API의 tools 필드로 전달하세요.
- 도구 이름과 설명을 명확하게 작성하고, 복잡한 도구는 예시를 system prompt의
# Examples섹션에 넣으세요. -
"도구 사용 예시는 description 필드가 아니라, system prompt의 # Examples 섹션에 넣으세요. description은 간결하게!"
3. 프롬프트 기반 계획 유도 & Chain-of-Thought
-
GPT-4.1은 내부적으로 추론(Chain-of-Thought)을 하지 않지만, 프롬프트로 단계별 계획을 유도할 수 있습니다.
-
"프롬프트에서 계획을 명시적으로 유도하면, 모델이 '생각을 소리내어' 단계별로 문제를 해결합니다."
-
SWE-bench Verified 실험에서 명시적 계획 유도 시 통과율이 4% 증가했습니다.
4. SWE-bench Verified 예시 프롬프트
아래는 실제로 최고 점수를 기록한 에이전트 프롬프트의 일부입니다.
문제 해결 전략, 워크플로우, 각 단계별 세부 지침이 포함되어 있습니다.
"문제를 완전히 해결할 때까지 계속 반복하세요. 인터넷 연결 없이도 /testbed 폴더에 모든 것이 준비되어 있습니다. 문제를 완전히 자율적으로 해결한 후에만 저에게 돌아오세요."
"각 단계마다 충분히 계획을 세우고, 이전 함수 호출의 결과를 충분히 반성하세요. 함수 호출만 연속적으로 하지 마세요."
워크플로우 요약
- 문제 깊이 이해
- "문제를 꼼꼼히 읽고, 코딩 전에 해결 방안을 충분히 고민하세요."
- 코드베이스 조사
- 상세 계획 수립
- 코드 변경
- 디버깅
- 테스트
- 최종 검증
- 최종 반성 및 추가 테스트
"테스트를 충분히 하지 않는 것이 이 유형의 작업에서 가장 흔한 실패 원인입니다. 모든 경계 상황을 다루고, 제공된 테스트가 있다면 반드시 실행하세요."
5. 긴 문맥(Long Context) 활용
- 1M 토큰까지 입력 가능!
- 구조화된 문서 파싱, 재정렬, 관련 정보 선별, 멀티홉 추론 등에 유용합니다.
5-1. 최적의 문맥 크기
- 1M 토큰까지도 '바늘 찾기' 테스트에서 좋은 성능을 보입니다.
- 하지만, 복잡한 추론이나 많은 항목을 동시에 다뤄야 할 때는 성능 저하가 있을 수 있습니다.
5-2. 문맥 의존성 조절
- 외부 문서만 사용할지, 모델의 내재 지식도 허용할지 명확히 지시하세요.
"제공된 외부 문서만 사용해 답변하세요. 문서에 없는 정보라면, '답변에 필요한 정보가 없습니다'라고 답하세요."
"기본적으로 외부 문서를 사용하되, 추가 지식이 필요하고 확신이 있다면 모델의 지식도 활용하세요."
5-3. 프롬프트 구성 위치
- 지시사항은 문맥의 시작과 끝 모두에 넣는 것이 가장 효과적입니다.
- 한 번만 넣는다면, 문맥 위(시작 부분)에 넣는 것이 더 좋습니다.
6. Chain of Thought (단계별 사고 유도)
-
"step by step"으로 생각하게 유도하면, 문제를 더 잘 쪼개고 해결합니다.
-
"먼저, 어떤 문서가 필요한지 단계별로 신중하게 생각하세요. 그런 다음, 각 문서의 제목과 ID를 출력하고, ID를 리스트로 만드세요."
-
실패 사례를 분석해, 더 명확한 단계별 지시를 추가하세요.
예시 Reasoning Strategy
- 질문 분석
- "질문을 쪼개고, 제공된 문맥을 활용해 모호한 부분을 명확히 하세요."
- 문맥 분석
- "관련성이 높을 것 같은 문서를 최대한 많이 선별하세요. 일부가 무관해도 괜찮지만, 반드시 정답이 포함되어야 합니다."
- 각 문서별로 분석 및 관련성 평가(높음/중간/낮음/없음)
- 종합
- "중간 이상 관련성 문서를 요약하고, 이유를 설명하세요."
7. Instruction Following (지시사항 준수)
- GPT-4.1은 지시사항을 매우 정확하게 따릅니다.
- 기존 프롬프트가 잘 안 먹힐 수 있으니, 더 명확하게 원하는 바를 명시하세요.
- 암묵적 규칙은 잘 추론하지 않으니, 반드시 명시적으로 작성하세요.
권장 워크플로우
- "Response Rules" 또는 "Instructions" 섹션으로 전체 지침을 제시
- 세부 행동 변경이 필요하면, 별도 섹션 추가
- 구체적 단계가 필요하면, 순서대로 나열
- 문제가 있으면
- 충돌, 불명확, 잘못된 지시사항/예시 확인
- 예시 추가
- 대문자, 보상 등은 꼭 필요할 때만 사용
"지시사항이 충돌할 경우, GPT-4.1은 프롬프트의 끝에 가까운 지시를 더 잘 따릅니다."
8. 자주 발생하는 실패 유형
- 도구 호출을 무조건 하라고 하면, 정보가 부족할 때 빈 값으로 호출하거나 헛도는 경우가 있습니다.
-
"도구를 호출하기 전에 필요한 정보가 부족하면, 사용자에게 필요한 정보를 요청하세요."
-
- 예시 문구를 그대로 반복해 사용자가 지루하게 느낄 수 있습니다.
- 명확한 지시가 없으면, 불필요한 설명이나 과도한 포맷팅이 나올 수 있습니다.
9. 예시 프롬프트: 고객 서비스
- 다양한 규칙, 구체적 지시, 예시, 출력 포맷이 포함된 모범 사례입니다.
"안녕하세요, NewTelco 고객센터입니다. 무엇을 도와드릴까요? 😊🎉
국제 서비스 비용을 알고 싶으시군요. 🇫🇷 최신 정보를 확인해드릴게요—잠시만 기다려주세요. 🕑"
- 도구 호출 전/후 사용자에게 안내 메시지를 보내고,
- 금지 주제는 정중하게 거절하며,
- 반복되는 문구는 피하고, 이모지로 친근함을 더합니다.
10. 프롬프트 구조 및 구분자(Delimiter) 사용법
10-1. 프롬프트 구조 예시
# 역할 및 목표
# 지시사항
## 세부 지시사항
# 추론 단계
# 출력 포맷
# 예시
## 예시 1
# 문맥
# 마지막 단계별 사고 유도 지시
- 필요에 따라 섹션을 추가/삭제하며, 실험적으로 최적 구조를 찾으세요.
10-2. 구분자(Delimiter) 선택 가이드
- Markdown
- 제목, 코드블록, 리스트 등 적극 활용
- XML
- 구조화, 메타데이터, 중첩에 유리
<examples> <example1 type="Abbreviate"> <input>San Francisco</input> <output>- SF</output> </example1> </examples> - JSON
- 코딩 맥락에선 좋지만, 장문 문서에는 비효율적
- 긴 문서/파일 다수 입력 시: XML, 혹은
ID: 1 | TITLE: The Fox | CONTENT: ...
형식이 효과적입니다.
11. 주의사항(Caveats)
- 매우 긴, 반복적인 출력을 모델이 꺼릴 수 있습니다.
-
"이 정보를 반드시 모두 출력하라고 강하게 지시하거나, 문제를 쪼개서 요청하세요."
-
- 병렬 도구 호출이 잘못될 수 있으니, 문제가 있으면
parallel_tool_calls를 false로 설정하세요.
12. 파일 Diff 생성 및 적용 (코딩 작업용)
- 정확하고 잘 구성된 diff 생성은 코딩 작업에서 매우 중요합니다.
- OpenAI가 추천하는 diff 포맷을 공개했으며,
- 줄 번호 대신, 변경 전후 코드와 명확한 구분자를 사용합니다.
예시: apply_patch 도구 설명
"apply_patch는 diff/patch를 파일에 적용하는 유틸리티입니다.
*** Update File: 파일경로
@@ 클래스/함수
기존코드
- 변경코드
(줄 번호 대신, 변경 전후 코드와 3줄 컨텍스트, @@로 위치 지정)"
다른 효과적인 diff 포맷
- SEARCH/REPLACE
path/to/file.py >>>>>>> SEARCH def search(): pass ======= def search(): raise NotImplementedError() <<<<<<< REPLACE - Pseudo-XML
<edit> <file>path/to/file.py</file> <old_code>def search(): pass</old_code> <new_code>def search(): raise NotImplementedError()</new_code> </edit>
13. 마무리 및 실전 팁
- 프롬프트는 실험적으로 최적화하세요.
- 명확하고 구체적인 지시, 단계별 사고 유도, 도구 사용, 출력 포맷, 예시를 적극 활용하세요.
- 실패 사례를 분석해, 프롬프트를 계속 개선하세요.
- 긴 문맥, 다양한 구분자, 도구 활용 등 GPT-4.1의 강점을 최대한 살리세요!
💡 한 줄 요약
"GPT-4.1은 명확하고 구체적인 프롬프트, 단계별 사고 유도, 도구 활용, 그리고 반복적 실험을 통해 최고의 성능을 발휘합니다!"
궁금한 점이 있으면 언제든 질문해 주세요! 😊