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

접두부를 그대로 유지하기

접두부를 그대로 유지하면 캐시를 더 많이 재사용하고 다음 턴에서도 이전 추론을 활용할 수 있습니다.

에이전트 기반 애플리케이션과 멀티턴 애플리케이션에서 OpenAI 모델은 API 요청 간에 추론을 보존하고 새 작업과 지침을 항상 모델의 컨텍스트 끝에 추가할 때 가장 좋은 성능을 냅니다. 접두부를 그대로 유지하는 것은 프롬프트 캐싱에서 오래전부터 권장해 온 방식입니다. 캐시는 요청의 시작 부분부터 내용이 일치하는지 확인하므로 접두부가 바뀌면 변경 지점부터 캐시를 재사용하지 못할 수 있습니다. 변경 내용을 대화 끝에 추가하면 캐시를 재사용할 수 있는 구간이 길어져 입력 비용을 크게 줄이고 응답 속도를 높일 수 있습니다.

최근 프런티어 모델부터는 접두부가 바뀌면 API가 모델 증류를 방지하기 위한 보호 조치의 일환으로 변경 지점 뒤에 있는 추론 항목을 제외합니다. 추론 항목이 제외되면 모델이 일부 추론을 다시 수행해야 할 수 있어 토큰 사용량과 비용이 늘고 지연 시간이 길어질 수 있습니다. 모델이 손실된 추론을 복구하지 못하면 출력 품질도 떨어질 수 있습니다.

모델의 성능을 최대한 활용하려면 가능한 한 접두부를 그대로 유지하고 새 내용은 컨텍스트 끝에만 추가하도록 애플리케이션을 구현하세요.

접두부 변경이란 무엇인가요?

추론 항목의 접두부는 해당 항목 앞에 있는 대화 기록입니다. 도구 결과를 줄이거나 개발자 메시지를 다시 쓰거나 이전 턴을 요약으로 대체하는 등 앞선 기록을 수정하면 접두부가 변경됩니다.

대화 기록 변경
Original conversationNext request and API handling
User messageCheck the ledger total.Same message
Reasoning before the tool call Reusable
Tool calllookup_ledger()Same call
Tool result[{"amount": 40}, {"amount": 50}]Same rows
Reasoning after the tool resultReusable
Both reasoning items have the same history before them as in the original conversation.

접두부가 변경되지 않도록 API 연동 코드 수정하기

Responses API에서 tools, instructions, text.format 같은 매개변수를 변경하거나 이전 input 항목을 수정하면 의도치 않게 접두부가 변경될 수 있습니다. API 연동 코드에서 이런 변경이 발생하는지 점검하세요.

아래 표는 API 연동 코드에서 접두부가 자주 변경되는 경우와 가능한 한 컨텍스트 끝에 내용을 추가해 같은 목적을 달성하는 방법을 보여 줍니다.

접두부가 변경되는 일반적인 경우 접두부 변경을 피하는 방법
추론 강도 변경 Responses API의 reasoning.effort 매개변수는 그대로 두고, 새 추론 강도를 지정한 configuration_update 항목을 입력 항목 목록 끝에 추가하세요. 요청 수준의 설정은 원래 값으로 유지하세요.
구조화된 출력값의 스키마 변경 Responses API의 text.format 매개변수는 그대로 두고, 새 스키마를 지정한 configuration_update 항목을 입력 항목 목록 끝에 추가하세요. 요청 수준의 설정은 원래 값으로 유지하세요.
에이전트가 사용할 수 있는 도구 변경 Responses API의 tools 매개변수는 그대로 두세요. 도구를 추가하려면 additional_tools 항목을 사용하고, 특정 턴에서 모델이 호출할 수 있는 도구를 제한하려면 tool_choice의 유형을 allowed_tools로 지정하세요. 기존 도구 정의의 순서를 유지하세요. additional_tools 항목은 역할을 developer로 지정하고 tools 배열을 포함해 끝에 추가하세요. 이후 요청에서 이 항목을 다시 보낼 때는 원래 위치를 유지하세요.
개발자 지침 업데이트 기존 개발자 메시지는 그대로 두고, 이전 지침을 무시하고 새로 제공한 지침을 따르도록 모델에 요청하는 developer 메시지를 끝에 추가하세요. 한 턴에만 적용할 지침이라면 최신 개발자 메시지 바로 앞에 명시적 캐시 중단점을 두어 재사용 가능한 접두부가 해당 메시지 앞에서 끝나도록 하세요.
컨텍스트 압축 컨텍스트를 압축하면 접두부가 변경되므로 캐시 미스를 피하기 어렵습니다.

OpenAI 컨텍스트 압축: OpenAI 컨텍스트 압축을 /responses/compact 또는 context_management로 사용하면 접두부가 변경되어도 OpenAI 시스템은 변경 지점 뒤의 추론 항목을 유지합니다. OpenAI 컨텍스트 압축 항목은 컨텍스트의 어느 위치에나 올 수 있습니다. /responses/compact를 호출할 때는 instructions를 생략하고, 반환된 컨텍스트 윈도우를 원래 순서 그대로 다음 요청에 전달하세요. 대화 기록에 configuration_update 항목이 포함되어 있다면 구성 업데이트가 있을 때의 컨텍스트 압축 요구 사항을 따르세요.

사용자 지정 컨텍스트 압축: 직접 구현한 방식 등 다른 압축 방식을 사용한다면 압축한 항목을 최근 턴 앞에 두지 말고 모델의 컨텍스트 끝에 두세요. 최근 턴 앞에 둘 수도 있지만, 이 경우 원래 대화 기록에서 해당 항목 뒤에 있는 추론 항목은 제외됩니다.
이전 도구 출력 단축 또는 이전 파일이나 이미지의 크기 축소 일부 애플리케이션은 컨텍스트를 압축하는 대신 도구 출력, 파일, 이미지 등 이전 항목의 일부를 잘라냅니다. 이렇게 하면 접두부가 변경됩니다. 컨텍스트 압축을 사용하거나, 모델에 처음 보내기 전에 긴 도구 출력을 줄이고 이미지나 파일의 크기를 줄이는 것을 강력히 권장합니다.

API 연동 코드에서 접두부 변경 여부 점검하기

프롬프트 캐싱 진단을 사용해 캐시 미스가 언제 발생하는지 확인하고 접두부 변경을 조사하세요. 요청을 이전 응답과 비교하려면 prompt_cache_options.comparison_response_id를 해당 응답의 ID로 설정한 다음, 진단 결과에 표시된 원인과 캐시된 토큰 수를 확인하세요. 이 정보를 활용해 API 연동 코드에서 접두부 변경을 줄이세요. 진단 도구는 확인할 수 있는 범위에서 처음 발견한 차이를 보고합니다. 모델이 추론을 재사용했는지는 확인할 수 없습니다.