Usar Claude API con Python: Tutorial Completo [2026]
Aprende a usar la API de Claude (Anthropic) con Python. Desde autenticación hasta streaming, tool use y mejores prácticas.
Usar Claude API con Python: Tutorial Completo [2026]
TLDR: La API de Claude se usa con el SDK oficial de Anthropic para Python. Instalación: pip install anthropic. Costo: desde $0.25/millón tokens (Haiku) hasta $15/millón (Opus). Claude 3.5 Sonnet es el mejor balance calidad/precio.Configuración inicial
Obtener API Key
- Ve a console.anthropic.com
- Crea una cuenta o inicia sesión
- Ve a API Keys y crea una nueva
- Guarda la key de forma segura
Instalación
1pip install anthropic python-dotenv
Configurar variables de entorno
1# .env2ANTHROPIC_API_KEY=sk-ant-api03-...
Código base
1import anthropic2from dotenv import load_dotenv3 4load_dotenv()5 6client = anthropic.Anthropic() # Lee ANTHROPIC_API_KEY automáticamente
Tu primera llamada a Claude
Ejemplo básico
1import anthropic2 3client = anthropic.Anthropic()4 5message = client.messages.create(6 model="claude-3-5-sonnet-20241022",7 max_tokens=1024,8 messages=[9 {"role": "user", "content": "Explica qué es Python en una frase."}10 ]11)12 13print(message.content[0].text)14# Output: Python es un lenguaje de programación de alto nivel,15# interpretado y de propósito general, conocido por su sintaxis16# clara y legible.
Modelos disponibles (2026)
| Modelo | Precio Input | Precio Output | Uso Recomendado |
|---|---|---|---|
| claude-3-5-sonnet-20241022 | $3/M | $15/M | Mejor balance |
| claude-3-5-haiku-20241022 | $0.25/M | $1.25/M | Alto volumen |
| claude-3-opus-20240229 | $15/M | $75/M | Tareas complejas |
Streaming de respuestas
El streaming permite mostrar la respuesta mientras se genera, mejorando la experiencia de usuario.
1import anthropic2 3client = anthropic.Anthropic()4 5with client.messages.stream(6 model="claude-3-5-sonnet-20241022",7 max_tokens=1024,8 messages=[9 {"role": "user", "content": "Escribe un poema corto sobre programación."}10 ]11) as stream:12 for text in stream.text_stream:13 print(text, end="", flush=True)
Streaming asíncrono
1import anthropic2import asyncio3 4async def main():5 client = anthropic.AsyncAnthropic()6 7 async with client.messages.stream(8 model="claude-3-5-sonnet-20241022",9 max_tokens=1024,10 messages=[11 {"role": "user", "content": "Cuenta hasta 10 lentamente."}12 ]13 ) as stream:14 async for text in stream.text_stream:15 print(text, end="", flush=True)16 17asyncio.run(main())
System prompts y roles
El system prompt define el comportamiento y personalidad de Claude.
1message = client.messages.create(2 model="claude-3-5-sonnet-20241022",3 max_tokens=1024,4 system="Eres un experto en Python con 20 años de experiencia. "5 "Respondes de forma concisa y siempre incluyes ejemplos de código. "6 "Usas español de España.",7 messages=[8 {"role": "user", "content": "¿Cómo ordeno una lista de diccionarios?"}9 ]10)
Conversaciones multi-turno
1conversation = []2 3def chat(user_message: str) -> str:4 conversation.append({"role": "user", "content": user_message})5 6 response = client.messages.create(7 model="claude-3-5-sonnet-20241022",8 max_tokens=1024,9 system="Eres un asistente de programación amigable.",10 messages=conversation11 )12 13 assistant_message = response.content[0].text14 conversation.append({"role": "assistant", "content": assistant_message})15 16 return assistant_message17 18# Uso19print(chat("Hola, ¿qué puedes hacer?"))20print(chat("¿Puedes ayudarme con Python?"))21print(chat("¿Cómo leo un archivo JSON?"))
Tool Use (Function Calling)
Claude puede usar herramientas (funciones) que tú defines.
1import anthropic2import json3 4client = anthropic.Anthropic()5 6# Definir herramientas7tools = [8 {9 "name": "get_weather",10 "description": "Obtiene el clima actual de una ciudad",11 "input_schema": {12 "type": "object",13 "properties": {14 "city": {15 "type": "string",16 "description": "Nombre de la ciudad"17 },18 "unit": {19 "type": "string",20 "enum": ["celsius", "fahrenheit"],21 "description": "Unidad de temperatura"22 }23 },24 "required": ["city"]25 }26 },27 {28 "name": "calculate",29 "description": "Realiza cálculos matemáticos",30 "input_schema": {31 "type": "object",32 "properties": {33 "expression": {34 "type": "string",35 "description": "Expresión matemática a evaluar"36 }37 },38 "required": ["expression"]39 }40 }41]42 43# Funciones reales44def get_weather(city: str, unit: str = "celsius") -> dict:45 # En producción, llamarías a una API real46 return {"city": city, "temperature": 22, "unit": unit, "condition": "soleado"}47 48def calculate(expression: str) -> float:49 return eval(expression) # En producción, usa una librería segura50 51# Llamar a Claude con tools52response = client.messages.create(53 model="claude-3-5-sonnet-20241022",54 max_tokens=1024,55 tools=tools,56 messages=[57 {"role": "user", "content": "¿Qué clima hace en Madrid? Y calcula 15 * 7"}58 ]59)60 61# Procesar tool calls62for block in response.content:63 if block.type == "tool_use":64 tool_name = block.name65 tool_input = block.input66 67 if tool_name == "get_weather":68 result = get_weather(**tool_input)69 elif tool_name == "calculate":70 result = calculate(**tool_input)71 72 print(f"Tool: {tool_name}, Result: {result}")
Procesamiento de imágenes
Claude puede analizar imágenes enviadas como base64 o URL.
Desde archivo local
1import anthropic2import base643 4client = anthropic.Anthropic()5 6# Leer imagen y convertir a base647with open("imagen.jpg", "rb") as f:8 image_data = base64.standard_b64encode(f.read()).decode("utf-8")9 10message = client.messages.create(11 model="claude-3-5-sonnet-20241022",12 max_tokens=1024,13 messages=[14 {15 "role": "user",16 "content": [17 {18 "type": "image",19 "source": {20 "type": "base64",21 "media_type": "image/jpeg",22 "data": image_data23 }24 },25 {26 "type": "text",27 "text": "Describe esta imagen en detalle."28 }29 ]30 }31 ]32)33 34print(message.content[0].text)
Desde URL
1message = client.messages.create(2 model="claude-3-5-sonnet-20241022",3 max_tokens=1024,4 messages=[5 {6 "role": "user",7 "content": [8 {9 "type": "image",10 "source": {11 "type": "url",12 "url": "https://example.com/imagen.jpg"13 }14 },15 {16 "type": "text",17 "text": "¿Qué ves en esta imagen?"18 }19 ]20 }21 ]22)
Mejores prácticas
1. Manejo de errores
1import anthropic2from anthropic import APIError, RateLimitError, APIConnectionError3 4client = anthropic.Anthropic()5 6def safe_call(messages: list) -> str:7 try:8 response = client.messages.create(9 model="claude-3-5-sonnet-20241022",10 max_tokens=1024,11 messages=messages12 )13 return response.content[0].text14 15 except RateLimitError:16 print("Rate limit alcanzado. Esperando...")17 time.sleep(60)18 return safe_call(messages) # Retry19 20 except APIConnectionError:21 print("Error de conexión. Reintentando...")22 time.sleep(5)23 return safe_call(messages)24 25 except APIError as e:26 print(f"Error de API: {e}")27 return None
2. Optimizar costos
1# Usar Haiku para tareas simples2def quick_task(prompt: str) -> str:3 return client.messages.create(4 model="claude-3-5-haiku-20241022", # Más barato5 max_tokens=256, # Limitar output6 messages=[{"role": "user", "content": prompt}]7 ).content[0].text8 9# Usar Sonnet para tareas complejas10def complex_task(prompt: str) -> str:11 return client.messages.create(12 model="claude-3-5-sonnet-20241022",13 max_tokens=4096,14 messages=[{"role": "user", "content": prompt}]15 ).content[0].text
3. Caching de prompts (beta)
1# Anthropic ofrece caching para system prompts largos2# Reduce costos hasta 90% en prompts repetidos3response = client.messages.create(4 model="claude-3-5-sonnet-20241022",5 max_tokens=1024,6 system=[7 {8 "type": "text",9 "text": "Tu system prompt muy largo aquí...",10 "cache_control": {"type": "ephemeral"}11 }12 ],13 messages=[{"role": "user", "content": "Pregunta"}]14)
FAQ
¿Cuál es el límite de tokens?
Claude 3.5 Sonnet tiene un contexto de 200K tokens. Puedes enviar ~150K de input y recibir hasta 8K de output.
¿Cómo cuento tokens antes de enviar?
1from anthropic import Anthropic2 3client = Anthropic()4tokens = client.count_tokens("Tu texto aquí")5print(f"Tokens: {tokens}")
¿Claude recuerda conversaciones anteriores?
No, cada llamada a la API es independiente. Debes enviar todo el historial en messages.
¿Cuál es la diferencia entre Claude y ChatGPT API?
| Aspecto | Claude | ChatGPT |
|---|---|---|
| Ventana contexto | 200K | 128K |
| Mejor para | Análisis largo, código | Conversación general |
| Tool use | Muy bueno | Muy bueno |
| Vision | Sí | Sí |
Conclusión
La API de Claude es potente y fácil de usar. Puntos clave:
- Usa Haiku para alto volumen, Sonnet para balance, Opus para tareas críticas
- Implementa streaming para mejor UX
- Maneja errores con reintentos exponenciales
- Aprovecha tools para tareas estructuradas
Recursos relacionados:
Más contenido técnico en Javadex.es
Síguenos: YouTube @JavadexAI | TikTok @javadex
¿Listo para poner tu proyecto en producción?
Si estás siguiendo este tutorial, necesitas un servidor donde desplegarlo. Yo uso Hostinger para mis proyectos porque el panel es intuitivo, los VPS van con SSD NVMe, y a 4,99€/mes no hay nada comparable en relación calidad-precio.
* Enlace de afiliado. Si contratas a través de este enlace, nos ayudas a mantener este contenido gratuito.
Posts Relacionados
Consultoría IA en San Sebastián (Donostia): Agentes, Automatización y Modelos Privados para Empresas [2026]
Guía completa de servicios de inteligencia artificial en San Sebastián: agentes IA, automatización, modelos privados y consultoría para empresas vascas en 2026.
Kit Digital 2026 para IA: Cómo Solicitar Hasta 12.000€ para tu PYME Paso a Paso
Tutorial paso a paso para solicitar el Kit Digital 2026 con soluciones de IA. Requisitos, cuantías por segmento (hasta 12.000€), agentes digitalizadores y errores que rechazan tu solicitud.
Formación en Claude Code para Empresas en España: Proveedores, Precios y Qué Esperar [2026]
Guía de formación en Claude Code para empresas españolas: proveedores, precios (desde 4.000€), programas in-company, duración y resultados esperados.
Javier Santos Criado
Consultor de IA y Automatización | Fundador de Javadex
Experto en implementación de soluciones de Inteligencia Artificial para empresas. Especializado en automatización con n8n, integración de LLMs, y desarrollo de agentes IA.
Lleva tu proyecto a producción
Hosting web desde 2,99€/mes o VPS con SSD NVMe desde 4,99€/mes. Panel intuitivo, IP dedicada y soporte 24/7 en español.
¿Quieres más contenido de IA?
Explora nuestras comparativas y guías