Viernes, 11 de septiembre de 2026  ·  LATAM / Español
Intermedio 45 min en total 6 pasos

Cómo usar Claude para programar en Python

Integra la API de Claude en tus scripts Python para generar, revisar y depurar código de forma fiable.

Imagen de portada editorial · Cómo usar Claude para programar en Python · Educación · Claude Builders
Requisitos
  • Python 3.9 o superior instalado
  • Cuenta en console.anthropic.com con crédito de API
  • Clave de API de Anthropic
  • Conocimientos básicos de terminal y pip
Lo que vas a aprender
  • Instalar y configurar el SDK oficial de Anthropic en Python
  • Enviar prompts para generar código Python funcional
  • Usar system prompts para forzar un estilo y calidad concretos
  • Revisar y depurar tu propio código con Claude
  • Automatizar tareas de refactorización con streaming
PASO 1 · ~8 min

Instalar el SDK y configurar la clave

Empezamos creando un entorno virtual limpio para no contaminar tu Python global, algo especialmente útil si trabajas en varios proyectos a la vez. Después instalamos el SDK oficial de Anthropic, que es la forma soportada de hablar con la API desde Python. La clave de API la obtienes en console.anthropic.com dentro de la sección API Keys; nunca la escribas directamente en el código. En su lugar la guardamos como variable de entorno, que el SDK lee automáticamente. En España y LATAM el proceso es idéntico: solo necesitas una tarjeta para añadir crédito. Verifica que la instalación funciona importando la librería sin errores antes de continuar.

bash
python -m venv venv
source venv/bin/activate   # en Windows: venv\Scripts\activate
pip install anthropic
export ANTHROPIC_API_KEY="sk-ant-tu-clave-aqui"
ConsejoEn Windows PowerShell usa $env:ANTHROPIC_API_KEY="sk-ant-..." en lugar de export.
Error comúnNo subas nunca tu clave a Git. Añade .env y venv/ a tu .gitignore desde el minuto uno.
PASO 2 · ~10 min

Generar tu primer script con Claude

Ahora hacemos la primera llamada real a la API. El cliente lee la variable de entorno ANTHROPIC_API_KEY automáticamente, así que no hace falta pasarla explícitamente. Usamos el modelo claude-opus-4-8 y le pedimos que escriba una función Python concreta. La clave para obtener buen código es ser específico: indica firma de la función, tipos de entrada/salida y casos límite. El parámetro max_tokens limita la longitud de la respuesta; para funciones cortas 1024 sobra. La respuesta llega en response.content, que es una lista de bloques; el texto está en el primer bloque. Con esto ya tienes a Claude generando código bajo demanda desde Python.

python
import anthropic

client = anthropic.Anthropic()

response = client.messages.create(
    model="claude-opus-4-8",
    max_tokens=1024,
    messages=[{
        "role": "user",
        "content": "Escribe una funcion Python llamada validar_dni(dni: str) -> bool "
                   "que valide un DNI espanol (8 numeros + letra de control). "
                   "Incluye docstring y type hints."
    }]
)

print(response.content[0].text)
ConsejoPide siempre type hints y docstrings en el prompt: mejora la calidad y facilita revisar lo que genera.
Error comúnSi recibes un error 401, tu clave no está bien configurada; revisa la variable de entorno con echo $ANTHROPIC_API_KEY.
PASO 3 · ~8 min

Forzar estilo y calidad con system prompt

El system prompt define el rol y las reglas globales de Claude, y es la herramienta más potente para conseguir código consistente. Aquí le indicamos que actúe como ingeniero senior de Python, que siga PEP 8, que use type hints y que no añada explicaciones innecesarias cuando solo quieres el código. Esto reduce el ruido y hace las respuestas directamente pegables en tu proyecto. Baja la temperature a 0 para tareas de código: quieres respuestas deterministas y reproducibles, no creatividad. Separar el system del mensaje del usuario también te permite reutilizar las mismas reglas en muchas llamadas distintas.

python
SYSTEM = (
    "Eres un ingeniero senior de Python. Sigue PEP 8, usa type hints y "
    "docstrings estilo Google. Devuelve SOLO codigo, sin explicaciones "
    "salvo que se pidan. No uses librerias externas si la stdlib basta."
)

response = client.messages.create(
    model="claude-opus-4-8",
    max_tokens=1500,
    temperature=0,
    system=SYSTEM,
    messages=[{
        "role": "user",
        "content": "Crea una clase Cache LRU con capacidad configurable."
    }]
)

print(response.content[0].text)
ConsejoGuarda tus system prompts en un módulo aparte para reutilizarlos como si fueran plantillas de tu equipo.
Error comúnCon temperature alta el código varía en cada ejecución y puede introducir bugs sutiles distintos cada vez.
PASO 4 · ~6 min

Revisar y depurar código existente

Claude no solo genera: es excelente revisando código que ya tienes. Le pasamos el fuente dentro de bloques de triple backtick para que quede claro qué es código y qué es instrucción. Aquí le pedimos que detecte bugs, problemas de seguridad y malas prácticas, y que devuelva la versión corregida. Este patrón es ideal para code reviews automatizados en tu flujo de trabajo. Puedes leer el archivo desde disco y pasar su contenido directamente. Para archivos grandes divide por función o módulo, ya que un contexto enorme diluye la atención del modelo sobre el detalle que te importa.

python
codigo = '''
def dividir(a, b):
    return a / b

def procesar(lista):
    total = 0
    for i in range(len(lista)):
        total = total + lista[i]
    return total / len(lista)
'''

response = client.messages.create(
    model="claude-opus-4-8",
    max_tokens=2000,
    temperature=0,
    system="Eres revisor de codigo Python. Detecta bugs y sugiere mejoras.",
    messages=[{
        "role": "user",
        "content": f"Revisa este codigo, lista los problemas y devuelve la version corregida:\n```python\n{codigo}\n```"
    }]
)

print(response.content[0].text)
ConsejoPide que numere los problemas encontrados: así puedes convertir la salida en tickets o comentarios de PR.
Error comúnNo pegues secretos ni datos personales reales en los prompts de revisión; usa datos ficticios.
PASO 5 · ~5 min

Recibir código en streaming

Cuando generas archivos grandes, esperar a que la respuesta completa llegue puede tardar. El streaming te devuelve el texto token a token, mejorando la experiencia si lo muestras en una CLI o una interfaz. El SDK ofrece client.messages.stream como context manager. Iteras sobre text_stream para ir imprimiendo lo que llega. Esto es especialmente útil si integras Claude en una herramienta interna para tu equipo en la que quieras feedback inmediato mientras se genera el código. Al final puedes recuperar el mensaje completo con get_final_message si necesitas guardarlo en disco.

python
with client.messages.stream(
    model="claude-opus-4-8",
    max_tokens=3000,
    temperature=0,
    system="Eres ingeniero senior de Python.",
    messages=[{
        "role": "user",
        "content": "Escribe un cliente HTTP async con reintentos usando httpx."
    }]
) as stream:
    for texto in stream.text_stream:
        print(texto, end="", flush=True)

    mensaje_final = stream.get_final_message()
ConsejoCombina streaming con flush=True para ver el código aparecer en tiempo real en la terminal.
Error comúnNo proceses el texto parcial como si fuera código válido: solo es fiable cuando el stream termina.
PASO 6 · ~8 min

Guardar el código generado en un archivo

El último paso cierra el flujo completo: extraer solo el bloque de código de la respuesta y escribirlo a disco listo para ejecutar. Claude suele envolver el código en bloques markdown, así que usamos una expresión regular sencilla para extraer el contenido entre los backticks. Si no encuentra bloque, guardamos la respuesta tal cual como fallback. Con esta función tienes un mini-generador de scripts reutilizable: le pasas una descripción y te devuelve un archivo .py. A partir de aquí puedes construir tu propia herramienta de scaffolding para acelerar proyectos repetitivos.

python
import re

def guardar_codigo(texto: str, ruta: str) -> None:
    match = re.search(r"```(?:python)?\n(.*?)```", texto, re.DOTALL)
    codigo = match.group(1) if match else texto
    with open(ruta, "w", encoding="utf-8") as f:
        f.write(codigo.strip() + "\n")
    print(f"Guardado en {ruta}")

guardar_codigo(response.content[0].text, "generado.py")
ConsejoEjecuta siempre flake8 o ruff sobre el archivo generado antes de darlo por bueno.
Error comúnNunca ejecutes código generado con exec() sin revisarlo: podría contener llamadas peligrosas al sistema.
Resultado

Has montado un flujo completo en Python que usa la API de Claude para generar, revisar, depurar y guardar código de forma programática. Ahora sabes configurar el SDK, controlar la calidad con system prompts y temperature, revisar tu propio código y trabajar con streaming. Este es exactamente el tipo de proyecto donde aprender a construir sobre la API de Claude marca la diferencia entre usar un chat y automatizar tu trabajo real como developer.

PRÓXIMOS PASOS