Outcomes ist eine Research Preview-Funktion. Fordern Sie Zugriff an, um sie zu testen.
Das outcome hebt eine Sitzung von Konversation zu Arbeit. Sie definieren, wie das Endergebnis aussehen soll und wie die Qualität gemessen wird. Der Agent arbeitet auf dieses Ziel hin, bewertet sich selbst und iteriert, bis das Ergebnis erreicht ist.
Wenn Sie ein Ergebnis definieren, stellt die Harness automatisch einen Grader bereit, um das Artefakt anhand einer Rubrik zu bewerten. Es nutzt ein separates Kontextfenster, um nicht von den Implementierungsentscheidungen des Hauptagenten beeinflusst zu werden.
Der Grader gibt eine Aufschlüsselung pro Kriterium zurück: entweder eine Bestätigung, dass das Artefakt die Rubrik erfüllt, oder die spezifischen Lücken zwischen der aktuellen Arbeit und den Anforderungen. Dieses Feedback wird an den Agenten für die nächste Iteration zurückgegeben.
Alle Managed Agents API-Anfragen erfordern den Beta-Header managed-agents-2026-04-01. Research Preview-Funktionen erfordern zusätzlich managed-agents-2026-04-01-research-preview. Das SDK setzt diese Beta-Header automatisch.
Eine Rubrik ist ein Markdown-Dokument, das die Bewertung pro Kriterium beschreibt. Die Rubrik ist erforderlich.
Beispielrubrik:
# DCF-Modell-Rubrik
## Umsatzprognosen
- Verwendet historische Umsatzdaten aus den letzten 5 Geschäftsjahren
- Prognostiziert Umsatz für mindestens 5 Jahre in die Zukunft
- Wachstumsratenannahmen sind explizit angegeben und angemessen
## Kostenstruktur
- COGS und Betriebsausgaben werden separat modelliert
- Margen sind konsistent mit historischen Trends oder Abweichungen sind begründet
## Diskontierungssatz
- WACC wird mit angegebenen Annahmen für Eigenkapitalkosten und Fremdkapitalkosten berechnet
- Beta, risikofreier Satz und Eigenkapitalrisikoprämie sind belegt oder begründet
## Terminalwert
- Verwendet entweder Perpetuity-Growth- oder Exit-Multiple-Methode (angegeben welche)
- Terminales Wachstum übersteigt nicht das langfristige BIP-Wachstum
## Ausgabequalität
- Alle Zahlen befinden sich in einer einzigen .xlsx-Datei mit klar beschrifteten Blättern
- Wichtige Annahmen befinden sich auf einem separaten „Assumptions"-Blatt
- Sensitivitätsanalyse zu WACC und Terminalwachstumsrate ist enthaltenÜbergeben Sie die Rubrik als Inline-Text auf user.define_outcome (im nächsten Abschnitt gezeigt), oder laden Sie sie über die Files API für die Wiederverwendung über Sitzungen hinweg hoch:
Erfordert Beta-Header files-api-2025-04-14.
from pathlib import Path
rubric = client.beta.files.upload(file=Path("/path/to/pr_review_rubric.md"))
print(f"Uploaded rubric: {rubric.id}")Nach dem Erstellen einer Sitzung senden Sie ein user.define_outcome-Ereignis. Der Agent beginnt sofort mit der Arbeit; kein zusätzliches Benutzernachricht-Ereignis ist erforderlich.
# Create a session
session = client.beta.sessions.create(
agent=agent.id,
environment_id=environment.id,
title="Financial analysis on Costco",
)
# Define the outcome — agent starts working on receipt
client.beta.sessions.events.send(
session_id=session.id,
events=[
{
"type": "user.define_outcome",
"description": "Build a DCF model for Costco in .xlsx",
"rubric": {"type": "text", "content": RUBRIC},
# or: "rubric": {"type": "file", "file_id": rubric.id},
"max_iterations": 5, # optional; default 3, max 20
}
],
)Der Fortschritt bei einer ergebnisorientiert ausgerichteten Sitzung wird auf dem Ereignis-Stream angezeigt.
agent.*-Ereignisse (Nachrichten, Tool-Nutzung usw.) zeigen Fortschritt in Richtung des Ergebnisses.span.outcome_evaluation_*-Ereignisse werden nur für ergebnisorientierte Sitzungen ausgegeben und zeigen die Anzahl der Iterationsschleifen und den Bewertungsprozess des Graders.user.message-Ereignisse an eine ergebnisorientierte Sitzung senden, um die Arbeit des Agenten während des Fortschritts zu lenken, aber diese sind nicht so notwendig; der Agent weiß, dass er arbeiten soll, bis er seine Iterationen erschöpft hat oder das Ergebnis erreicht hat.user.interrupt-Ereignis pausiert die Arbeit am aktuellen Ergebnis und markiert das span.outcome_evaluation_end.result als interrupted, sodass Sie ein neues Ergebnis starten können.Nur ein Ergebnis gleichzeitig unterstützt, aber Sie können mehrere Ergebnisse nacheinander verketten. Dazu senden Sie ein neues user.define_outcome-Ereignis nach dem Terminalereignis des vorherigen Ergebnisses.
Dies ist das Ereignis, das Sie senden, um ein Ergebnis einzuleiten. Es wird bei Empfang zurückgesendet, einschließlich eines processed_at-Zeitstempels und einer 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
}Wird ausgegeben, sobald der Grader eine Evaluierung über eine Iterationsschleife startet. Das Feld iteration ist ein 0-indizierter Revisionszähler: 0 ist die erste Evaluierung, 1 ist die Neubewertung nach der ersten Überarbeitung usw.
{
"type": "span.outcome_evaluation_start",
"id": "sevt_01def...",
"outcome_id": "outc_01a...",
"iteration": 0,
"processed_at": "2026-03-25T14:01:45Z"
}Heartbeat, der ausgegeben wird, während der Grader läuft. Das interne Denken des Graders ist undurchsichtig: Sie sehen, dass es funktioniert, nicht was es denkt.
{
"type": "span.outcome_evaluation_ongoing",
"id": "sevt_01ghi...",
"outcome_id": "outc_01a...",
"processed_at": "2026-03-25T14:02:10Z"
}Wird ausgegeben, nachdem der Grader eine Iteration bewertet hat. Das Feld result gibt an, was als Nächstes geschieht.
| Ergebnis | Nächster Schritt |
|---|---|
satisfied | Sitzung wechselt zu idle. |
needs_revision | Agent startet einen neuen Iterationszyklus. |
max_iterations_reached | Keine weiteren Evaluierungszyklen. Der Agent kann eine letzte Überarbeitung durchführen, bevor die Sitzung zu idle wechselt. |
failed | Sitzung wechselt zu idle. Wird zurückgegeben, wenn die Rubrik grundlegend nicht zur Aufgabe passt, z. B. wenn die Beschreibung und die Rubrik sich widersprechen. |
interrupted | Wird nur ausgegeben, wenn outcome_evaluation_start bereits vor der Unterbrechung ausgelöst wurde. |
{
"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"
}Sie können entweder auf dem Event-Stream auf span.outcome_evaluation_end lauschen oder GET /v1/sessions/:id abfragen und outcome_evaluations[].result lesen:
session = client.beta.sessions.retrieve(session.id)
for outcome in session.outcome_evaluations:
print(f"{outcome.outcome_id}: {outcome.result}")
# outc_01a...: satisfiedDer Agent schreibt Ausgabedateien in /mnt/session/outputs/ im Container. Sobald die Sitzung untätig ist, rufen Sie sie über die Files API ab, die auf die Sitzung beschränkt ist:
files = client.beta.files.list(scope_id=session.id)
for f in files.data:
print(f"{f.id}: {f.filename} ({f.size_bytes} bytes)")
content = client.beta.files.download(files.data[0].id)
content.write_to_file("costco_dcf.xlsx")Was this page helpful?