Was this page helpful?
Outcomes è una funzionalità in anteprima di ricerca. Richiedi l'accesso per provarla.
L'outcome eleva una sessione da conversazione a lavoro. Definisci come dovrebbe apparire il risultato finale e come misurare la qualità. L'agente lavora verso quell'obiettivo, autovalutandosi e iterando finché il risultato non viene raggiunto.
Quando definisci un risultato, il sistema provvede automaticamente a un grader per valutare l'artefatto rispetto a una rubrica. Sfrutta una finestra di contesto separata per evitare di essere influenzato dalle scelte implementative dell'agente principale.
Il grader restituisce una suddivisione per criterio: o la conferma che l'artefatto soddisfa la rubrica, oppure le lacune specifiche tra il lavoro attuale e i requisiti. Quel feedback viene restituito all'agente per l'iterazione successiva.
Tutte le richieste API di Managed Agents richiedono l'intestazione beta managed-agents-2026-04-01. Le funzionalità in anteprima di ricerca richiedono inoltre managed-agents-2026-04-01-research-preview. L'SDK imposta automaticamente queste intestazioni beta.
Una rubrica è un documento markdown che descrive la valutazione per criterio. La rubrica è obbligatoria.
Esempio di rubrica:
# 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 includedPassa la rubrica come testo inline su user.define_outcome (mostrato nella sezione successiva), oppure caricala tramite la Files API per il riutilizzo tra sessioni:
Richiede l'intestazione beta files-api-2025-04-14.
Dopo aver creato una sessione, invia un evento user.define_outcome. L'agente inizia a lavorare immediatamente; non è richiesto alcun evento di messaggio utente aggiuntivo.
Il progresso su una sessione orientata ai risultati viene mostrato nello stream degli eventi.
agent.* (messaggi, uso degli strumenti, ecc.) mostrano il progresso verso il risultato.span.outcome_evaluation_* vengono emessi solo per sessioni orientate ai risultati e mostrano il numero di cicli di iterazione e il processo di feedback del grader.user.message a una sessione orientata ai risultati, per guidare il lavoro dell'agente mentre procede, ma questi non sono così necessari; l'agente sa di dover lavorare finché non ha esaurito le iterazioni o raggiunto il risultato.user.interrupt metterà in pausa il lavoro sul risultato corrente e contrassegnerà span.outcome_evaluation_end.result come interrupted, consentendoti di avviare un nuovo risultato.È supportato un solo risultato alla volta, ma puoi concatenare risultati in sequenza. Per farlo, invia un nuovo evento user.define_outcome dopo l'evento terminale del risultato precedente.
Questo è l'evento che invii per avviare un risultato. Viene restituito alla ricezione, incluso un timestamp processed_at e 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
}Emesso una volta che il grader avvia una valutazione su un ciclo di iterazione. Il campo iteration è un contatore di revisioni con indice 0: 0 è la prima valutazione, 1 è la rivalutazione dopo la prima revisione, e così via.
{
"type": "span.outcome_evaluation_start",
"id": "sevt_01def...",
"outcome_id": "outc_01a...",
"iteration": 0,
"processed_at": "2026-03-25T14:01:45Z"
}Heartbeat emesso mentre il grader è in esecuzione. Il ragionamento interno del grader è opaco: vedi che sta lavorando, non cosa sta pensando.
{
"type": "span.outcome_evaluation_ongoing",
"id": "sevt_01ghi...",
"outcome_id": "outc_01a...",
"processed_at": "2026-03-25T14:02:10Z"
}Emesso dopo che il grader ha terminato la valutazione di un'iterazione. Il campo result indica cosa succede dopo.
| Risultato | Successivo |
|---|---|
satisfied | La sessione passa a idle. |
needs_revision | L'agente avvia un nuovo ciclo di iterazione. |
max_iterations_reached | Nessun ulteriore ciclo di valutazione. L'agente può eseguire una revisione finale prima che la sessione passi a idle. |
failed | La sessione passa a idle. Restituito quando la rubrica non corrisponde fondamentalmente al compito, ad esempio se la descrizione e la rubrica si contraddicono a vicenda. |
interrupted | Emesso solo se outcome_evaluation_start è già stato attivato prima dell'interruzione. |
{
"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"
}Puoi ascoltare lo stream degli eventi per span.outcome_evaluation_end, oppure eseguire il polling di GET /v1/sessions/:id e leggere outcome_evaluations[].result:
L'agente scrive i file di output in /mnt/session/outputs/ all'interno del container. Una volta che la sessione è inattiva, recuperali tramite la Files API con scope alla sessione:
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