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

지시 불일치 모니터링

중단된 대화와 프로젝트 안전 알림에 대응하세요.

지시 불일치 모니터링은 민감한 데이터에 접근하거나 이를 전송하는 작업, 파괴적인 변경을 수행하는 작업 등 영향이 큰 상황에서 에이전트가 사용자의 지시를 올바르게 해석하는지 확인합니다. 모델의 추론과 행동을 비동기적으로 검토하며, 잠재적인 문제를 감지하면 대화를 중단할 수 있습니다.

검토 대상으로 표시되었다는 것은 에이전트의 행동을 살펴봐야 한다는 뜻입니다. 이 표시만으로 사용자가 정책을 위반했거나 에이전트가 지시를 어겼다고 판단할 수는 없습니다. 모니터링은 문제를 놓치거나 정당한 활동을 검토 대상으로 표시할 수 있습니다. 따라서 영향이 큰 작업에는 사람의 승인을 받는 등 애플리케이션 보호 조치를 계속 적용하세요.

자세한 내용은 도움말 센터의 지시 불일치 모니터링 개요를 참고하세요.

요청별 적용 범위

이 시스템의 적용 대상인 모델에서는 요청에 사용하는 API와 대화 컨텍스트를 보존하는 방식에 따라 모니터링 및 자동 중단 여부가 달라집니다.

요청 동작
저장된 추론, WebSocket 또는 OpenAI 컨텍스트 압축을 사용하는 Responses API 요청 모니터링합니다. 시스템은 같은 대화를 이어가는 요청을 식별하고 추가 실행을 차단할 수 있습니다.
위 방식을 하나도 사용하지 않는 Responses API 요청 모니터링합니다. 웹훅을 설정하면 알림을 받을 수 있지만 시스템이 대화를 자동으로 중단하지는 않습니다.
Chat Completions API 요청 이 모니터링 시스템의 적용 범위에 포함되지 않습니다. 다른 안전 검사는 계속 적용됩니다.

대화 컨텍스트를 관리하는 방법은 호출 간 추론 보존, WebSocket 모드, 컨텍스트 압축을 참고하세요. 알림 웹훅을 설정해도 자동 중단 기능이 활성화되지는 않습니다.

중단된 요청 처리하기

스트리밍이 시작되기 전에 지시 불일치 모니터링이 요청을 차단하면 API는 HTTP 403을 반환합니다. 오류 유형은 invalid_request_error이고 오류 코드는 misalignment_policy_violation입니다. 오류를 식별할 때는 메시지 문구 대신 오류 코드를 확인하세요. 스트리밍을 사용하는 애플리케이션에서는 이미 일부 출력을 받았더라도 스트림을 읽는 도중에 발생하는 오류를 처리해야 합니다.

애플리케이션에서 이 오류를 받으면 다음과 같이 대응하세요.

  1. 해당 대화에서는 더 이상 작업 실행을 요청하지 마세요. 차단된 워크플로우를 자동으로 재시도하지 마세요.
  2. 데이터 처리 정책에 따라 관련 요청 및 응답 ID, 도구 호출 내역, 애플리케이션 기록을 보존하세요.
  3. 작업을 담당하는 사용자 또는 운영자에게 확인 가능한 오류 정보를 보여 주세요. 에이전트의 행동이 원래 의도한 작업과 일치하는지 확인하고 이미 이루어진 변경 사항을 검토하도록 안내하세요.

API는 지시 불일치 모니터링으로 중단된 대화를 재개하는 일반적인 방법을 제공하지 않습니다.

모니터링은 비동기적으로 이루어지므로 문제가 감지되기 전에 작업이 이미 완료되었을 수 있습니다. 요청이 중단되어도 이전 작업이 취소되지는 않습니다.

프로젝트 안전 알림 받기

safety.alert.created 이벤트를 구독하면 API 프로젝트의 모니터링 알림을 팀에서 운영하는 시스템으로 보낼 수 있습니다. 알림을 받더라도 API 요청에서 발생하는 오류는 별도로 처리해야 합니다.

알림을 받을 프로젝트마다 웹훅 엔드포인트 만들기의 안내를 따르세요. 서명 검증과 수신 확인, 재시도 및 중복 전송 처리 방법은 웹훅 가이드를 참고하세요.

웹훅에는 알림의 세부 정보 대신 알림 ID가 포함됩니다.

{
  "object": "event",
  "id": "evt_123",
  "type": "safety.alert.created",
  "created_at": 1787659200,
  "data": {
    "id": "alert_0123456789abcdef0123456789abcdef"
  }
}

웹훅을 검증하고 수신 확인 응답을 보낸 후 백그라운드에서 알림을 조회하세요. 예시 값 alert_0123456789abcdef0123456789abcdef를 웹훅의 data.id 값으로 바꾸세요. 이벤트의 id는 웹훅 이벤트 자체를 식별하는 값입니다. 해당 알림이 발생한 프로젝트에서 api.safety.alerts.read 권한이 부여된 API 키를 사용하세요.

curl "https://api.openai.com/v1/safety/alerts/alert_0123456789abcdef0123456789abcdef" \
  -H "Authorization: Bearer ${OPENAI_API_KEY}"
프로젝트 안전 알림 조회하기
# Replace the illustrative IDs and URLs below with your own resource values.

from openai import OpenAI

client = OpenAI()
alert = client.safety.alerts.retrieve("alert_0123456789abcdef0123456789abcdef")
print(alert.error_type, alert.reason)

반환된 request_id와 response_id를 사용해 애플리케이션 기록에서 해당 작업을 찾으세요. 알림의 범주는 어떤 문제를 조사해야 하는지 알려 줍니다. request_paused 값이 true이면 안전을 위한 차단 조치가 시스템에 등록되었다는 뜻입니다. 이 값만으로 실행이 실제로 중단되었거나 이전 작업이 취소되었다고 단정할 수는 없습니다. 애플리케이션의 작업 상태와 도구 호출 기록을 확인하세요.

알림의 reason 값은 null일 수 있으며, 데이터 비보관(ZDR)이 적용되는 요청도 여기에 포함됩니다. 값이 있는 경우 reason은 알림 범주에 대한 설명만 제공합니다. 대화 내용이나 전체 조사 보고서는 포함하지 않습니다. 조직의 데이터 정책에 따라 필요한 기록을 보관하세요. API 데이터 관리 옵션은 데이터 관리를 참고하세요.

조회 시 404와 오류 코드 safety_alert_not_found가 반환되면 알림 ID와 프로젝트 인증 정보를 확인하세요. 기록이 없거나, 기록에 접근할 수 없거나, 기록이 불완전한 경우 이 오류가 발생할 수 있습니다. 알림 수신 및 조회만으로는 전체 감사 이력을 확인할 수 없습니다.