Entwickeln Sie Agenten, die stundenlang statt sekundenlang laufen
Mehrstufige Agentenschleifen mit langem Zeithorizont auf OpenRouter. Kosten- und Schrittobergrenzen, fortsetzbarer Zustand, Fortschritt per Streaming, Spracheingabe und Freigaben durch Menschen im Prozess — alles in einem SDK.
Funktionen
Mehrstündige Schleifen
Kosten- und Schrittobergrenzen
Fortsetzbarer Zustand
Streaming-Fortschritt
Wiederholung mit Backoff
Spracheingabe
Menschliche Einbindung
Selbstbefragung und Überprüfung
Eine Schleife, stundenlange Arbeit
Das Agenten-SDK hält lang laufende Ausführungen kompakt. Legen Sie Obergrenzen fest, speichern Sie den Zustand persistent und streamen Sie den Fortschritt mit denselben Grundbausteinen.
import { OpenRouter, tool, stepCountIs, maxCost } from '@openrouter/agent';
import { z } from '@openrouter-monorepo/lib-zod';
const openrouter = new OpenRouter();
const searchTool = tool({
name: 'search',
description: 'Search the web for information',
inputSchema: z.object({ query: z.string() }),
execute: async ({ query }) => {
return { results: await fetchResults(query) };
},
});
// Run for up to 200 steps OR $5 — whichever comes first
const result = openrouter.callModel({
model: '~anthropic/claude-opus-latest',
input: 'Research the fusion energy landscape and write a 5-page report.',
tools: [searchTool],
stopWhen: [stepCountIs(200), maxCost(5)],
});
// Stream tool calls as they happen so dashboards stay live
for await (const call of result.getToolCallsStream()) {
console.log('tool', call.name, call.arguments);
}
const text = await result.getText();Sprache rein, Sprache raus
Steuern Sie dieselbe Agentenschleife über einen Telefonanruf, eine Push-to-talk-App oder ein Live-Mikrofon. OpenRouter bietet dedizierte /api/v1/audio/transcriptions und /api/v1/audio/speech Endpunkte.
Transkribieren
Agenten ausführen
Sprachausgabe
Sprachgesteuerter Agent in drei Aufrufen
import { OpenRouter } from '@openrouter/sdk';
import { OpenRouter as Agent, stepCountIs, maxCost } from '@openrouter/agent';
import { readFile, writeFile } from 'node:fs/promises';
const sdk = new OpenRouter();
const agent = new Agent();
// 1. Voice in -> text
const audio = await readFile('./request.wav');
const { text: prompt } = await sdk.stt.createTranscription({
model: 'openai/whisper-1',
inputAudio: { data: audio.toString('base64'), format: 'wav' },
});
// 2. Long-horizon agent loop with ceilings + tool calls
const result = agent.callModel({
model: '~anthropic/claude-opus-latest',
input: prompt,
stopWhen: [stepCountIs(50), maxCost(2)],
});
const reply = await result.getText();
// 3. Text -> voice out
const stream = await sdk.tts.createSpeech({
model: 'openai/gpt-4o-mini-tts-2025-12-15',
input: reply,
voice: 'alloy',
responseFormat: 'mp3',
});
const chunks: Uint8Array[] = [];
const reader = stream.getReader();
while (true) {
const { done, value } = await reader.read();
if (done) break;
chunks.push(value);
}
await writeFile('./reply.mp3', Buffer.concat(chunks));So funktioniert es
Erfassung
Nehmen Sie Eingaben als Text oder Sprache entgegen. STT auf Whisper-Niveau ist bei Bedarf nur einen API-Aufruf entfernt.
Ausführen
Übergeben Sie die Anfrage an callModel mit Tools und Abbruchbedingungen. Das SDK übernimmt die Schleife, Wiederholungsversuche und das Streaming.
Fortsetzen
Speichern Sie den Zustand dauerhaft mit einem StateAccessor. Pausieren Sie zur menschlichen Überprüfung oder starten Sie nach einem Deployment neu und setzen Sie genau dort fort, wo Sie aufgehört haben.
Bringen Sie noch heute einen lang laufenden Agenten in Produktion
Holen Sie sich einen API-Schlüssel, kopieren Sie das Cookbook und bringen Sie noch diese Woche einen über mehrere Stunden laufenden, sprachfähigen Agenten in den Produktivbetrieb.