Outcomes adalah fitur Research Preview. Minta akses untuk mencobanya.
outcome meningkatkan sesi dari percakapan menjadi pekerjaan. Anda mendefinisikan seperti apa hasil akhirnya dan bagaimana mengukur kualitasnya. Agen bekerja menuju target tersebut, mengevaluasi diri sendiri dan beriterasi hingga hasil tercapai.
Ketika Anda mendefinisikan sebuah outcome, harness secara otomatis menyediakan grader untuk mengevaluasi artefak terhadap rubrik. Ini memanfaatkan jendela konteks terpisah untuk menghindari pengaruh dari pilihan implementasi agen utama.
Grader mengembalikan rincian per-kriteria: baik konfirmasi bahwa artefak memenuhi rubrik, atau kesenjangan spesifik antara pekerjaan saat ini dan persyaratan. Umpan balik tersebut diberikan kembali kepada agen untuk iterasi berikutnya.
Semua permintaan Managed Agents API memerlukan header beta managed-agents-2026-04-01. Fitur research preview juga memerlukan managed-agents-2026-04-01-research-preview. SDK menetapkan header beta ini secara otomatis.
Rubrik adalah dokumen markdown yang mendeskripsikan penilaian per-kriteria. Rubrik wajib ada.
Contoh rubrik:
# 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 includedBerikan rubrik sebagai teks inline pada user.define_outcome (ditampilkan di bagian berikutnya), atau unggah melalui Files API untuk digunakan kembali di berbagai sesi:
Memerlukan header beta files-api-2025-04-14.
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"Setelah membuat sesi, kirim event user.define_outcome. Agen mulai bekerja segera; tidak diperlukan event pesan pengguna tambahan.
# 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 20Kemajuan pada sesi yang berorientasi outcome ditampilkan pada stream event.
agent.* (pesan, penggunaan alat, dll.) menunjukkan kemajuan menuju outcome.span.outcome_evaluation_* hanya dipancarkan untuk sesi yang berorientasi outcome dan menunjukkan jumlah loop iterasi serta proses umpan balik grader.user.message ke sesi yang berorientasi outcome, untuk mengarahkan pekerjaan agen saat berlangsung, tetapi ini tidak terlalu diperlukan; agen tahu untuk bekerja hingga iterasinya habis atau outcome tercapai.user.interrupt akan menghentikan sementara pekerjaan pada outcome saat ini dan menandai span.outcome_evaluation_end.result sebagai interrupted, memungkinkan Anda memulai outcome baru.Hanya satu outcome yang didukung pada satu waktu, tetapi Anda dapat menggabungkan outcome secara berurutan. Untuk melakukan ini, kirim event user.define_outcome baru setelah event terminal dari outcome sebelumnya.
Ini adalah event yang Anda kirim untuk memulai sebuah outcome. Event ini dikembalikan saat diterima, termasuk timestamp processed_at dan 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
}Dipancarkan setelah grader memulai evaluasi atas satu loop iterasi. Field iteration adalah penghitung revisi yang diindeks dari 0: 0 adalah evaluasi pertama, 1 adalah evaluasi ulang setelah revisi pertama, dan seterusnya.
{
"type": "span.outcome_evaluation_start",
"id": "sevt_01def...",
"outcome_id": "outc_01a...",
"iteration": 0,
"processed_at": "2026-03-25T14:01:45Z"
}Heartbeat yang dipancarkan saat grader berjalan. Penalaran internal grader bersifat tidak transparan: Anda melihat bahwa ia sedang bekerja, bukan apa yang sedang dipikirkannya.
{
"type": "span.outcome_evaluation_ongoing",
"id": "sevt_01ghi...",
"outcome_id": "outc_01a...",
"processed_at": "2026-03-25T14:02:10Z"
}Dipancarkan setelah grader selesai mengevaluasi satu iterasi. Field result menunjukkan apa yang terjadi selanjutnya.
| Hasil | Selanjutnya |
|---|---|
satisfied | Sesi beralih ke idle. |
needs_revision | Agen memulai siklus iterasi baru. |
max_iterations_reached | Tidak ada siklus evaluasi lebih lanjut. Agen dapat menjalankan satu revisi terakhir sebelum sesi beralih ke idle. |
failed | Sesi beralih ke idle. Dikembalikan ketika rubrik secara fundamental tidak cocok dengan tugas, misalnya jika deskripsi dan rubrik saling bertentangan. |
interrupted | Hanya dipancarkan jika outcome_evaluation_start sudah terpicu sebelum interupsi. |
{
"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"
}Anda dapat mendengarkan stream event untuk span.outcome_evaluation_end, atau melakukan polling GET /v1/sessions/:id dan membaca outcome_evaluations[].result:
session=$(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...: satisfiedAgen menulis file output ke /mnt/session/outputs/ di dalam container. Setelah sesi idle, ambil melalui Files API yang dicakup ke sesi:
# 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.xlsxWas this page helpful?