---
title: "A conversa é com a IA, o arquivo é mexido pelo motor: o que sai é uma especificação executada."
seo_title: "Conversa com IA, arquivo mexido pelo motor | SazAI"
description: "A camada que conversa e a que altera o documento são separadas de propósito: o modelo entende o pedido, o motor executa, e a fronteira é conferida."
tags: [marketing]
---

> Quase todo produto de IA sobre documentos põe o modelo no caminho do arquivo: ele lê o material, decide o que mudar e devolve um documento novo. Funciona na demonstração e falha no caso que importa, porque um modelo de linguagem é ótimo para interpretar e péssimo para garantir. A SazAI Corpus parte de outra divisão, e é dela que vem tudo o que as outras páginas prometem.

<div class="chap">

<div class="ico-col"><sz-icon style="color:var(--verb-talk)" name="sparkles" size="36"></sz-icon></div>

<h2 id="two-layers">As duas camadas</h2>

<h3 class="sub">Uma entende o que você quer; a outra abre o arquivo pelas regras do formato</h3>

A camada que conversa entende o pedido, escolhe a operação, explica o resultado e responde às
suas perguntas. Ela é feita de modelo de linguagem, e é ali que a IA trabalha. A camada que
mexe no arquivo é um motor determinístico: abre o documento pelas regras do próprio formato,
encontra os elementos que existem, altera exatamente os que foram autorizados e escreve o
arquivo de volta. Esse motor não interpreta intenção e não improvisa.

<figure class="viz duo" role="group" aria-label="O pedido em linguagem natural vira uma operação escolhida, e é o motor que escreve o arquivo">
<div class="side"><svg viewBox="0 0 90 60" aria-hidden="true"><rect x="4" y="10" width="82" height="40" rx="10" fill="none" stroke="var(--verb-talk)" stroke-width="1.5"/><line x1="16" y1="24" x2="64" y2="24" stroke="var(--gray)" stroke-width="2"/><line x1="16" y1="34" x2="48" y2="34" stroke="var(--gray)" stroke-width="1.5"/></svg><b>o seu pedido</b><span>em português, como você fala</span></div>
<div class="mid"><svg viewBox="0 0 120 72" aria-hidden="true"><line x1="8" y1="36" x2="52" y2="36" stroke="var(--verb-talk)" stroke-width="1.5"/><path d="M46 30l6 6-6 6" fill="none" stroke="var(--verb-talk)" stroke-width="1.5"/><rect x="52" y="24" width="24" height="24" rx="4" fill="none" stroke="var(--verb-talk)" stroke-width="1.5"/><line x1="76" y1="36" x2="112" y2="36" stroke="var(--gray)" stroke-width="1.5"/><path d="M106 30l6 6-6 6" fill="none" stroke="var(--gray)" stroke-width="1.5"/></svg><b>uma operação escolhida</b><span>nomeada, registrada, com recibo</span></div>
<div class="side"><svg viewBox="0 0 90 60" aria-hidden="true"><rect x="12" y="6" width="66" height="48" rx="4" fill="none" stroke="var(--gray)" stroke-width="1.5"/><rect x="22" y="18" width="28" height="16" rx="2" fill="none" stroke="var(--gray)" stroke-width="1.5"/><line x1="22" y1="42" x2="68" y2="42" stroke="var(--lightgray)" stroke-width="1.5"/></svg><b>o arquivo escrito</b><span>pelo motor, nunca pelo modelo</span></div>
<figcaption>O modelo escolhe a operação; quem abre e escreve o arquivo é o motor.</figcaption>
</figure>

A consequência prática dessa divisão é a que decide uma compra: o pior erro possível da camada
de IA continua sendo um erro de conversa. Se o modelo entender mal o seu pedido, a operação
errada é executada e isso aparece no recibo, com o nome do que rodou e sobre qual versão. O que
não acontece é o arquivo voltar silenciosamente estragado por uma improvisação.

</div>

<div class="chap">

<div class="ico-col"><sz-icon style="color:var(--verb-talk)" name="settings" size="36"></sz-icon></div>

<h2 id="spec">O documento sai de uma especificação</h2>

<h3 class="sub">Você diz o que quer; o que executa é uma operação sobre uma estrutura conhecida</h3>

Antes de qualquer transformação, o documento é lido inteiro e desmontado nos elementos que o
compõem: textos, formas, tabelas, células, páginas, relações entre as partes, propriedades e
metadados. Esse mapa fica registrado, e é ele que sustenta todo o resto. Uma mudança não é uma
reescrita do arquivo: é uma <dfn tabindex="0" data-hint="A descrição explícita do que deve mudar, em quais elementos, sobre qual versão. O motor executa a especificação; ele não deduz o que você quis dizer.">especificação</dfn> executada contra esse mapa, que altera os
elementos autorizados, deixa o resto intocado e confere o resultado contra a estrutura de
origem.

É por isso que uma pergunta sobre o documento é respondida sem reprocessar nada, e é por isso
que a comparação entre duas versões aponta divergência por unidade em vez de mostrar dois
textos lado a lado. O inteiro dessa leitura, com o que ela guarda de cada formato, está em
[seus documentos](documents).

</div>

<div class="chap">

<div class="ico-col"><sz-icon style="color:var(--verb-talk)" name="check" size="36"></sz-icon></div>

<h2 id="checked-boundary">Onde o texto do modelo realmente entra</h2>

<h3 class="sub">Na tradução a fronteira é conferida, e quando não bate o passo falha</h3>

Vale ser específico sobre o único caso em que o texto do modelo chega mesmo ao arquivo, que é a
tradução. Ali o texto traduzido volta e precisa ser injetado nos elementos certos, e a fronteira
entre o que o modelo produziu e o que entra no documento é conferida, não presumida. O material
enviado carrega marcadores que delimitam cada trecho, e o número de marcadores que volta é
comparado com o número que saiu. Se não bater, porque o modelo perdeu um, inventou outro ou
escreveu algo parecido com um, o passo falha.

<figure class="viz" role="group" aria-label="Contagem de elementos de entrada e de saída num teste de tradução de 45 slides">
<div class="ev proof"><span class="n">633</span><span class="t"><b>Entrou com 633, saiu com 633</b>Num teste de tradução de 45 slides o arquivo entrou com 633 elementos e saiu com 633, entrou com 971 formas e saiu com 971, e o motor tocou exatamente os 11 slides que continham texto. Os outros 34 não foram alterados porque não havia o que alterar neles.</span></div>
<figcaption>Contagem é a forma honesta de dizer isto; adjetivo não é.</figcaption>
</figure>

A diferença que isso faz é a de sempre nesta casa: um modelo que se comporta mal aqui não
produz um documento estragado em silêncio, produz uma operação que não completou. Você fica
sabendo, em vez de descobrir na reunião. O escopo dessa garantia varia com o que cada formato
permite, e a página de [traduzir](translate) diz onde ela vale e onde termina.

</div>

<div class="chap">

<div class="ico-col"><sz-icon style="color:var(--verb-talk)" name="rotate" size="36"></sz-icon></div>

<h2 id="model-is-a-choice">O modelo de linguagem é uma escolha, não uma dependência</h2>

<h3 class="sub">O que continua igual quando o modelo muda é a camada determinística</h3>

O modelo que conversa e o modelo que traduz são papéis diferentes, escolhidos separadamente
pelo mérito medido em cada função, e ambos são substituíveis por configuração. Um cliente
instalado aponta para o modelo que ele contratou.

Isso importa por um motivo que vai além de preço: ferramenta amarrada a um único fornecedor de
IA envelhece junto com ele. A camada determinística é a que não se move quando o modelo muda, e
é sobre ela que a [soberania](privacy) do arranjo se apoia. É também por isso que o agente
não inventa fato sobre o seu documento: ele responde a partir do que o motor registrou, e o
registro ou contém a informação ou não contém.

</div>

Esta é a divisão; o que ela habilita são os canais por onde você fala com o produto, em
[interfaces](interfaces), e o conjunto de operações que o agente pode executar, em
[capacidades](capabilities).
