> For the complete documentation index, see [llms.txt](https://docs.airops.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.airops.com/docs/pt/acoes/workflow-concepts/testing-and-iteration.md).

# Teste e Iteração

Melhores práticas para testar e iterar no seu workflow

O teste e a iteração são passos fundamentais para criar um Workflow pronto para produção. Nesta secção, vamos descrever as melhores práticas para testar e iterar no seu workflow.

## Modo de Teste Gratuito

A AirOps oferece **50.000 tarefas de teste gratuitas por mês** para testes no Studio. Pode utilizar tarefas de teste para testes de Workflow e execuções iniciadas a partir do editor de Playbook.

{% hint style="info" %}
As tarefas de teste estão disponíveis para todos os workspaces e são separadas da sua alocação de tarefas de produção. Os testes de Workflow e as execuções do editor de Playbook usam primeiro as tarefas de teste e, depois, usam tarefas de produção quando o saldo de tarefas de teste se esgota.
{% endhint %}

## Como Testar o Seu Workflow

Existem duas formas de testar o seu workflow: um passo de cada vez ou todos os passos de uma vez.

Quando testa um passo de cada vez, o valor de cada passo será atualizado. **Quando testa todos os passos de uma vez, os valores de cada passo só serão atualizados se a execução for bem-sucedida. No entanto, os valores não serão atualizados se encontrar um erro.** Como resultado, a melhor prática é testar sempre um passo de cada vez até o seu workflow estar pronto para produção

### Testar Um Passo

<figure><img src="https://31915162-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FX2n5yPRPynbnWuO4SH0M%2Fuploads%2Fgit-blob-621eef10ef494b864c2427aeafb1fee71630d8eb%2FCleanShot%202025-02-27%20at%2006.34.40%402x.png?alt=media" alt=""><figcaption></figcaption></figure>

* **Comece no passo Start:** para começar a testar um workflow, tem de adicionar valores ao passo inicial
* **Clique na seta do primeiro passo:** isto executará apenas o primeiro passo
* **Use os registos para compreender a saída do passo, de modo a referenciá-la em passos futuros:** os registos são essenciais para compreender a estrutura de dados da saída do passo - use esta saída para ajudá-lo a referenciar este passo nos passos subsequentes
* **Desenhe o(s) próximo(s) passo(s):** continue a desenhar o seu workflow referenciando os passos anteriores usando o botão rosa de ajuda de variáveis
* **Continue a testar cada passo subsequente:** depois de desenhar um passo, clique no botão de reprodução para testar o passo. Continue este processo até ter um workflow pronto para produção

### Testar Passos em Condicionais

Pode depurar passos individuais dentro de ramos condicionais (tanto nos caminhos verdadeiros como falsos). Isto facilita testar e iterar em workflows complexos com lógica de ramificação:

1. Navegue até ao passo condicional no seu workflow
2. Expanda o ramo verdadeiro ou falso que quer testar
3. Clique no botão de reprodução em qualquer passo individual dentro do ramo
4. O passo será executado usando os valores de teste atuais, permitindo-lhe verificar a lógica em cada caminho

### Teste o seu Workflow completo

Existem **duas opções para testar o seu workflow de ponta a ponta:**

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th data-hidden data-card-cover data-type="files"></th></tr></thead><tbody><tr><td><strong>Opção 1:</strong> Clique em "Testar Worfklow" no passo Inputs</td><td><a href="https://31915162-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FX2n5yPRPynbnWuO4SH0M%2Fuploads%2Fgit-blob-2e117b7990834bcd5e38ebceeed80967eaf0b0a8%2FCleanShot%202025-02-27%20at%2006.35.09%402x.png?alt=media">CleanShot 2025-02-27 at 06.35.09@2x.png</a></td></tr><tr><td><strong>Opção 2:</strong> Clique em "Test Workflow" no canto superior direito do Studio</td><td><a href="https://31915162-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FX2n5yPRPynbnWuO4SH0M%2Fuploads%2Fgit-blob-d6d0fd12845d8c7e36765281369257aa8bc851ec%2FCleanShot%202025-02-28%20at%2005.56.46%402x.png?alt=media">CleanShot 2025-02-28 at 05.56.46@2x.png</a></td></tr></tbody></table>

{% hint style="info" %}
Use a funcionalidade **Testar Workflow** quando o seu Workflow estiver pronto
{% endhint %}

* **Clique em Testar Workflow:** clique **Testar Workflow** no canto superior direito
* **Introduza os seus valores de teste:** adicione os valores de teste que pretende executar
* **Executar:** clique **Executar** para testar o workflow completo

## Melhores Práticas para Tratamento de Erros

Ao criar um workflow para produção, existem casos-limite que deve testar e tratar no seu workflow antes de o executar em grande escala. Além disso, lembre-se de que pode sempre pedir ajuda ao [Copilot para Corrigir Erros](/docs/pt/acoes/workflow-concepts/chat-with-copilot/fix-errors-with-copilot.md) com os quais se deparar durante os testes.

### 1. Limite da Janela de Contexto

Todos os modelos LLM têm uma janela de contexto máxima, o que significa que existe um número máximo de tokens (ou caracteres) que pode incluir no seu prompt antes de ocorrer um erro.

{% hint style="info" %}
1 token corresponde geralmente a \~4 caracteres e \~3/4 de uma palavra.
{% endhint %}

1. Para garantir que o seu prompt permanece dentro do limite da janela de contexto, pode aproximar o número de tokens que irá usar copiando e colando o seu prompt no contador de tokens da OpenAI abaixo: <https://platform.openai.com/tokenizer>
2. Para lidar com casos-limite em que o seu prompt excede o limite de tokens, pode usar a seguinte sintaxe Liquid para dividir as suas entradas ou saídas de passo numa parte mais curta: `{{step_1.output | slice: 0, 10000}}`em que 10000 é substituído pelo número de caracteres em que pretende dividir o conteúdo.

### 2. Erros de Formatação do Prompt

Muitos workflows de produção de modelos de linguagem de grande dimensão dependem de uma formatação de saída consistente do modelo. Para garantir consistência no seu workflow, considere os seguintes métodos para lidar com saídas inesperadas do prompt:

1. **Técnicas de Prompting:**
   * Para evitar que o modelo introduza a sua resposta com uma frase como "*Claro, aqui está um...*", pode adicionar um comando tanto no **Sistema** como no **Utilizador** como "*Apresente a sua resposta no seguinte formato e não inclua qualquer comentário adicional:*"
   * Se a sua saída for HTML ou JSON, para evitar que o modelo comece com ` ```html ` ou ` ```json `, pode dizer ao modelo *"Comece com #..."* ou *"Comece com {, e termine com } e não inclua ` ```json ` na sua resposta"*
2. **Análise de Código:**
   * Se ainda estiver com dificuldades em obter uma saída consistente, ou se quiser lidar com casos extremos em que esta possa desviar-se da saída esperada, pode usar código para extrair qualquer texto que anteceda o seu primeiro carácter.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.airops.com/docs/pt/acoes/workflow-concepts/testing-and-iteration.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
