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.

- 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
- 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
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.
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"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.
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)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.
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)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.
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)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.
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()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.
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")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.