Usa el SDK de Agent para construir un agente de IA que lea tu código, encuentre errores y los corrija, todo sin intervención manual.
Lo que harás:
Crear una carpeta de proyecto
Crea un nuevo directorio para este inicio rápido:
mkdir my-agent && cd my-agentPara tus propios proyectos, puedes ejecutar el SDK desde cualquier carpeta; tendrá acceso a los archivos en ese directorio y sus subdirectorios de forma predeterminada.
Instalar el SDK
Instala el paquete del SDK de Agent para tu lenguaje:
Establece tu clave de API
Obtén una clave de API de la Consola de Claude, luego crea un archivo .env en tu directorio de proyecto:
ANTHROPIC_API_KEY=your-api-keyEl SDK también admite autenticación a través de proveedores de API de terceros:
CLAUDE_CODE_USE_BEDROCK=1 y configura las credenciales de AWSCLAUDE_CODE_USE_VERTEX=1 y configura las credenciales de Google CloudCLAUDE_CODE_USE_FOUNDRY=1 y configura las credenciales de AzureConsulta las guías de configuración para Bedrock, Vertex AI, o Azure AI Foundry para más detalles.
A menos que haya sido aprobado previamente, Anthropic no permite que desarrolladores de terceros ofrezcan inicio de sesión en claude.ai o límites de velocidad para sus productos, incluidos los agentes construidos en el SDK de Agent de Claude. Por favor, utiliza los métodos de autenticación de clave de API descritos en este documento en su lugar.
Este inicio rápido te guía a través de la construcción de un agente que puede encontrar y corregir errores en el código. Primero, necesitas un archivo con algunos errores intencionales para que el agente corrija. Crea utils.py en el directorio my-agent y pega el siguiente código:
def calculate_average(numbers):
total = 0
for num in numbers:
total += num
return total / len(numbers)
def get_user_name(user):
return user["name"].upper()Este código tiene dos errores:
calculate_average([]) se bloquea con una división por ceroget_user_name(None) se bloquea con un TypeErrorCrea agent.py si estás usando el SDK de Python, o agent.ts para TypeScript:
Este código tiene tres partes principales:
query: el punto de entrada principal que crea el bucle agentic. Devuelve un iterador asincrónico, por lo que usas async for para transmitir mensajes mientras Claude trabaja. Consulta la API completa en la referencia del SDK de Python o TypeScript.
prompt: lo que quieres que haga Claude. Claude determina qué herramientas usar según la tarea.
options: configuración para el agente. Este ejemplo usa allowedTools para restringir Claude a Read, Edit y Glob, y permissionMode: "acceptEdits" para aprobar automáticamente los cambios de archivo. Otras opciones incluyen systemPrompt, mcpServers y más. Consulta todas las opciones para o .
El bucle async for sigue ejecutándose mientras Claude piensa, llama a herramientas, observa resultados y decide qué hacer a continuación. Cada iteración produce un mensaje: el razonamiento de Claude, una llamada a herramienta, un resultado de herramienta o el resultado final. El SDK maneja la orquestación (ejecución de herramientas, gestión de contexto, reintentos) para que solo consumas el flujo. El bucle termina cuando Claude completa la tarea o encuentra un error.
El manejo de mensajes dentro del bucle filtra la salida legible por humanos. Sin filtrado, verías objetos de mensaje sin procesar, incluida la inicialización del sistema y el estado interno, lo que es útil para depuración pero ruidoso de otra manera.
Este ejemplo usa transmisión para mostrar el progreso en tiempo real. Si no necesitas salida en vivo (por ejemplo, para trabajos en segundo plano o canalizaciones de CI), puedes recopilar todos los mensajes a la vez. Consulta Transmisión vs. modo de un solo turno para más detalles.
Tu agente está listo. Ejecútalo con el siguiente comando:
Después de ejecutar, verifica utils.py. Verás código defensivo que maneja listas vacías y usuarios nulos. Tu agente autónomamente:
utils.py para entender el códigoEsto es lo que hace diferente al SDK de Agent: Claude ejecuta herramientas directamente en lugar de pedirte que las implementes.
Si ves "API key not found", asegúrate de haber establecido la variable de entorno ANTHROPIC_API_KEY en tu archivo .env o en el entorno del shell. Consulta la guía completa de solución de problemas para más ayuda.
Ahora que tu agente está configurado, prueba algunos prompts diferentes:
"Add docstrings to all functions in utils.py""Add type hints to all functions in utils.py""Create a README.md documenting the functions in utils.py"Puedes modificar el comportamiento de tu agente cambiando las opciones. Aquí hay algunos ejemplos:
Agregar capacidad de búsqueda web:
options=ClaudeAgentOptions(
allowed_tools=["Read", "Edit", "Glob", "WebSearch"],
permission_mode="acceptEdits"
)Dale a Claude un prompt de sistema personalizado:
options=ClaudeAgentOptions(
allowed_tools=["Read", "Edit", "Glob"],
permission_mode="acceptEdits",
system_prompt="You are a senior Python developer. Always follow PEP 8 style guidelines."
)Ejecuta comandos en la terminal:
options=ClaudeAgentOptions(
allowed_tools=["Read", "Edit", "Glob", "Bash"],
permission_mode="acceptEdits"
)Con Bash habilitado, prueba: "Write unit tests for utils.py, run them, and fix any failures"
Las herramientas controlan lo que tu agente puede hacer:
| Herramientas | Lo que el agente puede hacer |
|---|---|
Read, Glob, Grep | Análisis de solo lectura |
Read, Edit, Glob | Analizar y modificar código |
Read, Edit, Bash, Glob, Grep | Automatización completa |
Los modos de permiso controlan cuánta supervisión humana deseas:
| Modo | Comportamiento | Caso de uso |
|---|---|---|
acceptEdits | Aprueba automáticamente ediciones de archivos, pide otras acciones | Flujos de trabajo de desarrollo confiables |
bypassPermissions | Se ejecuta sin indicaciones | Canalizaciones de CI/CD, automatización |
default | Requiere una devolución de llamada canUseTool para manejar la aprobación | Flujos de aprobación personalizados |
El ejemplo anterior usa el modo acceptEdits, que aprueba automáticamente las operaciones de archivo para que el agente pueda ejecutarse sin indicaciones interactivas. Si deseas solicitar a los usuarios la aprobación, usa el modo default y proporciona una devolución de llamada canUseTool que recopile la entrada del usuario. Para más control, consulta Permisos.
Ahora que has creado tu primer agente, aprende cómo extender sus capacidades y adaptarlo a tu caso de uso:
Was this page helpful?
import asyncio
from claude_agent_sdk import query, ClaudeAgentOptions, AssistantMessage, ResultMessage
async def main():
# Agentic loop: streams messages as Claude works
async for message in query(
prompt="Review utils.py for bugs that would cause crashes. Fix any issues you find.",
options=ClaudeAgentOptions(
allowed_tools=["Read", "Edit", "Glob"], # Tools Claude can use
permission_mode="acceptEdits" # Auto-approve file edits
)
):
# Print human-readable output
if isinstance(message, AssistantMessage):
for block in message.content:
if hasattr(block, "text"):
print(block.text) # Claude's reasoning
elif hasattr(block, "name"):
print(f"Tool: {block.name}") # Tool being called
elif isinstance(message, ResultMessage):
print(f"Done: {message.subtype}") # Final result
asyncio.run(main())