Esta página traz exemplos prontos para os cenários mais comuns do SmartCut.

Todos os exemplos usam o endpoint POST /api/externalAPIs/public/smartCut/lineSplit.

Base de requisição

curl -X POST "{{BASE_URL}}/api/externalAPIs/public/smartCut/lineSplit" \
  -H "Authorization: Bearer {TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{ ... }'

1) Texto direto com IA

Use quando você já possui o texto e quer manter somente partes relevantes.

curl -X POST "{{BASE_URL}}/api/externalAPIs/public/smartCut/lineSplit" \
  -H "Authorization: Bearer {TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "hostId": "1754b7e6-dbd7-4ca3-a843-7f06fad4e4c0",
    "text": "Introducao do atendimento. Cliente quer migrar plano. Trecho irrelevante. Cliente cita prazo e orcamento.",
    "method": "sentence-parse",
    "options": {
      "useAI": true,
      "generalInstructions": "Mantenha somente frases sobre necessidade, prazo, orcamento ou servico.",
      "model": "gpt-4o-mini",
      "provider": "openai"
    }
  }'

2) Asset existente (asset_id)

Use quando a mídia já foi processada no ecossistema e você quer reaproveitar o conteúdo.

curl -X POST "{{BASE_URL}}/api/externalAPIs/public/smartCut/lineSplit" \
  -H "Authorization: Bearer {TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "hostId": "1754b7e6-dbd7-4ca3-a843-7f06fad4e4c0",
    "asset_id": "550e8400-e29b-41d4-a716-446655440000",
    "method": "semantic-chunking",
    "options": {
      "useAI": true,
      "generalInstructions": "Selecione trechos com fatos, requisitos e restricoes importantes.",
      "maxTokenSize": 512
    }
  }'

3) URL com prefer_summary

Use para acelerar o fluxo quando existe resumo curto suficiente, evitando processamento completo quando possivel.

curl -X POST "{{BASE_URL}}/api/externalAPIs/public/smartCut/lineSplit" \
  -H "Authorization: Bearer {TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "hostId": "1754b7e6-dbd7-4ca3-a843-7f06fad4e4c0",
    "url": "https://example.com/video.mp4",
    "method": "default",
    "options": {
      "urlStrategy": "prefer_summary",
      "useAI": true,
      "generalInstructions": "Retorne os trechos mais uteis para responder perguntas de produto.",
      "roiGate": {
        "maxContextChars": 8000
      }
    }
  }'

4) Split sem IA (useAI=false)

Use quando você quer apenas particionar texto com custo minimo e controle total no cliente.

curl -X POST "{{BASE_URL}}/api/externalAPIs/public/smartCut/lineSplit" \
  -H "Authorization: Bearer {TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "hostId": "1754b7e6-dbd7-4ca3-a843-7f06fad4e4c0",
    "text": "Bloco A. Bloco B. Bloco C.",
    "method": "chonkiejs",
    "options": {
      "useAI": false,
      "chunkSize": 512,
      "minCharactersPerChunk": 24
    }
  }'

5) ROI Gate com economia mínima

Use quando quiser garantir que o SmartCut só rode se valer a pena: defina um percentual mínimo de redução e o modelo alvo para o cálculo de viabilidade.

curl -X POST "{{BASE_URL}}/api/externalAPIs/public/smartCut/lineSplit" \
  -H "Authorization: Bearer {TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "hostId": "1754b7e6-dbd7-4ca3-a843-7f06fad4e4c0",
    "text": "Trecho longo de atendimento com muitos trechos irrelevantes...",
    "options": {
      "useAI": true,
      "generalInstructions": "Mantenha apenas trechos com decisoes, pedidos e problemas relatados.",
      "roiGate": {
        "minimumSavingsRatio": 0.40,
        "targetModel": "gpt-4o",
        "targetProvider": "openai"
      }
    }
  }'

Quando o gate reprovar, a resposta inclui:

{
  "data": {
    "success": true,
    "lines": ["Trecho longo de atendimento com muitos trechos irrelevantes..."],
    "skippedByRoiGate": true,
    "roiGateReason": "Economia estimada (32%) abaixo do objetivo mínimo (40%); SmartCut ignorado",
    "roiGateEstimates": {
      "chars": 2100,
      "tokensEst": 525,
      "retentionRatio": 0.68,
      "roi": 0.12,
      "costViability": false
    }
  }
}

Respostas para tratar no cliente

Nos quatro cenarios, trate estes campos primeiro:

  • data.success
  • data.lines
  • data.allLines
  • data.intervals (quando useAI=true)
  • data.error

Quando o ROI Gate decidir nao executar reducao, a resposta pode incluir:

  • data.skippedByRoiGate: true
  • data.roiGateReason
  • data.roiGateEstimates.chars — caracteres avaliados
  • data.roiGateEstimates.tokensEst — tokens estimados
  • data.roiGateEstimates.retentionRatio — fração prevista de retenção (0–1)
  • data.roiGateEstimates.roi — estimativa de retorno sobre investimento
  • data.roiGateEstimates.costViability — viabilidade de custo frente ao modelo alvo

Quando intentModel e intentProvider forem informados, a resposta inclui:

  • data.savingsReport.savedTokens — tokens economizados
  • data.savingsReport.savingsPct — percentual de reducao
  • data.savingsReport.savedCostUsd — economia estimada em USD
  • data.savingsReport.pricingMissingtrue quando o modelo nao tem pricing cadastrado

Boas praticas

  • Envie somente uma fonte por requisicao: text, asset_id/assetId ou url
  • Defina generalInstructions objetivas quando usar IA
  • Comece com sentence-parse para texto humano e migre para semantic-chunking em RAG
  • Use useAI=false para pipelines de pre-processamento sem selecao semantica
  • Use roiGate.minimumSavingsRatio para proteger pipelines sensíveis a custo; comece com 0.35 e ajuste com base nos relatórios de roiGateEstimates
  • Use roiGate.skip: true apenas em ambientes de teste ou quando o controle de viabilidade for feito externamente

Para referencia completa de parametros e campos da resposta, veja a pagina principal de SmartCut.