Modelli OpenAI - Amazon Bedrock

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Modelli OpenAI

OpenAI offre i seguenti modelli a pesi aperti:

  • gpt-oss-20b: modello più piccolo ottimizzato per una latenza inferiore e casi d’uso locali o specializzati.

  • gpt-oss-120b: modello più grande ottimizzato per la produzione e per casi d’uso generici o che richiedono elevate capacità di ragionamento.

La tabella seguente riepiloga le informazioni sui modelli:

Informazioni gpt-oss-20b gpt-oss-120b
Data di rilascio 5 agosto 2025 5 agosto 2025
ID modello openai.gpt-oss-20b-1:0 openai.gpt-oss-120b-1:0
ID prodotto N/D N/D
Modalità di input supportate Testo Testo
Modalità di input supportate Testo Testo
Finestra contestuale 128.000 128.000

I modelli OpenAI supportano le seguenti funzionalità:

Corpo della richiesta di OpenAI

Per informazioni sui parametri nel corpo della richiesta e sulle relative descrizioni, consultare Create chat completion nella documentazione di OpenAI.

Utilizzare i campi del corpo della richiesta nei seguenti modi:

  • In una richiesta InvokeModel o Chat Completions di OpenAI, includere i campi nel corpo della richiesta.

  • In una richiesta Converse, procedere come segue:

    • Mappare i messages nel modo seguente:

      • Per ogni messaggio il cui ruolo è developer, aggiungere il content a un SystemContentBlock nell’array system.

      • Per ogni messaggio il cui ruolo è user o assistant, aggiungere il content a un ContentBlock nel campo content e specificare il role nel campo role di un Message nell’array messages.

    • Associare i valori dei seguenti ai campi corrispondenti nell’oggetto inferenceConfig:

      Campo OpenAI Campo Converse
      max_completion_tokens maxTokens
      stop stopSequence
      temperature temperature
      top_p topP
    • Includere qualsiasi altro campo nell’oggetto additionalModelRequestFields.

Considerazioni durante la creazione del corpo della richiesta
  • I modelli OpenAI supportano solo input e output di testo.

  • Il valore nel campo model deve corrispondere a quello nell’intestazione. È possibile omettere questo campo per consentire che venga compilato automaticamente con lo stesso valore dell’intestazione.

  • Il valore nel campo stream deve corrispondere all’operazione dell’API utilizzata. È possibile omettere questo campo per consentire che venga compilato automaticamente con il valore corretto.

    • Se si utilizza InvokeModel, il valore di stream deve essere false.

Corpo della risposta di OpenAI

Il corpo della risposta per i modelli OpenAI è conforme all’oggetto di completamento della chat restituito da OpenAI. Per ulteriori informazioni sui campi di risposta, consultare The chat completion object nella documentazione di OpenAI.

Nota

Se si utilizza InvokeModel, il ragionamento del modello, circondato da tag <reasoning>, precede il contenuto di testo della risposta.

Esempio di utilizzo di modelli OpenAI

Questa sezione fornisce alcuni esempi di come utilizzare i modelli OpenAI.

Prima di provare questi esempi, verificare di aver soddisfatto i prerequisiti:

  • Autenticazione: è possibile autenticarsi con le proprie credenziali AWS o con una chiave API Amazon Bedrock.

    Configurare le credenziali AWS o generare una chiave API Amazon Bedrock per autenticare la richiesta.

    Nota

    Se si utilizza l’API Chat Completions di OpenAI, è possibile autenticarsi solo con una chiave API Amazon Bedrock.

  • Endpoint: consente di trovare l’endpoint corrispondente alla Regione AWS da utilizzare negli endpoint e nelle quote di runtime di Amazon Bedrock. Se utilizzi un SDK AWS, potrebbe essere sufficiente specificare solo il codice della Regione e non tutto l’endpoint durante la configurazione del client. È necessario utilizzare un endpoint associato a una Regione supportata dal modello utilizzato nell’esempio.

  • Accesso al modello: consente di richiedere l’accesso a un modello OpenAI. Per ulteriori informazioni, consulta Accedi ai modelli Amazon Bedrock AWS GovCloud Foundation negli Stati Uniti.

  • (Se l’esempio utilizza un SDK) Installa l’SDK: dopo l’installazione, impostare le credenziali predefinite e una Regione AWS predefinita. Se non vengono configurate le credenziali predefinite o una Regione, è necessario specificarle esplicitamente negli esempi di codice pertinenti. Per ulteriori informazioni sui provider di credenziali, consultare Provider di credenziali standardizzati di SDK e strumenti AWS.

    Nota

    Se si utilizza l’SDK OpenAI, è possibile autenticarsi solo con una chiave API Amazon Bedrock ed è necessario impostare esplicitamente l’endpoint Amazon Bedrock.

Espandere la sezione relativa all’esempio desiderato:

Per esempi di utilizzo dell’API Create chat completion di OpenAI, scegliere la scheda corrispondente al metodo preferito, poi seguire la procedura:

OpenAI SDK (Python)

Il seguente script Python chiama l’API Create chat completion con l’SDK Python di OpenAI:

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

Eseguire il seguente comando in un terminale per chiamare l’API Create chat completion con 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!" } ] }'

Scegli la scheda relativa al metodo che preferisci, quindi segui la procedura:

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'])

Quando si utilizza l’API Converse unificata, è necessario associare i campi di Create chat completion di OpenAI al campo corrispondente nel corpo della richiesta di Converse.

Ad esempio, confrontare il seguente corpo della richiesta di completamento della chat con il corpo della richiesta di Converse corrispondente:

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 } }

Scegli la scheda relativa al metodo che preferisci, quindi segui la procedura:

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)

Per applicare un guardrail durante l’invocazione del modello, specificare l’ID del guardrail, la versione e se abilitare o meno la traccia del guardrail nell’intestazione di una richiesta di invocazione del modello.

Scegli la scheda relativa al metodo che preferisci, quindi segui la procedura:

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

Per esempi di utilizzo dei guardrail con Chat Completions OpenAI, scegli la scheda relativa al metodo che preferisci, quindi segui la procedura:

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);

L’inferenza in batch consente di eseguire l’inferenza del modello con più prompt. Per eseguire l’inferenza in batch con un modello OpenAI, procedere come segue:

  1. Creare un file JSONL e popolarlo con almeno il numero minimo di oggetti JSON, ciascuno separato da una nuova riga. Ogni oggetto modelInput deve essere conforme al formato del corpo della richiesta Create chat completion di OpenAI. Di seguito viene mostrato un esempio delle prime due righe di un file JSONL contenente i corpi della richiesta per 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 } } ...
    Nota

    Il campo model è facoltativo perché il servizio di inferenza in batch lo inserirà automaticamente in base all’intestazione, se omesso.

    Verificare il tuo file JSONL sia conforme alle quote di inferenza in batch come indicato in Formattazione e caricamento dei propri dati di inferenza in batch.

  2. Caricare il file immagine in un bucket Amazon S3.

  3. Inviare una richiesta CreateModelInvocationJob con un endpoint del piano di controllo (control-plane) Amazon Bedrock con il bucket S3 della fase precedente specificato nel campo inputDataConfig e il modello OpenAI specificato nel campo modelId.

Per un esempio di codice completo, consultare Esempio di codice per inferenza in batch. Sostituire con le configurazioni appropriate per i modelli OpenAI.