Crie agentes que executam por horas, não segundos

Ciclos de agentes de longo horizonte e múltiplas etapas no OpenRouter. Limites de custo e de etapas, estado retomável, progresso em streaming, entrada por voz e aprovações com intervenção humana — tudo em um único SDK.

Recursos

Loops de várias horas

Execute loops de agentes com um número elevado de etapas e tempos limite longos. O SDK de agentes orquestra chamadas de ferramentas, novas tentativas e o estado de cada turno para você.

Limites de custo e etapas

Limite as execuções com condições de parada como maxCost e stepCountIs. Combine várias proteções para que os agentes encerrem de forma controlada quando os orçamentos se esgotarem.

Estado retomável

Persista mensagens de conversa, resultados de ferramentas e contexto compartilhado. Reexecute ou retome execuções longas após uma falha, implantação ou revisão humana.

Progresso do streaming

Transmita tokens, chamadas de ferramentas e eventos de etapas em tempo real para que painéis e interfaces possam mostrar o progresso de tarefas de longa duração.

Nova tentativa com espera progressiva

Novas tentativas automáticas em caso de erros transitórios da API mantêm agentes ativos por várias horas durante instabilidades do provedor, sem intervenção manual.

Entrada de voz

Integre /api/v1/audio/transcriptions para executar o mesmo ciclo do agente a partir de uma chamada telefônica, do recurso pressionar para falar ou de um microfone ao vivo.

Humano no ciclo

Pause para aprovação em chamadas de ferramentas de alto risco, insira correções e retome a mesma execução com o contexto completo.

Autoquestionamento e revisão

Envolva callModel em um ciclo de autorrevisão adversarial que é executado até o agente emitir [DONE]. Identifique lacunas, alucinações e afirmações não verificadas antes de colocar em produção.

Um loop, horas de trabalho

O SDK de agentes mantém compactas as execuções de longa duração. Defina limites máximos, persista o estado e transmita o progresso com as mesmas primitivas.

TypeScript
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();

Entrada e saída de voz

Conduza o mesmo ciclo de agente a partir de uma chamada telefônica, um aplicativo de pressionar para falar ou um microfone ao vivo. O OpenRouter oferece endpoints dedicados de /api/v1/audio/transcriptions e /api/v1/audio/speech .

Transcrever

Envie áudio para /api/v1/audio/transcriptions e escolha qualquer modelo STT na OpenRouter, incluindo Whisper.

Executar o agente

Passe a transcrição para callModel com as mesmas ferramentas, condições de parada e estado que você usa nas execuções orientadas por texto.

Responder por voz

Encaminhe o resultado por /api/v1/audio/speech para retornar uma resposta falada ou transmitir áudio de volta a quem fez a chamada.

Agente controlado por voz em três chamadas

TypeScript
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));

Como funciona

1

Captura

Receba entradas de texto ou voz. Quando precisar, a conversão de fala em texto com qualidade equivalente à do Whisper está a uma chamada de API de distância.

2

Executar

Passe a solicitação para callModel com ferramentas e condições de parada. O SDK gerencia o loop, as novas tentativas e o streaming.

3

Retomar

Persista o estado com um StateAccessor. Pause para revisão humana ou reinicie após uma implantação e continue exatamente de onde parou.

Coloque um agente de longa duração em produção hoje

Obtenha uma chave de API, copie o guia de receitas e tenha um agente que opera por várias horas e reconhece voz em produção nesta semana.