

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á.

# Invocar um modelo com a API Chat Completions da OpenAI
<a name="inference-chat-completions"></a>

Você pode executar a inferência de modelos usando a [API Create chat completion da OpenAI](https://platform.openai.com/docs/api-reference/chat/create) com modelos do Amazon Bedrock.

Você pode chamar a API Create chat completion das seguintes maneiras:
+ Faça uma solicitação HTTP com um endpoint do Amazon Bedrock Runtime.
+ Use uma solicitação de SDK da OpenAI com um endpoint do Amazon Bedrock Runtime.

Escolha um tópico para saber mais:

**Topics**
+ [Modelos e regiões compatíveis para a API Chat Completions da OpenAI](#inference-chat-completions-supported)
+ [Pré-requisitos para usar a API Chat Completions](#inference-chat-completions-prereq)
+ [Criar um preenchimento de chat](#inference-chat-completions-create)
+ [Incluir uma barreira de proteção em um preenchimento de chat](#inference-chat-completions-guardrails)

## Modelos e regiões compatíveis para a API Chat Completions da OpenAI
<a name="inference-chat-completions-supported"></a>

Você pode usar a API de conclusão de chat Create com todos os OpenAI modelos compatíveis com o Amazon Bedrock e nas AWS regiões que oferecem suporte a esses modelos. Para ter mais informações sobre modelos e regiões compatíveis, consulte [Modelos de base compatíveis no Amazon Bedrock](models-supported.md).

## Pré-requisitos para usar a API Chat Completions
<a name="inference-chat-completions-prereq"></a>

Para ver os pré-requisitos para usar a API Chat Completions, escolha a guia correspondente ao método de sua preferência e siga as etapas:

------
#### [ OpenAI SDK ]
+ **Autenticação**: o SDK da OpenAI só permite autenticação com uma chave de API do Amazon Bedrock. Gere uma chave de API do Amazon Bedrock para autenticar sua solicitação. Para saber mais sobre as chaves de API do Amazon Bedrock e como gerá-las, consulte a seção Chaves de API no capítulo Build.
+ **Endpoint** — Encontre o endpoint que corresponde à AWS região a ser usada nos [endpoints e cotas do Amazon Bedrock Runtime](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#br-rt). 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.
+ **Instalar um SDK da OpenAI**: para ter mais informações, consulte [Libraries](https://platform.openai.com/docs/libraries) na documentação da OpenAI.

------
#### [ HTTP request ]
+ **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.
  + Para saber mais sobre como configurar suas AWS credenciais, consulte [Acesso programático com credenciais de AWS segurança](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds-programmatic-access.html).
  + Para saber mais sobre as chaves de API do Amazon Bedrock e como gerá-las, consulte a seção Chaves de API no capítulo Build.
+ **Endpoint** — Encontre o endpoint que corresponde à AWS região a ser usada nos [endpoints e cotas do Amazon Bedrock Runtime](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#br-rt). 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.

------

## Criar um preenchimento de chat
<a name="inference-chat-completions-create"></a>

Consulte os seguintes recursos na documentação da OpenAI para obter detalhes sobre a API Create chat completion:
+ [Parâmetros do corpo da solicitação](https://platform.openai.com/docs/api-reference/chat/create)
+ [Parâmetros corporais de resposta](https://platform.openai.com/docs/api-reference/chat/object)

**nota**  
No momento, o Amazon Bedrock não permite outras operações da API Chat Completions da OpenAI.

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

------
#### [ OpenAI SDK (Python) ]

Para criar um preenchimento de chat com o SDK da OpenAI, faça o seguinte:

1. Importe o SDK da OpenAI e configure o cliente com os seguintes campos:
   + `base_url`: prefixe o endpoint do Amazon Bedrock Runtime como `/openai/v1`, conforme o seguinte formato:

     ```
     https://${bedrock-runtime-endpoint}/openai/v1
     ```
   + `api_key`: especifique uma chave de API do Amazon Bedrock.
   + `default_headers`: se precisar incluir algum cabeçalho, você pode incluí-lo como pares de chave-valor nesse objeto. Ou você pode especificar cabeçalhos em `extra_headers` ao fazer uma chamada de API específica.

1. Use o método `chat.completions.create()` com o cliente e especifique no mínimo `model` e `messages` no corpo da solicitação.

O exemplo a seguir chama a API Create chat completion na `us-west-2`. *\$1AWS\$1BEARER\$1TOKEN\$1BEDROCK*Substitua pela sua chave de API real.

```
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 ]

Para criar um preenchimento de chat com uma solicitação HTTP, faça o seguinte:

1. Especifique o URL prefixando o endpoint do Amazon Bedrock Runtime com `/openai/v1/chat/completions`, conforme o seguinte formato:

   ```
   https://${bedrock-runtime-endpoint}/openai/v1/chat/completions
   ```

1. Especifique suas AWS credenciais ou uma chave de API do Amazon Bedrock no cabeçalho. `Authorization`

1. No corpo da solicitação, especifique pelo menos `model` e `messages` no corpo da solicitação.

O exemplo a seguir usa curl para chamar a API Create chat completion na `us-west-2`. *\$1AWS\$1BEARER\$1TOKEN\$1BEDROCK*Substitua pela sua chave de API real:

```
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!"
        }
    ]
}'
```

------

## Incluir uma barreira de proteção em um preenchimento de chat
<a name="inference-chat-completions-guardrails"></a>

Para incluir proteções na entrada e nas respostas do modelo, aplique uma [barreira de proteção](guardrails.md) ao executar a invocação do modelo incluindo os seguintes [parâmetros extras](https://github.com/openai/openai-python#undocumented-request-params) como campos no corpo da solicitação:
+ `extra_headers`: está associado a um objeto que conte´m os seguintes campos, que especificam cabeçalhos extras na solicitação:
  + `X-Amzn-Bedrock-GuardrailIdentifier`: (obrigatório) o ID da barreira de proteção.
  + `X-Amzn-Bedrock-GuardrailVersion`: (obrigatório) a versão da barreira de proteção.
  + `X-Amzn-Bedrock-Trace`: (opcional) se é necessário ou não habilitar o rastreamento da barreira de proteção.
+ `extra_body`: está associado a um objeto. Nesse objeto, você pode incluir o campo `amazon-bedrock-guardrailConfig`, que está associado a um objeto que contém os seguintes campos:
  + `tagSuffix`: (opcional) inclua esse campo para [marcação de entrada](guardrails-tagging.md).

Para ter mais informações sobre esses parâmetros nas Barreiras de Proteção do Amazon Bedrock, consulte [Testar uma barreira de proteção](guardrails-test.md).

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

------