Was this page helpful?
Outcomes es una función de Vista Previa de Investigación. Solicita acceso para probarlo.
El outcome eleva una sesión de conversación a trabajo. Tú defines cómo debe verse el resultado final y cómo medir la calidad. El agente trabaja hacia ese objetivo, autoevaluándose e iterando hasta que se cumpla el resultado.
Cuando defines un resultado, el arnés aprovisiona automáticamente un evaluador para valorar el artefacto según una rúbrica. Utiliza una ventana de contexto separada para evitar ser influenciado por las decisiones de implementación del agente principal.
El evaluador devuelve un desglose por criterio: ya sea la confirmación de que el artefacto satisface la rúbrica, o las brechas específicas entre el trabajo actual y los requisitos. Ese feedback se devuelve al agente para la siguiente iteración.
Todas las solicitudes a la API de Managed Agents requieren el encabezado beta managed-agents-2026-04-01. Las funciones de vista previa de investigación requieren adicionalmente managed-agents-2026-04-01-research-preview. El SDK establece estos encabezados beta automáticamente.
Una rúbrica es un documento markdown que describe la puntuación por criterio. La rúbrica es obligatoria.
Ejemplo de rúbrica:
# DCF Model Rubric
## Revenue Projections
- Uses historical revenue data from the last 5 fiscal years
- Projects revenue for at least 5 years forward
- Growth rate assumptions are explicitly stated and reasonable
## Cost Structure
- COGS and operating expenses are modeled separately
- Margins are consistent with historical trends or deviations are justified
## Discount Rate
- WACC is calculated with stated assumptions for cost of equity and cost of debt
- Beta, risk-free rate, and equity risk premium are sourced or justified
## Terminal Value
- Uses either perpetuity growth or exit multiple method (stated which)
- Terminal growth rate does not exceed long-term GDP growth
## Output Quality
- All figures are in a single .xlsx file with clearly labeled sheets
- Key assumptions are on a separate "Assumptions" sheet
- Sensitivity analysis on WACC and terminal growth rate is includedPasa la rúbrica como texto en línea en user.define_outcome (mostrado en la siguiente sección), o súbela a través de la Files API para reutilizarla en varias sesiones:
Requiere el encabezado beta files-api-2025-04-14.
Después de crear una sesión, envía un evento user.define_outcome. El agente comienza a trabajar de inmediato; no se requiere ningún evento de mensaje de usuario adicional.
El progreso en una sesión orientada a resultados se muestra en el stream de eventos.
agent.* (mensajes, uso de herramientas, etc.) muestran el progreso hacia el resultado.span.outcome_evaluation_* solo se emiten para sesiones orientadas a resultados y muestran el número de ciclos de iteración y el proceso de feedback del evaluador.user.message a una sesión orientada a resultados, para dirigir el trabajo del agente a medida que avanza, pero no son tan necesarios; el agente sabe que debe trabajar hasta que haya agotado sus iteraciones o haya logrado el resultado.user.interrupt pausará el trabajo en el resultado actual y marcará el span.outcome_evaluation_end.result como interrupted, lo que te permite iniciar un nuevo resultado.Solo se admite un resultado a la vez, pero puedes encadenar resultados en secuencia. Para hacerlo, envía un nuevo evento user.define_outcome después del evento terminal del resultado anterior.
Este es el evento que envías para iniciar un resultado. Se devuelve al recibirse, incluyendo una marca de tiempo processed_at y un outcome_id.
{
"type": "user.define_outcome",
"description": "Build a DCF model for Costco in .xlsx",
"rubric": { "type": "file", "file_id": "file_01..." },
"max_iterations": 5
}Se emite una vez que el evaluador comienza una evaluación sobre un ciclo de iteración. El campo iteration es un contador de revisión con índice 0: 0 es la primera evaluación, 1 es la reevaluación después de la primera revisión, y así sucesivamente.
{
"type": "span.outcome_evaluation_start",
"id": "sevt_01def...",
"outcome_id": "outc_01a...",
"iteration": 0,
"processed_at": "2026-03-25T14:01:45Z"
}Latido emitido mientras el evaluador se ejecuta. El razonamiento interno del evaluador es opaco: ves que está trabajando, no lo que está pensando.
{
"type": "span.outcome_evaluation_ongoing",
"id": "sevt_01ghi...",
"outcome_id": "outc_01a...",
"processed_at": "2026-03-25T14:02:10Z"
}Se emite después de que el evaluador termina de evaluar una iteración. El campo result indica qué sucede a continuación.
| Resultado | Siguiente |
|---|---|
satisfied | La sesión pasa a idle. |
needs_revision | El agente inicia un nuevo ciclo de iteración. |
max_iterations_reached | No hay más ciclos de evaluación. El agente puede ejecutar una revisión final antes de que la sesión pase a idle. |
failed | La sesión pasa a idle. Se devuelve cuando la rúbrica fundamentalmente no coincide con la tarea, por ejemplo si la descripción y la rúbrica se contradicen entre sí. |
interrupted | Solo se emite si outcome_evaluation_start ya se activó antes de la interrupción. |
{
"type": "span.outcome_evaluation_end",
"id": "sevt_01jkl...",
"outcome_evaluation_start_id": "sevt_01def...",
"outcome_id": "outc_01a...",
"result": "satisfied",
"explanation": "All 12 criteria met: revenue projections use 5 years of historical data, WACC assumptions are stated, sensitivity table is included...",
"iteration": 0,
"usage": {
"input_tokens": 2400,
"output_tokens": 350,
"cache_creation_input_tokens": 0,
"cache_read_input_tokens": 1800
},
"processed_at": "2026-03-25T14:03:00Z"
}Puedes escuchar en el stream de eventos para span.outcome_evaluation_end, o hacer polling a GET /v1/sessions/:id y leer outcome_evaluations[].result:
El agente escribe los archivos de salida en /mnt/session/outputs/ dentro del contenedor. Una vez que la sesión está inactiva, recupéralos a través de la Files API con alcance a la sesión:
rubric=$(curl -fsSL https://api.anthropic.com/v1/files \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: managed-agents-2026-04-01,files-api-2025-04-14" \
-F file=@/path/to/pr_review_rubric.md)
rubric_id=$(jq -r '.id' <<<"$rubric")
printf 'Uploaded rubric: %s\n' "$rubric_id"# Create a session
session=$(curl -fsSL https://api.anthropic.com/v1/sessions \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: managed-agents-2026-04-01-research-preview" \
--json @- <<EOF
{
"agent": "$agent_id",
"environment_id": "$environment_id",
"title": "Financial analysis on Costco"
}
EOF
)
session_id=$(jq -r '.id' <<<"$session")
# Define the outcome — agent starts working on receipt
curl -fsSL "https://api.anthropic.com/v1/sessions/$session_id/events" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: managed-agents-2026-04-01-research-preview" \
--json @- >/dev/null <<EOF
{
"events": [
{
"type": "user.define_outcome",
"description": "Build a DCF model for Costco in .xlsx",
"rubric": {"type": "text", "content": "# DCF Model Rubric\n..."},
"max_iterations": 5
}
]
}
EOF
# or: "rubric": {"type": "file", "file_id": "$rubric_id"}
# "max_iterations" is optional; default 3, max 20session=$(curl -fsSL "https://api.anthropic.com/v1/sessions/$session_id" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: managed-agents-2026-04-01-research-preview")
jq -r '.outcome_evaluations[] | "\(.outcome_id): \(.result)"' <<<"$session"
# outc_01a...: satisfied# List files produced by this session
curl -fsSL "https://api.anthropic.com/v1/files?scope_id=$session_id" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: files-api-2025-04-14,managed-agents-2026-04-01-research-preview" \
| jq '.data[] | {id, filename, size_bytes}'
# Download by file_id
curl -fsSL "https://api.anthropic.com/v1/files/$file_id/content" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: files-api-2025-04-14" \
-o costco_dcf.xlsx