@phaseo/agent-sdk quando sua aplicação precisar de mais do que geração de texto em uma única chamada:
- loops de ferramentas em várias etapas
- ferramentas locais de runtime
- execuções retomáveis a partir do estado retornado pelo SDK
- pausas explícitas para aprovação humana
- saídas finais tipadas
- turnos de modelo pelo gateway usando o SDK TypeScript existente
Modelo de estado
O Agent SDK não persiste execuções em nenhum serviço hospedado pelo Phaseo.run()retorna todo o estado necessário para continuar depois. Se sua aplicação precisar retomar execuções entre solicitações ou reinicializações do processo, persista o estado retornado no armazenamento da própria aplicação.continueRun()aceita diretamente o estado da execução anterior.
Instalação
O que o SDK inclui
createAgent()defineTool()createGatewayAgentClient()continueRun()para continuar a partir de um estado de execução retornado anteriormentestream()econtinueStream()para resultados incrementais e reproduzíveis- helpers de condição de parada, como
stepCountIs(),maxCost()ehasToolCall()
Primeiro agente
Modelo mental
O loop de runtime faz quatro coisas:- envia o estado atual das mensagens ao cliente do modelo
- executa as chamadas a ferramentas locais retornadas
- adiciona os resultados das ferramentas ao próximo turno
- retorna o estado atualizado da execução após cada etapa concluída
Primitivos principais
createAgent()
Use createAgent() para definir:
- um
idestável - instruções
- um modelo ou preset
- uma lista curta de ferramentas
- análise opcional da saída
- regras opcionais de revisão humana
- controles opcionais de nova tentativa e execução de ferramentas
defineTool()
Defina ferramentas locais de runtime com:
iddescriptionparametersJSON opcionaistimeoutMsopcional- validadores de runtime
inputSchemaeoutputSchema execute(),execute: falseou callbacks com intervenção humanarequireApproval,onError,nextTurnParamse eventos de progresso
context.signal, marca a execução como failed e relança o erro de timeout.
Os schemas podem ser uma função ou qualquer objeto que exponha parse() ou safeParse(). Argumentos de modelo e resultados de ferramenta inválidos falham antes de cruzar o limite da ferramenta.
Aprovação, HITL e ferramentas manuais
Exija aprovação por chamada de ferramenta com efeitos colaterais:run.pause.pendingToolCalls. Retome-a usando o ID exato da chamada para evitar confusão entre chamadas simultâneas:
execute: false para o trabalho executado pela aplicação e forneça o resultado por toolOutputs. Para uma ferramenta interativa, retorne null em onToolCalled; após a continuação, onResponseReceived pode validar ou transformar a resposta humana fornecida.
Ferramentas que geram progresso
Um gerador assíncrono pode publicar resultados preliminares e retornar um resultado final:tool.preliminary_result e em preliminaryResults da etapa.
Resultados em streaming
stream() inicia a mesma máquina de estados com um cliente de modelo em streaming. Seus consumidores podem ser reproduzidos, permitindo que a interface, a telemetria e o código de persistência leiam ao mesmo tempo:
getReasoningStream(), getItemsStream(), getToolStream() ou getFullStream() para consumidores mais específicos. cancel() interrompe a execução.
Renderizar itens tipados da execução
getItemsStream() produz AgentItem<TOutput>, uma união discriminada que pode ser usada com segurança em switch:
completed.items após run() ou stream(). A saída do provedor é normalizada em itens de mensagem, raciocínio, chamada de ferramenta, resultado de ferramenta, erro e saída final. Campos específicos do provedor continuam disponíveis por rawProviderItem nos itens normalizados.
Condições de parada e turnos dinâmicos
As condições de parada são combinadas em um array; a primeira condição correspondente registra o motivo e retorna uma execuçãostopped:
context.setContext() e substituir os parâmetros do turno seguinte com nextTurnParams.
createGatewayAgentClient()
Use o adaptador conectado ao gateway quando os turnos do modelo precisarem ser executados pelo Phaseo Gateway.
Ele pode transportar controles nativos do gateway, como:
responseFormatpluginsgatewayToolstoolChoicewebSearchOptionsproviderOptionspromptCacheKeyincludeMeta
Persistência gerenciada pela aplicação
Se a aplicação precisar retomar execuções, persista diretamente oAgentRunResult retornado ou forneça um acessor state com os métodos assíncronos load(runId) e save(result). Assim, uma execução continuada pode usar runId sem transportar o registro serializado por todas as camadas.
O SDK não inclui adaptadores de persistência nem um backend de estado hospedado, por decisão de projeto.
Isso permite:
- manter execuções de uma única chamada inteiramente no processo
- serializar execuções pausadas ou incompletas nos próprios registros da aplicação
- recarregar o estado salvo e repassá-lo a
continueRun()depois
Revisão humana e continuação
UsehumanReview quando uma execução precisar criar um checkpoint e aguardar aprovação:
Saídas tipadas
UseparseOutput quando sua aplicação quiser um valor final tipado:
Controles de runtime
Novas tentativas do modelo
UsemodelRetry quando falhas temporárias do modelo devem ser repetidas antes de a execução ser salva como failed:
maxRetries conta as tentativas adicionais após a primeira solicitação ao modelo.
O registro persistido da etapa armazena o total final de tentativas em modelAttempts.
Ferramentas locais simultâneas
Se um turno do modelo puder chamar várias ferramentas independentes com segurança, definatoolExecution.toolConcurrency:
Roteamento baseado em presets
Usepreset quando os padrões de roteamento, prompt ou parâmetros devem ser gerenciados no painel, em vez de codificados na aplicação:
Hooks de eventos
UseonEvent quando sua aplicação precisar de hooks de ciclo de vida para logs, telemetria ou fluxos internos.
Os eventos atuais incluem:
run.startedrun.resumedstep.startedstep.completedstep.failedstep.cancelledmodel.requestedmodel.completedmodel.failedtool.startedtool.completedtool.failedcheckpoint.savedrun.waiting_for_humanrun.cancelledrun.completedrun.failed
step.completed depois que a etapa com checkpoint é persistida.
Tratamento de erros
Falhas do gateway são relançadas comoAgentGatewayError:
errorDetails.
Exemplos incluídos
O pacote inclui atualmente estes exemplos:examples/research-brief-agent.tsexamples/support-triage-agent.tsexamples/coding-review-agent.tsexamples/parallel-tool-agent.ts
Escopo atual
O SDK é intencionalmente focado em recursos básicos para criação de aplicações:- persistência local ou gerenciada pela aplicação para checkpoints
- turnos de modelo pelo gateway
- ferramentas locais
- loops de agente retomáveis
- uso normalizado de tokens, custo, avisos, motivos de término e resultados de ferramentas por etapa