1. Construção de Requisições de API

1.1 Enviando Requisições Usando CURL

CURL é uma ferramenta de linha de comando que suporta o envio e recebimento de dados usando vários protocolos, como HTTP e HTTPS. Para enviar uma requisição para a API da OpenAI usando CURL, você primeiro precisa ter uma chave de API válida e em seguida adicioná-la ao cabeçalho da requisição.

Aqui está um exemplo de um comando CURL usado para enviar uma requisição para a API da OpenAI:

curl https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
     "model": "gpt-3.5-turbo",
     "messages": [{"role": "user", "content": "Dizer que isso é um teste!"}],
     "temperature": 0.7
   }'

Você precisa substituir $OPENAI_API_KEY pela sua chave de API. Por motivos de segurança, evite expor sua chave de API em qualquer ambiente público.

1.2 Análise dos Cabeçalhos da Requisição

No comando CURL acima, nós utilizamos dois cabeçalhos de requisição cruciais: Content-Type e Authorization.

  • Content-Type: Isso informa ao servidor que estamos enviando dados no formato JSON. Seu valor é tipicamente application/json.
  • Authorization: Esta é a credencial usada para autenticar a requisição da API e seu formato é sempre Bearer (sua chave de API).

Garantir a corretude desses dois cabeçalhos é crucial para o sucesso da requisição.

1.3 Construindo o Corpo da Requisição

O corpo da requisição é uma string formatada em JSON que informa à OpenAI sobre nossas intenções. Nesta requisição, usamos model para especificar o modelo que estamos utilizando, passamos um array messages definindo a entrada do usuário e definimos uma temperature para ajustar a variabilidade da resposta.

O JSON se parece com isto:

{
  "model": "gpt-3.5-turbo",
  "messages": [{"role": "user", "content": "Dizer que isso é um teste!"}],
  "temperature": 0.7
}

Neste exemplo, estamos solicitando que o modelo gere uma resposta de teste com base na mensagem de entrada.

1.4 Explicação Detalhada dos Parâmetros da Requisição

Dentro do corpo da requisição, existem vários parâmetros importantes a serem observados:

  • model: Especifica o modelo de IA que pretendemos utilizar. A OpenAI fornece vários modelos, cada um com funcionalidades e efeitos diferentes.
  • messages: Este é um array contendo um ou mais objetos de mensagem, sendo que cada mensagem consiste em um role fornecendo o papel da mensagem e content representando o conteúdo da mensagem.
  • temperature: Controla a certeza da resposta. Um valor de temperature mais baixo gera respostas mais certas, enquanto um valor mais alto leva a mais aleatoriedade.

2. Análise das Respostas da API

2.1 Compreensão da Resposta

Quando você envia uma requisição, o servidor retornará um código de status HTTP e possivelmente um corpo de resposta. Tipicamente, uma requisição bem-sucedida receberá um código de status na série 200. Os dados JSON retornados contêm o resultado da requisição e um exemplo de resposta é o seguinte:

{
    "id": "chatcmpl-abc123",
    "object": "chat.completion",
    "created": 1677858242,
    "model": "gpt-3.5-turbo-1106",
    "usage": {
        "prompt_tokens": 13,
        "completion_tokens": 7,
        "total_tokens": 20
    },
    "choices": [
        {
            "message": {
                "role": "assistant",
                "content": "\n\nIsso é um teste!"
            },
            "logprobs": null,
            "finish_reason": "stop",
            "index": 0
        }
    ]
}

Nesta resposta, podemos ver o ID da conclusão, o carimbo de data e hora de criação, o modelo utilizado, o uso de tokens e o conteúdo real da resposta (no campo choices).

2.2 Completeness e Tratamento de Erros

O campo finish_reason indica por que a API parou de produzir mais conteúdo. Motivos comuns de finalização incluem stop, length e idle. Se ocorrer um erro, como exceder os limites de tokens ou uma chave de API incorreta, você receberá a mensagem de erro correspondente e o código de status. É importante lidar adequadamente com esses erros para garantir a continuidade da experiência do usuário e a estabilidade de sua aplicação. Para o tratamento de erros, você pode decidir sobre uma estratégia de tratamento de erro apropriada com base no código de status retornado e na mensagem de erro, como tentar novamente a requisição ou fornecer feedback ao usuário explicando o motivo do erro.

2.3 Envio de solicitações de API usando Python SDK

Abaixo está um exemplo de uso do SDK oficial do OpenAI Python para fazer chamadas de API.

Primeiro, você precisa instalar a biblioteca openai, o que pode ser feito usando o pip:

pip install --upgrade openai

Em seguida, você pode usar o seguinte código Python para fazer uma solicitação de API similar ao exemplo acima. Lembre-se de substituir YOUR_OPENAI_API_KEY pela sua chave de API.

from openai import OpenAI

client = OpenAI(
   api_key="YOUR_OPENAI_API_KEY",
)

completions = client.chat.completions.create(
  model="gpt-3.5-turbo",
  messages=[
    {"role": "system", "content": "Você é um assistente de desenvolvimento profissional, hábil em resolver vários problemas de programação."},
    {"role": "user", "content": "Escreva uma função para quicksort em Go."}
  ]
)

print(completions.choices[0].message)