Comment utiliser l'API GPT-5.4

Ashley Innocent

Ashley Innocent

6 March 2026

Comment utiliser l'API GPT-5.4

Apidog pour les entreprises

Déploiement sur site

SSO & RBAC

Conforme SOC 2

Découvrir Apidog Enterprise

En Bref / Réponse Rapide

Pour utiliser l'API GPT-5.4 : Installez le SDK OpenAI (pip install openai), initialisez le client avec la clé API, appelez chat.completions.create() avec le modèle gpt-5.4. Fonctionnalités clés : utilisation de l'ordinateur (automatisation native du navigateur), recherche d'outils (réduction de 47% des jetons), fenêtre de contexte d'1M, capacités de vision. Tarification : 2,50 $/M jetons d'entrée, 15 $/M jetons de sortie. Ce guide couvre la configuration, des exemples de code, la configuration de l'utilisation de l'ordinateur, l'intégration d'outils et les meilleures pratiques de production.

Introduction

GPT-5.4 n'est pas seulement une autre mise à niveau de modèle. C'est le premier modèle à usage général d'OpenAI doté de capacités natives d'utilisation de l'ordinateur, d'une recherche d'outils efficace et de fenêtres de contexte d'1 million de jetons. L'utilisation efficace de GPT-5.4 nécessite de comprendre ces nouvelles capacités et comment les intégrer à vos flux de travail.

Ce guide fournit des exemples de code fonctionnels pour chaque fonctionnalité majeure de GPT-5.4. Vous apprendrez à implémenter l'automatisation de l'utilisation de l'ordinateur, à configurer la recherche d'outils pour les serveurs MCP, à traiter des images haute résolution, à gérer des bases de code à contexte long et à optimiser les coûts pour les déploiements en production.

Que vous construisiez des agents IA, automatisiez des flux de travail de navigateur ou intégriez GPT-5.4 dans des applications existantes, ce guide vous fournit les détails d'implémentation dont vous avez besoin.

💡
Lors de l'intégration de GPT-5.4 dans des applications, utilisez Apidog pour concevoir, tester et documenter vos points d'extrémité API. La plateforme unifiée d'Apidog vous aide à déboguer les requêtes API, à créer des suites de tests automatisées, à simuler des réponses pendant le développement et à générer de la documentation pour votre équipe. Ceci est particulièrement précieux lors de la création de fonctionnalités basées sur l'IA qui combinent GPT-5.4 avec d'autres services.
button

Démarrage Rapide : Votre Première Requête GPT-5.4

Soyez opérationnel avec GPT-5.4 en moins de 5 minutes. Avant d'écrire du code, testez vos requêtes API GPT-5.4 dans Apidog :

  1. Créez une nouvelle requête HTTP avec POST vers https://api.openai.com/v1/chat/completions
  2. Ajoutez l'en-tête d'autorisation : Bearer YOUR_API_KEY
  3. Définissez le corps de la requête avec le modèle, les messages et les paramètres
  4. Envoyez et inspectez la réponse
  5. Enregistrez dans une collection pour des tests répétés
  6. Utilisez des variables d'environnement pour basculer entre les clés API
Apidog GPT-5.4 Quick Start
Cette approche visuelle accélère les tests initiaux et vous aide à comprendre la structure de l'API avant de l'implémenter dans le code.

Prérequis

Démarrage Rapide Python

from openai import OpenAI
import os

# Initialize client
client = OpenAI(
    api_key=os.getenv("OPENAI_API_KEY")
)

# Make request
response = client.chat.completions.create(
    model="gpt-5.4",
    messages=[
        {"role": "system", "content": "You are a helpful coding assistant."},
        {"role": "user", "content": "Write a Python function to sort a list of dictionaries by a key."}
    ]
)

print(response.choices[0].message.content)

Démarrage Rapide Node.js

const OpenAI = require('openai');

const client = new OpenAI({
    apiKey: process.env.OPENAI_API_KEY
});

async function main() {
    const response = await client.chat.completions.create({
        model: 'gpt-5.4',
        messages: [
            { role: 'system', content: 'You are a helpful coding assistant.' },
            { role: 'user', content: 'Write a Python function to sort a list of dictionaries by a key.' }
        ]
    });

    console.log(response.choices[0].message.content);
}

main();

Sortie Attendue

def sort_dicts_by_key(dict_list, key, reverse=False):
    """
    Sort a list of dictionaries by a specified key.

    Args:
        dict_list: List of dictionaries to sort
        key: The dictionary key to sort by
        reverse: If True, sort in descending order

    Returns:
        Sorted list of dictionaries
    """
    return sorted(dict_list, key=lambda x: x.get(key, ''), reverse=reverse)

# Example usage
data = [
    {'name': 'Alice', 'age': 30},
    {'name': 'Bob', 'age': 25},
    {'name': 'Charlie', 'age': 35}
]

sorted_by_age = sort_dicts_by_key(data, 'age')
print(sorted_by_age)
# [{'name': 'Bob', 'age': 25}, {'name': 'Alice', 'age': 30}, {'name': 'Charlie', 'age': 35}]

Comprendre les Capacités de GPT-5.4

GPT-5.4 excelle dans quatre domaines clés. Comprendre cela vous aide à choisir la bonne approche pour chaque cas d'utilisation.

1. Travail Intellectuel (Taux de réussite GDPval de 83%)

Idéal pour :

Knowledge Work Capabilities of GPT-5.4

2. Utilisation de l'ordinateur (75% Vérifié OSWorld)

Idéal pour :

Computer Use Capabilities of GPT-5.4

3. Codage (57.7% SWE-Bench Pro)

Idéal pour :

Coding Capabilities of GPT-5.4

4. Intégration d'Outils (54.6% Toolathlon)

Idéal pour :

Tool Integration Capabilities of GPT-5.4

API d'Utilisation de l'Ordinateur

Les capacités natives d'utilisation de l'ordinateur de GPT-5.4 représentent le plus grand bond en avant de cette version. Le modèle peut faire fonctionner des ordinateurs via des captures d'écran, des commandes de souris et des entrées clavier.

GPT-5.4 Computer Use Workflow
Lors de la création d'applications avec des capacités d'utilisation de l'ordinateur, testez chaque étape du flux de travail dans Apidog :

Comment fonctionne l'Utilisation de l'Ordinateur

Le flux de travail d'utilisation de l'ordinateur utilise l'outil computer dans les requêtes API. Le modèle :

  1. Reçoit des captures d'écran de l'état actuel de l'écran
  2. Analyse les éléments de l'interface utilisateur et détermine les actions
  3. Retourne des commandes informatiques (clic, saisie, défilement, etc.)
  4. Votre application exécute les commandes et capture de nouvelles captures d'écran
  5. La boucle continue jusqu'à l'achèvement de la tâche

Configuration de Base de l'Utilisation de l'Ordinateur

from openai import OpenAI
import base64

client = OpenAI()

def take_screenshot():
    """Capture current screen state - implement for your platform."""
    # Use pyautogui, PIL, or platform-specific screenshot
    import pyautogui
    screenshot = pyautogui.screenshot()
    import io
    buffer = io.BytesIO()
    screenshot.save(buffer, format='PNG')
    return base64.b64encode(buffer.getvalue()).decode('utf-8')

def execute_computer_command(command):
    """Execute computer command - implement based on command type."""
    import pyautogui

    action = command.get('action')

    if action == 'click':
        x, y = command.get('coordinate', [0, 0])
        pyautogui.click(x, y)
    elif action == 'type':
        text = command.get('text', '')
        pyautogui.write(text, interval=0.05)
    elif action == 'scroll':
        amount = command.get('scroll_amount', 0)
        pyautogui.scroll(amount)
    elif action == 'keypress':
        key = command.get('key', '')
        pyautogui.press(key)

    # Return new screenshot after action
    return take_screenshot()

# Computer use conversation
messages = [{
    "role": "user",
    "content": [
        {
            "type": "text",
            "text": "Navigate to gmail.com and log in with the credentials I provided."
        },
        {
            "type": "image_url",
            "image_url": {
                "url": f"data:image/png;base64,{take_screenshot()}"
            }
        }
    ]
}]

# Request with computer tool
response = client.chat.completions.create(
    model="gpt-5.4",
    messages=messages,
    tools=[{
        "type": "computer",
        "display_width": 1920,
        "display_height": 1080,
        "display_number": 1
    }],
    tool_choice="required"
)

# Parse and execute computer commands
for tool_call in response.choices[0].message.tool_calls:
    if tool_call.type == "computer":
        command = tool_call.function.arguments
        new_screenshot = execute_computer_command(command)

        # Continue conversation with new screenshot
        messages.append({
            "role": "assistant",
            "content": response.choices[0].message.content
        })
        messages.append({
            "role": "user",
            "content": [{
                "type": "image_url",
                "image_url": {"url": f"data:image/png;base64,{new_screenshot}"}
            }]
        })

Politiques de Sécurité pour l'Utilisation de l'Ordinateur

Configurez le comportement de sécurité en fonction de votre tolérance au risque :

# Safe mode - requires confirmation for sensitive actions
response = client.chat.completions.create(
    model="gpt-5.4",
    messages=messages,
    tools=[{
        "type": "computer",
        "display_width": 1920,
        "display_height": 1080,
        "confirmation_policy": "always"  # or "never" or "selective"
    }],
    # Custom system message for safety
    system_message="""You are operating a computer. Follow these safety rules:
    1. Never enter credentials without explicit user confirmation
    2. Ask before deleting files or data
    3. Confirm before sending emails or messages
    4. Report any errors or unexpected states immediately
    """
)

Exemple d'Automatisation de Navigateur

Automatisez les tâches du navigateur avec l'intégration Playwright :

from playwright.sync_api import sync_playwright

def browser_automation_workflow():
    with sync_playwright() as p:
        browser = p.chromium.launch(headless=False)
        page = browser.new_page()

        # Navigate to page
        page.goto("https://example.com")

        # Get screenshot for GPT-5.4
        screenshot = page.screenshot()
        screenshot_b64 = base64.b64encode(screenshot).decode('utf-8')

        messages = [{
            "role": "user",
            "content": [
                {"type": "text", "text": "Find the login form and fill it out."},
                {"type": "image_url", "image_url": {"url": f"data:image/png;base64,{screenshot_b64}"}}
            ]
        }]

        # Get computer commands from GPT-5.4
        response = client.chat.completions.create(
            model="gpt-5.4",
            messages=messages,
            tools=[{"type": "computer"}],
            tool_choice="required"
        )

        # Parse and execute commands on browser
        for tool_call in response.choices[0].message.tool_calls:
            if tool_call.type == "computer":
                command = json.loads(tool_call.function.arguments)

                if command.get('action') == 'click':
                    x, y = command.get('coordinate', [0, 0])
                    page.mouse.click(x, y)
                elif command.get('action') == 'type':
                    page.keyboard.type(command.get('text', ''))

                # Get new screenshot and continue
                new_screenshot = page.screenshot()
                # ... continue loop

Automatisation des E-mails et du Calendrier

Exemple réel : Traiter les e-mails et planifier des événements :

def process_email_and_schedule_meeting():
    """
    Workflow: Read unread emails, extract meeting requests,
    check calendar availability, and send calendar invites.
    """

    workflow_prompt = """
    Complete this workflow:
    1. Open Gmail and find unread emails from the last 24 hours
    2. Identify any meeting requests or scheduling questions
    3. For each meeting request:
       - Extract proposed dates/times
       - Note attendees and meeting purpose
    4. Open Google Calendar and check availability
    5. Send calendar invites for confirmed meetings
    6. Reply to emails confirming the scheduled time

    Report back with a summary of what was accomplished.
    """

    # Start with inbox screenshot
    screenshot = take_screenshot()

    messages = [{
        "role": "user",
        "content": [
            {"type": "text", "text": workflow_prompt},
            {"type": "image_url", "image_url": {"url": f"data:image/png;base64,{screenshot}"}}
        ]
    }]

    # Execute multi-turn computer use workflow
    for turn in range(10):  # Limit turns to prevent infinite loops
        response = client.chat.completions.create(
            model="gpt-5.4",
            messages=messages,
            tools=[{"type": "computer"}],
            tool_choice="required"
        )

        # Check if task is complete
        if "complete" in response.choices[0].message.content.lower():
            print(f"Workflow completed in {turn + 1} turns")
            break

        # Execute computer commands and get new screenshot
        # ... (command execution logic from earlier example)

Optimisation des Performances

Résultats de Mainstay traitant 30 000 portails de taxes foncières :

Conseils d'optimisation :

  1. Utilisez des captures d'écran de haute qualité (minimum 1920x1080)
  2. Fournissez des descriptions de tâches claires et spécifiques
  3. Implémentez des limites de tours pour éviter les boucles infinies
  4. Mettez en cache les captures d'écran pour éviter les captures redondantes
  5. Utilisez des politiques de confirmation sélectives pour les flux de travail de confiance

Recherche et Intégration d'Outils

La recherche d'outils réduit l'utilisation de jetons de 47% tout en permettant de travailler avec de grands écosystèmes d'outils.

Comment fonctionne la Recherche d'Outils

Au lieu de charger toutes les définitions d'outils au préalable, le modèle reçoit une liste légère et recherche les définitions à la demande.

GPT-5.4 Tool Search Workflow

Configuration de Base de la Recherche d'Outils

# Define available tools (lightweight list)
available_tools = [
    {
        "name": "get_weather",
        "description": "Get current weather for a location"
    },
    {
        "name": "send_email",
        "description": "Send an email to a recipient"
    },
    {
        "name": "calendar_search",
        "description": "Search calendar for events"
    },
    # ... hundreds more tools
]

# Initial request - model sees tool list, not full definitions
response = client.chat.completions.create(
    model="gpt-5.4",
    messages=[
        {"role": "user", "content": "What's the weather in Tokyo and send it to my team?"}
    ],
    tools=available_tools,
    tool_choice="auto"
)

# If model wants to use a tool, it requests the definition
# Your application provides the full definition at that point

Intégration de Serveur MCP

Le benchmark MCP Atlas de Scale a montré une réduction de 47% des jetons avec la recherche d'outils.

# MCP Server with many tools
mcp_servers = [
    {
        "name": "filesystem",
        "description": "File system operations",
        "tool_count": 12
    },
    {
        "name": "database",
        "description": "Database query operations",
        "tool_count": 8
    },
    {
        "name": "web-search",
        "description": "Web search and scraping",
        "tool_count": 15
    }
    # ... 36 MCP servers in benchmark
]

# Tool search configuration
response = client.chat.completions.create(
    model="gpt-5.4",
    messages=[
        {"role": "user", "content": "Find all Python files modified today and search for TODO comments."}
    ],
    tools=mcp_servers,
    # Tool search enabled automatically when using this pattern
    parallel_tool_calls=True
)

# Model will request tool definitions as needed
# Token savings: 47% vs loading all definitions upfront

Flux de Travail Multi-Étapes de Type Toolathlon

Toolathlon teste des flux de travail d'outils multi-étapes complexes :

def grade_assignments_workflow():
    """
    Complex workflow: Read emails with attachments,
    upload to grading system, grade assignments,
    record results in spreadsheet.
    """

    workflow_steps = """
    1. Read emails from students with assignment attachments
    2. Download each attachment
    3. Upload to grading portal
    4. Grade each assignment using rubric
    5. Record grades in spreadsheet
    6. Send confirmation emails to students
    """

    tools = [
        {"name": "email_read", "description": "Read emails from inbox"},
        {"name": "email_send", "description": "Send emails"},
        {"name": "file_download", "description": "Download file attachments"},
        {"name": "file_upload", "description": "Upload files to web portal"},
        {"name": "web_form_fill", "description": "Fill and submit web forms"},
        {"name": "spreadsheet_write", "description": "Write data to spreadsheet"},
        {"name": "rubric_evaluate", "description": "Evaluate work against rubric"}
    ]

    response = client.chat.completions.create(
        model="gpt-5.4",
        messages=[
            {"role": "user", "content": workflow_steps}
        ],
        tools=tools,
        parallel_tool_calls=True  # Enable parallel tool execution
    )

    # GPT-5.4 achieves 54.6% on Toolathlon vs 45.7% for GPT-5.2
    # Key: Better tool selection and fewer turns required

Vision et Traitement d'Image

GPT-5.4 prend en charge une perception visuelle améliorée avec des détails d'image originaux jusqu'à 10,24 millions de pixels.

Niveaux de Détail de l'Image

# Original detail - highest fidelity (10.24M pixels, 6000px max dimension)
response = client.chat.completions.create(
    model="gpt-5.4",
    messages=[{
        "role": "user",
        "content": [
            {
                "type": "image_url",
                "image_url": {
                    "url": "https://example.com/high-res-image.jpg",
                    "detail": "original"  # or "high" or "low"
                }
            },
            {"type": "text", "text": "Analyze this technical diagram."}
        ]
    }]
)

# High detail - 2.56M pixels, 2048px max dimension
# Low detail - Fastest processing, lower accuracy

Exemple d'Analyse de Document

OmniDocBench : taux d'erreur de 0,109 (contre 0,140 pour GPT-5.2)

def parse_complex_document(pdf_path):
    """Parse multi-page PDF with tables and figures."""

    # Convert PDF pages to images
    from pdf2image import convert_from_path
    pages = convert_from_path(pdf_path, dpi=300)

    messages = [{"role": "user", "content": []}]

    for i, page in enumerate(pages[:5]):  # First 5 pages
        import io, base64
        buffer = io.BytesIO()
        page.save(buffer, format='PNG')
        img_b64 = base64.b64encode(buffer.getvalue()).decode()

        messages[0]["content"].append({
            "type": "image_url",
            "image_url": {
                "url": f"data:image/png;base64,{img_b64}",
                "detail": "high"
            }
        })

    messages[0]["content"].append({
        "type": "text",
        "text": """
        Extract all data from this document:
        1. Tables with row/column headers
        2. Key figures and their captions
        3. Summary statistics mentioned in text
        Return as structured JSON.
        """
    })

    response = client.chat.completions.create(
        model="gpt-5.4",
        messages=messages
    )

    return response.choices[0].message.content

Analyse de Capture d'Écran d'Interface Utilisateur

def analyze_ui_screenshot(screenshot_path):
    """Analyze UI screenshot for accessibility issues."""

    with open(screenshot_path, 'rb') as f:
        img_b64 = base64.b64encode(f.read()).decode()

    response = client.chat.completions.create(
        model="gpt-5.4",
        messages=[{
            "role": "user",
            "content": [
                {
                    "type": "image_url",
                    "image_url": {
                        "url": f"data:image/png;base64,{img_b64}",
                        "detail": "original"
                    }
                },
                {
                    "type": "text",
                    "text": """
                    Review this UI screenshot for accessibility issues:
                    1. Color contrast problems
                    2. Missing labels or alt text indicators
                    3. Keyboard navigation issues (visible focus states)
                    4. Text size and readability
                    5. Screen reader compatibility concerns

                    List issues with specific locations and severity.
                    """
                }
            ]
        }]
    )

    return response.choices[0].message.content

Flux de Travail à Contexte Long

GPT-5.4 prend en charge des fenêtres de contexte allant jusqu'à 1 million de jetons (expérimental).

Contexte Standard (272K jetons)

# Load large codebase file
with open('large_codebase.py', 'r') as f:
    code = f.read()

response = client.chat.completions.create(
    model="gpt-5.4",
    messages=[
        {"role": "system", "content": "You are a code review assistant."},
        {"role": "user", "content": f"""
        Review this codebase for:
        1. Security vulnerabilities
        2. Performance issues
        3. Code style inconsistencies
        4. Missing error handling

        Code:
        {code}
        """}
    ],
    max_tokens=4000
)

Contexte Étendu (1M jetons)

Configurez via les paramètres de l'API :

response = client.chat.completions.create(
    model="gpt-5.4",
    messages=[
        {"role": "user", "content": large_document}
    ],
    # Extended context configuration
    extra_body={
        "model_context_window": 1048576,  # 1M tokens
        "model_auto_compact_token_limit": 272000  # Auto-compact after 272K
    }
)

# Note: Requests exceeding 272K count at 2x usage rate

Analyse Multi-Documents

def analyze_multiple_documents(documents):
    """Analyze 10+ documents in single context."""

    content_parts = []

    for i, doc in enumerate(documents):
        content_parts.append(f"=== Document {i+1}: {doc['title']} ===\n")
        content_parts.append(doc['content'][:50000])  # Truncate if needed
        content_parts.append("\n\n")

    combined_content = "".join(content_parts)

    response = client.chat.completions.create(
        model="gpt-5.4",
        messages=[{
            "role": "user",
            "content": f"""
            Analyze these documents and provide:
            1. Summary of key themes across all documents
            2. Contradictions or inconsistencies between documents
            3. Action items mentioned in any document
            4. Timeline of events if applicable

            {combined_content}
            """
        }],
        max_tokens=8000
    )

    return response.choices[0].message.content

Flux de Travail de Codage et de Développement

GPT-5.4 égale GPT-5.3-Codex sur SWE-Bench Pro (57,7%) avec des capacités d'utilisation de l'ordinateur ajoutées.

Génération Frontend

def generate_frontend_component(spec):
    """Generate complete React component with styling."""

    prompt = f"""
    Create a complete React component based on this specification:

    {spec}

    Requirements:
    1. Functional component with hooks
    2. TypeScript types for all props and state
    3. Tailwind CSS for styling
    4. Responsive design (mobile, tablet, desktop)
    5. Accessibility (ARIA labels, keyboard navigation)
    6. Unit tests with Jest/React Testing Library

    Return complete code for:
    - Component file (.tsx)
    - Styles (if not Tailwind)
    - Test file (.test.tsx)
    """

    response = client.chat.completions.create(
        model="gpt-5.4",
        messages=[{"role": "user", "content": prompt}],
        max_tokens=6000
    )

    return response.choices[0].message.content

# Example: Theme park simulation (from OpenAI demo)
theme_park_spec = """
Create an interactive isometric theme park simulation game:
- Tile-based path placement
- Ride and scenery construction
- Guest pathfinding and queueing
- Park metrics (money, guests, happiness, cleanliness)
- Browser-playable with Playwright testing
- Generated isometric assets
"""

component_code = generate_frontend_component(theme_park_spec)

Débogage de Problèmes Complexes

def debug_with_full_context(error_logs, codebase_files, stack_trace):
    """Debug using full context of logs, code, and stack trace."""

    context = f"""
    ERROR LOGS:
    {error_logs}

    STACK TRACE:
    {stack_trace}

    RELEVANT CODE FILES:
    {codebase_files}

    Task: Identify the root cause and provide a fix.
    Consider:
    1. Race conditions or timing issues
    2. Memory leaks or resource exhaustion
    3. Incorrect assumptions about data flow
    4. Edge cases not handled
    5. External dependency issues

    Provide:
    1. Root cause analysis
    2. Specific code changes needed
    3. Tests to prevent regression
    """

    response = client.chat.completions.create(
        model="gpt-5.4",
        messages=[{"role": "user", "content": context}],
        max_tokens=4000
    )

    return response.choices[0].message.content

Tests Interactifs Playwright

Compétence expérimentale de Codex pour les tests de jeu de navigateur :

def playwright_interactive_debug():
    """
    Use Playwright Interactive for browser playtesting.
    GPT-5.4 can test apps while building them.
    """

    prompt = """
    Build a todo web application and test it as you build:

    1. Create HTML structure
    2. Add CSS styling
    3. Implement JavaScript functionality
    4. After each feature, use Playwright to:
       - Verify element visibility
       - Test user interactions
       - Check state persistence
       - Validate edge cases

    Report any issues found during testing and fix them.
    """

    response = client.chat.completions.create(
        model="gpt-5.4",
        messages=[{"role": "user", "content": prompt}],
        tools=[{"type": "playwright_interactive"}],
        max_tokens=8000
    )

    return response.choices[0].message.content

Diffusion des Réponses

La diffusion réduit la latence perçue pour les réponses longues.

Diffusion Python

from openai import OpenAI

client = OpenAI()

stream = client.chat.completions.create(
    model="gpt-5.4",
    messages=[{"role": "user", "content": "Write a detailed explanation of quantum computing."}],
    stream=True
)

for chunk in stream:
    if chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)

Diffusion Node.js

const stream = await client.chat.completions.create({
    model: 'gpt-5.4',
    messages: [{ role: 'user', content: 'Write a detailed explanation of quantum computing.' }],
    stream: true
});

for await (const chunk of stream) {
    if (chunk.choices[0].delta.content) {
        process.stdout.write(chunk.choices[0].delta.content);
    }
}

Diffusion avec Comptage de Jetons

def stream_with_usage(stream):
    """Track token usage while streaming."""
    total_tokens = 0

    for chunk in stream:
        if chunk.choices[0].delta.content:
            content = chunk.choices[0].delta.content
            print(content, end="", flush=True)
            total_tokens += len(content) // 4  # Rough estimate

        if chunk.usage:
            print(f"\n\nUsage: {chunk.usage.total_tokens} tokens")

    return total_tokens

Gestion des Erreurs et Logique de Réessai

Le code de production nécessite une gestion des erreurs robuste.

Gestion Complète des Erreurs

from openai import OpenAI, RateLimitError, APIError, AuthenticationError
import time

client = OpenAI()

def make_request_with_retry(messages, max_retries=3):
    """Make request with exponential backoff retry logic."""

    for attempt in range(max_retries):
        try:
            response = client.chat.completions.create(
                model="gpt-5.4",
                messages=messages,
                max_tokens=2000,
                temperature=0.7
            )
            return response

        except RateLimitError as e:
            if attempt == max_retries - 1:
                raise

            wait_time = 2 ** attempt  # 1s, 2s, 4s
            print(f"Rate limited. Waiting {wait_time}s...")
            time.sleep(wait_time)

        except APIError as e:
            if e.status_code >= 500:  # Server error, retry
                if attempt == max_retries - 1:
                    raise
                wait_time = 2 ** attempt
                time.sleep(wait_time)
            else:
                raise  # Client error, don't retry

        except AuthenticationError:
            print("Invalid API key. Check your credentials.")
            raise

        except Exception as e:
            print(f"Unexpected error: {e}")
            raise

    raise Exception("Max retries exceeded")

# Usage
try:
    response = make_request_with_retry([
        {"role": "user", "content": "Hello, GPT-5.4!"}
    ])
    print(response.choices[0].message.content)
except Exception as e:
    print(f"Request failed: {e}")

Gestion des Délais d'Attente

import httpx

# Configure timeout
client = OpenAI(
    timeout=httpx.Timeout(60.0, connect=10.0)  # 60s total, 10s connect
)

try:
    response = client.chat.completions.create(
        model="gpt-5.4",
        messages=[{"role": "user", "content": "Long-running task..."}]
    )
except httpx.TimeoutException:
    print("Request timed out. Consider using streaming or reducing complexity.")

Meilleures Pratiques de Production

Utilisation d'Apidog pour les Flux de Travail API en Production

Avant de déployer les intégrations GPT-5.4 en production, établissez des flux de travail de test et de surveillance robustes :

Pipeline de Test API :

Apidog Production API Workflow

Collaboration d'Équipe :

Modèle d'Intégration :

Stratégies d'Optimisation des Coûts

Optimisation de l'Invite

# Bad: Verbose prompt
bad_prompt = """
Hello! I hope you're doing well. I was wondering if you could possibly help me
with something. I have this code here and I'm not quite sure what it does.
Could you please explain it to me? Here's the code:
""" + code

# Good: Direct prompt
good_prompt = f"Explain what this code does:\n{code}"

# Token savings: ~50 tokens = $0.000125 per request
# At 1M requests/month: $125 savings

Contrôle de la Longueur de la Réponse

# Set max_tokens appropriately
response = client.chat.completions.create(
    model="gpt-5.4",
    messages=[{"role": "user", "content": "Summarize this article."}],
    max_tokens=200  # Don't let it ramble
)

# Use stop sequences
response = client.chat.completions.create(
    model="gpt-5.4",
    messages=[{"role": "user", "content": "List 5 items."}],
    stop=["\n\n", "6."]  # Stop after list
)

Traitement par Lots

# Use Batch API for 50% discount
from openai import OpenAI

client = OpenAI()

# Create batch file
batch_requests = []
for article in articles:
    batch_requests.append({
        "custom_id": article["id"],
        "method": "POST",
        "url": "/v1/chat/completions",
        "body": {
            "model": "gpt-5.4",
            "messages": [{"role": "user", "content": article["content"]}]
        }
    })

# Upload and process
batch_file = client.files.create(
    file=json.dumps(batch_requests),
    purpose="batch"
)

batch = client.batches.create(
    input_file_id=batch_file.id,
    endpoint="/v1/chat/completions",
    completion_window="24h"
)

# 50% cost savings for non-real-time workloads

Mise en Cache des Requêtes Répétées

import hashlib
import json

class ResponseCache:
    """Cache identical API responses."""

    def __init__(self):
        self.cache = {}

    def _get_key(self, messages):
        return hashlib.md5(json.dumps(messages).encode()).hexdigest()

    def get_or_create(self, client, messages, **kwargs):
        key = self._get_key(messages)

        if key in self.cache:
            return self.cache[key]

        response = client.chat.completions.create(
            model="gpt-5.4",
            messages=messages,
            **kwargs
        )

        self.cache[key] = response
        return response

# Usage
cache = ResponseCache()
response = cache.get_or_create(client, messages)

Conclusion

GPT-5.4 ouvre de nouvelles possibilités pour les applications basées sur l'IA. L'utilisation native de l'ordinateur permet l'automatisation du navigateur et des flux de travail inter-applications. La recherche d'outils réduit les coûts de 47% tout en prenant en charge de plus grands écosystèmes d'outils. Une vision améliorée gère l'analyse complexe de documents. Et les fenêtres de contexte d'1 million de jetons traitent des bases de code entières.

Construire des applications de production avec GPT-5.4 nécessite des flux de travail robustes de test, de débogage et de documentation d'API. Apidog fournit une plateforme unifiée pour le cycle de vie complet de l'API.

button

Que vous construisiez des agents IA, automatisiez des flux de travail ou créiez des fonctionnalités orientées client alimentées par GPT-5.4, des pratiques solides de développement API accélèrent la livraison et réduisent les bogues.

Commencez par des complétions de chat de base, puis ajoutez l'utilisation de l'ordinateur, la recherche d'outils et la vision selon les besoins de vos cas d'utilisation. Surveillez attentivement les coûts lors du déploiement initial et optimisez les invites et les stratégies de mise en cache.

FAQ

Comment utiliser la fonction d'utilisation de l'ordinateur de GPT-5.4 ?

Utilisez l'outil computer dans les requêtes API. Envoyez des captures d'écran comme images, recevez des commandes informatiques (clic, saisie, défilement) en réponse. Exécutez les commandes à l'aide de pyautogui ou Playwright, puis envoyez de nouvelles captures d'écran. Bouclez jusqu'à l'achèvement de la tâche. Configurez les politiques de sécurité en fonction de votre tolérance au risque.

Qu'est-ce que la recherche d'outils et comment l'activer ?

La recherche d'outils charge les définitions d'outils à la demande plutôt qu'au préalable, réduisant l'utilisation de jetons de 47%. Activez-la en fournissant une liste d'outils légère dans les requêtes. Le modèle demande les définitions complètes si nécessaire. Fonctionne automatiquement avec les serveurs MCP.

Comment utiliser la fenêtre de contexte d'1 million de jetons ?

Configurez via les paramètres extra_body : model_context_window: 1048576 et model_auto_compact_token_limit: 272000. Remarque : les requêtes dépassant 272K jetons sont comptées à un taux d'utilisation de 2x. Disponible expérimentalement dans Codex.

Quelle est la différence entre GPT-5.4 et GPT-5.4-Pro ?

GPT-5.4 Pro offre une plus grande précision sur les raisonnements complexes (89,3% contre 82,7% sur BrowseComp) mais coûte 12 fois plus cher (30$/180$ contre 2,50$/15$). Utilisez la version standard pour la plupart des charges de travail, Pro pour les tâches nécessitant une précision maximale.

Comment réduire les coûts de l'API GPT-5.4 ?

Utilisez des entrées mises en cache (90% d'économies), optimisez la longueur des invites, définissez des limites max_tokens, utilisez l'API Batch (50% de réduction), implémentez la mise en cache des réponses et choisissez des niveaux de détail appropriés pour les images.

GPT-5.4 peut-il traiter plusieurs images en une seule requête ?

Oui. Incluez plusieurs parties de contenu image_url dans un seul message. Utile pour les documents multipages, les tâches de comparaison ou les captures d'écran séquentielles.

Comment gérer les limites de débit en production ?

Implémentez une logique de réessai exponentielle (délais de 1s, 2s, 4s), utilisez l'API Batch pour le traitement en masse, répartissez les requêtes dans le temps et demandez des augmentations de limite pour les besoins à grand volume.

Quels langages de programmation GPT-5.4 prend-il le mieux en charge ?

GPT-5.4 excelle en Python, JavaScript/TypeScript, React, Node.js et les technologies web courantes. Également solide en Java, Go, Rust et SQL. Égale les performances de GPT-5.3-Codex (57,7% SWE-Bench Pro).

Comment diffuser les réponses de GPT-5.4 ?

Définissez stream=True dans les requêtes API. Itérez sur les fragments et traitez chaque delta. Réduit la latence perçue pour les réponses longues.

GPT-5.4 est-il adapté aux charges de travail de production ?

Oui. GPT-5.4 présente 33% moins d'erreurs factuelles que GPT-5.2, utilise les jetons plus efficacement et inclut une gestion robuste des erreurs. Implémentez une logique de réessai, une surveillance et un suivi des coûts pour les déploiements en production.

Pratiquez le Design-first d'API dans Apidog

Découvrez une manière plus simple de créer et utiliser des API