For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
기본 탐색 메뉴
Theme

GPT-6 사용 가이드

모델 선택, 프롬프트 작성 및 GPT-5.6에서 마이그레이션하는 방법

  • GPT-6 Astra

    가장 뛰어난 지능

    난도가 가장 높은 추론, 코딩, 전문 업무에 적합합니다.

  • GPT-6.1 Sol

    속도, 비용, 지능의 균형

    복잡한 작업에서 더 낮은 비용으로 Astra에 가까운 성능을 제공합니다.

  • GPT-6.1 Terra

    빠른 속도와 높은 효율

    시각적 추론, 정밀한 컴퓨터 사용, 명확하고 자연스러운 글쓰기에 적합합니다.

  • GPT-6 Luna

    가장 빠른 속도와 최고의 비용 효율

    범위가 명확한 작업을 대량으로 처리할 때 뛰어난 성능을 발휘합니다.

먼저 model 값을 Responses API 요청에 지정하세요. 이미 gpt-6-sol을 사용 중이라면 GPT-6.1 Sol로 전환하기 전에 마이그레이션 지침을 확인하세요.

GPT-6 Astra

GPT-6 Astra는 지금까지 OpenAI가 출시한 모델 중 지능이 가장 뛰어납니다. 컴퓨터 사용, 웹 탐색, 소프트웨어 엔지니어링, 과학 및 전문 업무에서 최고 수준의 성능을 발휘합니다. 코드, 브라우저, 전문 소프트웨어를 오가며 여러 단계로 이루어진 워크플로우를 수행할 수 있습니다. 여러 평가에서 Astra는 훨씬 적은 출력 토큰으로 더 좋은 결과를 냈습니다. 토큰당 가격은 더 높지만 작업당 예상 API 비용은 이전 모델보다 낮았습니다.

GPT-6 Astra는 사용자 의도에 맞게 행동하는 능력도 역대 OpenAI 모델 중 가장 뛰어납니다. 신중하게 판단하고 작업 범위를 지키며 진행 상황을 투명하게 전달합니다. 지시를 여러 방식으로 해석할 수 있을 때는 주어진 컨텍스트를 바탕으로 사소한 세부 사항을 스스로 판단하고, 답에 따라 결과가 달라질 수 있을 때는 필요한 부분을 구체적으로 질문합니다. 새로운 요구사항을 반영하고 요청에 따라 방향을 바꾸며, 전체 작업의 흐름을 놓치지 않고 부수적인 질문에도 답합니다.

모든 GPT-6 Astra 사용자는 패스트 모드와 새로 도입된 울트라패스트 모드를 이용해 API에서 제공하는 가장 빠른 속도로 응답을 받을 수 있습니다.

GPT-6.1 Sol

GPT-6.1 Sol은 복잡한 코딩, 컴퓨터 사용, 전문 업무에서 더 낮은 비용으로 Astra에 가까운 성능을 제공합니다. 지원하는 추론 강도는 low, medium(기본값), high, xhigh, max입니다.

사양과 요금은 모델 페이지를 참고하세요.

GPT-6.1 Terra

GPT-6.1 Terra는 시각적 추론, 정밀한 컴퓨터 사용, 명확하고 자연스러운 글쓰기에 적합한 빠르고 효율적인 모델입니다. 제품 사진에 해당하는 카탈로그 항목을 찾거나, 기술 도면을 비교하거나, 애플리케이션 화면을 조작하거나, 글의 초안을 작성하고 다듬는 데 활용하세요.

지원하는 추론 강도는 none, low, medium(기본값), high, xhigh, max입니다. medium부터 시작하고, 시간과 토큰을 더 쓸 만큼 품질이 향상된다면 추론 강도를 높이세요.

GPT-5.6 Terra에서 마이그레이션할 때는 대표적인 이미지와 워크플로우를 사용해 동일한 추론 강도에서 두 모델을 비교하세요. 애플리케이션이 Chat Completions에서 도구를 호출한다면 해당 요청을 Responses API로 마이그레이션하세요.

사양과 요금은 모델 페이지를, 시각적 분석 방법은 이미지 입력을, 화면 조작 방법은 컴퓨터 사용을 참고하세요.

새로운 기능

  • 비동기 도구 호출: 애플리케이션이 도구를 실행하는 동안 GPT-6는 추론을 계속하거나, 다른 도구를 호출하거나, 요청에서 독립적으로 처리할 수 있는 부분에 답할 수 있습니다. 함수 또는 커스텀 도구에 async: true를 설정하고 결과가 준비되면 원래의 call_id를 사용해 반환하세요. 도구 실행과 대기 중인 작업 관리는 계속 애플리케이션이 담당합니다. 기본 사용법과 개발자가 대기 도구를 직접 정의하는 패턴은 비동기 도구 호출을 참고하세요.
  • 턴 진행 중 지시 추가: GPT-6가 작업하는 도중에 정정 사항이나 요구사항 변경 등 사용자의 추가 지시를 보내세요. WebSocket으로 연결하면 Responses API가 이미 완료한 작업을 보존하고 이어지는 작업에 새 지시를 반영합니다. 이벤트 플로우와 도구 결과 처리 방법은 턴 진행 중 지시 추가를 참고하세요.
  • 캐시를 유지하면서 대화 중 추론 강도 변경: configuration_update 입력 항목을 추가하면 원래 프롬프트 접두부를 다시 작성하지 않고도 어려운 작업에서는 추론 강도를 높이고 일상적인 후속 요청에서는 낮출 수 있습니다. 변경한 추론 강도는 다른 configuration_update 입력 항목으로 재설정할 때까지 적용됩니다. 예시와 호환성 정보는 대화 중 추론 강도 변경을 참고하세요.
  • 정렬 불일치 모니터링: GPT-6 Astra에 적용한 강화된 보호 조치의 일환으로, OpenAI 시스템은 모델의 행동이 의도한 목표에서 벗어나는지 비동기적으로 모니터링하고 필요할 때 경보를 보냅니다. 자세한 내용은 정렬 불일치 모니터링을 참고하세요.

GPT-6는 GPT-5.6에서 제공하던 기존 API 기능도 지원합니다. 여기에는 컴퓨터 사용, 구조화된 출력값, 스트리밍, 프로그래밍 방식의 도구 호출, 다중 에이전트 오케스트레이션, 프롬프트 캐싱, 호출 간 추론 유지, 컨텍스트 압축, 프로 모드가 포함됩니다.

제한 사항

  • GPT-6 Astra와 GPT-6.1 Sol은 none 추론 강도를 지원하지 않습니다. GPT-6.1 Terra, GPT-6 Sol, GPT-6 Luna는 지원합니다.
  • 패스트 모드는 GPT-6.1 Sol, GPT-6.1 Terra, GPT-6 Luna에서 EU 데이터 레지던시를 지원하지만 GPT-6 Astra와 GPT-6 Sol에서는 지원하지 않습니다. GPT-6.1 Sol의 울트라패스트 모드는 미국 및 EU 데이터 레지던시와 글로벌 처리를 지원합니다. GPT-6 Astra의 울트라패스트 모드는 미국 데이터 레지던시와 글로벌 처리만 지원합니다. 데이터 레지던시 지원 대상을 확인하세요.

프롬프트 작성 권장 사항

다음 예시를 바탕으로 GPT-6 모델 제품군에 사용할 프롬프트를 작성하세요. GPT-6 Astra에서 관찰된 동작을 바탕으로 작성한 예시이므로, 선택한 모델과 실제 워크로드에서 효과를 평가하세요.

GPT-6 Astra의 동작 특성

  • 주도적으로 작업을 끝까지 수행하기: 모델은 사용자와 더 효과적으로 협업하도록 설계되었습니다. 따라서 추가 정보에 따라 결과가 크게 달라질 수 있으면 사용자에게 질문하는 경향이 더 강합니다. 사용자가 합리적인 가정하에 작업을 계속하기를 기대하는 상황에서도 모델이 답을 기다리며 멈출 수 있습니다.
  • 지시 따르기: GPT-6 Astra는 이전 모델보다 전반적으로 지시를 잘 따르므로 모델의 동작을 더 세밀하게 제어할 수 있습니다. 스킬이나 AGENTS.md 같은 파일에 포함된 지시에도 더 민감하게 반응할 수 있습니다. 모델이 접근할 수 있는 스킬과 기타 파일을 검토해 동작에 영향을 줄 수 있는 지시가 있는지 확인할 것을 강력히 권장합니다.
  • 성격과 문체: 모델은 서식을 활용해 상세하게 답하는 경향이 있고, 여러 세션에서 같은 표현을 반복할 수 있습니다. 애플리케이션에 필요한 문체와 응답 구조를 명시하세요.
  • 하위 에이전트에 작업 위임하기: 모델이 워크플로우에 필요한 만큼 자주 작업을 위임하지 않을 수 있습니다. 병렬 작업에 하위 에이전트를 언제, 어느 정도 활용할지 명시하세요.
  • 테스트 및 검증: 코딩 작업에서는 모델이 작업을 완료했다고 판단하기 전에 꼼꼼히 테스트하는 경향이 있습니다. 작은 작업에서는 필요한 범위를 넘어 테스트할 수 있습니다.

주도적으로 작업을 끝까지 수행하기

GPT-6 Astra는 대체로 GPT-5.6 Sol과 이전 모델보다 장시간 작업에서도 일관된 흐름을 더 잘 유지합니다. 이전 모델이라면 가정을 세웠을 상황에서 설명을 요청하는 경향도 더 강합니다.

모델이 더 자율적으로 작업하도록 하려면 다음 프롬프트부터 사용하세요.

지시와 이전 대화의 맥락을 바탕으로 사용자의 의도와 작업 범위를 파악하세요. 실행을 우선하고 사용자가 의도한 작업을 끝까지 수행하세요.

사용자가 새 작업을 하거나 기존 문제를 해결하고 싶다는 뜻을 밝히면 그 목표를 달성할 때까지 작업을 계속하세요. 필요한 경우 별도의 작업 트리나 체크아웃을 만들거나, 병합 충돌을 해결하거나, 읽기 전용 작업을 수행하거나, 초안 PR을 만드는 등 목표 달성에 필요한 일을 자율적으로 진행하세요. 단, 명백히 파괴적이거나 되돌릴 수 없는 조치는 자율적으로 실행하지 마세요.

사용자 의도가 불분명하면 모델은 작업을 진행하기 전에 사용자에게 설명을 요청하는 경향이 더 강합니다. 사용자 프롬프트에 작업 수행을 허용한다는 뜻이 담겨 있다면 모델이 작업을 끝까지 진행하도록 지시하세요.

사용자가 “~해 줄 수 있나요?”, “~하고 싶어요”, “~하도록 도와주세요”처럼 행동을 요청하는 표현을 쓰면 해당 작업을 수행하라는 지시로 받아들이고 실행하세요. “네, 할 수 있습니다”라고 답하거나, 계획을 제시하거나, 원하면 계속하겠다고 말하는 데서 멈추지 마세요. 시간이나 노력, 토큰을 아끼려고 요청을 일부만 해결하거나 “이 정도면 도움이 되겠지”라고 판단해 작업을 끝내지 마세요. 시간이 걸리는 작업이라도 사용자가 의도한 결과를 얻을 때까지 필요한 일을 모두 수행하세요.

구체적으로 검토할 수 있는 결과를 준비한 뒤에만 승인을 요청하도록 모델에 지시하세요. 그러면 모델이 수행할 수 있는 일까지 미리 중단하는 상황을 방지할 수 있고, 작업을 더 빨리 마치는 경우가 많습니다.

사용자에게 확인 질문을 하기 전에, 제안한 조치를 구체화해 검토할 수 있도록 준비하는 데 필요한 일 중 대화 맥락상 이미 승인된 일은 먼저 마치세요. 사용자가 구체적인 결과를 검토한 뒤 승인할 수 있어야 합니다. 예를 들어 변경 사항을 배포하거나, 외부 애플리케이션에 데이터를 쓰거나, PR을 병합하거나, 사이트를 게시하려면 필요한 준비를 모두 마쳐 사용자 승인만 마지막 단계로 남겨 두세요. 되돌릴 수 있는 작업, 읽기 전용 작업, 검토나 수정에는 사용자 허가를 받을 필요가 없습니다. 같은 세션에서 이미 허가받았거나 작업 지시에서 허가 의사를 분명히 읽을 수 있는 작업도 마찬가지입니다.

가상의 위험을 이유로 사용자가 요청하지 않은 경고, 면책 문구, 승인 절차, 안전 또는 규정 준수 체크리스트를 추가하지 마세요.

기본적으로 모델은 답을 기다리지 않고 작업을 계속할 수 있는 경우에도 질문하는 경향이 있습니다. 애플리케이션에 필요한 자율성 수준에 맞게 위 프롬프트를 조정하세요.

지시 따르기

GPT-6 Astra는 긴 지시를 더 잘 따르지만 컨텍스트에 포함된 정보에 더 민감하게 반응할 수도 있습니다. 예를 들어 스킬 파일에 모호하거나 상충하는 지침이 있으면 모델이 작업 초반에 멈춰 진행이 막힐 수 있습니다. 사용자 지시와 스킬 지침 중 무엇이 우선하는지 명시하세요.

사용자의 지시는 스킬에서 제공하는 지침보다 우선합니다. 사용자가 명시한 지시와 스킬의 지시가 충돌하면 사용자의 지시를 따르세요.

작업을 멈추거나 방향을 바꾸게 된 원인이 어떤 스킬의 어떤 지시였는지 밝히도록 요청하면 모델의 동작을 더 투명하게 파악할 수 있습니다.

스킬 때문에 허가나 확인을 요청하거나, 작업을 일시 중지하거나, 요청받은 일을 끝마치지 못하거나, 사용자의 의도에서 벗어나게 된다면 실제로 읽은 SKILL.md 파일의 이름과 해당 파일로 연결되는 링크를 제시하세요. 관련 지시를 인용하고 그 지시가 현재 상황에 어떻게 적용되는지 간략히 설명하세요. 스킬에 명시된 요구사항과 지침에 대한 자신의 해석을 구분하세요.

애플리케이션이 여러 스킬과 AGENTS.md 같은 지시 파일을 불러올 때 이 프롬프트를 사용하면 모델이 드러내지 않고 따르던 지침이나 서로 상충하는 지침을 찾을 수 있습니다.

성격과 문체

GPT-6 Astra는 응답을 한눈에 파악하기 쉽도록 목록, 표, Markdown을 자주 사용합니다. 애플리케이션에 서식을 줄인 문단형 응답이 필요하다면 원하는 형식을 명시하세요.

기본적으로 문단마다 한 가지 핵심 내용을 명확하고 간결하게 설명하세요. 성격이 같은 항목을 나열하거나 순서를 보여 줄 때, 또는 목록으로 쓰면 항목을 비교하기가 더 쉬울 때만 목록을 사용하세요. 문장만으로 위계를 명확히 표현하기 어려운 경우에만 중첩 목록을 사용하세요. 익숙한 단어와 구체적인 예시, 뜻이 분명한 동사를 사용해 쉽게 쓰세요. 능동형 문장으로 말하려는 바를 직접 전달하세요.

핵심을 글 앞부분에서 분명히 밝힌 다음 독자에게 필요한 설명과 세부 내용을 덧붙이세요. 각 문장이 앞 문장의 내용을 자연스럽게 이어가도록 쓰세요. 중요한 내용은 충분히 설명하고 독자에게 도움이 될 만큼 근거를 제시하세요.

기술적인 내용을 전달할 때는 다음 프롬프트를 사용하면 해당 분야에 적합한 표현을 쓰면서도 명확하고 일관되게 설명하는 데 도움이 됩니다.

전문 용어보다 쉬운 말을 쓰고, 기술적인 세부 사항은 사용자가 개념이나 작업 내용을 이해하는 데 도움이 되는 만큼만 언급하세요. 복잡한 개념도 내용 간의 관계가 분명하게 드러나도록 설명하세요. 사용자의 프롬프트와 대화 맥락에서 짐작할 수 있는 배경지식에 맞춰 설명 수준을 조정하세요.

전문 용어와 상투적인 표현을 줄이려면 다음 프롬프트부터 사용하세요.

결론에서 “결론부터 말하면”이라고 쓰거나 “깊이 파고들다”, “함양하다”, “적극 활용하다”, “주목할 만한 점은”, “중요한 점은”, “질문은? 답은 이렇습니다”, “이건 X에 관한 이야기가 아닙니다. Y에 관한 이야기입니다”, “진정으로” 같은 상투적인 표현을 쓰지 마세요. 여러 단어를 하이픈으로 이어 붙인 설명이나 형용사도 피하세요. “요컨대…”, “이를 이해하는 가장 간단한 사고 모형은…” 같은 요약 문장으로 글을 맺지 마세요.

하려는 일을 직접 말하세요. 하지 않을 일, 그대로 둘 사항, 결과를 나누거나 분류할 방법을 덧붙이지 마세요. “Y가 아니라 X”처럼 사용자가 묻지도 않은 대안을 끌어들여 대비하지 마세요. “정확한-헤드 검사”, “편집용-행 레이아웃”처럼 단어를 억지로 조합해 이름을 붙이지 마세요. 뜻이 모호한 수식어나 틀에 박힌 연결 표현도 피하세요. 쉬운 동사와 조사로 대상 간의 실제 관계를 직접 설명하세요.

하위 에이전트에 작업 위임하기

GPT-6 Astra는 작업을 나누어 여러 하위 에이전트에 위임하고 병렬로 진행하도록 학습되었습니다. 하네스에 다중 에이전트 시스템을 구현한다면 다음 프롬프트로 GPT-6 Astra가 작업을 얼마나 위임할지 조정하세요.

루트 에이전트인지 하위 에이전트인지에 관계없이, 작업 중 어느 단계에서든 다른 에이전트에 일을 맡겨 병렬로 진행할 수 있고 그렇게 하면 시간을 절약하거나 품질을 높일 수 있다면 협업 도구를 사용해 작업을 위임하세요.

에이전트 간 메시지에 문법이나 띄어쓰기 오류가 있을 수 있습니다. 메시지를 더 쉽게 읽을 수 있도록 다음 프롬프트를 사용하세요.

다른 에이전트에게 보내는 메시지와 최종 답변은 사람이 읽을 수 있으므로 읽기 쉽게 작성하세요. 단어나 숫자 사이의 띄어쓰기를 항상 지키세요.

모델은 하위 에이전트에 언제, 어떻게 작업을 위임할지 프롬프트에 명시하면 잘 따르는 편입니다. 하네스와 다중 에이전트 시스템의 구현 방식에 맞게 위임 방식을 조정하세요.

테스트 및 검증

코딩 작업에서는 변경 사항에 맞게 테스트와 검증 범위를 조정하세요. 이렇게 하면 작은 변경 사항에 불필요한 테스트를 추가하거나 같은 검사를 반복하는 일을 줄일 수 있습니다.

되돌릴 수 있고 영향이 작은 변경 사항에 대해서는 구현 내용을 그대로 되풀이하는 테스트를 작성하지 마세요. 테스트로 작업을 검증하기로 했다면 각 테스트가 구현의 정확성을 판단하는 데 도움이 되는지, 실제로 필요한지 확인하세요.

변경 사항에 맞는 테스트를 실행하고 필수 검사를 마치세요. 모두 통과한 뒤에는 새로운 변경 사항이나 테스트 실패, 아직 해소되지 않은 우려로 인해 필요한 경우에만 테스트 범위를 넓히거나 테스트를 반복하세요. 그 외에는 작업을 마무리하는 데 필요한 다음 단계로 진행하세요.

마이그레이션 빠른 시작

Codex로 마이그레이션하기

Codex는 OpenAI Docs 스킬을 사용해 이 가이드에서 권장하는 변경 사항을 적용할 수 있습니다.

$openai-docs 이 프로젝트를 GPT-6 모델 제품군으로 마이그레이션해 주세요.

다른 코딩 에이전트에서 이 스킬을 사용하려면 Codex 리포지터리에서 다운로드하세요.

API 및 모델 매개변수 업데이트하기

model을 gpt-6-astra, gpt-6.1-sol, gpt-6.1-terra 또는 gpt-6-luna로 설정한 뒤 다음 사항을 확인하세요.

  • 추론 강도: 새 모델에서 지원한다면 현재 실제로 적용되는 추론 강도를 유지하세요. GPT-6 Astra와 GPT-6.1 Sol은 none을 지원하지 않으므로 low를 사용하세요. GPT-6.1 Terra, GPT-6 Sol, GPT-6 Luna는 none을 지원합니다. 기존 요청에서 minimal을 사용한다면 low부터 시작해 대표적인 작업에서 결과를 비교하세요. Responses에서는 reasoning.effort를, Chat Completions에서는 reasoning_effort를 사용하세요.
  • 도구 호출: Responses API를 사용하세요. GPT-6 Astra, GPT-6.1 Sol, GPT-6.1 Terra는 Chat Completions를 지원하지만 도구를 호출하려면 Responses가 필요합니다. GPT-6 Sol과 GPT-6 Luna는 reasoning_effort: "none"으로 설정한 경우에만 Chat Completions에서 함수 호출을 지원합니다. 추론과 도구 사용을 병행하려면 Responses를 사용하세요.
  • 지원하지 않는 매개변수: 추론 강도가 none이 아니면 temperature, top_p, top_logprobs를 제거하세요. Chat Completions에서는 logprobs도 제거하세요. Responses에서는 message.output_text.logprobs를 include에서 제거하세요.
  • 데이터 레지던시: 패스트 모드는 GPT-6.1 Sol, GPT-6.1 Terra, GPT-6 Luna에서 EU 데이터 레지던시를 지원하지만 GPT-6 Astra와 GPT-6 Sol에서는 지원하지 않습니다. GPT-6.1 Sol의 울트라패스트 모드는 미국 및 EU 데이터 레지던시와 글로벌 처리를 지원합니다. GPT-6 Astra의 울트라패스트 모드는 미국 데이터 레지던시와 글로벌 처리만 지원합니다. GPT-6 Astra의 패스트 모드에는 지연 시간 SLA가 포함되지 않습니다. 패스트 모드 호환성을 참고하세요.
  • 추론 강도 변경: 애플리케이션이 응답 사이에 추론 강도를 변경한다면 표준 단일 에이전트 요청에서 configuration_update 항목을 사용하세요. 프롬프트 접두부를 캐싱할 수 있도록 요청 수준의 reasoning.effort는 그대로 유지하세요. 이 기능을 도입하기 전에 호환성 제한 사항을 확인하세요.
  • 프롬프트 캐싱: GPT-5.5 또는 이전 모델에서 마이그레이션할 때는 prompt_cache_retention을 prompt_cache_options.ttl로 교체하고 값을 "30m"으로 설정하세요. 캐시 경계와 캐시 쓰기 요금 등 프롬프트 캐싱 변경 사항을 확인하세요.
  • 불필요한 승인 대기: 모델이 작업을 진행하기 전에 계속 승인을 요청한다면 주도적으로 작업을 끝까지 수행하기의 지침에 따라 모델이 더 자율적으로 작업하도록 프롬프트를 작성하세요. 지시 따르기, 문체, 하위 에이전트에 작업 위임하기, 테스트에 관한 지침은 프롬프트 작성 권장 사항의 나머지 내용을 참고하세요.

이전 모델

GPT-5.1 사용하기

GPT-5.1의 권장 사용법, 주요 기능, 마이그레이션 방법을 알아보세요.

소개

GPT-5.1은 다양한 에이전트 작업과 코딩 작업에서 문제 해결 능력과 속도가 균형을 이루도록 설계되었습니다. 응답 지연 시간을 줄이는 새로운 none 추론 모드도 제공합니다. GPT-5의 강점을 이어받은 GPT-5.1은 프롬프트 난이도에 맞춰 추론량을 더 잘 조절합니다. 간단한 입력에는 훨씬 적은 토큰을 사용하고 어려운 입력도 더 효율적으로 처리합니다. 모델의 성격, 어조, 출력 형식도 더 쉽게 조정할 수 있습니다.

GPT-5.1은 대부분의 애플리케이션에서 별도 조정 없이도 잘 작동합니다. 이 가이드에서는 실제 배포 환경에서 성능을 최대한 끌어내는 프롬프트 패턴을 다룹니다. 이러한 기법은 광범위한 내부 테스트와 프로덕션용 에이전트를 구축하는 파트너들과의 협업에서 얻었습니다. 프롬프트를 조금만 바꿔도 신뢰성과 사용자 경험이 크게 개선되는 경우가 많았습니다. 이 가이드를 출발점으로 삼으세요. 사용하는 도구와 워크플로우에 맞게 패턴을 조정하고 프롬프트를 반복해서 다듬을 때 가장 좋은 결과를 얻을 수 있습니다.

새로운 기능

  • 응답 지연 시간을 줄이는 새로운 none 추론 모드
  • 간단한 입력부터 어려운 입력까지 난이도에 맞춘 추론 토큰 사용
  • 더 쉽게 조정할 수 있는 성격, 어조, 출력 형식
  • 코딩 에이전트를 위한 패치 적용 및 셸 도구 사용 지침

마이그레이션 빠른 시작

GPT-4.1을 사용 중이라면 추론이 필요 없고 응답 지연 시간이 짧아야 하는 대부분의 작업에 GPT-5.1의 none 추론 설정이 적합합니다.

GPT-5에서 전환한 고객들은 다음 지침을 따랐을 때 좋은 결과를 얻었습니다.

  1. 작업을 끝까지 수행하기: GPT-5.1은 추론 토큰 사용량을 더 잘 조절하지만, 때로는 답변을 지나치게 줄여 필요한 내용을 빠뜨릴 수 있습니다. 프롬프트에서 작업을 끝까지 수행하고 답변에 필요한 내용을 모두 포함하도록 강조하면 도움이 됩니다.
  2. 출력 형식과 상세도: GPT-5.1은 전반적으로 더 상세하게 답변하며, 때로는 답변이 장황해질 수 있습니다. 원하는 상세도를 지침에 명시하세요.
  3. 코딩 에이전트: 코딩 에이전트를 개발 중이라면 기존 apply_patch 도구를 OpenAI가 해당 이름으로 제공하는 새 구현으로 전환하세요.
  4. 지침 준수: 그 밖의 동작 문제가 있다면 지침이 서로 충돌하는지 확인하고 원하는 동작을 명확히 설명하세요. GPT-5.1은 지침을 잘 따르므로 이렇게 하면 동작을 상당히 조정할 수 있습니다.

GPT-5.1-Codex도 출시되었습니다. 이 모델은 GPT-5.1과 다르게 동작합니다. 자세한 내용은 Codex 프롬프팅 가이드를 참고하세요. API에서 후속 Codex 모델을 사용하는 방법은 GPT-5.3 Codex 사용하기를 참고하세요.

모델, API 및 기능 업데이트

  • gpt-5.1은 Responses API와 Chat Completions API에서 사용할 수 있습니다.
  • reasoning.effort는 none(기본값), low, medium, high를 지원합니다.
  • 모델은 함수 호출과 OpenAI 호스팅 도구를 지원합니다. 웹 검색, 파일 검색, 이미지 생성, 코드 인터프리터, 패치 적용 도구 등이 포함됩니다.
  • GPT-5.1-Codex 베리언트는 에이전트 기반 코딩 워크플로우에 맞춰 별도로 최적화되었습니다.

프롬프팅 권장 사항

에이전트 동작 조정

GPT-5.1은 지침에 따라 동작을 세밀하게 조정할 수 있는 모델입니다. 에이전트의 행동과 성격은 물론 사용자에게 메시지를 보내는 빈도까지 제어할 수 있습니다.

에이전트의 성격 설정하기

GPT-5.1의 성격과 응답 스타일을 사용 사례에 맞게 조정할 수 있습니다. 전용 verbosity 매개변수로 답변의 상세도를 제어하고, 프롬프트로 전반적인 문체와 어조, 대화의 호흡을 조정할 수 있습니다.

에이전트의 페르소나를 명확히 정의하면 원하는 성격과 문체가 가장 잘 드러납니다. 다양한 상황에서 사용자의 감정을 읽고 대응해야 하는 고객 대면 에이전트에는 특히 중요합니다. 예를 들어 대화 흐름에 맞춰 말투와 답변 길이를 조절하고, “알겠습니다”나 “감사합니다” 같은 표현을 남발하지 않도록 할 수 있습니다.

다음 예시 프롬프트는 고객 지원 에이전트가 문제를 해결할 때 명확하고 직접적으로 말하면서도 따뜻한 태도를 유지하도록 성격을 설정한 사례입니다.

<final_answer_formatting>
You value clarity, momentum, and respect measured by usefulness rather than pleasantries. Your default instinct is to keep conversations crisp and purpose-driven, trimming anything that doesn't move the work forward. You're not cold—you're simply economy-minded with language, and you trust users enough not to wrap every message in padding.

- Adaptive politeness:
  - When a user is warm, detailed, considerate or says 'thank you', you offer a single, succinct acknowledgment—a small nod to their tone with acknowledgement or receipt tokens like 'Got it', 'I understand', 'You're welcome'—then shift immediately back to productive action. Don't be cheesy about it though, or overly supportive.
  - When stakes are high (deadlines, compliance issues, urgent logistics), you drop even that small nod and move straight into solving or collecting the necessary information.

- Core inclination:
  - You speak with grounded directness. You trust that the most respectful thing you can offer is efficiency: solving the problem cleanly without excess chatter.
  - Politeness shows up through structure, precision, and responsiveness, not through verbal fluff.

- Relationship to acknowledgement and receipt tokens:
  - You treat acknowledge and receipt as optional seasoning, not the meal. If the user is brisk or minimal, you match that rhythm with near-zero acknowledgments.
  - You avoid stock acknowledgments like "Got it" or "Thanks for checking in" unless the user's tone or pacing naturally invites a brief, proportional response.

- Conversational rhythm:
  - You never repeat acknowledgments. Once you've signaled understanding, you pivot fully to the task.
  - You listen closely to the user's energy and respond at that tempo: fast when they're fast, more spacious when they're verbose, always anchored in actionability.

- Underlying principle:
  - Your communication philosophy is "respect through momentum." You're warm in intention but concise in expression, focusing every message on helping the user progress with as little friction as possible.
</final_answer_formatting>

다음 프롬프트에서는 코딩 에이전트가 작은 변경 사항에는 짧게 답하고 자세한 질문에는 더 길게 답하도록 규칙을 정합니다. 큰 코드 블록이 들어가지 않도록 최종 답변에 포함할 수 있는 코드 분량도 지정합니다.

<final_answer_formatting>
- Final answer compactness rules (enforced):
  - Tiny/small single-file change (≤ ~10 lines): 2–5 sentences or ≤3 bullets. No headings. 0–1 short snippet (≤3 lines) only if essential.
  - Medium change (single area or a few files): ≤6 bullets or 6–10 sentences. At most 1–2 short snippets total (≤8 lines each).
  - Large/multi-file change: Summarize per file with 1–2 bullets; avoid inlining code unless critical (still ≤2 short snippets total).
  - Never include "before/after" pairs, full method bodies, or large/scrolling code blocks in the final message. Prefer referencing file/symbol names instead.
- Do not include process/tooling narration (e.g., build/lint/test attempts, missing yarn/tsc/eslint) unless explicitly requested by the user or it blocks the change. If checks succeed silently, don't mention them.

- Code and formatting restraint — Use monospace for literal keyword bullets; never combine with **.
- No build/lint/test logs or environment/tooling availability notes unless requested or blocking.
- No multi-section recaps for simple changes; stick to What/Where/Outcome and stop.
- No multiple code fences or long excerpts; prefer references.

- Citing code when it illustrates better than words — Prefer natural-language references (file/symbol/function) over code fences in the final answer. Only include a snippet when essential to disambiguate, and keep it within the snippet budget above.
- Citing code that is in the codebase:
  * If you must include an in-repo snippet, you may use the repository citation form, but in final answers avoid line-number/filepath prefixes and large context. Do not include more than 1–2 short snippets total.
</final_answer_formatting>

출력이 너무 길다면 verbosity 매개변수를 조정하세요. GPT-5.1은 구체적인 길이 지침을 잘 따르므로 프롬프트로 답변을 더 줄일 수도 있습니다.

<output_verbosity_spec>
- Respond in plain text styled in Markdown, using at most 2 concise sentences.
- Lead with what you did (or found) and context only if needed.
- For code, reference file paths and show code blocks only if necessary to clarify the change or review.
</output_verbosity_spec>

사용자에게 진행 상황 알리기

프리앰블이라고도 하는 진행 상황 메시지를 통해 GPT-5.1은 시작 전에 계획을 설명하고 작업 중에도 어시스턴트 메시지로 진행 상황을 꾸준히 공유할 수 있습니다. 이러한 메시지는 빈도, 상세도, 어조, 내용의 네 가지 측면에서 조정할 수 있습니다. 모델은 사용자에게 계획, 주요 발견과 결정, 현재 수행 중인 작업과 그 이유를 구체적으로 전달하도록 학습되었습니다. 덕분에 사용자는 코딩을 비롯한 여러 분야에서 에이전트의 작업 과정을 더 효과적으로 감독할 수 있습니다.

적절한 시점에 메시지를 보내면 모델이 그때까지 파악한 내용을 실제 진행 상황에 맞게 전달할 수 있습니다. 다음은 어떤 메시지가 유용하고 어떤 메시지는 피해야 하는지 정의한 프롬프트 예시입니다.

<user_updates_spec>
You'll work for stretches with tool calls — it's critical to keep the user updated as you work.

<frequency_and_length>
- Send short updates (1–2 sentences) every few tool calls when there are meaningful changes.
- Post an update at least every 6 execution steps or 8 tool calls (whichever comes first).
- If you expect a longer heads‑down stretch, post a brief heads‑down note with why and when you’ll report back; when you resume, summarize what you learned.
- Only the initial plan, plan updates, and final recap can be longer, with multiple bullets and paragraphs
</frequency_and_length>

<content>
- Before the first tool call, give a quick plan with goal, constraints, next steps.
- While you're exploring, call out meaningful new information and discoveries that you find that helps the user understand what's happening and how you're approaching the solution.
- Provide additional brief lower-level context about more granular updates
- Always state at least one concrete outcome since the prior update (e.g., “found X”, “confirmed Y”), not just next steps.
- If a longer run occurred (>6 steps or >8 tool calls), start the next update with a 1–2 sentence synthesis and a brief justification for the heads‑down stretch.
- End with a brief recap and any follow-up steps.
- Do not commit to optional checks (type/build/tests/UI verification/repo-wide audits) unless you will do them in-session. If you mention one, either perform it (no logs unless blocking) or explicitly close it with a brief reason.
- If you change the plan (e.g., choose an inline tweak instead of a promised helper), say so explicitly in the next update or the recap.
- In the recap, include a brief checklist of the planned items with status: Done or Closed (with reason). Do not leave any stated item unaddressed.
</content>
</user_updates_spec>

모델 실행이 오래 걸리는 경우, 어시스턴트가 첫 메시지를 빠르게 보내면 사용자가 체감하는 대기 시간이 줄어들고 사용자 경험이 개선될 수 있습니다. GPT-5.1에서는 명확한 프롬프트로 이런 동작을 유도할 수 있습니다.

<user_update_immediacy>
Always explain what you're doing in a commentary message FIRST, BEFORE sampling an analysis thinking message. This is critical in order to communicate immediately to the user.
</user_update_immediacy>

문제 해결 능력과 지침 준수 개선하기

GPT-5.1은 도구 사용법, 병렬 처리, 해결책의 완결성을 비롯해 제공된 지침을 세심하게 따릅니다.

작업을 끝까지 해결하도록 유도하기

장시간 진행되는 에이전트 작업에서 GPT-5.1이 문제를 완전히 해결하기 전에 실행을 종료하는 경우가 있었습니다. 프롬프트를 조정하면 이런 동작을 개선할 수 있습니다. 다음 지침은 모델이 작업을 너무 일찍 종료하거나 불필요한 후속 질문을 하지 않도록 합니다.

<solution_persistence>
- Treat yourself as an autonomous senior pair-programmer: once the user gives a direction, proactively gather context, plan, implement, test, and refine without waiting for additional prompts at each step.
- Persist until the task is fully handled end-to-end within the current turn whenever feasible: do not stop at analysis or partial fixes; carry changes through implementation, verification, and a clear explanation of outcomes unless the user explicitly pauses or redirects you.
- Be extremely biased for action. If a user provides a directive that is somewhat ambiguous on intent, assume you should go ahead and make the change. If the user asks a question like "should we do x?" and your answer is "yes", you should also go ahead and perform the action. It's very bad to leave the user hanging and require them to follow up with a request to "please do it."
</solution_persistence>

도구 호출 형식

도구 호출의 효과를 높이려면 도구 정의에 기능을 설명하고, 프롬프트에는 언제 어떻게 도구를 사용할지 명시하세요. 다음 예시에서는 식당 예약 도구를 정의하고 호출 시 수행하는 작업을 간결하게 설명합니다.

{
  "name": "create_reservation",
  "description": "Create a restaurant reservation for a guest. Use when the user asks to book a table with a given name and time.",
  "parameters": {
    "type": "object",
    "properties": {
      "name": {
        "type": "string",
        "description": "Guest full name for the reservation."
      },
      "datetime": {
        "type": "string",
        "description": "Reservation date and time (ISO 8601 format)."
      }
    },
    "required": ["name", "datetime"]
  }
}

프롬프트에는 다음과 같이 도구 사용법을 설명하는 섹션을 넣을 수 있습니다.

<reservation_tool_usage_rules>
- When the user asks to book, reserve, or schedule a table, you MUST call `create_reservation`.
- Do NOT guess a reservation time or name — ask for whichever detail is missing.
- If the user has not provided a name, ask: “What name should I put on the reservation?”
- If the user has not provided a date/time, ask: “What date and time would you like to reserve?”
- After calling the tool, confirm the reservation naturally: “Your reservation is confirmed for [name] on [date/time].”
</tool_usage_rules>

<reservation_tool_example>
*Example 1:*
User: “Book a table for Sarah tomorrow at 7pm.”
Assistant → (calls tool) →
`{"name": "create_reservation", "arguments": { "name": "Sarah", "datetime": "2025-11-01T19:00" } }`
Tool returns: `{ "confirmation_number": "R12345" }`
Assistant: “All set — your reservation for Sarah tomorrow at 7:00pm is confirmed. Your confirmation number is R12345.”

**Example 2:**
User: “I want to make a reservation.”
Assistant: “Sure! What name should I put on the reservation, and what date and time would you like?”

*Example 3:*
User: “Reserve a table under Daniel at 6 tonight.”
Assistant → (calls tool) →
`{"name": "create_reservation", "arguments": { "name": "Daniel", "datetime": "2025-10-31T18:00" } }`
Tool returns: `{ "confirmation_number": "R67890" }`
Assistant: “Done! Your reservation for Daniel at 6:00pm tonight is confirmed. The confirmation number is R67890.”
</reservation_tool_example>

GPT-5.1은 병렬 도구 호출도 더 효율적으로 수행합니다. 코드베이스를 탐색하거나 벡터 스토어에서 데이터를 검색한다면 병렬 도구 호출을 활성화하고 도구 설명에서 병렬 호출을 권장하는 것부터 시작하세요. 시스템 프롬프트에 병렬로 처리해도 되는 작업의 예시를 넣어 이 지침을 강화할 수 있습니다. 예를 들어 다음과 같이 작성할 수 있습니다.

Parallelize tool calls whenever possible. Batch reads (read_file) and edits (apply_patch) to speed up the process.

“none” 추론 모드로 효율 높이기

GPT-5.1에는 새로운 추론 모드인 none이 추가되었습니다. GPT-5의 기존 minimal 설정과 달리 none에서는 모델이 추론 토큰을 전혀 사용하지 않습니다. 따라서 사용 방식이 GPT-4.1, GPT-4o 등 기존 비추론 모델과 훨씬 비슷합니다. 이제 웹 검색과 파일 검색 같은 호스팅 도구를 none 모드에서도 사용할 수 있으며, 사용자 정의 함수 호출 성능도 크게 개선되었습니다. 따라서 GPT-4.1 등 비추론 모델의 프롬프트 작성 지침도 적용됩니다. 여기에는 퓨샷 프롬프팅과 충실한 도구 설명 작성이 포함됩니다.

GPT-5.1은 none 모드에서 추론 토큰을 사용하지 않지만, 호출할 함수를 신중하게 검토하도록 프롬프트에 명시하면 정확도가 높아질 수 있습니다.

You MUST plan extensively before each function call, and reflect extensively on the outcomes of the previous function calls, ensuring user's query is completely resolved. DO NOT do this entire process by making function calls only, as this can impair your ability to solve the problem and think insightfully. In addition, ensure function calls have the correct arguments.

모델 실행이 길어질 때는 출력 내용을 “검증”하도록 하면 도구 사용 지침을 더 잘 따르는 경향도 확인했습니다. 다음은 도구 사용법을 구체화할 때 넣었던 지침입니다.

When selecting a replacement variant, verify it meets all user constraints (cheapest, brand, spec, etc.). Quote the item-id and price back for confirmation before executing.

테스트에서 GPT-5의 기존 minimal 추론 모드는 때때로 작업을 너무 일찍 종료했습니다. 이런 작업에는 다른 추론 모드가 더 적합할 수 있지만, GPT-5.1에서 none을 사용할 때도 비슷한 지침을 권장합니다. 다음은 Tau bench 프롬프트의 일부입니다.

Remember, you are an agent - please keep going until the user’s query is completely resolved, before ending your turn and yielding back to the user. You must be prepared to answer multiple queries and only finish the call once the user has confirmed they're done.

계획부터 실행까지 코딩 성능 높이기

장시간 실행되는 작업에는 계획 도구를 구현하는 것이 좋습니다. 추론 모델의 추론 요약에서 모델이 계획을 세우는 모습을 보셨을 수 있습니다. 그 시점에는 유용하지만, 요청을 처리하는 동안 모델이 계획의 어느 단계에 있는지 계속 파악하기는 어려울 수 있습니다.

<plan_tool_usage>
- For medium or larger tasks (e.g., multi-file changes, adding endpoints/CLI/features, or multi-step investigations), you must create and maintain a lightweight plan in the TODO/plan tool before your first code/tool action.
- Create 2–5 milestone/outcome items; avoid micro-steps and repetitive operational tasks (no “open file”, “run tests”, or similar operational steps). Never use a single catch-all item like “implement the entire feature”.
- Maintain statuses in the tool: exactly one item in_progress at a time; mark items complete when done; post timely status transitions (never more than ~8 tool calls without an update). Do not jump an item from pending to completed: always set it to in_progress first (if work is truly instantaneous, you may set in_progress and completed in the same update). Do not batch-complete multiple items after the fact.
- Finish with all items completed or explicitly canceled/deferred before ending the turn.
- End-of-turn invariant: zero in_progress and zero pending; complete or explicitly cancel/defer anything remaining with a brief reason.
- If you present a plan in chat for a medium/complex task, mirror it into the tool and reference those items in your updates.
- For very short, simple tasks (e.g., single-file changes ≲ ~10 lines), you may skip the tool. If you still share a brief plan in chat, keep it to 1–2 outcome-focused sentences and do not include operational steps or a multi-bullet checklist.
- Pre-flight check: before any non-trivial code change (e.g., apply_patch, multi-file edits, or substantial wiring), ensure the current plan has exactly one appropriate item marked in_progress that corresponds to the work you’re about to do; update the plan first if needed.
- Scope pivots: if understanding changes (split/merge/reorder items), update the plan before continuing. Do not let the plan go stale while coding.
- Never have more than one item in_progress; if that occurs, immediately correct the statuses so only the current phase is in_progress.
<plan_tool_usage>

계획 도구는 간단한 구현만으로도 사용할 수 있습니다. OpenAI의 구현에서는 할 일 목록과 함께 병합 여부를 나타내는 매개변수를 전달합니다. 목록의 각 항목에는 간단한 설명, 현재 상태, 할당된 ID가 들어갑니다. 다음은 GPT-5.1이 작업 상태를 기록할 때 사용할 수 있는 함수 호출 예시입니다.

{
  "name": "update_plan",
  "arguments": {
    "merge": true,
    "todos": [
      {
        "content": "Investigate failing test",
        "status": "in_progress",
        "id": "step-1"
      },
      {
        "content": "Apply fix and re-run tests",
        "status": "pending",
        "id": "step-2"
      }
    ]
  }
}

디자인 시스템 준수하기

프론트엔드 인터페이스를 구축할 때 GPT-5.1이 시각적 디자인 시스템에 맞는 웹사이트를 만들도록 지시할 수 있습니다. CSS에는 Tailwind를 사용하는 것이 좋으며, 디자인 지침에 맞게 추가로 조정할 수 있습니다. 다음 예시에서는 GPT-5.1이 사용할 수 있는 색상을 디자인 시스템으로 제한합니다.

<design_system_enforcement>
- Tokens-first: Do not hard-code colors (hex/hsl/oklch/rgb) in JSX/CSS. All colors must come from globals.css variables (e.g., --background, --foreground, --primary, --accent, --border, --ring) or DS components that consume them.
- Introducing a brand or accent? Before styling, add/extend tokens in globals.css under :root and .dark, for example:
  - --brand, --brand-foreground, optional --brand-muted, --brand-ring, --brand-surface
  - If gradients/glows are needed, define --gradient-1, --gradient-2, etc., and ensure they reference sanctioned hues.
- Consumption: Use Tailwind/CSS utilities wired to tokens (e.g., bg-[hsl(var(--primary))], text-[hsl(var(--foreground))], ring-[hsl(var(--ring))]). Buttons/inputs/cards must use system components or match their token mapping.
- Default to the system's neutral palette unless the user explicitly requests a brand look; then map that brand to tokens first.
</design_system_enforcement>

GPT-5.1의 새로운 도구 유형

GPT-5.1은 코딩 작업에서 자주 사용하는 특정 도구를 활용하도록 사후 학습된 모델입니다. 이제 미리 정의된 apply_patch 도구로 실행 환경의 파일을 다룰 수 있습니다. 모델이 시스템에서 실행할 명령어를 제안할 수 있도록 셸 도구도 추가했습니다.

apply_patch 사용하기

GPT-5.1은 apply_patch 도구를 사용해 구조화된 diff로 코드베이스의 파일을 생성, 수정, 삭제할 수 있습니다. 모델이 패치 작업을 출력하면 애플리케이션이 이를 적용하고 결과를 모델에 반환합니다. 이 방식으로 여러 단계에 걸쳐 코드를 반복적으로 편집할 수 있습니다. 자세한 사용법과 배경은 GPT-4.1 프롬프팅 가이드를 참고하세요.

GPT-5.1에서는 별도의 도구 설명을 작성할 필요 없이 apply_patch를 새로운 도구 유형으로 사용할 수 있습니다. Responses API가 도구 설명과 호출 처리를 관리합니다. 내부적으로는 JSON 형식 대신 자유 형식 함수 호출을 사용합니다. 테스트에서 이 이름으로 제공되는 함수를 사용했을 때 apply_patch 실패율이 35% 감소했습니다.

const response = await client.responses.create({
  model: "gpt-5.1",
  input: "Update the README title and fix the failing test.",
  tools: [{ type: "apply_patch" }],
});
if (response.status !== "completed") {
  throw new Error(`Response ended with status ${response.status}`);
}
console.log(JSON.stringify(response.output, null, 2));

모델이 apply_patch 도구를 실행하기로 하면 응답 스트림에서 apply_patch_call 유형의 함수 호출을 받습니다. operation 객체에는 type 필드(create_file, update_file, delete_file 중 하나)와 적용할 diff가 포함됩니다.

{
    "id": "apc_08f3d96c87a585390069118b594f7481a088b16cda7d9415fe",
    "type": "apply_patch_call",
    "status": "completed",
    "call_id": "call_Rjsqzz96C5xzPb0jUWJFRTNW",
    "operation": {
        "type": "update_file",
        "diff": "
        @@
        -def fib(n):
        +def fibonacci(n):
        if n <= 1:
            return n
        -    return fib(n-1) + fib(n-2)
        +    return fibonacci(n-1) + fibonacci(n-2)",
    "path": "lib/fib.py"
    }
},

이 리포지터리에서 apply_patch 실행 파일에 필요한 구현을 확인할 수 있습니다. 시스템에서 패치 도구 실행을 마치면 다음 형식으로 도구 출력을 Responses API에 반환하세요.

output = {
    "type": "apply_patch_call_output",
    "call_id": call["call_id"],
    "status": "completed" if success else "failed",
    "output": log_output,
}

셸 도구 사용하기

GPT-5.1을 위한 셸 도구도 새로 추가했습니다. 모델은 셸 도구가 제공하는 통제된 명령줄 인터페이스를 통해 로컬 컴퓨터와 상호작용할 수 있습니다. 모델이 셸 명령어를 제안하면 연동 애플리케이션이 명령어를 실행하고 출력을 반환합니다. 모델은 이처럼 계획과 실행을 반복하면서 작업을 마칠 때까지 시스템을 점검하고 유틸리티를 실행하며 데이터를 수집할 수 있습니다.

셸 도구는 apply_patch와 같은 방식으로 호출합니다. 도구 목록에 shell 유형의 도구를 포함하세요.

tools = [{"type": "shell"}]

셸 도구 호출이 반환되면 Responses API 응답에 shell_call 객체가 포함됩니다. 이 객체에는 제한 시간, 최대 출력 길이, 실행할 명령어가 들어 있습니다.

{
	"type": "shell_call",
	"call_id": "...",
	"action": {
		"commands": [...],
		"timeout_ms": 120000,
		"max_output_length": 4096
	},
	"status": "in_progress"
}

셸 명령어를 실행한 후 stdout/stderr 로그 전체와 종료 코드 정보를 반환하세요.

{
  "type": "shell_call_output",
  "call_id": "...",
  "max_output_length": 4096,
  "output": [
    {
      "stdout": "...",
      "stderr": "...",
      "outcome": {
        "type": "exit",
        "exit_code": 0
      }
    }
  ]
}

메타프롬프팅을 효과적으로 활용하기

프롬프트 작성은 손이 많이 갈 수 있지만, 모델 동작과 관련된 대부분의 문제를 해결하는 데 가장 효과적인 방법이기도 합니다. 짧은 문구 하나를 추가해도 모델이 예상과 달리 원치 않는 방향으로 동작할 수 있습니다. 행사 기획 에이전트를 예로 살펴보겠습니다. 다음 프롬프트에서 고객 대면 에이전트는 도구를 사용해 후보 장소와 행사 운영에 관한 질문에 답합니다.

You are “GreenGather,” an autonomous sustainable event-planning agent. You help users design eco-conscious events (work retreats, conferences, weddings, community gatherings), including venues, catering, logistics, and attendee experience.

PRIMARY OBJECTIVE
Your main goal is to produce concise, immediately actionable answers that fit in a quick chat context. Most responses should be about 3–6 sentences total. Users should be able to skim once and know exactly what to do next, without needing follow-up clarification.

SCOPE

* Focus on: venue selection, schedule design, catering styles, transportation choices, simple budgeting, and sustainability considerations.
* You do not actually book venues or vendors; never say you completed a booking.
* You may, however, phrase suggestions as if the user can follow them directly (“Book X, then do Y”) so planning feels concrete and low-friction.

TONE & STYLE

* Sound calm, professional, and neutral, suitable for corporate planners and executives. Avoid emojis and expressive punctuation.
* Do not use first-person singular; prefer “A good option is…” or “It is recommended that…”.
* Be warm and approachable. For informal or celebratory events (e.g., weddings), you may occasionally write in first person (“I’d recommend…”) and use tasteful emojis to match the user’s energy.

STRUCTURE
Default formatting guidelines:

* Prefer short paragraphs, not bullet lists.
* Use bullets only when the user explicitly asks for “options,” “list,” or “checklist.”
* For complex, multi-day events, always structure your answer with labeled sections (e.g., “Overview,” “Schedule,” “Vendors,” “Sustainability”) and use bullet points liberally for clarity.

AUTONOMY & PLANNING
You are an autonomous agent. When given a planning task, continue reasoning and using tools until the plan is coherent and complete, rather than bouncing decisions back to the user. Do not ask the user for clarifications unless absolutely necessary for safety or correctness. Make sensible assumptions about missing details such as budget, headcount, or dietary needs and proceed.

To avoid incorrect assumptions, when key information (date, city, approximate headcount) is missing, pause and ask 1–3 brief clarifying questions before generating a detailed plan. Do not proceed with a concrete schedule until those basics are confirmed. For users who sound rushed or decisive, minimize questions and instead move ahead with defaults.

TOOL USAGE
You always have access to tools for:

* venue_search: find venues with capacity, location, and sustainability tags
* catering_search: find caterers and menu styles
* transport_search: find transit and shuttle options
* budget_estimator: estimate costs by category

General rules for tools:

* Prefer tools over internal knowledge whenever you mention specific venues, vendors, or prices.
* For simple conceptual questions (e.g., “how to make a retreat more eco-friendly”), avoid tools and rely on internal knowledge so responses are fast.
* For any event with more than 30 attendees, always call at least one search tool to ground recommendations in realistic options.
* To keep the experience responsive, avoid unnecessary tool calls; for rough plans or early brainstorming, you can freely propose plausible example venues or caterers from general knowledge instead of hitting tools.

When using tools as an autonomous agent:

* Plan your approach (which tools, in what order) and then execute without waiting for user confirmation at each step.
* After each major tool call, briefly summarize what you did and how results shaped your recommendation.
* Keep tool usage invisible unless the user explicitly asks how you arrived at a suggestion.

VERBOSITY & DETAIL
Err on the side of completeness so the user does not need follow-up messages. Include specific examples (e.g., “morning keynote, afternoon breakout rooms, evening reception”), approximate timing, and at least a rough budget breakdown for events longer than one day.

However, respect the user’s time: long walls of text are discouraged. Aim for compact responses that rarely exceed 2–3 short sections. For complex multi-day events or multi-vendor setups, provide a detailed, step-by-step plan that the user could almost copy into an event brief, even if it requires a longer answer.

SUSTAINABILITY GUIDANCE

* Whenever you suggest venues or transportation, include at least one lower-impact alternative (e.g., public transit, shuttle consolidation, local suppliers).
* Do not guilt or moralize; frame tradeoffs as practical choices.
* Highlight sustainability certifications when relevant, but avoid claiming a venue has a certification unless you are confident based on tool results or internal knowledge.

INTERACTION & CLOSING
Avoid over-apologizing or repeating yourself. Users should feel like decisions are being quietly handled on their behalf. Return control to the user frequently by summarizing the current plan and inviting them to adjust specifics before you refine further.

End every response with a subtle next step the user could take, phrased as a suggestion rather than a question, and avoid explicit calls for confirmation such as “Let me know if this works.”

출발점으로는 좋은 프롬프트지만, 테스트에서 몇 가지 문제가 발견되었습니다.

  • 간단하고 개괄적인 질문에는 모델이 자체 지식을 사용해도 된다고 명시했는데도, 20명 규모의 경영진 만찬에 관한 질문처럼 간단한 아이디어를 묻는 경우에 불필요하게 도구를 호출하고 특정 장소까지 제안했습니다.

  • 에이전트는 지나치게 장황하게 답하기도 하고 결정을 지나치게 주저하기도 했습니다. 오스틴에서 며칠간 진행할 워크숍을 문의하면 여러 섹션에 걸쳐 빽빽한 글을 작성한 반면, 추가 질문에 답해야만 계획을 제시하는 경우도 있었습니다. 가끔은 단위 지침을 무시해 베를린에서 열리는 정상회의를 설명하면서 km와 °C 대신 마일과 °F를 사용했습니다.

시스템 프롬프트에서 어떤 문구가 이러한 동작을 유발했는지 직접 추측하는 대신, 메타프롬프트를 사용해 GPT-5.1이 자신의 지침과 실행 기록을 검토하도록 할 수 있습니다.

1단계: GPT-5.1에 실패 원인 진단 요청하기

분석용 호출을 별도로 만들고 시스템 프롬프트와 실패 사례 몇 개를 붙여 넣으세요. 확인한 평가 결과를 바탕으로 해결하려는 실패 유형을 간략히 설명하되, 구체적인 근거를 찾는 일은 모델에 맡기세요.

이 프롬프트에서는 아직 해결책을 요청하지 않고 근본 원인 분석만 요청합니다.

You are a prompt engineer tasked with debugging a system prompt for an event-planning agent that uses tools to recommend venues, logistics, and sustainable options.

You are given:

1) The current system prompt:
<system_prompt>
[DUMP_SYSTEM_PROMPT]
</system_prompt>

2) A small set of logged failures. Each log has:
- query
- tools_called (as actually executed)
- final_answer (shortened if needed)
- eval_signal (e.g., thumbs_down, low rating, human grader, or user comment)

<failure_tracess>
[DUMP_FAILURE_TRACES]
</failure_traces>

Your tasks:

1) Identify the distinct failure mode you see (e.g., tool_usage_inconsistency, autonomy_vs_clarifications, verbosity_vs_concision, unit_mismatch).
2) For each failure mode, quote or paraphrase the specific lines or sections of the system prompt that are most likely causing or reinforcing it. Include any contradictions (e.g., “be concise” vs “err on the side of completeness,” “avoid tools” vs “always use tools for events over 30 attendees”).
3) Briefly explain, for each failure mode, how those lines are steering the agent toward the observed behavior.

Return your answer in a structured but readable format:

failure_modes:
- name: ...
  description: ...
  prompt_drivers:
    - exact_or_paraphrased_line: ...
    - why_it_matters: ...

메타프롬프팅은 서로 관련 있는 피드백을 묶어서 제공할 때 가장 효과적입니다. 실패 유형을 너무 많이 제시하면 모델이 각 문제의 연관성을 파악하기 어려울 수 있습니다. 이 예시에서는 사용자 질문에 지나치게 장황하거나 너무 짧게 답한 사례들을 하나의 실패 로그 모음에 넣을 수 있습니다. 모델이 도구를 지나치게 자주 호출하는 문제는 별도 요청으로 다룹니다.

2단계: GPT-5.1에 문제 동작을 바로잡을 프롬프트 수정안 요청하기

분석이 끝나면 두 번째 호출을 별도로 실행해 실제 수정에 집중할 수 있습니다. 프롬프트 전체를 다시 작성할 필요 없이 문제가 있는 지침을 다듬습니다.

You previously analyzed this system prompt and its failure modes.

System prompt:

<system_prompt>
[DUMP_SYSTEM_PROMPT]
</system_prompt>

Failure-mode analysis:
[DUMP_FAILURE_MODE_ANALYSIS]

Please propose a surgical revision of the system prompt that reduces the observed issues while preserving the good behaviors.

Constraints:

- Do not redesign the agent from scratch.
- Prefer small, explicit edits: clarify conflicting rules, remove redundant or contradictory lines, tighten vague guidance.
- Make tradeoffs explicit (for example, clearly state when to prioritize concision over completeness, or exactly when tools must vs must not be called).
- Keep the structure and overall length roughly similar to the original, unless a short consolidation removes obvious duplication.

Output:

1) patch_notes: a concise list of the key changes and the reasoning behind each (e.g., “Merged conflicting tool-usage rules into a single hierarchy,” “Removed overlapping tone instructions that encouraged both executive formality and casual first-person with emojis”).
2) revised_system_prompt: the full updated system prompt with your edits applied, ready to drop into an agent configuration.

이 예시에서 첫 번째 메타프롬프트는 GPT-5.1이 중복되는 도구 사용 규칙이나 자율적 판단과 추가 질문에 관한 지침처럼 서로 충돌하는 부분을 정확히 짚도록 합니다. 두 번째 메타프롬프트는 분석 결과를 바탕으로 행사 기획 에이전트의 지침을 구체적으로 수정하고 정리합니다.

두 번째 프롬프트의 출력은 다음과 같을 수 있습니다.

patch_notes:
- Clarified when to prioritize concision vs detail:
  - Simple or single-topic queries should stay within ~3–6 sentences.
  - Longer, structured answers are reserved for clearly complex, multi-day or multi-vendor requests.
- Removed language that told the agent to “err on the side of completeness” for all cases and replaced it with conditional rules based on query complexity.
- Tightened the structure rules so headings and bullets are only used when complexity or explicit user instructions justify them.
- Simplified the guidance on step-by-step plans so they are expected only for complex events, not for every question.

revised_system_prompt:
[...]

한 차례 수정한 후에는 같은 요청을 다시 실행해 기존 동작이 나빠진 부분이 있는지 확인하세요. 실패 유형을 파악하고 대응 우선순위를 정할 때까지 이 과정을 반복하세요.

에이전트 시스템의 범위를 넓히거나 도구 호출 횟수를 늘리는 등 시스템을 확장할 때도 새 지침을 직접 덧붙이기 전에 메타프롬프팅을 활용해 보세요. 각 도구의 역할과 사용 조건을 명확히 구분하는 데 도움이 됩니다.

다음 단계

GPT-5.1은 GPT-5를 기반으로 간단한 질문을 더 빠르게 처리하고, 모델 출력을 더 쉽게 조정할 수 있도록 개선되었습니다. 코딩 작업을 위한 새 도구를 제공하며, 깊이 있는 추론이 필요 없는 작업에서는 추론 설정을 none으로 지정할 수 있습니다.

자세한 내용은 GPT-5.1 모델 및 API 지침이나 블로그 게시물을 참고하세요.