loop engineering
Opus 4.7, esfuerzo xhigh y task budgets: ponle límites a tu agente
Claude Opus 4.7 llegó con un nuevo nivel de esfuerzo, xhigh, y con task budgets en beta. Te explicamos cómo combinarlos con max_tokens y con el Claude Agent SDK para controlar cuánto trabaja tu agente.
Focuz Academy · 24 de abril de 2026 · 7 min
El 16 de abril de 2026 Anthropic lanzó Claude Opus 4.7, disponible en la API como claude-opus-4-7 al mismo precio que Opus 4.6: 5 USD por millón de tokens de entrada y 25 USD por millón de salida. Para quien construye agentes, lo más útil no es solo el modelo, sino dos controles que llegaron con él: el nivel de esfuerzo xhigh y los task budgets. Juntos cambian la forma de ponerle límites a un agent loop.
Qué trae Opus 4.7 para desarrolladores
Según el anuncio y las notas de versión de la API:
- Sigue las instrucciones al pie de la letra. Anthropic advierte que los prompts escritos para modelos anteriores pueden dar resultados inesperados, porque Opus 4.7 interpreta las instrucciones de forma literal. Recomienda reajustar prompts y harnesses.
- Nuevo tokenizador. El mismo texto puede convertirse en entre 1,0 y 1,35 veces más tokens, según el tipo de contenido.
- Piensa más con esfuerzos altos, sobre todo en los últimos turnos de una tarea agéntica. Gana fiabilidad, pero produce más tokens de salida.
- Imágenes de mayor resolución: hasta 2576 píxeles en el lado largo (antes, 1568). Sirve si tu agente lee capturas de pantalla, por ejemplo de vistas de Odoo, pero cada imagen puede consumir hasta unas 3 veces más tokens.
Tres perillas para controlar el loop
| Control | Qué controla | Tipo de límite |
|---|---|---|
effort |
Cuánto trabaja el modelo en cada paso: pensamiento, texto y llamadas a herramientas | Señal de comportamiento |
task_budget |
El trabajo total de todo el loop | Orientativo (beta) |
max_tokens |
La salida de cada solicitud | Límite duro |
Effort. xhigh ("extra alto") se ubica entre high y max. La documentación de effort lo describe como el nivel para tareas largas de código y agentes. Para código y casos agénticos con Opus 4.7, Anthropic recomienda empezar con high o xhigh. En Claude Code, el esfuerzo por defecto subió a xhigh en todos los planes.
Task budgets. Le indicas al modelo cuántos tokens tiene para todo el loop: pensamiento, llamadas a herramientas, resultados de herramientas y respuesta final. El modelo ve una cuenta regresiva y la usa para priorizar y cerrar de forma ordenada. Está en beta con el encabezado task-budgets-2026-03-13 y es orientativo: el límite duro sigue siendo max_tokens. La guía de task budgets advierte que un presupuesto demasiado pequeño puede hacer que el modelo recorte la tarea o se detenga antes de tiempo.
La regla práctica: effort regula la profundidad de cada paso; task_budget, la cantidad total de trabajo.
Ejemplo 1: Messages API con el SDK de Python
La versión 0.96.0 del SDK anthropic (16 de abril) agregó claude-opus-4-7 y los task budgets. Así se combinan:
import anthropic
client = anthropic.Anthropic()
with client.beta.messages.stream(
model="claude-opus-4-7",
max_tokens=64000,
output_config={
"effort": "xhigh",
"task_budget": {"type": "tokens", "total": 128000},
},
messages=[{
"role": "user",
"content": "Propón un plan para migrar un módulo de Odoo 17 a Odoo 19.",
}],
betas=["task-budgets-2026-03-13"],
) as stream:
respuesta = stream.get_final_message()
print(respuesta.usage)
Usamos streaming porque, con un max_tokens alto, una respuesta larga tarda en generarse.
Ejemplo 2: el mismo control con el Claude Agent SDK
Si tu agente usa el Claude Agent SDK para Python, la versión vigente a la fecha es la 0.1.66 (23 de abril). Su ClaudeAgentOptions ya incluye effort (low, medium, high, max), task_budget (agregado en la 0.1.51) y dos topes del lado del cliente: max_turns y max_budget_usd. Ojo: en esta versión, xhigh todavía no figura en el tipo effort del SDK de Python, así que usamos high.
import asyncio
from claude_agent_sdk import (
AssistantMessage, ClaudeAgentOptions, ResultMessage, TextBlock, query,
)
opciones = ClaudeAgentOptions(
model="claude-opus-4-7",
effort="high",
task_budget={"total": 300_000}, # orientativo, lo ve el modelo
max_turns=40, # tope duro de turnos
max_budget_usd=3.0, # tope duro de costo
allowed_tools=["Read", "Grep", "Glob"], # solo pre-aprobamos lectura
cwd="addons/mi_modulo",
)
async def main():
prompt = ("Revisa este módulo de Odoo 19. Lista los métodos que escriben "
"en la base de datos y no tienen pruebas, y propone un plan de "
"pruebas. No modifiques archivos.")
async for msg in query(prompt=prompt, options=opciones):
if isinstance(msg, AssistantMessage):
for bloque in msg.content:
if isinstance(bloque, TextBlock):
print(bloque.text)
elif isinstance(msg, ResultMessage):
print(f"Turnos: {msg.num_turns} | Costo: {msg.total_cost_usd} USD")
asyncio.run(main())
Fíjate en la diferencia: task_budget lo ve el modelo y le permite planificar; max_turns y max_budget_usd los aplica el SDK y cortan la ejecución aunque el modelo no haya terminado. Un buen loop usa ambos: el primero para terminar bien, los segundos como red de seguridad.
Otro detalle: en Opus 4.7 el pensamiento se devuelve omitido por defecto. El CHANGELOG del SDK registra en la 0.1.65 el nuevo campo display en la configuración de thinking, pero en el paquete publicado aparece recién en la 0.1.66, la vigente. Con él puedes pedir un resumen legible si lo necesitas para depurar.
Ejercicio
- Toma un módulo propio de Odoo 19 y ejecuta el ejemplo 2 con
effortenlow,mediumyhigh, sintask_budget. - Anota en una tabla
num_turns,total_cost_usdy tu evaluación de la calidad del plan. - Si migras desde Opus 4.6, repite una corrida con ese modelo: el nuevo tokenizador y el mayor razonamiento cambian el consumo.
- Fija
task_budgeta partir de lo que mediste. La guía oficial sugiere partir del percentil 99 del consumo por tarea y ajustar desde ahí. - Revisa tus prompts: si el agente ahora "hace exactamente lo que dijiste" y eso no era lo que querías, el problema está en la instrucción.
Fuentes: Anthropic: Introducing Claude Opus 4.7 · Notas de versión de la API · Effort · Task budgets · CHANGELOG del Claude Agent SDK para Python · CHANGELOG del SDK anthropic para Python
Guía gratuita: 5 agentes Python para Odoo
Casos de Junior a Senior, con código verificado contra Odoo 20.
Descargar →¿Empiezas desde cero? Lee qué es el agent loop y sigue las lecciones gratuitas.