moderation: low가 아무 작업도 하지 않는지, 그리고 약 20회의 호출로 트리거 단어를 찾아내는 방법을 설명합니다.
사례: 웹 앱에서는 렌더링되지만 API에서는 성적인 콘텐츠를 반환함
한 고객이gpt-image-2.5-sunburst을 사용하여 캐릭터 시트를 생성했습니다(왼쪽에는 얼굴 클로즈업, 오른쪽에는 정면 / 측면 / 후면 턴어라운드). 요청 내용은 다음과 같습니다.
콘텐츠 안전 정책 때문이라는 점은 이해하지만, 같은 내용이 ChatGPT 웹 앱에서는 작동합니다. 웹 앱에서는 통과되는 이유를 설명해 주셔야 합니다.프롬프트에는 명시적인 내용이 없습니다. 그저 “화려한 여성 + 턴어라운드 + 흰색 배경”일 뿐입니다. “나쁜 내용을 작성하지 않았는데 차단되었습니다”라는 유형의 티켓은 “나쁜 내용을 작성했더니 차단되었습니다”라는 유형과는 전혀 다른 접근이 필요합니다.
먼저: 어느 계층에서 차단되고 있습니까?
이미지 모델에는 두 가지 안전 게이트가 있습니다. 두 게이트는 서로 다르게 실패하며, 디버깅 방법도 서로 다릅니다.
지연 시간이 단서입니다. 이 경우 실패한 호출에는 42
프롬프트 수준 차단은 매개변수 오류와 거의 같은 속도로 반환됩니다. 400 응답이 30초 이상 지난 후 도착했다면 먼저 출력 이미지 차단으로 간주하고, 아직 단어를 삭제하기 시작하지 마십시오.
웹 앱이 통과하는 이유
이는 만족스러운 이미지를 얻는 방법에서 설명한 것과 같은 요점입니다. 웹 앱은 에이전트이고, API는 단일 원자적 호출입니다.- ChatGPT 웹 앱은 사용자의 텍스트를 이미지 모델에 그대로 전달하지 않습니다. 먼저 채팅 모델이 프롬프트를 재작성하고 확장하며, 대개 의상, 설정, 조명도 자체적으로 추가합니다. 아래에서 설명하는 사용자를 대신한 정확한 “의상 추가” 단계입니다.
- API는 사용자의 프롬프트를 있는 그대로 전송합니다. 사용자는 그녀가 무엇을 입는지 말하지 않았으므로 모델이 결정합니다. “화려한 분위기 + 전신 턴어라운드 + 흰색 배경”이라는 조건에서는 몸에 꼭 붙거나 최소한의 의상으로 기우는 경향이 있으며, 이는 캐릭터 시트에서 흔히 보이는 모습이고 렌더링 결과가 허용 범위를 넘게 됩니다.
- 여기에 출력 측 콘텐츠 조정의 무작위성까지 더해지면, “웹 앱에서는 한 번 통과했고 API에서는 한 번 실패했다”는 결과는 모순이 아닙니다.
단어 절제: 한 번에 한 가지만 변경합니다
이와 같은 prompt에는 수십 개의 형용사와 레이아웃 제약 조건이 포함되어 있습니다. 어느 항목이 원인인지 추측하는 것은 느립니다. 효과적인 접근 방식은 절제입니다. 변형마다 정확히 하나의 단어 블록만 제거하거나 교체하고, 나머지는 바이트 단위로 동일하게 유지한 다음, 어떤 변형에서 결과가 바뀌는지 확인합니다.1
의심되는 단어 블록을 나열합니다
세 가지 범주가 있습니다. 캐릭터 형용사(glamorous, sexy, alluring 등), 신체 관련 동사(reveal, show, form-fitting 등), 레이아웃 제약 조건(full body, turnaround, white background 등)입니다. 레이아웃 제약 조건은 단독으로는 무해해 보이지만 형용사와 결합됩니다.
2
변형마다 정확히 하나의 블록만 변경합니다
해당 블록을 삭제하거나 중립적인 단어로 교체하고, 나머지는 그대로 유지합니다. 또한 단어는 변경하지 않고 제약 조건만 추가하는 변형도 실행합니다. 예를 들어 캐릭터의 의상을 명시적으로 지정할 수 있습니다.
3
결과가 바뀐 항목은 2~3회 다시 실행합니다
출력 측 블록은 확률적이므로 한 번의 실행만으로는 아무것도 입증되지 않습니다. 성공한 변형을 최소 두 번 더 다시 실행하고, 모든 실행이 통과한 경우에만 결과로 인정합니다.
4
가장 작은 편집을 선택합니다
목표는 “통과한다”가 아니라 “의도의 변경을 최소화하면서 통과한다”입니다. 원래 단어를 유지하고 제약 조건만 추가하는 변형을 우선 선택합니다.
표에서 세 가지 사실을 바로 도출할 수 있습니다. 트리거는 “glamorous”입니다(“mature-looking”을 제거해도 달라지는 것이 없고, “glamorous”를 제거하면 통과합니다). “reveal”은 원인이 아닙니다. 또한 1회 실행에서 통과하고 2회 거부된 “refined features” 행은 분류기가 매번 다른 렌더링 결과를 판단하고 있으며 텍스트를 판단하는 것이 아님을 보여줍니다.
결론 및 권장 수정
메커니즘: “glamorous”는 모델이 관능적인 렌더링을 생성하도록 유도하며, “full-body turnaround + white background”는 전형적인 캐릭터 시트 레이아웃입니다. 이 두 요소가 함께 작용하면 출력 측 분류기가 성적인 콘텐츠로 표시하는 렌더링이 생성됩니다. prompt의 단어 중 그 자체로 위반에 해당하는 단어는 하나도 없습니다. 권장 수정: 전체 원본 prompt를 그대로 유지하고 캐릭터 설명 바로 뒤에 의상을 명시하는 문구 하나를 추가합니다. 이 방법은 3회 중 3회 통과했으며, 고객이 원한 외형과 레이아웃을 모두 유지했습니다.
Same prompt with one clothing phrase added: 3 of 3 calls passed, with the face close-up and the front / side / back turnaround all delivered
완화 수준: 낮음이 도움이 되지 않은 이유
moderation 매개변수(텍스트-이미지 매개변수 표 참조)는 auto / low를 허용하며 프롬프트 측 moderation의 엄격도를 낮춥니다. 여기에서 low를 전달해도 여전히 400이 반환된 이유는 차단이 출력 측에서 발생하기 때문이며, 이 매개변수는 출력 측을 제어하지 않습니다.
게이트웨이 외부에서는 “매개변수가 전달되지 않았는지”와 “전달되었지만 효과가 없었는지”를 구분할 수 없지만, 어느 경우든 결론은 같습니다. 출력 측 차단의 경우 매개변수를 변경해도 아무런 효과가 없으므로 프롬프트를 변경해야 합니다.
일반 체크리스트
오류가 즉시 다시 발생했습니까, 아니면 오래 기다린 후에 발생했습니까?
오류가 즉시 다시 발생했습니까, 아니면 오래 기다린 후에 발생했습니까?
즉시는 프롬프트 수준을 의미하며, 일반적인 렌더링과 비슷한 정도로 기다렸다면 출력 수준을 의미합니다. 전자의 경우 명백하게 규정을 위반하는 단어를 제거합니다. 후자의 경우 어떤 단어가 렌더링을 기준 초과로 만드는지 확인하기 위해 단어 제거 실험을 수행하고, 동일한 프롬프트에서도 어느 정도 무작위성이 발생할 수 있음을 예상해야 합니다.
의상을 모델에 맡겼습니까?
의상을 모델에 맡겼습니까?
분위기는 설명하지만 의상은 설명하지 않는 캐릭터 프롬프트가 출력 측 차단의 가장 일반적인 원인입니다. 명시적인 의상 문구를 하나 추가하면 원래 의도를 건드리지 않고도 대개 한 단계 만에 문제가 해결됩니다.
한 번에 단어 하나만 변경했습니까?
한 번에 단어 하나만 변경했습니까?
한 번에 단어 세 개를 변경하면 어떤 단어가 영향을 미쳤는지 알 수 없으므로 다음 프롬프트를 처음부터 다시 시작해야 합니다. 변형 하나당 한 번씩 차단을 확인한 다음, 가장 좋은 변형은 2~3회 다시 실행합니다.
차단된 요청에도 과금됩니까?
차단된 요청에도 과금됩니까?
token 기준으로 과금되는 gpt-image 모델은 moderation에서 400을 반환할 때 과금되지 않습니다. 실패한 생성에 대한 내용은 gpt-image-2 자주 묻는 질문 항목을 참조하십시오. 따라서 제거 실험에는 비용이 들지 않고 시간이 소요됩니다.
빠른 참조
- 지연 시간으로 계층을 확인합니다: 즉시 발생하는 400 오류는 프롬프트 수준의 문제이고, 렌더링에 걸린 시간만큼 소요된 400 오류는 이미지 거부를 수행하는 출력 측 분류기 때문입니다.
- 출력 측 차단은 확률적입니다: 동일한 프롬프트가 통과할 때도 있고 실패할 때도 있으므로, 한 번의 결과만으로는 아무것도 입증할 수 없습니다. 2~3회 다시 실행합니다.
- 웹 앱에서 통과한다고 해서 API가 더 엄격한 것은 아닙니다: 웹 앱은 프롬프트를 다시 작성하고 확장하여 의상과 배경을 추가하지만, API는 프롬프트를 있는 그대로 전송합니다.
- 단어 절제: 변형마다 한 블록씩 변경하고, 변형을 병렬로 실행하며, 의도의 변화가 가장 적은 편집을 유지합니다. 여기서 트리거는 “화려한”이었습니다.
- 캐릭터 프롬프트에서 의상을 구체적으로 작성합니다: 다른 모든 내용을 그대로 둔 채 의상 문구 하나를 추가하자 3회 중 3회 통과했으며,
moderation: low는 출력 측 차단에 아무런 효과가 없습니다.