Modèles OpenAI - Amazon Bedrock

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Modèles OpenAI

OpenAI propose les modèles à pondération ouverte suivants :

  • gpt-oss-20b : modèle plus petit optimisé pour une latence plus faible et des cas d’utilisation locaux ou spécialisés.

  • gpt-oss-120b : modèle plus grand optimisé pour la production et les cas d’utilisation à usage général ou exigeant un raisonnement poussé.

Le tableau suivant résume les informations sur les modèles :

Informations gpt-oss-20b gpt-oss-120b
Date de publication 5 août 2025 5 août 2025
ID du modèle openai.gpt-oss-20b-1:0 openai.gpt-oss-120b-1:0
ID produit N/A N/A
Modalités d’entrée prises en charge Texte Texte
Modalités de sortie prises en charge Texte Texte
Fenêtre contextuelle 128 000 128 000

Les modèles OpenAI prennent en charge les fonctionnalités suivantes :

Corps de la demande OpenAI

Pour plus d’informations sur les paramètres du corps de la demande et leurs descriptions, consultez Create chat completion dans la documentation OpenAI.

Utilisez les champs du corps de a demande de l’une des façons suivantes :

  • Dans une demande InvokeModel ou OpenAI Chat Completions, incluez les champs dans le corps de la demande.

  • Dans une demande Converse, procédez comme suit :

    • Mappez les messages comme suit :

      • Pour chaque message dont le rôle est developer, ajoutez content à une valeur SystemContentBlock dans le tableau system.

      • Pour chaque message dont le rôle est user ou assistant, ajoutez content à une valeur ContentBlock dans le champ content et spécifiez role dans le champ role d’un Message dans le tableau messages.

    • Mappez les valeurs des champs suivants aux champs correspondants de l’objet inferenceConfig :

      OpenAI field Champ Converse
      max_completion_tokens maxTokens
      stop stopSequences
      temperature temperature
      top_p topP
    • Incluez tout autre champ dans l’objet additionalModelRequestFields.

Considérations lors de la construction du corps de la demande
  • Les modèles OpenAI ne prennent en charge que l’entrée et la sortie de texte.

  • La valeur du champ model doit correspondre à celle de l’en-tête. Vous pouvez omettre ce champ pour qu’il soit automatiquement rempli avec la même valeur que l’en-tête.

  • La valeur du champ stream doit correspondre à l’opération d’API que vous utilisez. Vous pouvez omettre ce champ pour qu’il soit automatiquement renseigné avec la valeur correcte.

    • Si vous utilisez InvokeModel, la valeur stream doit être false.

Corps de la réponse OpenAI

Le corps de réponse pour les modèles OpenAI est conforme à l’objet d’achèvement de discussion renvoyé par OpenAI. Pour plus d’informations sur les champs de réponse, consultez The chat completion object dans la documentation OpenAI.

Note

Si vous utilisez InvokeModel, le raisonnement du modèle, entouré de balises <reasoning>, précède le contenu textuel de la réponse.

Exemple d’utilisation de modèles OpenAI

Cette section fournit quelques exemples sur l’utilisation des modèles OpenAI.

Avant d’essayer ces exemples, vérifiez que vous avez rempli les conditions préalables :

  • Authentification : vous pouvez vous authentifier avec vos informations d’identification AWS ou avec une clé d’API Amazon Bedrock.

    Configurez vos informations d’identification AWS ou générez une clé d’API Amazon Bedrock pour authentifier votre demande.

    Note

    Si vous utilisez l’API OpenAI Chat completions, vous ne pouvez vous authentifier qu’avec une clé d’API Amazon Bedrock.

  • Point de terminaison : recherchez le point de terminaison correspondant à la région AWS à utiliser dans Quotas et points de terminaison d’exécution d’Amazon Bedrock. Si vous utilisez un kit AWS SDK, il se peut que vous deviez uniquement spécifier le code de région et non le point de terminaison complet lors de la configuration du client. Vous devez utiliser un point de terminaison associé à une région prise en charge par le modèle utilisé dans l’exemple.

  • Accès au modèle : demande l’accès à un modèle OpenAI. Pour plus d’informations, consultez Accédez aux modèles de fondations Amazon Bedrock aux États-Unis AWS GovCloud .

  • (Si l’exemple utilise un kit SDK) Installez le kit SDK : Après l’installation, configurez les informations d’identification par défaut et une région AWS par défaut. Si vous ne configurez pas d’informations d’identification par défaut ou de région, vous devrez les spécifier explicitement dans les exemples de code pertinents. Pour plus d’informations sur les fournisseurs d’informations d’identification, consultez Fournisseurs d’informations d’identification normalisés pour les kits SDK et les outils AWS.

    Note

    Si vous utilisez le kit OpenAI SDK, vous ne pouvez vous authentifier qu’avec une clé d’API Amazon Bedrock et vous devez définir explicitement le point de terminaison Amazon Bedrock.

Développez la section correspondant à l’exemple que vous souhaitez voir :

Pour voir des exemples d’utilisation de l’API OpenAI Create chat completion, choisissez l’onglet correspondant à votre méthode préférée, puis suivez les étapes :

OpenAI SDK (Python)

Le script Python suivant appelle l’API Create chat completion avec le kit SDK OpenAI Python :

from openai import OpenAI client = OpenAI( base_url="https://bedrock-runtime.us-west-2.amazonaws.com/openai/v1", api_key="$AWS_BEARER_TOKEN_BEDROCK" # Replace with actual API key ) completion = client.chat.completions.create( model="openai.gpt-oss-20b-1:0", messages=[ { "role": "developer", "content": "You are a helpful assistant." }, { "role": "user", "content": "Hello!" } ] ) print(completion.choices[0].message)
HTTP request using curl

Vous pouvez exécuter la commande suivante dans un terminal pour appeler l’API Create chat completion à l’aide de curl :

curl -X POST https://bedrock-runtime.us-west-2.amazonaws.com/openai/v1/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $AWS_BEARER_TOKEN_BEDROCK" \ -d '{ "model": "openai.gpt-oss-20b-1:0", "messages": [ { "role": "developer", "content": "You are a helpful assistant." }, { "role": "user", "content": "Hello!" } ] }'

Choisissez l’onglet correspondant à votre méthode préférée, puis suivez les étapes :

Python
import boto3 import json # Initialize the Bedrock Runtime client client = boto3.client('bedrock-runtime') # Model ID model_id = 'openai.gpt-oss-20b-1:0' # Create the request body native_request = { "model": model_id, # You can omit this field "messages": [ { "role": "system", "content": "You are a helpful assistant." }, { "role": "assistant", "content": "Hello! How can I help you today?" }, { "role": "user", "content": "What is the weather like today?" } ], "max_completion_tokens": 150, "temperature": 0.7, "top_p": 0.9, "stream": False # You can omit this field } # Make the InvokeModel request response = client.invoke_model( modelId=model_id, body=json.dumps(native_request) ) # Parse and print the message for each choice in the chat completion response_body = json.loads(response['body'].read().decode('utf-8')) for choice in response_body['choices']: print(choice['message']['content'])

Lorsque vous utilisez l’API Converse unifiée, vous devez mapper les champs OpenAI Create chat completion au champ correspondant dans le corps de la demande Converse.

Par exemple, comparez le corps de demande d’achèvement de conversation suivant au corps de demande Converse correspondant :

Create chat completion request body
{ "model": "openai.gpt-oss-20b-1:0", "messages": [ { "role": "developer", "content": "You are a helpful assistant." }, { "role": "assistant", "content": "Hello! How can I help you today?" }, { "role": "user", "content": "What is the weather like today?" } ], "max_completion_tokens": 150, "temperature": 0.7 }
Converse request body
{ "messages": [ { "role": "user", "content": [ { "text": "Hello! How can I help you today?" } ] }, { "role": "user", "content": [ { "text": "What is the weather like today?" } ] } ], "system": [ { "text": "You are a helpful assistant." } ], "inferenceConfig": { "maxTokens": 150, "temperature": 0.7 } }

Choisissez l’onglet correspondant à votre méthode préférée, puis suivez les étapes :

Python
# Use the Conversation API to send a text message to Anthropic Claude. import boto3 from botocore.exceptions import ClientError # Initialize the Bedrock Runtime client client = boto3.client("bedrock-runtime") # Set the model ID model_id = "openai.gpt-oss-20b-1:0" # Set up messages and system message messages = [ { "role": "assistant", "content": [ { "text": "Hello! How can I help you today?" } ] }, { "role": "user", "content": [ { "text": "What is the weather like today?" } ] } ] system = [ { "text": "You are a helpful assistant." } ] try: # Send the message to the model, using a basic inference configuration. response = client.converse( modelId=model_id, messages=messages, system=system, inferenceConfig={ "maxTokens": 150, "temperature": 0.7, "topP": 0.9 }, ) # Extract and print the response text. for content_block in response["output"]["message"]["content"]: print(content_block) except (ClientError, Exception) as e: print(f"ERROR: Can't invoke '{model_id}'. Reason: {e}") exit(1)

Appliquez une barrière de protection lors de l’exécution de l’invocation du modèle en spécifiant l’ID et la version de la barrière de protection et en indiquant s’il faut activer ou non la trace de la barrière de protection dans l’en-tête d’une demande d’invocation de modèle.

Choisissez l’onglet correspondant à votre méthode préférée, puis suivez les étapes :

Python
import boto3 from botocore.exceptions import ClientError import json # Initiate the Amazon Bedrock Runtime client bedrock_runtime = boto3.client("bedrock-runtime") # Model ID model_id = "openai.gpt-oss-20b-1:0" # Replace with actual values from your guardrail guardrail_id = "GR12345" guardrail_version = "DRAFT" # Create the request body native_request = { "model": model_id, # You can omit this field "messages": [ { "role": "system", "content": "You are a helpful assistant." }, { "role": "assistant", "content": "Hello! How can I help you today?" }, { "role": "user", "content": "What is the weather like today?" } ], "max_completion_tokens": 150, "temperature": 0.7, "top_p": 0.9, "stream": False # You can omit this field } try: response = bedrock_runtime.invoke_model( modelId=model_id, body=json.dumps(native_request), guardrailIdentifier=guardrail_id, guardrailVersion=guardrail_version, trace='ENABLED', ) response_body = json.loads(response.get('body').read()) print("Received response from InvokeModel API (Request Id: {})".format(response['ResponseMetadata']['RequestId'])) print(json.dumps(response_body, indent=2)) except ClientError as err: print("RequestId = " + err.response['ResponseMetadata']['RequestId']) raise err

Pour voir des exemples d’utilisation de barrière de protection lors de l’achèvement d’une discussion OpenAI, choisissez l’onglet correspondant à votre méthode préférée, puis suivez les étapes :

OpenAI SDK (Python)
import openai from openai import OpenAIError # Endpoint for Amazon Bedrock Runtime bedrock_endpoint = "https://bedrock-runtime.us-west-2.amazonaws.com/openai/v1" # Model ID model_id = "openai.gpt-oss-20b-1:0" # Replace with actual values bedrock_api_key = "$AWS_BEARER_TOKEN_BEDROCK" guardrail_id = "GR12345" guardrail_version = "DRAFT" client = openai.OpenAI( api_key=bedrock_api_key, base_url=bedrock_endpoint, ) try: response = client.chat.completions.create( model=model_id, # Specify guardrail information in the header extra_headers={ "X-Amzn-Bedrock-GuardrailIdentifier": guardrail_id, "X-Amzn-Bedrock-GuardrailVersion": guardrail_version, "X-Amzn-Bedrock-Trace": "ENABLED", }, # Additional guardrail information can be specified in the body extra_body={ "amazon-bedrock-guardrailConfig": { "tagSuffix": "xyz" # Used for input tagging } }, messages=[ { "role": "system", "content": "You are a helpful assistant." }, { "role": "assistant", "content": "Hello! How can I help you today?" }, { "role": "user", "content": "What is the weather like today?" } ] ) request_id = response._request_id print(f"Request ID: {request_id}") print(response) except OpenAIError as e: print(f"An error occurred: {e}") if hasattr(e, 'response') and e.response is not None: request_id = e.response.headers.get("x-request-id") print(f"Request ID: {request_id}")
OpenAI SDK (Java)
import com.openai.client.OpenAIClient; import com.openai.client.okhttp.OpenAIOkHttpClient; import com.openai.core.http.HttpResponseFor; import com.openai.models.chat.completions.ChatCompletion; import com.openai.models.chat.completions.ChatCompletionCreateParams; // Endpoint for Amazon Bedrock Runtime String bedrockEndpoint = "http://bedrock-runtime.us-west-2.amazonaws.com/openai/v1" // Model ID String modelId = "openai.gpt-oss-20b-1:0" // Replace with actual values String bedrockApiKey = "$AWS_BEARER_TOKEN_BEDROCK" String guardrailId = "GR12345" String guardrailVersion = "DRAFT" OpenAIClient client = OpenAIOkHttpClient.builder() .apiKey(bedrockApiKey) .baseUrl(bedrockEndpoint) .build() ChatCompletionCreateParams request = ChatCompletionCreateParams.builder() .addUserMessage("What is the temperature in Seattle?") .model(modelId) // Specify additional headers for the guardrail .putAdditionalHeader("X-Amzn-Bedrock-GuardrailIdentifier", guardrailId) .putAdditionalHeader("X-Amzn-Bedrock-GuardrailVersion", guardrailVersion) // Specify additional body parameters for the guardrail .putAdditionalBodyProperty( "amazon-bedrock-guardrailConfig", JsonValue.from(Map.of("tagSuffix", JsonValue.of("xyz"))) // Allows input tagging ) .build(); HttpResponseFor<ChatCompletion> rawChatCompletionResponse = client.chat().completions().withRawResponse().create(request); final ChatCompletion chatCompletion = rawChatCompletionResponse.parse(); System.out.println(chatCompletion);

Inférence par lots vous permet d’exécuter l’inférence de modèle de manière asynchrone à l’aide de plusieurs invites. Pour exécuter l’inférence par lots avec un modèle OpenAI, procédez comme suit :

  1. Créez un fichier JSONL et remplissez-le avec au moins le nombre minimum d’objets JSON, séparés chacun par une nouvelle ligne. Chaque objet modelInput doit être conforme au format du corps de la demande OpenAI create chat completion. Voici un exemple des deux premières lignes d’un fichier JSONL contenant les corps de requête pour OpenAI.

    { "recordId": "RECORD1", "modelInput": { "messages": [ { "role": "system", "content": "You are a helpful assistant." }, { "role": "user", "content": "Can you generate a question with a factual answer?" } ], "max_completion_tokens": 1000 } } { "recordId": "RECORD2", "modelInput": { "messages": [ { "role": "system", "content": "You are a helpful assistant." }, { "role": "user", "content": "What is the weather like today?" } ], "max_completion_tokens": 1000 } } ...
    Note

    Le champ model est facultatif, car le service d’inférence par lots l’insérera pour vous en fonction de l’en-tête si vous l’omettez.

    Vérifiez que votre fichier JSONL est conforme aux quotas d’inférence par lots, comme indiqué dans Mise en forme et chargement des données d’inférence par lots.

  2. Chargement du fichier image sur un compartiment Amazon S3.

  3. Envoyez une demande CreateModelInvocationJob avec un point de terminaison du plan de contrôle Amazon Bedrock avec le compartiment S3 de l’étape précédente spécifiée dans le champ inputDataConfig et le modèle OpenAI spécifié dans le champ modelId.

Pour un exemple complet, consultez Exemple de code pour l’inférence par lots. Remplacez par des configurations appropriées pour les modèles OpenAI.