메인 콘텐츠로 건너뛰기

짧은 답변

콘텐츠 필터가 작동하면 스트리밍 모드와 비스트리밍 모드에서 동일한 콘텐츠도 결과가 크게 달라질 수 있습니다.
  1. 비스트리밍: 공식 경로에서 콘텐츠 안전성 필터가 작동하면 APIYI가 다른 공식 경로로 요청을 자동 재생성합니다. 클라이언트는 완전한 결과를 받고 한 번만 과금됩니다.
  2. 스트리밍: 출력은 생성되는 즉시 클라이언트로 전송되므로 스트리밍 중에는 경로를 전환할 수 없습니다. 요청은 finish_reason: "content_filter"와 함께 종료되며, 이미 생성된 부분에는 평소와 같이 과금됩니다.
  3. 선택 방법: 사용자에게 token 단위로 표시되는 콘텐츠(채팅, 에이전트 답변)에는 스트리밍을 사용하고, 프로그램이 완성된 후 처리하는 콘텐츠(스크립트, 스토리보드, 번역, 구조화된 데이터)에는 비스트리밍을 사용합니다.

필터링이 발생하는 두 지점

공급자의 콘텐츠 안전 필터는 두 지점에서 개입할 수 있으며, 두 경우 모두 스트리밍 모드에서 확인할 수 있습니다. 두 경우 모두 HTTP 상태 코드는 200이며, 스트림은 data: [DONE]으로 정상 종료됩니다. HTTP 오류 로그에는 아무것도 나타나지 않으며, 스트림의 마지막 이벤트를 통해서만 무슨 일이 발생했는지 확인할 수 있습니다.

스트리밍과 비스트리밍 비교

비스트리밍 요청에 대한 자동 페일오버는 성공률을 크게 높이지만 100%는 아닙니다. 제공업체의 사용 정책을 명확하게 위반하는 콘텐츠는 다른 경로에서도 모델 자체에 의해 거부될 수 있습니다. 해당 응답 형식은 OpenAI 모델 거부 응답은 어떻게 표시됩니까?를 참조하십시오.

테스트 결과

2026-09-25 (UTC+8)에 동일한 매개변수(max_tokens=35000, temperature=0, reasoning_effort=high)를 사용하여 두 모드에서 동일한 영화 스토리보드 대본 세트를 gpt-5.6-terra에 전송했습니다. 동일한 콘텐츠를 스트리밍 모드에서 재시도해도 결과는 본질적으로 동일합니다. 필터링이 작동하는지는 주로 운이 아니라 콘텐츠에 따라 결정됩니다.

잘린 stream은 어떻게 표시되는가

choices를 포함하는 마지막 이벤트에는 콘텐츠가 없고 종료 이유만 있습니다:
생성 단계에서 출력이 중단되면 줄바꿈 없이 조합된 텍스트 끝에 영어 거부 메시지가 바로 추가됩니다. 예를 들어 중국어 스토리보드가 문장 중간에서 끝난 직후 I'm sorry, but I cannot assist with that request.가 이어집니다.이 텍스트를 변경하지 않고 계속 요청에 전달하면 모델은 컨텍스트에서 거부 메시지를 보게 되므로 다시 차단될 가능성이 높아집니다. 계속 진행하기 전에 해당 문장을 제거하십시오.

선택 방법

스트리밍 사용

  • 사용자가 즉시 출력을 확인해야 하는 채팅, 고객 지원 및 에이전트 응답
  • 사용자가 생성 도중 중지할 수 있는 시나리오
  • 일상적인 대화에서는 콘텐츠 필터링이 발생하는 경우가 드물므로 스트리밍 경험이 더 중요합니다

비스트리밍 사용

  • 스크립트, 스토리보드, 소설 챕터 및 기타 장문의 창작 글쓰기
  • 일괄 번역, 정보 추출, 구조화된 JSON
  • 사용자에게 표시하기 전에 구문 분석하고 저장하는 결과
  • 민감한 줄거리 내용(싸움, 부상, 범죄)을 다룰 가능성이 있는 콘텐츠
하나의 제품에서 둘 다 사용할 수 있습니다. 채팅은 스트리밍하고, 스크립트나 스토리보드는 비스트리밍으로 생성하면 됩니다. 후자의 경우 stream을 false로 설정하고 나머지는 모두 그대로 두면 됩니다. 비스트리밍 요청은 전체 응답이 생성된 후에만 반환됩니다. 추론 모델의 긴 출력은 30~100초 이상 걸릴 수 있으므로 이러한 요청의 클라이언트 타임아웃을 최소 300초로 설정해야 합니다. 자세한 내용은 API 타임아웃을 방지하려면 어떻게 해야 하나요?를 참조하십시오. UI에서 진행 상황을 표시해야 한다면 “생성 중” 상태를 표시하고, 생성이 완료되면 결과를 표시하십시오.

스트리밍해야 하는 경우

1

스트림을 읽는 동안 finish_reason을 기록합니다

choices를 포함하는 마지막 이벤트에서 finish_reason가 content_filter이면 응답이 필터링된 것입니다. HTTP 상태 코드에 의존하지 마십시오.
2

끝에 추가된 거부 메시지를 제거합니다

생성 단계에서 출력이 잘리면 텍스트가 영어 거부 메시지로 끝납니다. 부분 출력으로 무엇을 할지 결정하기 전에 이를 제거하십시오.
3

스트리밍 없이 재시도합니다

잘린 부분을 비스트리밍 요청으로 다시 전송하면 플랫폼이 자동으로 경로를 전환할 수 있습니다. 이는 스트리밍을 계속하는 것보다 훨씬 더 자주 성공합니다.
4

계속 차단되면 바꾸어 표현합니다

동일한 작업에 대한 비스트리밍 요청도 실패하면 민감한 세부 정보를 더 일반적인 용어로 설명한 후 다시 시도하십시오. 동일한 내용을 변경 없이 다시 전송하지 마십시오.
다음은 스트림을 읽고, 필터링되었을 때 거부 메시지를 제거한 다음 스트리밍 없이 재시도하는 최소 예제입니다.
이 예제는 스트리밍 없이 전체 응답을 간단히 다시 생성하며, 이것이 가장 쉬운 접근 방식입니다. 워크플로에서 부분 출력을 유지해야 하는 경우 partial를 컨텍스트로 전달하고 모델에 계속 생성하도록 요청하십시오. 단, 해당 연속 생성 요청도 스트리밍 없이 전송해야 합니다.

FAQ

예. 공급자가 해당 콘텐츠를 실제로 생성했으므로 실제 입력 및 출력 token에 대해 과금됩니다. 필터링을 유발하기 쉬운 콘텐츠의 경우 비스트리밍이 더 저렴합니다. 성공한 시도에 대해서만 과금되기 때문입니다.
아니요. 필터링은 공급자가 적용하므로 APIYI에서 이를 해제하거나 엄격도를 변경할 수 없습니다. 플랫폼에서 할 수 있는 작업은 필터링된 비스트리밍 요청을 다른 공식 경로로 재시도하는 것입니다.
공식 경로마다 필터링 엄격도가 다소 다르고 모델도 매번 출력을 다른 방식으로 표현하므로, 경계선상의 콘텐츠가 한 번은 통과하고 다음에는 잘릴 수 있습니다. 명백히 민감한 콘텐츠는 일관되게 차단됩니다.
생성 단계에서의 중단은 콘텐츠가 이미 전송된 후에 발생하며, 클라이언트는 이미 첫 번째 절반을 수신하고 표시한 상태입니다. 이 시점에 다른 경로에서 처음부터 다시 생성하면 이미 표시된 내용과 일치하지 않습니다. 따라서 스트리밍 요청은 클라이언트에서 content_filter을 확인한 후 처리해야 합니다.

관련 문서

OpenAI 모델 거부는 어떤 형태입니까?

모델 자체가 거부할 때의 응답 형식 및 감지

스트리밍 호출과 비스트리밍 호출 비교

두 모드의 통합, 과금 및 일반적인 오해

API 시간 초과를 방지하려면 어떻게 해야 합니까?

장시간 비스트리밍 출력에 대한 시간 초과 설정

콘텐츠 안전 및 규정 준수

플랫폼 콘텐츠 안전 및 규정 준수 정책