> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tela.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Entradas e saídas

> Declare as variáveis que o seu Agente recebe a cada execução e o resultado estruturado que você espera de volta

As **Entradas** são as variáveis que o Agente recebe em toda execução, como texto ou arquivos. As **Saídas** descrevem o resultado que você espera de volta: texto livre, ou um conjunto de atributos nomeados que você pode ler, revisar e reutilizar. As duas são seções da barra lateral na experiência **Craft**.

Para o assistente de contratos do [exemplo da seção](https://docs.tela.com/pt/agent/overview.md#o-exemplo-que-acompanha-a-secao), as Entradas são `contract` (um arquivo, obrigatório) e `question` (um texto), e as Saídas são `answer` e `risky_clauses`.

## Entradas

A seção **Entradas** lista cada entrada em uma tabela com **Nome**, **Formato** (Texto ou Arquivo) e se é **Obrigatório**. Uma caixa de busca filtra a lista.

![Seção Entradas listando as entradas contract e question, com os interruptores Chat e Compactar automaticamente](https://mintcdn.com/meistrari/IBJhAp-onVS37l80/images/pt/agent/inputs.png?fit=max\&auto=format\&n=IBJhAp-onVS37l80\&q=85\&s=737d0d747039511771f4968a69934ac0)

### Declarando uma entrada

**1. Adicione uma variável**

Clique em **Adicionar variável**. O diálogo **Nova Variável** abre.

**2. Dê um nome**

Digite o **Nome**. Nomes não podem conter espaços, hífens ou caracteres especiais, não podem começar com número e precisam ser únicos no Agente. Use `snake_case` ou `camelCase`, por exemplo `contract` ou `question`.

**3. Escolha o tipo**

Em **Tipo**, escolha **Texto** para conteúdo digitado ou colado a cada execução, ou **Arquivo** para documentos que o Agente lê.

**4. Decida se é obrigatória**

Ative **Obrigatório** quando o Agente não consegue trabalhar sem ela. Entradas obrigatórias devem ser fornecidas ao executar o Agente, no painel de teste e pela API.

**5. Crie**

Clique em **Criar**. A entrada aparece na tabela e, a partir daí, o menu de menções do Objetivo a oferece em **Inputs**.

Você pode trocar o **Formato** e o interruptor **Obrigatório** diretamente na tabela; os dois salvam na hora. O menu `…` no fim da linha tem **Editar** (renomear) e **Excluir**. Excluir uma entrada também remove a pasta dela do repositório do Agente, então atualize o Objetivo em seguida.

> [!NOTE]
>
> **Para desenvolvedores.** Declarar uma entrada cria a pasta `input/<name>/` no repositório do Agente: a pasta é a declaração. A cada execução, uma entrada de arquivo é colocada nessa pasta e uma entrada de texto fica disponível pelo nome. O nome `references` é reservado. As execuções são validadas contra as entradas declaradas: um nome desconhecido, um tipo diferente ou uma entrada obrigatória ausente é rejeitado com 400.

### Chat e Compactar automaticamente

Dois interruptores no cabeçalho da seção **Entradas** controlam a conversa:

* **Chat**: o usuário pode enviar texto e arquivos pelo chat, responder após cada saída, e o Agente mantém o contexto da conversa. Com o Chat desligado, cada execução acontece de uma vez só, com um botão **Executar** em vez de uma caixa de chat.
* **Compactar automaticamente**: compacta conversas longas automaticamente para preservar o contexto útil.

Para o assistente de contratos, faz sentido deixar o Chat ligado: o advogado faz uma primeira pergunta, lê a resposta e faz uma pergunta de acompanhamento sobre o mesmo contrato sem enviá-lo de novo.

## Saídas

A seção **Saídas** define o formato do resultado. Deixe-a vazia e o Agente responde em texto livre (Markdown). Adicione atributos e o Agente devolve um resultado estruturado com exatamente esses atributos, que o Tela exibe como um card por atributo, permite revisar atributo por atributo nos casos de teste e entrega à API como JSON.

![Seção Saídas com os atributos answer e risky\_clauses no editor em tabela](https://mintcdn.com/meistrari/IBJhAp-onVS37l80/images/pt/agent/outputs.png?fit=max\&auto=format\&n=IBJhAp-onVS37l80\&q=85\&s=83bfe48f7e6dbb0205fa550d80985db8)

### Adicionando atributos

A seção tem duas visualizações, alternadas pelo controle à direita: um **editor em tabela**, em que você adiciona os atributos um a um com nome, tipo e descrição, e uma **visualização de código**, em que você edita a mesma definição como JSON e clica em **Salvar** (ou **Copiar** para levá-la a outro lugar). A visualização de código valida o JSON antes de salvar.

Escreva uma descrição para cada atributo. O Agente a lê para decidir o que vai ali, então uma descrição como *"cláusulas que expõem a empresa a risco incomum, transcritas literalmente com o número"* muda o resultado mais do que qualquer frase extra no Objetivo.

Para o assistente de contratos, os dois atributos ficam assim na visualização de código:

```json theme={null}
{
  "answer": {
    "type": "string",
    "description": "Answer to the lawyer's question, citing clause numbers and quoting the relevant text"
  },
  "risky_clauses": {
    "type": "array",
    "items": { "type": "string" },
    "description": "Clauses that expose the company to unusual risk, quoted verbatim with their number"
  }
}
```

> [!NOTE]
>
> **Para desenvolvedores.** A definição é um mapa plano de `attributeName -> { type, description, ... }`, sem o invólucro de JSON Schema, armazenado em `output-format.json`. Um mapa não vazio torna o resultado JSON estruturado; `{}` o torna Markdown. Esses caminhos de atributo são o que o feedback e as métricas dos casos de teste referenciam (caminhos aninhados e indexados, como `parties.0`, são válidos).

### Variantes de saída

Alguns Agentes precisam de resultados diferentes para situações diferentes: o assistente de contratos poderia devolver um conjunto de atributos para uma locação e outro para um contrato de serviços. As variantes resolvem isso.

Clique em **Adicionar variante**. No diálogo **Nova variante**, dê um **Nome** (letras minúsculas, números e hífens, até 64 caracteres) e uma **Descrição** que ajude o Agente a escolher essa variante, e clique em **Adicionar variante**. A seção passa a mostrar abas: **Campos comuns**, cujos atributos são incluídos na saída de todas as variantes, e uma aba por variante com os atributos dela. Na aba de uma variante você pode editar a descrição ali mesmo ou **Excluir** a variante.

O seletor **Variante de saída**, no cabeçalho da seção Saídas, decide qual variante as suas execuções de teste usam: **Auto (agente decide)**, em que o Agente lê as descrições e escolhe uma, ou uma variante específica que você força enquanto testa.

![Seção Saídas com a aba Campos comuns e duas abas de variante](https://mintcdn.com/meistrari/IBJhAp-onVS37l80/images/pt/agent/outputs-variants.png?fit=max\&auto=format\&n=IBJhAp-onVS37l80\&q=85\&s=287d1a89e79e55d54aa55f3fc9411a52)

## Onde o resultado aparece

* No painel **Teste seu agente**, um resultado estruturado aparece como um card por atributo (para `risky_clauses`, uma lista); um resultado em texto livre aparece como Markdown. Os passos de **Raciocínio** do Agente ficam listados acima do resultado.
* Na experiência **Test**, cada atributo pode ser revisado com um polegar para cima ou para baixo e julgado contra a saída esperada. Veja [Testando um Agente](https://docs.tela.com/pt/agent/testing.md).
* Pela API, em uma etapa de Workflow e em tarefas, o resultado é um objeto JSON com os seus atributos. Veja [Executando um Agente e obtendo resultados](https://docs.tela.com/pt/agent/running-and-results.md).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.