Integração com a API ChatGPT em Go: da ideia ao código funcional

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Por que Go e ChatGPT são a combinação ideal?

\n

Você já pensou em como pode "ensinar" rapidamente seu programa Go a conversar com o usuário como uma pessoa real? Ou talvez você queira automatizar a geração de conteúdo, criar um assistente inteligente ou simplesmente adicionar um "toque especial" ao seu serviço? A integração com a API ChatGPT em Go não é apenas uma tendência moderna, mas uma ferramenta poderosa que abre portas para o mundo da inteligência artificial. Go, com sua velocidade e simplicidade, é ideal para criar requisições rápidas e confiáveis para redes neurais. Neste artigo, não vamos apenas analisar a teoria, mas escrever código real que pode ser usado imediatamente em seus projetos.

\n\n

Preparando o terreno: o que é necessário para começar?

\n

Antes de mergulharmos no código, vamos garantir que temos tudo o que é necessário. Você vai precisar de:

\n
    \n
  • Go instalado (versão 1.21 ou superior, para usar todos os recursos modernos).
  • \n
  • Chave da API OpenAI. Você pode obtê-la na plataforma OpenAI. Trate-a como a senha do seu cartão bancário — mantenha-a em segredo!
  • \n
  • Compreensão básica de requisições HTTP e estruturas de dados em Go.
  • \n
\n

Todo o código do artigo será escrito em um único arquivo main.go, para não complicar a estrutura. Vamos lá!

\n\n

Passo 1: Criando o cliente HTTP e enviando a primeira requisição

\n

O coração da nossa integração será o pacote padrão net/http. Ele é leve, rápido e não requer dependências externas. Nossa tarefa é enviar uma requisição POST para o endpoint https://api.openai.com/v1/chat/completions com o corpo e cabeçalhos corretos.

\n\n

Estrutura da requisição

\n

A API ChatGPT espera um JSON de formato específico. Vamos criar estruturas Go que correspondam exatamente a esse formato:

\n
package main\n\nimport (\n    "bytes"\n    "encoding/json"\n    "fmt"\n    "io"\n    "net/http"\n    "os"\n)\n\ntype ChatMessage struct {\n    Role    string `json:"role"`\n    Content string `json:"content"`\n}\n\ntype ChatRequest struct {\n    Model    string        `json:"model"`\n    Messages []ChatMessage `json:"messages"`\n}\n\ntype ChatResponse struct {\n    Choices []struct {\n        Message ChatMessage `json:"message"`\n    } `json:"choices"`\n}
\n

Observe as tags json:"...". Elas garantem que o Go "empacote" (serialize) corretamente nossos dados no JSON que a OpenAI entenderá.

\n\n

Função de envio

\n

Agora vamos escrever uma função que cuida de todo o "trabalho pesado": monta a requisição, envia e analisa a resposta.

\n
func askChatGPT(apiKey, prompt string) (string, error) {\n    reqBody := ChatRequest{\n        Model: "gpt-3.5-turbo",\n        Messages: []ChatMessage{\n            {Role: "user", Content: prompt},\n        },\n    }\n\n    jsonData, err := json.Marshal(reqBody)\n    if err != nil {\n        return "", fmt.Errorf("erro de marshalling: %w", err)\n    }\n\n    request, err := http.NewRequest("POST", "https://api.openai.com/v1/chat/completions", bytes.NewBuffer(jsonData))\n    if err != nil {\n        return "", fmt.Errorf("erro ao criar requisição: %w", err)\n    }\n\n    request.Header.Set("Content-Type", "application/json")\n    request.Header.Set("Authorization", "Bearer "+apiKey)\n\n    client := &http.Client{}\n    response, err := client.Do(request)\n    if err != nil {\n        return "", fmt.Errorf("erro ao executar requisição: %w", err)\n    }\n    defer response.Body.Close()\n\n    body, err := io.ReadAll(response.Body)\n    if err != nil {\n        return "", fmt.Errorf("erro ao ler resposta: %w", err)\n    }\n\n    // Verifica o código de status\n    if response.StatusCode != http.StatusOK {\n        return "", fmt.Errorf("API retornou erro: %s, corpo: %s", response.Status, string(body))\n    }\n\n    var chatResp ChatRes                

Blogs

Book Recommendations