Pular para o conteúdo

Cadeia de Raciocinio Juridico

A Cadeia de Raciocinio Juridico e a funcionalidade que transforma o Valter de um backend de busca em um motor de raciocinio juridico. Em vez de retornar uma lista de casos similares, ele compoe um argumento juridico verificado com proveniencia — cada afirmacao rastreavel ate um no especifico no knowledge graph.

Nenhum concorrente no espaco de legal tech brasileiro faz composicao de argumentos a partir de um knowledge graph. As ferramentas existentes ou retornam listas de casos por palavras-chave ou geram texto nao verificado. A cadeia de raciocinio preenche essa lacuna orquestrando 7 capacidades existentes do Valter em uma unica resposta que um advogado pode citar com confianca.

O orquestrador residira em core/reasoning_chain.py e nao requer novas queries de grafo — ele encadeia endpoints existentes que ja estao testados em producao.

{
"fatos": "Passageiro teve voo cancelado sem aviso previo, ficou 18h no aeroporto sem assistencia",
"pergunta": "Cabe indenizacao por dano moral por cancelamento de voo?",
"ministro": "NANCY ANDRIGHI",
"turma": "3a Turma"
}
CampoObrigatorioDescricao
fatosSimFatos do caso em linguagem natural
perguntaSimQuestao juridica a responder
ministroNaoFiltrar composicao de argumento para um ministro especifico
turmaNaoFiltrar por turma do tribunal
{
"argument_steps": [
{
"fact": "cancelamento sem aviso previo",
"criterion": "dano moral em transporte aereo",
"success_rate": 0.87,
"dispositivo": "CDC art. 14",
"supporting_decisions": ["REsp 1.584.465/SP", "REsp 1.734.946/RJ"]
}
],
"counter_arguments": [
{
"criterion": "excludente de responsabilidade por caso fortuito",
"dissenting_ministers": ["MINISTRO X"],
"divergence_score": 0.35
}
],
"temporal_strength": [
{
"criterion": "dano moral em transporte aereo",
"trend": "growing",
"recent_decisions_count": 42
}
],
"anchor_decision": {
"processo": "REsp 1.584.465/SP",
"ministro": "NANCY ANDRIGHI",
"ementa": "...",
"kg_score": 0.92,
"citation_count": 15,
"verified": true
},
"overall_strength": 0.83,
"provenance": [
{
"claim_index": 0,
"graph_node_id": "criterio_dano_moral_transporte",
"graph_node_type": "Criterio",
"source_decision": "decisao_REsp_1584465"
}
]
}

O array provenance e o diferencial critico: cada afirmacao no argumento pode ser rastreada ate um no especifico no knowledge graph, tornando a saida auditavel.

A cadeia de raciocinio nao introduz novas queries. Ela orquestra endpoints existentes e testados em producao:

Componente de RaciocinioEndpoint ExistenteO Que Fornece
Fato para criterio com taxa de sucessoget_optimal_argumentMapeia fatos para criterios e calcula taxas de sucesso
Criterio para dispositivo legalget_optimal_argumentA cadeia inclui dispositivos (leis)
Deteccao de contra-argumentoget_divergencias + get_ministro_profileEncontra desacordos ativos nos criterios usados
Delta do ministro vs categoriaget_optimal_argument_by_ministroMostra como um ministro especifico diverge da media
Tendencia temporalget_temporal_evolutionSe o criterio esta ganhando ou perdendo tracao
Decisao ancora verificadasearch_jurisprudence + verify_legal_claimsA decisao mais forte para citar, verificada contra dados de referencia
Similaridade estruturalfind_similar_casesCasos com topologia de grafo similar
VerboRotaDescricao
POST/v1/reasoning-chainEndpoint REST API para composicao de argumentos
MCPcompose_legal_argumentMCP tool para Claude Desktop/Code e ChatGPT

O milestone v1.2 define criterios claros de aceitacao:

  • POST /v1/reasoning-chain retorna um argumento com pelo menos 3 passos verificados
  • Toda afirmacao na saida tem uma entrada em provenance vinculando a um no do grafo
  • A MCP tool compose_legal_argument esta funcional no Claude Desktop
  • Latencia p95 para a cadeia completa esta abaixo de 5 segundos
  • Um spike de 50 decisoes do TRF e executado e documentado para avaliar a complexidade multi-tribunal

O modelo de execucao para a cadeia de raciocinio ainda nao foi definido:

OpcaoProsContras
SincronoImplementacao simples, bom para latencia alvo < 5sBloqueia a thread da requisicao; falha se qualquer sub-query for lenta
Assincrono com pollingTolera execucao > 10s; cliente faz polling do resultadoAdiciona complexidade (fila de jobs, endpoint de status, polling client-side)
Streaming via SSEResultados parciais em tempo real; melhor UXMais complexo; requer suporte a SSE em todos os consumidores

A decisao depende da latencia medida das queries orquestradas uma vez que circuit breakers e connection pools (v1.1) estejam implementados.