ROTA · 6 CLASSES · 1 GRUPOS
Claude API em Go
Integre conversas, streaming, ferramentas e saídas estruturadas com Go.
Pré-requisitos orientam, mas nunca bloqueiam. Cinco classes fundamentais e o bônus Go 1.27 são grátis com conta.O ARCO DA ROTA
ORDEM RECOMENDADA
6 classes, do primeiro passo ao fechamento.
Cada classe leva cerca de 15–25 minutos no novo formato de slides. Você pode sair da ordem quando outro nó fizer mais sentido.
- 01Claude API em GoA API por dentro: HTTP e JSON
Transforme uma chamada ao Claude em método, headers, corpo JSON e resposta verificável.
- 02Claude API em GoChat básico com histórico explícito
Monte conversas de vários turnos preservando papéis, ordem e contexto sem estado oculto.
- 03Claude API em GoStreaming SSE sem perder deltas
Leia eventos SSE incrementalmente, acumule deltas e trate o encerramento do stream.
- 04Claude API em GoTool calling com despacho controlado
Interprete pedidos de ferramenta, valide argumentos e devolva resultados ao modelo com segurança.
- 05Claude API em GoStructured output validado em Go
Converta texto do modelo em dados tipados, valide o contrato e rejeite respostas ambíguas.
- 06Claude API em GoCapstone: assistente de triagem para o trabalho
Integre conversa, streaming, tools e saída estruturada em um assistente de triagem demonstrável.
PRÉVIA DA PRIMEIRA CLASSE
A API por dentro: HTTP e JSON
payload := []byte(`{"model":"claude-sonnet-4-5","max_tokens":64}`)
// O envelope combina destino, credencial, versão e JSON.
request, err := http.NewRequest(http.MethodPost, endpoint, bytes.NewReader(payload))
if err != nil {
return err
}
request.Header.Set("x-api-key", apiKey)
request.Header.Set("anthropic-version", "2023-06-01")
request.Header.Set("content-type", "application/json")
request.Header.Set("anthropic-dangerous-direct-browser-access", "true")
// Só envie depois de inspecionar o contrato completo.
response, err := client.Do(request)
Pense em uma entrega registrada na portaria. O pacote tem destino, etiquetas obrigatórias, conteúdo e um comprovante de resposta. Uma chamada à Claude API segue a mesma disciplina: endpoint e método dão o destino; headers autenticam e versionam; JSON leva a mensagem; status e JSON de resposta confirmam o resultado. Se uma dessas partes some, o problema não é “a IA”; é um envelope incompleto que você consegue inspecionar.
Nesta aula, o foco é a api por dentro: http e json. O risco concreto é aceitar texto plausível sem verificar o protocolo que o produziu. Isso gera falhas difíceis de reproduzir, cobra chamadas durante testes e deixa credenciais próximas demais da lógica de negócio. A saída é dividir transporte, parsing e decisão em funções pequenas.
A Anthropic Messages API recebe POST /v1/messages. Uma chamada real inclui x-api-key, anthropic-version, content-type: application/json e, quando parte diretamente do navegador, anthropic-dangerous-direct-browser-access: true. Esse último header autoriza explicitamente o cenário CORS; ele não substitui autenticação nem torna aceitável enviar a chave ao backend da plataforma.
O modelo BYO deste curso é literal: você fornece a própria chave no editor. Ela é guardada no localStorage do seu navegador e NUNCA chega aos nossos servidores. O navegador envia a requisição direto para api.anthropic.com. Remover os dados do site apaga a chave local. Não cole uma chave em código, fixture, screenshot, commit ou mensagem de erro.
Cada exercício usa uma resposta gravada em testdata/recorded-response.json. O harness não abre socket e não consulta ambiente. Assim, a mesma entrada produz o mesmo resultado sem chave, cobrança ou instabilidade. A execução livre pode usar a API quando encontra uma chave; sem ela, volta para fixture e explica esse modo em vez de bloquear você.
O carrossel acompanha quatro estados: bytes de entrada, parsing, decisão e saída. A fronteira visual ajuda a localizar defeitos. Se o JSON não decodifica, não culpe a regra. Se os dados decodificam mas falham na validação, não repita a requisição. Essa separação reduz custo e tempo de diagnóstico.
Antes de executar, preveja se o programa usa rede quando ANTHROPIC_API_KEY está vazio. Depois rode sem chave e confirme a resposta da fixture. No editor do curso, o campo BYO injeta a chave somente nesta execução; ela fica no localStorage do seu navegador e nunca chega aos nossos servidores.
package main
import (
"bytes"
"fmt"
"io"
"net/http"
"os"
)
func main() {
fixture := []byte(`{"content":[{"type":"text","text":"modo fixture ativo"}]}`)
key := os.Getenv("ANTHROPIC_API_KEY")
if key == "" {
fmt.Println(string(fixture))
return
}
body := []byte(`{"model":"claude-sonnet-4-5","max_tokens":64,"messages":[{"role":"user","content":"Resuma o status"}]}`)
request, _ := http.NewRequest("POST", "https://api.anthropic.com/v1/messages", bytes.NewReader(body))
request.Header.Set("x-api-key", key)
request.Header.Set("anthropic-version", "2023-06-01")
request.Header.Set("content-type", "application/json")
request.Header.Set("anthropic-dangerous-direct-browser-access", "true")
response, err := http.DefaultClient.Do(request)
if err != nil {
fmt.Println(string(fixture))
return
}
defer response.Body.Close()
data, err := io.ReadAll(response.Body)
if err != nil || response.StatusCode/100 != 2 {
fmt.Println(string(fixture))
return
}
fmt.Println(string(data))
}Entre para continuar nos slides, rodar o código e enfrentar os desafios.
Começar pela rota →ESTA ROTA E TODAS AS OUTRAS
Qualquer plano abre os 192 nós.
Mensal R$19,90 · anual R$149 · lifetime R$499. Todos têm garantia de 7 dias.