Agentenaufgaben ausführen: der gehostete Loop
Gib dem Agenten ein Ziel und lass den gehosteten Loop die Schritte planen. Wie Task-Runs enden, was der Reviewer prüft und alle Optionen der Anfrage.
Zuletzt aktualisiert:
Das Ziel, nicht die Schritte
Eine Aufgabe ist der gehostete Agenten-Loop: Du beschreibst ein Ergebnis — finde die Rechnung für März und lade sie herunter — und der Agent plant und führt die Schritte selbst aus, mit einem Blick auf die Seite zwischen den Aktionen. Du schreibst keine Selektoren und keinen Loop.
Über reines HTTP antwortet die API mit 202, und du pollst den Run; beide SDKs übernehmen das Polling. runTask blockiert bis zum Endzustand, startTask kehrt sofort zurück und gibt dir den Run zum Pollen.
Eine Aufgabe aus dem SDK starten
Voraussetzungen: api-key inference
import { Browserberg } from '@browserberg/sdk';
const bb = new Browserberg({
apiKey: process.env.BROWSERBERG_API_KEY!,
baseUrl: 'https://browserberg.com',
});
await using session = await bb.sessions.create({ ttlSeconds: 600 });
// runTask blocks until the run is terminal. The reviewer's verification is a
// SEPARATE model call against a re-scraped page: the agent never certifies
// its own success.
const run = await session.runTask({
task: 'Open https://example.com and report what the page heading says.',
maxSteps: 6,
});
console.log('status:', run.status);
console.log('answer:', run.answer);
console.log('reviewer:', run.verification?.thoughts ?? '(none)');
import os
from browserberg import Browserberg
bb = Browserberg(os.environ["BROWSERBERG_API_KEY"], base_url="https://browserberg.com")
with bb.sessions.create(ttl_seconds=600) as session:
run = session.run_task(
"Open https://example.com and report what the page heading says.",
max_steps=6,
)
print("status:", run.status)
print("answer:", run.answer)
status: completed
answer: The page heading says: "Example Domain".
reviewer: The page data now shows the heading 'Example Domain' on https://example.com, matching the agent's answer. Since the claim is of type `done` and the answer reports success, and the page evidence confirms it, the claim is valid.
Drei Ausgänge eines Runs
completed heißt: Ziel erreicht. terminated heißt: Der Agent oder der Reviewer kam zum Schluss, dass die Aufgabe stoppen sollte — ein Portal, das sich verweigert, ein Formular, das sich nicht ehrlich absenden lässt. failed heißt: Der Run kam gar nicht voran. Der Unterschied zählt: Ein terminierter Run ist eine Entscheidung, ein fehlgeschlagener ein Defekt.
Das Urteil fällt nie der Agent über sich selbst. Ein separater Reviewer-Aufruf prüft eine frisch gescrapte Seite und beantwortet, ob das Ziel wirklich erreicht ist; seine verification.thoughts stehen am Run-Datensatz.
Zwei Optionen engen den Agenten ein. pinToStartSite entfernt Navigation vollständig aus dem Aktionsschema des Modells — eine feindselige Seite kann den Agenten nicht vom Portal weglenken, weil die Aktion strukturell unmöglich ist, nicht bloß unerwünscht. readOnly beschränkt den Run auf Beobachten und Extrahieren.
Task-Optionen
| Name | Typ | Beschreibung |
|---|---|---|
task
erforderlich
|
string | Was erreicht werden soll, in natürlicher Sprache. Bis zu 4000 Zeichen. |
startUrl
|
string | Wo der Run beginnt. Ohne Angabe startet der Agent auf der aktuellen Seite der Session. |
variables
|
object | Benannte Werte, auf die der Aufgabentext verweisen kann, statt sie ins Ziel zu schreiben. |
maxSteps
|
integer |
Obergrenze der Agentenschritte; das harte Maximum ist 100.
Standard: 25
|
maxFailures
|
integer | Wie viele fehlgeschlagene Schritte der Run verkraftet, bevor er aufgibt. |
pinToStartSite
|
boolean | Entfernt Navigation aus dem Aktionsschema: Der Run bleibt auf der Start-Site. |
readOnly
|
boolean | Nur Beobachten und Extrahieren; kein Klicken, kein Tippen. |
timeoutSeconds
|
integer | Zeitlimit für den gesamten Run. |