

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Visualize os resultados do AI/ML modelo usando o Flask e o AWS Elastic Beanstalk
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk"></a>

*Chris Caudill e Durga Sury, Amazon Web Services*

## Resumo
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk-summary"></a>

A visualização do resultado dos serviços de inteligência artificial e machine learning (IA/ML) geralmente exige chamadas de API complexas que devem ser personalizadas por seus desenvolvedores e engenheiros. Isso pode ser uma desvantagem se seus analistas quiserem explorar rapidamente um novo conjunto de dados.

Você pode aprimorar a acessibilidade de seus serviços e fornecer uma forma mais interativa de análise de dados usando uma interface de usuário (UI) baseada na web que permite que os usuários carreguem seus próprios dados e visualizem os resultados do modelo em um painel.

Esse padrão usa [Flask](https://flask.palletsprojects.com/en/2.0.x/) e [Plotly](https://plotly.com/) para integrar o Amazon Comprehend a um aplicativo web personalizado e visualizar sentimentos e entidades a partir de dados fornecidos pelo usuário. O padrão também fornece as etapas para implantar um aplicativo usando o AWS Elastic Beanstalk. Você pode adaptar o aplicativo usando os serviços de [IA da Amazon Web Services (AWS)](https://aws.amazon.com/machine-learning/ai-services/) ou com um modelo personalizado treinado hospedado em um endpoint (por exemplo, um [ SageMaker endpoint da Amazon](https://docs.aws.amazon.com/sagemaker/latest/dg/deploy-model.html)).

## Pré-requisitos e limitações
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk-prereqs"></a>

**Pré-requisitos **
+ Uma conta AWS ativa 
+ AWS Command Line Interface (AWS CLI), instalada e configurada na sua máquina local. Para obter mais informações, consulte [Noções básicas de configuração](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html) na documentação da AWS CLI. Você também pode usar um ambiente de desenvolvimento integrado (IDE) do AWS Cloud9; para obter mais informações a respeito, consulte [Tutorial do Python para o AWS Cloud9](https://docs.aws.amazon.com/cloud9/latest/user-guide/sample-python.html) e [Visualização de aplicativos em execução no IDE do AWS Cloud9](https://docs.aws.amazon.com/cloud9/latest/user-guide/app-preview.html) na documentação do AWS Cloud9.

  **Aviso**: não AWS Cloud9 está mais disponível para novos clientes. Os clientes existentes do AWS Cloud9 podem continuar usando o serviço normalmente. [Saiba mais](https://aws.amazon.com/blogs/devops/how-to-migrate-from-aws-cloud9-to-aws-ide-toolkits-or-aws-cloudshell/)
+ Uma compreensão da estrutura de aplicativos web do Flask. Para obter mais informações sobre o Flask, consulte [Início rápido](https://flask.palletsprojects.com/en/1.1.x/quickstart) na documentação do Flask.
+ A versão 3.6 ou superior do Python está instalada e configurada. Você pode instalar o Python seguindo as instruções em [Configuração de seu ambiente de desenvolvimento em Python](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/python-development-environment.html) na documentação do AWS Elastic Beanstalk.
+ Interface de linha de comando do Elastic Beanstalk (CLI do EB) instalada e configurada. Para obter mais informações a respeito, consulte [Instalar a EB CLI](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb-cli3-install.html) e [Configurar a EB CLI](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb-cli3-configuration.html) na documentação do AWS Elastic Beanstalk.

**Limitações**
+ O aplicativo Flask deste padrão foi desenvolvido para funcionar com arquivos .csv que usam uma única coluna de texto e estão restritos a 200 linhas. O código do aplicativo pode ser adaptado para lidar com outros tipos de arquivos e volumes de dados.
+ O aplicativo não considera a retenção de dados e continua agregando arquivos de usuário enviados até que eles sejam excluídos manualmente. Você pode integrar o aplicativo ao Amazon Simple Storage Service (Amazon S3) para armazenamento persistente de objetos ou usar um banco de dados como o Amazon DynamoDB para armazenamento de valores-chave de tecnologia sem servidor.
+ O aplicativo considera apenas documentos no idioma inglês. No entanto, você pode usar o Amazon Comprehend para detectar o idioma principal de um documento. Para obter mais informações sobre os idiomas compatíveis para cada ação, consulte a [Referência de APIs](https://docs.aws.amazon.com/comprehend/latest/dg/API_Reference.html) na documentação do Amazon Comprehend.
+ Uma lista de solução de problemas que contém erros comuns e suas soluções está disponível na seção *Informações adicionais*.

## Arquitetura
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk-architecture"></a>

**Arquitetura do aplicativo Flask**

O Flask é uma estrutura leve para o desenvolvimento de aplicativos web em Python. Ele foi projetado para combinar o poderoso processamento de dados do Python com uma rica interface de usuário da web. O aplicativo Flask do padrão mostra como criar um aplicativo web que permite aos usuários fazer upload de dados, enviar os dados para o Amazon Comprehend para inferência e, em seguida, visualizar os resultados.   O aplicativo possui a seguinte estrutura:
+ `static`— Contém todos os arquivos estáticos que suportam a interface do usuário da web (por exemplo JavaScript, CSS e imagens)
+ `templates`: contém todas as páginas HTML do aplicativo
+ `userData`: armazena dados do usuário enviados
+ `application.py`: o arquivo do aplicativo Flask
+ `comprehend_helper.py`: funções para fazer chamadas de API para o Amazon Comprehend
+ `config.py`: o arquivo de configuração de aplicativo
+ `requirements.txt`: as dependências do Python exigidas pelo aplicativo

O script `application.py` contém a funcionalidade principal do aplicativo web, que consiste em quatro rotas do Flask. O diagrama a seguir mostra essas rotas do Flask.

![\[As quatro rotas do Flask que compõem a funcionalidade principal da aplicação web.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/03d80cf1-ec97-43f7-adb5-2746a9ec70e6/images/9ca6bad1-26e2-4262-98d0-d54c172336bf.png)


 
+ `/` é a raiz do aplicativo e direciona os usuários para a página `upload.html` (armazenada no diretório `templates`).
+ `/saveFile` é uma rota invocada depois que um usuário carrega um arquivo. Essa rota recebe uma solicitação `POST` por meio de um formulário HTML, que contém o arquivo enviado pelo usuário. O arquivo é salvo no diretório `userData` e a rota redireciona os usuários para a rota `/dashboard`.
+ `/dashboard` envia os usuários para a página `dashboard.html`. No HTML dessa página, ele executa o JavaScript código `static/js/core.js` que lê os dados da `/data` rota e, em seguida, cria visualizações para a página.
+ `/data` é uma API JSON que apresenta os dados a serem visualizados no painel. Esta rota lê os dados fornecidos pelo usuário e usa as funções em `comprehend_helper.py` para enviar os dados do usuário ao Amazon Comprehend visando à análise de sentimentos e ao reconhecimento de entidade nomeada (NER). A resposta do Amazon Comprehend é formatada e retornada como um objeto JSON.

**Arquitetura de implantação**

![\[Diagrama de arquitetura para usar o Flask e o Elastic AI/ML Beanstalk para visualizar os resultados do modelo.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/03d80cf1-ec97-43f7-adb5-2746a9ec70e6/images/d691bfd2-e2ec-4830-8bff-ffa1e3a95c4a.png)


[Considerações sobre design](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/concepts.concepts.design.html)

 Para obter mais informações sobre considerações de design para aplicações implantados usando o Elastic Beanstalk na Nuvem AWS, consulte a documentação do AWS Elastic Beanstalk.

**Pilha de tecnologia**
+ Amazon Comprehend 
+ Elastic Beanstalk 
+ Flask 

**Automação e escala**

As implantações do Elastic Beanstalk são configuradas automaticamente com balanceadores de carga e grupos do Auto Scaling. Para obter mais opções de configuração, consulte [Configuração dos ambientes do Elastic Beanstalk](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers.html) na documentação do AWS Elastic Beanstalk.

## Ferramentas
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk-tools"></a>
+ A [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) é uma ferramenta unificada que fornece uma interface consistente para interagir com todas as partes da AWS.
+ O [Amazon Comprehend](https://docs.aws.amazon.com/comprehend/latest/dg/comprehend-general.html) usa o processamento de linguagem natural (PLN) para extrair insights sobre o conteúdo dos documentos sem demandar pré-processamento especial.
+ O [AWS Elastic Beanstalk](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/Welcome.html) ajuda a implantar e gerenciar rapidamente aplicações na Nuvem AWS sem se preocupar com a infraestrutura que executa esses aplicações.
+ O [Elastic Beanstalk CLI (EB CLI)](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb-cli3.html) é uma interface da linha de comando para o AWS Elastic Beanstalk que fornece comandos interativos que simplificam a criação, a atualização e o monitoramento de ambientes por meio de um repositório local.
+ A estrutura [Flask](https://flask.palletsprojects.com/en/2.0.x/) executa o processamento de dados e chamadas de API usando Python e oferece visualização web interativa com o Plotly.

**Código**

O código desse padrão está disponível nos [resultados do AI/ML modelo GitHub Visualize usando o Flask e o repositório AWS Elastic Beanstalk](https://github.com/aws-samples/aws-comprehend-elasticbeanstalk-for-flask).

## Épicos
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk-epics"></a>

### Configurar o aplicativo Flask
<a name="set-up-the-flask-application"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Clone o GitHub repositório. | Extraia o código do aplicativo dos [resultados do AI/ML modelo GitHub Visualize usando o Flask e o repositório AWS Elastic Beanstalk](https://github.com/aws-samples/aws-comprehend-elasticbeanstalk-for-flask) executando o seguinte comando:`git clone git@github.com:aws-samples/aws-comprehend-elasticbeanstalk-for-flask.git`Certifique-se de configurar suas chaves SSH com GitHub. | Desenvolvedor | 
| Instale os módulos do Python. | Depois de clonar o repositório, um novo diretório `aws-comprehend-elasticbeanstalk-for-flask` local é criado. Nesse diretório, o arquivo `requirements.txt` contém os módulos e versões do Python que executam o aplicativo. Use o comando a seguir para instalar os módulos:`cd aws-comprehend-elasticbeanstalk-for-flask``pip install -r requirements.txt` | Desenvolvedor de Python | 
| Testar o aplicativo localmente. | Execute o comando a seguir para iniciar o servidor do Flask:`python application.py`Isso retorna informações sobre o servidor em execução. Você deve conseguir acessar o aplicativo abrindo um navegador e visitando http://localhost:5000Se você estiver executando a aplicação em um IDE do AWS Cloud9, precisará substituir o comando `application.run()` no arquivo `application.py` pela seguinte linha:`application.run(host=os.getenv('IP', '0.0.0.0'),port=int(os.getenv('PORT', 8080)))`Você deve reverter essa alteração antes da implantação. | Desenvolvedor de Python | 

### Implante o aplicativo no Elastic Beanstalk
<a name="deploy-the-application-to-elastic-beanstalk"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Inicie o aplicativo do Elastic Beanstalk. | Para iniciar seu projeto como um aplicativo do Elastic Beanstalk, execute o seguinte comando no diretório raiz do seu aplicativo:`eb init -p python-3.6 comprehend_flask --region us-east-1`[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk.html)Execute o comando `eb init -i` para obter mais opções de configuração de implantação. | Arquiteto, desenvolvedor | 
| Configure o ambiente do Elastic Beanstalk. | Execute o comando a seguir do diretório raiz do aplicativo:`eb create comprehend-flask-env``comprehend-flask-env` é o nome do ambiente do Elastic Beanstalk e pode ser alterado de acordo com seus requisitos. O nome pode conter somente letras, números e hifens. | Arquiteto, desenvolvedor | 
| Autorize sua implantação para usar o Amazon Comprehend. | Embora seu aplicativo possa ser implantado com sucesso, você também deve fornecer à sua implantação acesso ao Amazon Comprehend. `ComprehendFullAccess` é uma política gerenciada pela AWS que fornece ao aplicativo implantado permissões para fazer chamadas de API para o Amazon Comprehend.Anexe a política `ComprehendFullAccess` a `aws-elasticbeanstalk-ec2-role` (essa função é criada automaticamente para as instâncias do Amazon Elastic Compute Cloud (Amazon EC2) da sua implantação) executando o seguinte comando:`aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/ComprehendFullAccess --role-name aws-elasticbeanstalk-ec2-role`O `aws-elasticbeanstalk-ec2-role` é criado quanda sua aplicação é implantada. É necessário concluir o processo de implantação antes que seja possível anexar a política do AWS Identity and Access Management (IAM). | Desenvolvedor, arquiteto de segurança | 
| Visite seu aplicativo implantado. | Depois que seu aplicativo for implantado com sucesso, você poderá visitá-lo executando o comando `eb open`.Você também pode executar o comando `eb status` para obter detalhes sobre sua implantação. O URL de implantação está sob `CNAME`. | Arquiteto, desenvolvedor | 

### (Opcional) Personalize o aplicativo de acordo com seu modelo de ML
<a name="optional-customize-the-application-to-your-ml-model"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Autorize o Elastic Beanstalk a acessar o novo modelo. | Certifique-se de que o Elastic Beanstalk tenha as permissões de acesso necessárias para seu novo modelo de endpoint. Por exemplo, se você usa um SageMaker endpoint da Amazon, sua implantação precisa ter permissão para invocar o endpoint. Para obter mais informações sobre isso, consulte [InvokeEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_runtime_InvokeEndpoint.html)a SageMaker documentação da Amazon. | Desenvolvedor, arquiteto de segurança | 
| Envie os dados do usuário para um novo modelo. | Para alterar o modelo de ML subjacente nesse aplicativo, você deve alterar os seguintes arquivos:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk.html) | Cientista de dados | 
| Atualize as visualizações do painel. | Normalmente, com a incorporação de um novo modelo de ML, as visualizações devem ser atualizadas para refletir os novos resultados. As alterações a seguir são feitas nos seguintes arquivos:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk.html) | Desenvolvedor web | 

### (Opcional) Implante o aplicativo atualizado
<a name="optional-deploy-the-updated-application"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Atualize o arquivo de requisitos do seu aplicativo. | Antes de enviar alterações para o Elastic Beanstalk, atualize o arquivo `requirements.txt` para refletir quaisquer novos módulos do Python executando o seguinte comando no diretório raiz do seu aplicativo:`pip freeze > requirements.txt` | Desenvolvedor de Python | 
| Configure o ambiente do Elastic Beanstalk. | Para garantir que as alterações do seu aplicativo sejam refletidas na implantação do Elastic Beanstalk, navegue até o diretório raiz do seu aplicativo e execute o seguinte comando:`eb deploy`Essa ação envia a versão mais recente do código do aplicativo para sua implantação existente do Elastic Beanstalk. | Administrador de sistemas, arquiteto | 

## Recursos relacionados
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk-resources"></a>
+ [Chame um endpoint SageMaker modelo da Amazon usando o Amazon API Gateway e o AWS Lambda](https://aws.amazon.com/blogs/machine-learning/call-an-amazon-sagemaker-model-endpoint-using-amazon-api-gateway-and-aws-lambda/)
+ [Implantar uma aplicação Flask no Elastic Beanstalk](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create-deploy-python-flask.html)
+ [Referência de comandos da EB CLI ](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb3-cmd-commands.html)
+ [Configurar seu ambiente de desenvolvimento Python](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/python-development-environment.html)

## Mais informações
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk-additional"></a>

**Lista de solução de problemas**

Veja a seguir seis erros comuns e suas soluções.

***Erro 1 * **

```
Unable to assume role "arn:aws:iam::xxxxxxxxxx:role/aws-elasticbeanstalk-ec2-role". Verify that the role exists and is configured correctly.
```

**Solução**: se esse erro ocorrer durante a execução de `eb create`, crie um aplicativo de amostra no console do Elastic Beanstalk para desenvolver o perfil de instância padrão. Para obter mais informações a respeito, consulte [Criação de um ambiente do Elastic Beanstalk](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.environments.html) na documentação do AWS Elastic Beanstalk.

***Erro 2***

```
Your WSGIPath refers to a file that does not exist.
```

**Solução: **esse erro ocorre nos logs de implantação porque o Elastic Beanstalk espera que o código do Flask seja nomeado como `application.py`. Se você escolher um nome diferente, execute `eb config` e edite o WSGIPath conforme mostrado no exemplo de código a seguir:

```
aws:elasticbeanstalk:container:python:
     NumProcesses: '1'
     NumThreads: '15'
     StaticFiles: /static/=static/
     WSGIPath: application.py
```

Certifique-se de substituir `application.py` pelo nome do seu arquivo.

Você também pode utilizar o Gunicorn e um Procfile. Para obter mais informações sobre essa abordagem, consulte [Configuração do servidor WSGI com um Procfile](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/python-configuration-procfile.html) na documentação do AWS Elastic Beanstalk.

***Erro 3***

```
Target WSGI script '/opt/python/current/app/application.py' does not contain WSGI application 'application'.
```

**Solução: **o Elastic Beanstalk espera que a variável que representa seu aplicativo Flask seja nomeada como `application`. Certifique-se de que o arquivo `application.py` use `application` como nome da variável:

```
application = Flask(__name__)
```

***Erro 4***

```
The EB CLI cannot find your SSH key file for keyname
```

**Solução:** use a EB CLI para especificar qual par de chaves usar ou para criar um par de chaves para as instâncias do EC2 da sua implantação. Para resolver o erro, execute `eb init -i` e uma das opções perguntará:

```
Do you want to set up SSH for your instances?
```

Responda com `Y` para criar um par de chaves ou especificar um par de chaves existente.

***Erro 5***

*Eu atualizei e reimplantei meu código, mas minha implantação não está refletindo minhas alterações.*

**Solução**: se você estiver usando um repositório Git com sua implantação, certifique-se de adicionar e confirmar suas alterações antes da reimplantação.

***Erro 6***

*Você está visualizando o aplicativo Flask a partir de um IDE do AWS Cloud9 e se depara com erros.*

**Solução: **para obter mais informações a respeito, consulte [Visualização de aplicativos em execução no IDE do AWS Cloud9](https://docs.aws.amazon.com/cloud9/latest/user-guide/app-preview.html) na documentação do AWS Cloud9.

 

 

**Usar o Amazon Comprehend para processamento de linguagem natural**

Ao optar pelo Amazon Comprehend, você pode detectar entidades personalizadas em documentos de texto individuais executando análises em tempo real ou tarefas em lotes assíncronos. O Amazon Comprehend também permite que você treine modelos personalizados de reconhecimento de entidades e de classificação de texto que podem ser usados em tempo real criando um endpoint.

Esse padrão usa tarefas em lotes assíncronos para detectar sentimentos e entidades a partir de um arquivo de entrada que contém vários documentos. O aplicativo de amostra fornecido por esse padrão foi projetado para que os usuários façam upload de um arquivo .csv contendo uma única coluna com um documento de texto por linha. O `comprehend_helper.py` arquivo nos [resultados do AI/ML modelo GitHub Visualize usando o Flask e o repositório AWS Elastic Beanstalk](https://github.com/aws-samples/aws-comprehend-elasticbeanstalk-for-flask) lê o arquivo de entrada e envia a entrada para o Amazon Comprehend para processamento.

*BatchDetectEntities*

O Amazon Comprehend inspeciona o texto de um lote de documentos em busca de entidades nomeadas e retorna a entidade detectada, a localização, o [tipo de entidade](https://docs.aws.amazon.com/comprehend/latest/dg/how-entities.html) e uma pontuação que indica o nível de confiança do Amazon Comprehend. No máximo 25 documentos podem ser enviados em uma chamada de API, sendo que cada documento deve ter até 5.000 bytes. Você pode filtrar os resultados para mostrar somente determinadas entidades com base no caso de uso. Por exemplo, você pode ignorar o tipo de entidade `‘quantity’` e definir uma pontuação limite para a entidade detectada (por exemplo, 0,75). Recomendamos que você explore os resultados para seu caso de uso específico antes de escolher um valor limite. Para obter mais informações sobre isso, consulte a [BatchDetectEntities](https://docs.aws.amazon.com/comprehend/latest/dg/API_BatchDetectEntities.html)documentação do Amazon Comprehend.

*BatchDetectSentiment*

O Amazon Comprehend inspeciona um lote de documentos recebidos e retorna o sentimento predominante de cada documento (`POSITIVE`, `NEUTRAL`, `MIXED` ou `NEGATIVE`). No máximo 25 documentos podem ser enviados em uma chamada de API, sendo que cada documento deve ter até 5.000 bytes. Analisar o sentimento é simples e você escolhe o sentimento com a pontuação mais alta para ser exibido nos resultados finais. Para obter mais informações sobre isso, consulte a [BatchDetectSentiment](https://docs.aws.amazon.com/comprehend/latest/dg/API_BatchDetectSentiment.html)documentação do Amazon Comprehend.

 

 

**Processamento de configuração do Flask**

Os servidores Flask usam uma série de [variáveis de configuração](https://flask.palletsprojects.com/en/1.1.x/config/) para controlar sua execução. Essas variáveis podem conter resultados de depuração, tokens de sessão ou outras configurações do aplicativo. Também é possível definir variáveis personalizadas que podem ser acessadas enquanto o aplicativo está em execução. Há várias abordagens para definir variáveis de configuração.

Nesse padrão, a configuração é definida em `config.py` e herdada em `application.py`.
+ 
**nota**  
`config.py` contém as variáveis de configuração definidas no startup do aplicativo. Nesse aplicativo, uma variável `DEBUG` é definida para instruir o aplicativo a executar o servidor no [modo de depuração](https://flask.palletsprojects.com/en/1.1.x/config/#DEBUG). : o modo de depuração não deve ser usado ao executar uma aplicação em um ambiente de produção. `UPLOAD_FOLDER` é uma variável personalizada definida para ser referenciada posteriormente na aplicação e informá-lo onde os dados do usuário enviados devem ser armazenados.
+ `application.py` inicia o aplicativo Flask e herda as configurações definidas em `config.py`. Isso é realizado pelo seguinte código:

```
application = Flask(__name__)
application.config.from_pyfile('config.py')
```