mirror of
https://github.com/openai/codex.git
synced 2026-10-18 17:18:52 +00:00
Add recovery guidance to content-filter retries (#49119)
## Why Responses stopped by `content_filter` previously followed generic stream-error retry handling without guidance about the block. Retried requests need instructions to explain the limitation and offer a permitted alternative. ## What changed - Recognize content-filter failures as a distinct error while preserving retryability and the existing public error representation. - Append developer guidance to the conversation after each sampling block, retaining delivered output and using the existing retry handling. - Support a model catalog override through `model_messages.content_filter_guidance`. Missing, null, blank, or values exceeding 512 UTF-8 bytes fall back to bundled guidance. - The bundled guidance tells the model to avoid reproducing or working around blocked content, briefly explain the limitation, offer a permitted alternative, and continue unrelated authorized work. ## Testing Add a scenario and request-history snapshot covering repeated blocks, catalog guidance on each retry, retained partial output, and eventual completion. Add error-mapping assertions for retryability, public error classification, and error text. GitOrigin-RevId: ba0c201b3a5a3acf5cfa971332027240e0690225
This commit is contained in:
@@ -2429,7 +2429,8 @@ fn websocket_error_detail(err: &ApiError) -> String {
|
||||
format!("handshake API error: {status} {message}")
|
||||
}
|
||||
ApiError::Stream(message) => format!("handshake stream error: {message}"),
|
||||
ApiError::ContextWindowExceeded
|
||||
ApiError::ContentFilter
|
||||
| ApiError::ContextWindowExceeded
|
||||
| ApiError::QuotaExceeded
|
||||
| ApiError::UsageNotIncluded
|
||||
| ApiError::Retryable { .. }
|
||||
|
||||
Reference in New Issue
Block a user