Les deux utilisent minimal/low/medium/high/xhigh/max ; pensée active même sans réglage ; none renvoie 400
max_completion_tokens
Budget partagé entre pensée et réponse visible ; ancien alias max_tokens accepté, pas max_output_tokens de Responses
temperature/top_p
Plages 0~2, (0,1], défaut commun 1. Garder les défauts ou ne régler qu’un seul ; top_p: 0 renvoie 400
n
Uniquement 1 ; au-dessus de 1, renvoie 400
Réglages incompatibles
stop, verbosity, logit_bias, prediction, modalities, audio, web_search_options non pris en charge ; pas de reprise des exemples généraux
Pénalités et Logprobs
frequency_penalty/presence_penalty non pris en charge, erreur possible ; logprobs: true renvoie 400
tool_choice
Uniquement auto ; none, required, fonction nommée : 400. Un seul point autorisé dans un nom de fonction
reasoning_content
L’API externe native ne renvoie pas la pensée originale lisible ; ne pas compter sur ce champ pour la conserver. Utiliser Responses ou Messages
strict
Outils et sortie structurée : défaut false. Si activé, chaque objet exige additionalProperties: false et toutes ses propriétés dans required ; racine objet simple, sans oneOf/allOf
Obligatoire, minimum 1. Prévoir pensée et réponse ; pas le nom ni minimum Responses
thinking/output_config.effort
Préférer thinking.type: adaptive avec low/medium/high/xhigh/max ; ni minimal ni disabled ne désactive la pensée
thinking.budget_tokens
Ancien enabled accepté mais sans correspondance de niveau ; budget au moins 1024 et inférieur à max_tokens. Régler la profondeur avec output_config.effort
thinking.display
summarized renvoie un résumé, omitted garde seulement la pensée chiffrée ; rejouer les blocs inchangés, surtout redacted_thinking
temperature
Plage 0~1, différente de Chat / Responses ; généralement omettre l’échantillonnage
Champs incompatibles
top_k, stop_sequences, inference_geo explicitement non pris en charge et refusés
tool_choice
Accepte auto/any/none, pas {type: "tool"} pour un outil nommé ; disable_parallel_tool_use: true limite le parallélisme
output_config.format
Sortie structurée via {type: "json_schema", schema: ...} ; citations.enabled: true du bloc document non accepté
Recherche et historique
Recherche via web_search ; allowed_domains/blocked_domains/max_uses renvoie 400. Messages natif ne sauvegarde rien ; renvoyer messages et résultats à chaque tour, sans équivalent de previous_response_id
Identifiant facultatif Chat / Responses, groupé par préfixe partagé ; ne pas le rendre différent par utilisateur ou requête, ce qui disperse le routage
prompt_cache_retention
Responses utilise in_memory/24h comme indication de conservation, gérée au serveur ; ne pas copier les nouveaux champs OpenAI ni déprécier ce réglage
cache_control
Messages accepte les marqueurs à la racine, dans les blocs et outils ; ttl limité à 5m, pas 1h de Claude
Utilisation du cache
Chat : usage.prompt_tokens_details.cached_tokens, Responses : usage.input_tokens_details.cached_tokens, Messages : usage.cache_read_input_tokens ; identifiant seul ne prouve pas le hit
Chat : image_url.url ; Responses : input_image avec image_url chaîne. URL publiques et Base64, références natives issues du service Files correspondant
Vidéo
input_video
Responses : video_url ou file_id, ou input_file pour vidéo téléversée ; Chat : bloc video_url. Structures distinctes
Audio
input_audio
Chat / Responses : Base64 brut dans input_audio.data, format dans input_audio.format. Responses accepte aussi audio_url Base64 Data URL ou file_id natif
PDF
file
Chat : file.file_data/file_id, Responses : input_file, Messages : document ; pas les champs d’image
Média
image/video
Messages : sources base64/url/file dans source ; video est une extension Meta
Limite
Description
Image
Image en ligne : maximum 50 MB (50000000 octets), au plus 50 par requête, sous limites du corps et contexte. Images dans user
Audio Spark 1.3
Compréhension audio incomplète ; qualité potentiellement réduite avec audio
Sortie
Texte seulement sur les deux modèles ; entrée image, audio ou vidéo ne signifie pas génération multimédia
Remplacez MODEL_ID par l’ID complet. Groupez les clés de cache par préfixe partagé de l’application ; trois exemples à faible effort avec budget explicite.