Phase 00 - Lesson 04
APIs y Claves
Toda API de IA funciona de la misma manera: envías una solicitud, recibes una respuesta. Los detalles cambian, el patrón no.
Tipo: Build Lenguajes: Python, TypeScript Requisitos previos: Fase 0, Lección 01 Tiempo: ~30 minutos
Objetivos de Aprendizaje
- Almacenar claves de API de forma segura usando variables de entorno y archivos
.env - Hacer una llamada a una API de LLM usando tanto el SDK de Python de Anthropic como HTTP puro
- Comparar los formatos de solicitud/respuesta basados en SDK y en HTTP puro para depuración
- Identificar y manejar errores comunes de API, incluyendo autenticación y límites de tasa
El Problema
A partir de la Fase 11, llamarás a APIs de LLM (Anthropic, OpenAI, Google). En las Fases 13-16 construirás agentes que usan estas APIs en bucles. Necesitas saber cómo funcionan las claves de API, cómo almacenarlas de forma segura y cómo hacer tu primera llamada a una API.
El Concepto
sequenceDiagram
participant C as Your Code
participant S as API Server
C->>S: HTTP Request (with API key)
S->>C: HTTP Response (JSON)
Toda llamada a una API tiene:
- Un endpoint (URL)
- Una clave de API (autenticación)
- Un cuerpo de solicitud (lo que quieres)
- Un cuerpo de respuesta (lo que recibes de vuelta)
Build It
Paso 1: Almacena las claves de API de forma segura
Nunca pongas claves de API en el código. Usa variables de entorno.
export ANTHROPIC_API_KEY="sk-ant-..."
export OPENAI_API_KEY="sk-..."
O usa un archivo .env (agrégalo a .gitignore):
ANTHROPIC_API_KEY=sk-ant-...
OPENAI_API_KEY=sk-...
Paso 2: Primera llamada a la API (Python)
import anthropic
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=256,
messages=[{"role": "user", "content": "What is a neural network in one sentence?"}]
)
print(response.content[0].text)
Paso 3: Primera llamada a la API (TypeScript)
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic();
const response = await client.messages.create({
model: "claude-sonnet-4-20250514",
max_tokens: 256,
messages: [{ role: "user", content: "What is a neural network in one sentence?" }],
});
console.log(response.content[0].text);
Paso 4: HTTP puro (sin SDK)
import os
import urllib.request
import json
url = "https://api.anthropic.com/v1/messages"
headers = {
"Content-Type": "application/json",
"x-api-key": os.environ["ANTHROPIC_API_KEY"],
"anthropic-version": "2023-06-01",
}
body = json.dumps({
"model": "claude-sonnet-4-20250514",
"max_tokens": 256,
"messages": [{"role": "user", "content": "What is a neural network in one sentence?"}],
}).encode()
req = urllib.request.Request(url, data=body, headers=headers, method="POST")
with urllib.request.urlopen(req) as resp:
result = json.loads(resp.read())
print(result["content"][0]["text"])
Esto es lo que hacen los SDKs por debajo. Entender la llamada HTTP pura ayuda al momento de depurar.
Use It
Para este curso:
| API | Cuándo la necesitas | Plan gratuito |
|---|---|---|
| Anthropic (Claude) | Fases 11-16 (agentes, herramientas) | US$5 de crédito al registrarte |
| OpenAI | Fase 11 (comparación) | US$5 de crédito al registrarte |
| Hugging Face | Fases 4-10 (modelos, datasets) | Gratis |
No necesitas todas ahora mismo. Configúralas cuando la lección lo requiera.
Ship It
Esta lección produce:
outputs/prompt-api-troubleshooter.md- diagnostica errores comunes de API
Ejercicios
- Obtén una clave de API de Anthropic y haz tu primera llamada a la API
- Prueba la versión de HTTP puro y compara el formato de la respuesta con la versión del SDK
- Usa intencionalmente una clave de API incorrecta y lee el mensaje de error
Términos Clave
| Término | Lo que dice la gente | Lo que realmente significa |
|---|---|---|
| Clave de API | "Contraseña de la API" | Una cadena única que identifica tu cuenta y autoriza las solicitudes |
| Límite de tasa | "Me están limitando" | Máximo de solicitudes por minuto/hora para evitar abuso y garantizar un uso justo |
| Token | "Una palabra" (en el contexto de API) | Una unidad de facturación: los tokens de entrada y de salida se cuentan y cobran por separado |
| Streaming | "Respuestas en tiempo real" | Recibir la respuesta palabra por palabra en lugar de esperar la respuesta completa |