Modelos da OpenAI - Amazon Bedrock

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Modelos da OpenAI

A OpenAI oferece os seguintes modelos de peso aberto:

  • gpt-oss-20b: um modelo menor otimizado para menor latência e casos de uso locais ou especializados.

  • gpt-oss-120b: um modelo maior otimizado para casos de uso de produção e uso geral ou de alto raciocínio.

A seguinte tabela a seguir resume informações sobre os modelos:

Informações gpt-oss-20b gpt-oss-120b
Data de lançamento 5 de agosto de 2025 5 de agosto de 2025
ID do modelo openai.gpt-oss-20b-1:0 openai.gpt-oss-120b-1:0
ID do produto N/D N/D
Modalidades de entrada aceitas Texto Texto
Modalidades de saída aceitas Texto Texto
Janela de contexto 128.000 128.000

Os modelos da OpenAI são compatíveis com os seguintes recursos:

Corpo da solicitação da OpenAI

Para ter informações sobre os parâmetros no corpo da solicitação e as respectivas descrições, consulte Create chat completion na documentação da OpenAI.

Use os campos do corpo da solicitação das seguintes maneiras:

  • Em uma solicitação InvokeModelou de conclusão do OpenAI Chat, inclua os campos no corpo da solicitação.

  • Em uma solicitação Converse, faça o seguinte:

    • Mapeie as messages da seguinte maneira:

      • Para cada mensagem cuja função édeveloper, adicione content a SystemContentBlockna system matriz.

      • Para cada mensagem cuja função é user ouassistant, adicione content a a ContentBlockno content campo e especifique a role no role campo de uma Mensagem na messages matriz.

    • Associe os valores dos seguintes campos aos campos correspondentes no objeto inferenceConfig:

      OpenAI field Campo Converse
      max_completion_tokens maxTokens
      parar stopSequences
      temperatura temperatura
      top_p topP
    • Inclua qualquer outro campo no objeto additionalModelRequestFields.

Considerações ao criar o corpo da solicitação
  • Os modelos da OpenAI permitem somente entrada e saída de texto.

  • O valor no campo model deve corresponder ao do cabeçalho. Você pode omitir esse campo para permitir que ele seja preenchido automaticamente com o mesmo valor do cabeçalho.

  • O valor no campo stream deve corresponder à operação de API que você usa. Você pode omitir esse campo para permitir que ele seja preenchido automaticamente com o valor correto.

    • Se você usar InvokeModel, o stream valor deve serfalse.

Corpo da resposta da OpenAI

O corpo da resposta dos modelos da OpenAI está em conformidade com o objeto de preenchimento de chat apresentado pela OpenAI. Para ter mais informações sobre os campos de resposta, consulte The chat completion object na documentação da OpenAI.

nota

Se você usar InvokeModel, o raciocínio do modelo, circundado pelas tags <reasoning>, precederá o conteúdo do texto da resposta.

Exemplo de uso de modelos da OpenAI

Esta seção apresenta alguns exemplos de como usar os modelos da OpenAI.

Antes de testar estes exemplos, verifique se você atendeu a estes pré-requisitos:

  • Autenticação — Você pode se autenticar com suas AWS credenciais ou com uma chave de API Amazon Bedrock.

    Configure suas AWS credenciais ou gere uma chave de API Amazon Bedrock para autenticar sua solicitação.

    nota

    Se você usar a API Chat Completions da OpenAI, só poderá se autenticar com uma chave de API do Amazon Bedrock.

  • Endpoint — Encontre o endpoint que corresponde à AWS região a ser usada nos endpoints e cotas do Amazon Bedrock Runtime. Se você usa um AWS SDK, talvez precise especificar apenas o código da região e não o endpoint inteiro ao configurar o cliente. Você deve usar um endpoint associado a uma região compatível com o modelo usado no exemplo.

  • Acesso ao modelo: solicite acesso a um modelo da OpenAI. Para obter mais informações, consulte Gerencie o acesso ao modelo usando SDK e CLI.

  • (Se o exemplo usar um SDK) Instale o SDK — Após a instalação, configure as credenciais padrão e uma região padrão. AWS Se você não configurar credenciais padrão ou uma região, precisará especificá-las explicitamente nos exemplos de código pertinentes. Para obter mais informações sobre provedores de credenciais padronizados, consulte Ferramentas AWS SDKs e provedores de credenciais padronizados.

    nota

    Se você usar o SDK da OpenAI, só poderá se autenticar com uma chave de API do Amazon Bedrock e deverá definir explicitamente o endpoint do Amazon Bedrock.

Expanda a seção do exemplo que você deseja ver:

Para ver exemplos de uso da API Create chat completion da OpenAI, escolha a guia correspondente ao método de sua preferência e siga as etapas:

OpenAI SDK (Python)

O seguinte script Python chama a API Create chat completion com o SDK para Python da 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

Você pode executar o seguinte comando em um terminal para chamar a API Create chat completion usando 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!" } ] }'

Escolha a guia correspondente ao método de sua preferência e siga as etapas:

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

Ao usar a API Converse unificada, você precisa associar os campos de Create chat completion da OpenAI ao campo correspondente no corpo da solicitação de Converse.

Por exemplo, compare o corpo da solicitação de preenchimento de chat a seguir com o corpo da solicitação Converse correspondente:

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

Escolha a guia correspondente ao método de sua preferência e siga as etapas:

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)

Aplique uma barreira de proteção ao executar a invocação do modelo especificando o ID da barreira de proteção, a versão e se deve ou não habilitar o rastreamento da barreira de proteção no cabeçalho de uma solicitação de invocação do modelo.

Escolha a guia correspondente ao método de sua preferência e siga as etapas:

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

Para ver exemplos de uso de barreiras de proteção com preenchimentos de chat da OpenAI, escolha a guia correspondente ao método de sua preferência e siga as etapas:

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

A inferência em lote permite executar a inferência do modelo de forma assíncrona com vários prompts. Para executar a inferência em lote com um modelo da OpenAI, faça o seguinte:

  1. Crie um arquivo JSONL e preencha-o com pelo menos o número mínimo de objetos JSON, cada um separado por uma nova linha. Cada objeto modelInput deve corresponder ao formato do corpo da solicitação de preenchimento de chat da OpenAI. Veja a seguir um exemplo das duas primeiras linhas de um arquivo JSONL contendo corpos de solicitação para a 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

    O campo model é opcional porque o serviço de inferência em lote o inserirá para você com base no cabeçalho, caso você o omita.

    Verifique se o arquivo JSONL está de acordo com as cotas de inferência em lote, conforme descrito em Formatar e carregar os dados de inferência.

  2. Faça upload do arquivo para um bucket do Amazon S3.

  3. Envie uma CreateModelInvocationJobsolicitação com um endpoint do plano de controle Amazon Bedrock com o bucket S3 da etapa anterior especificada no inputDataConfig campo e do OpenAI modelo especificado no campo. modelId

Para obter um exemplo de end-to-end código, consulteExemplo de código para inferência em lote. Substitua pelas configurações adequadas para os modelos da OpenAI.