Saltar al contenido
NUEVOGuía práctica con 5 agentes Python para Odoo, verificada contra Odoo 20 →
Focuz/academy

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

  1. Toma un módulo propio de Odoo 19 y ejecuta el ejemplo 2 con effort en low, medium y high, sin task_budget.
  2. Anota en una tabla num_turns, total_cost_usd y tu evaluación de la calidad del plan.
  3. Si migras desde Opus 4.6, repite una corrida con ese modelo: el nuevo tokenizador y el mayor razonamiento cambian el consumo.
  4. Fija task_budget a partir de lo que mediste. La guía oficial sugiere partir del percentil 99 del consumo por tarea y ajustar desde ahí.
  5. 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.

Sigue leyendo