@phaseo/agent-sdk cuando tu aplicación necesite algo más que generar texto en una sola llamada:
- bucles de herramientas de varios pasos
- herramientas del entorno de ejecución local
- ejecuciones reanudables a partir del estado devuelto por el SDK
- pausas explícitas para aprobación humana
- salidas finales tipadas
- turnos de modelo a través del gateway mediante el SDK de TypeScript existente
Modelo de estado
El Agent SDK no guarda las ejecuciones en ningún servicio alojado por Phaseo.run()devuelve el estado completo necesario para continuar más adelante.- Si tu aplicación necesita reanudar una ejecución entre solicitudes o reinicios del proceso, guarda el estado devuelto en tu propio almacenamiento.
continueRun()acepta directamente el estado anterior de la ejecución.
Instalación
Qué incluye el SDK
createAgent()defineTool()createGatewayAgentClient()continueRun()para continuar desde un estado de ejecución devuelto anteriormentestream()ycontinueStream()para obtener resultados progresivos que se pueden volver a reproducir- funciones auxiliares para condiciones de parada, como
stepCountIs(),maxCost()yhasToolCall()
Primer agente
Modelo mental
El bucle de ejecución hace cuatro cosas:- envía el estado actual de los mensajes al cliente del modelo
- ejecuta las llamadas a herramientas locales devueltas
- añade los resultados de las herramientas al siguiente turno
- devuelve el estado actualizado de la ejecución tras completar cada paso
Elementos básicos
createAgent()
Usa createAgent() para definir:
- un
idestable - instrucciones
- un modelo o preset
- una lista breve de herramientas
- análisis opcional de la salida
- reglas opcionales de revisión humana
- controles opcionales para reintentos y ejecución de herramientas
defineTool()
Define herramientas del entorno de ejecución local con:
iddescriptionparametersJSON opcionalestimeoutMsopcional- validadores de ejecución
inputSchemayoutputSchema execute(),execute: falseo callbacks con intervención humanarequireApproval,onError,nextTurnParamsy eventos de progreso
context.signal, marca la ejecución como failed y vuelve a lanzar el error de tiempo de espera.
Los esquemas pueden ser una función o cualquier objeto que exponga parse() o safeParse(). Los argumentos no válidos del modelo y los resultados no válidos de las herramientas fallan antes de cruzar el límite de la herramienta.
Aprobación, HITL y herramientas manuales
Controla por llamada las herramientas que producen efectos secundarios:run.pause.pendingToolCalls. Reanúdala con el ID exacto de la llamada para no confundir llamadas concurrentes:
execute: false para el trabajo que realiza tu aplicación y proporciona el resultado mediante toolOutputs. Para una herramienta interactiva, devuelve null desde onToolCalled; después de continuar, onResponseReceived puede validar o transformar la respuesta humana recibida.
Herramientas que generan progreso
Un generador asíncrono puede publicar resultados preliminares y devolver un resultado final:tool.preliminary_result y en preliminaryResults del paso.
Resultados en streaming
stream() inicia la misma máquina de estados con un cliente de modelo con streaming. Sus consumidores se pueden reproducir, por lo que la interfaz, la telemetría y el código de persistencia pueden leerlos a la vez:
getReasoningStream(), getItemsStream(), getToolStream() o getFullStream() para acceder a flujos más específicos. cancel() cancela la ejecución.
Representar elementos de ejecución tipados
getItemsStream() devuelve AgentItem<TOutput>, una unión discriminada que se puede gestionar de forma segura con switch:
completed.items después de run() o stream(). La salida del proveedor se normaliza en elementos de mensaje, razonamiento, llamada a herramienta, resultado de herramienta, error y salida final. Los campos específicos del proveedor siguen disponibles mediante rawProviderItem en los elementos normalizados.
Condiciones de parada y turnos dinámicos
Las condiciones de parada se combinan en una matriz. La primera que se cumpla registra el motivo y devuelve una ejecuciónstopped:
context.setContext() y sobrescribir los parámetros del turno siguiente mediante nextTurnParams.
createGatewayAgentClient()
Usa el adaptador conectado al gateway cuando los turnos del modelo deban ejecutarse a través de Phaseo Gateway.
Puede incluir controles nativos del gateway, como:
responseFormatpluginsgatewayToolstoolChoicewebSearchOptionsproviderOptionspromptCacheKeyincludeMeta
Persistencia gestionada por la aplicación
Si tu aplicación necesita reanudar ejecuciones, guarda directamente elAgentRunResult devuelto o proporciona un acceso state con métodos asíncronos load(runId) y save(result). Así, una ejecución reanudada puede usar runId sin pasar el registro serializado por cada capa.
El SDK no incluye adaptadores de persistencia ni un backend de estado alojado, por decisión de diseño.
Por tanto, puedes:
- mantener las ejecuciones de una sola llamada en el mismo proceso
- serializar las ejecuciones pausadas o incompletas en tus propios registros de aplicación
- volver a cargar el estado guardado y pasarlo a
continueRun()más adelante
Revisión humana y continuación
UsahumanReview cuando una ejecución deba guardar un punto de control y esperar la aprobación:
Salidas tipadas
UsaparseOutput si tu aplicación necesita un valor final tipado:
Controles del runtime
Reintentos del modelo
UsamodelRetry para volver a intentar errores transitorios del modelo antes de guardar la ejecución como failed:
maxRetries cuenta los intentos adicionales posteriores a la primera solicitud del modelo.
El registro persistido del paso guarda el total final de reintentos en modelAttempts.
Herramientas locales concurrentes
Si un turno del modelo puede llamar con seguridad a varias herramientas independientes, configuratoolExecution.toolConcurrency:
Enrutamiento basado en presets
Usapreset si quieres gestionar los valores predeterminados de enrutamiento, prompts o parámetros en el panel, en lugar de codificarlos en la aplicación:
Eventos del ciclo de vida
UsaonEvent si tu aplicación necesita hooks del ciclo de vida para registros, telemetría o flujos de trabajo internos.
Los eventos actuales incluyen:
run.startedrun.resumedstep.startedstep.completedstep.failedstep.cancelledmodel.requestedmodel.completedmodel.failedtool.startedtool.completedtool.failedcheckpoint.savedrun.waiting_for_humanrun.cancelledrun.completedrun.failed
step.completed después de guardar el paso con su punto de control.
Gestión de errores
Los errores del gateway se vuelven a lanzar comoAgentGatewayError:
errorDetails.
Ejemplos incluidos
El paquete incluye actualmente estos ejemplos:examples/research-brief-agent.tsexamples/support-triage-agent.tsexamples/coding-review-agent.tsexamples/parallel-tool-agent.ts
Alcance actual
El SDK se centra deliberadamente en los componentes básicos para crear aplicaciones:- persistencia local o gestionada por la aplicación para los puntos de control
- turnos de modelo a través del gateway
- herramientas locales
- bucles de agente reanudables
- uso de tokens, coste, advertencias, motivos de finalización y resultados de herramientas normalizados por paso