Eine Ausführung ist ein Agent, der eine Aufgabe in einer eigenen microVM bearbeitet. Sie senden einen Prompt, JSON-Eingabe sowie die Dateien und Verbindungen, die er nutzen darf. Ephemeral stellt sie in die Warteschlange, startet eine frische Maschine, zeichnet jeden Schritt auf und zerstört die Maschine, wenn die Ausführung endet.
Woraus eine Ausführung besteht
Jede Ausführung hat einen Prompt und optional eine Eingabe. Der Rest der Definition legt fest, welches Modell sie verwendet, was sie lesen und aufrufen darf, wie lange sie dauern und wie viel sie ausgeben darf. Sie können die gesamte Definition direkt mitsenden oder einen gespeicherten Workflow benennen und nur die Eingabe senden.
{
"prompt": "Find out why this payment failed. Follow the playbook.",
"input": { "payment_id": "pay_123" },
"model": "anthropic/claude-haiku-5.5",
"files": [{ "file": "playbook.md" }],
"connections": { "payments": { "ref": "payments-api", "allowed_methods": ["GET"] } },
"timeout_seconds": 120,
"shell": false,
"max_cost_micros": 500000
}In der microVM kann der Agent die eingebundenen Dateien immer lesen. Bei aktivierter shell, der Standardeinstellung, kann er außerdem Shell-Befehle ausführen und Dateien in seinem Arbeitsverzeichnis schreiben. Jede freigegebene Verbindung fügt Tools hinzu, die er aufrufen kann, und bei aktiviertem Webzugriff kann er Seiten lesen, suchen und öffentliche APIs aufrufen. Die Maschine selbst hat kein Internet. Das Arbeitsverzeichnis wird mit der Maschine verworfen, sodass nichts in die nächste Ausführung übernommen wird.
Lebenszyklus
Eine Ausführung durchläuft diese Status. Die letzten fünf sind final; sobald eine Ausführung einen davon erreicht, ändert sie sich nicht mehr.
| Status | Bedeutung |
|---|---|
reserving | Nur beim gehosteten Dienst. Das Guthaben für das Budget der Ausführung wird reserviert. |
queued | Wartet auf einen freien Worker-Platz. |
starting | Aus der Warteschlange genommen. Definition und Dateien werden geladen. |
running | Die microVM startet oder der Agent arbeitet. |
succeeded | Der Agent hat die Aufgabe beendet und eine Ausgabe geliefert. |
failed | Der Worker ist fehlgeschlagen oder das Guthaben konnte nicht reserviert werden. Das Feld error nennt den Grund. |
cancelled | Jemand hat die Ausführung abgebrochen. |
timed_ | Die Ausführung hat ihr Zeitlimit erreicht, bevor sie fertig war. |
interrupted | Die Engine wurde während der Ausführung neu gestartet oder die Zulassung wurde nicht abgeschlossen. |
Ausführungen verlassen die Warteschlange in der Reihenfolge ihrer Erstellung. Eine selbst gehostete Installation führt standardmäßig zwei gleichzeitig aus; die übrigen warten in queued. Das Zeitlimit zählt ab dem Moment, in dem eine Ausführung die Warteschlange verlässt, die Wartezeit verbraucht es also nicht.
Limits
| Limit | Wert |
|---|---|
timeout_ | 1 bis 3.600. Standard 300. |
| Prompt | 128 KiB |
| Eingabe | 1 MiB JSON |
| Dateien | 32 pro Ausführung, je 1 MiB, insgesamt 4 MiB |
| Verbindungen | 16 pro Ausführung |
| Modellaufrufe | 100 pro Ausführung |
| Ausgabe pro Modellantwort | Das eigene Limit des Modells, bis zu 32.000 Tokens, gekürzt auf das, was vom Budget noch übrig ist. Eine am Limit abgeschnittene Antwort wird automatisch fortgesetzt, höchstens zweimal. |
| Webanfragen und Suchen | 50 pro Ausführung, wenn Webzugriff aktiviert ist |
| Ausgabe | Bis zu 1 MiB. Eine längere Antwort wird dort abgeschnitten, und die Ausführung vermerkt dies. |
| Ereignisse | Die Aufzeichnung speichert bis zu 256 KiB pro Ereignis und 10.000 Ereignisse oder 16 MiB pro Ausführung. Größere Tool-Ergebnisse werden in der Aufzeichnung gekürzt und markiert; der Agent erhält sie weiterhin vollständig. Ist die Aufzeichnung voll, werden spätere Details übersprungen und gezählt. Beides lässt die Ausführung nie fehlschlagen. |
max_ | 1 bis 100.000.000 (bis zu $100) |
Eine Ausführung verfolgen
Es gibt drei Wege, zu erfahren, was eine Ausführung gerade tut und wann sie endet.
- Fragen Sie
GET /v1/runs/{id}ab, bis der Status final ist. - Streamen Sie
GET /v1/runs/{id}/events. Das ist ein Server-Sent-Events-Stream, der alles bisher Aufgezeichnete wiedergibt und dann live fortfährt, bis die Ausführung endet. - Legen Sie für die Ausführung einen Callback fest. Ephemeral sendet eine signierte Anfrage an Ihren Server, sobald die Ausführung einen finalen Status erreicht.
Das Schließen des Ereignis-Streams hat keine Auswirkung auf die Ausführung. Sie können sich mit der zuletzt erhaltenen Ereignis-ID erneut verbinden und von dort aus fortfahren.
Ereignistypen
| Typ | Aufgezeichnet, wenn |
|---|---|
status | die Ausführung zu laufen beginnt oder einen finalen Status erreicht. |
microvm_ | Ephemeral eine microVM anfordert. |
microvm_ | die microVM bereit ist. |
worker_ | der Agent-Prozess startet. Enthält, ob die Shell aktiviert ist. |
connection_ | eine MCP-Verbindung bereit ist, mit den Tools, die die Ausführung aufrufen darf. |
tool_ | der Agent ein Tool aufruft. Enthält die Argumente. |
tool_ | ein Tool-Aufruf zurückkehrt. Enthält das Ergebnis und ob es ein Fehler war. Ein Ergebnis über 256 KiB wird hier gekürzt und enthält trimmed_from_bytes. |
text_ | das Modell Text streamt, in Blöcken etwa zehnmal pro Sekunde. |
model_ | eine Modellantwort endet. Token-Verbrauch, wie vom Worker gemeldet; wird nicht für die Abrechnung verwendet. |
usage | Ephemeral die Kosten eines Modellaufrufs autorisiert oder abgleicht. |
connection | die Engine im Namen der Ausführung eine HTTP-Anfrage oder einen MCP-Tool-Aufruf ausführt. |
web_ | die Engine eine Webanfrage für den Agenten sendet. Enthält die URL, den Status, die Kosten und die Sicherheitsprüfung. |
web_ | die Engine eine Websuche für den Agenten ausführt. |
web_ | eine Webanfrage oder Suche abgelehnt wurde, bevor sie gesendet wurde. Enthält den Grund. |
result | der Agent seine endgültige Ausgabe liefert. Das Feld output der Ausführung enthält sie vollständig; dieses Ereignis kann gekürzt sein. |
model_ | ein Modellaufruf abgelehnt wurde, etwa weil seine Kosten im ungünstigsten Fall das übrige Budget übersteigen. Enthält den Grund. |
output_ | eine Antwort das Ausgabelimit des Modells erreicht hat und der Agent gebeten wurde fortzufahren. |
output_ | die endgültige Ausgabe länger als 1 MiB war und dort abgeschnitten wurde. |
events_ | die Aufzeichnung der Ausführung voll war und spätere Ereignisse deshalb nicht gespeichert wurden. Enthält die Anzahl. |
worker_ | der Worker mit einem Fehler stoppt. |
microvm_ | Die microVM ist als zerstört bestätigt. |
microvm_ | die Beendigung noch nicht bestätigt werden konnte und erneut versucht wird. |
done | die letzte Nachricht im Stream. Enthält das finale Ausführungsobjekt. |
Ephemeral entfernt bekannte Zugangsdaten, etwa Verbindungs-Tokens, aus Ereignissen und Ausgaben, bevor es sie speichert. Das genaue Stream-Format zeigt die API-Referenz.
Eine Ausführung abbrechen
POST /v1/runs/{id}/cancel stoppt eine Ausführung im Status reserving, queued, starting oder running. Der Worker wird gestoppt und die microVM beendet. Das Abbrechen einer bereits beendeten Ausführung ändert nichts.
Null-Datenspeicherung
Setzen Sie zero_data_retention bei einer Ausführung oder in einem gespeicherten Workflow auf true, wenn die Aufgabe sensibel ist. Ephemeral zeichnet dann nichts vom Inhalt der Ausführung auf: Sie erhalten nur die Ausgabe.
| Gespeichert | Nicht gespeichert |
|---|---|
| Ausführungs-ID, Organisation, Status, Zeitstempel, Zeitplan, Kosten- und Nutzungszahlen sowie eine allgemeine Fehlerkategorie ohne Text vom Worker. | Ereignisse und die Ausgabe nach der Lieferung, Fehlertexte des Workers und die Definition der Ausführung: Prompt, Eingabe, Dateiliste und Verbindungsverweise. Die Definition einer solchen Ausführung kann nicht abgerufen oder erneut gestartet werden. |
- Ereignisse werden weiterhin gestreamt, solange die Ausführung läuft, über
GET /v1/runs/{id}/eventsauf jeder Engine. Sie liegen in einem flüchtigen Speicher und werden wenige Minuten nach dem Ende der Ausführung gelöscht. - Die Ausgabe wird einmal geliefert. Das erste
GET /v1/runs/{id}nach dem Ende der Ausführung enthält sie und löscht sie. Hat die Ausführung einen Callback, liefert der Callback die Ausgabe, und Lesezugriffe lassen sie bis dahin bestehen. In jedem Fall wird sie spätestens nach einer Stunde gelöscht.output_availableundoutput_expires_atzeigen, ob sie noch vorgehalten wird. - Modellaufrufe gehen nur an Anbieter, die Ihre Daten weder speichern noch zum Training verwenden. Ein Modell ohne einen solchen Anbieter wird mit
400abgelehnt, bevor etwas reserviert wird. - Im gehosteten Dienst kostet die Ausführung 10 % mehr: Der Aufschlag gilt für Rechenzeit, Modellaufrufe und Webanfragen, zählt zum Budget und erscheint in der Kostenaufschlüsselung. Selbst gehostete Installationen berechnen nichts zusätzlich.
- Flüchtige Daten liegen in Tabellen, die jedes Backup auslässt. Eine wiederhergestellte Datenbank enthält sie daher nie.
Nach einer Ausführung
Die Ausführung behält ihre Ausgabe, Fehlermeldung, Zeitstempel, Ereignisse und Kosten. Betrachten Sie die Kosten als endgültig, sobald der Status final und billing_pending auf false gesetzt ist; siehe Budgets und Abrechnung.
Beendete Ausführungen werden 30 Tage nach ihrem Ende gelöscht, zusammen mit ihren Ereignissen. Eine Ausführung wird länger aufbewahrt, solange ihre Abrechnung, die Callback-Zustellung oder die Bereinigung der microVM noch aussteht. Selbst gehostete Installationen können die Aufbewahrungsdauer ändern.
Um dieselbe Aufgabe erneut auszuführen, rufen Sie GET /v1/runs/{id}/definition ab. Sie liefert die Definition, die die Ausführung tatsächlich verwendet hat, ohne Zugangsdaten. So können Sie sie prüfen, ein neues Budget festlegen und sie absenden.