Sequential Thinking
Executar com Sandbox
Executa o motor com ações de sandbox para testes locais, sem efeitos colaterais externos
Endpoint de teste. Executa o motor com ações simuladas (echoText, transformText, extractKeywords, etc.). Os eventos da execução são coletados e retornados na resposta.
Endpoint
POST /run
Ações disponíveis no sandbox
echoText— repete um texto de voltatransformText— transforma texto (uppercase, lowercase, reverse, trim)extractKeywords— extrai palavras-chave removendo stopwordscalculateSum— soma lista de números com estatísticasbuildList— monta lista formatada com título e itensmergeTexts— combina múltiplos textos com separadorrespondToUser— entrega a resposta final ao chamador (deve ser o último step)
Parâmetros
instructions
string
requiredO que o motor deve fazer, em linguagem natural.
context
object
Dados de contexto repassados para as ações (ex: hostId, userId).
options
object
Exemplo
curl -X POST "{BASE_URL}/run" \
-H "Content-Type: application/json" \
-d '{
"instructions": "Pegue o texto \"hello world\", transforme para maiúsculas e extraia as palavras-chave."
}'
Resposta
{
"data": {
"result": {
"success": true,
"intentId": "uuid-da-execucao",
"steps": [
{
"stepNumber": 1,
"action": "transformText",
"status": "completed",
"result": { "original": "hello world", "operation": "uppercase", "result": "HELLO WORLD" },
"params": { "text": "hello world", "operation": "uppercase" },
"durationMs": 1200
},
{
"stepNumber": 2,
"action": "extractKeywords",
"status": "completed",
"result": { "keywords": ["hello", "world"], "count": 2 },
"params": { "text": "HELLO WORLD" },
"durationMs": 800
},
{
"stepNumber": 3,
"action": "respondToUser",
"status": "completed",
"result": { "message": "As palavras-chave extraídas são: hello, world." },
"params": { "message": "As palavras-chave extraídas são: hello, world." },
"durationMs": 500
}
],
"finalAnswer": { "message": "As palavras-chave extraídas são: hello, world." },
"feasibilityAnalysis": { "feasible": true, "issues": [], "warnings": [], "recommendations": [] },
"metrics": {
"totalDurationMs": 3500,
"totalLlmCalls": 4,
"totalTokensUsed": { "prompt": 1200, "completion": 450 }
},
"auditLog": [],
"error": null
},
"events": [
{ "type": "plan_ready", "intentId": "uuid", "timestamp": "2024-01-15T14:00:00.000Z", "payload": { "steps": [], "totalSteps": 3 } },
{ "type": "feasibility_checked", "intentId": "uuid", "timestamp": "2024-01-15T14:00:01.000Z", "payload": { "feasible": true } },
{ "type": "execution_started", "intentId": "uuid", "timestamp": "2024-01-15T14:00:01.100Z", "payload": { "totalSteps": 3 } },
{ "type": "step_started", "intentId": "uuid", "timestamp": "2024-01-15T14:00:01.200Z", "payload": { "stepNumber": 1, "action": "transformText", "progress": 33 } },
{ "type": "step_completed", "intentId": "uuid", "timestamp": "2024-01-15T14:00:02.400Z", "payload": { "stepNumber": 1, "result": {}, "progress": 33 } },
{ "type": "execution_completed", "intentId": "uuid", "timestamp": "2024-01-15T14:00:04.600Z", "payload": { "success": true, "totalSteps": 3 } }
]
}
}
Campos da Resposta
data
object
O body pode vir em req.body.data ou req.body diretamente, dependendo do cliente.
Erros
| Código | Descrição |
|---|---|
400 | instructions ausente ou não é string |
500 | Erro interno do servidor |