A GenAI service testing mobile application based on React Native.
O controle de versões deste projeto é realizado com o sistema Git, que utiliza uma estratégia distribuída de repositórios. O primeiro repositório público a receber as entregas fica no serviço GitHub, precisamente em [2].
O IDE a implementar o arcabouço React Native usado neste projeto é público, e utiliza o serviço Expo Snack. Enquanto é considerado um protótipo de sala de aula, os códigos-fontes podem ser encontrados em [1].
1) INTRODUçÃO
2) REACT NATIVE
3) REQUISITOS E PRINCIPAIS COMPONENTES
3.1) CACHING E PERSISTÊNCIA
3.1.1) LOCALMENTE
3.1.2) REMOTAMENTE
4) ESTRUTURA DO PROJETO LLM TESTER
4.1) O DIRETÓRIO /ASSETS/
4.2) O DIRETÓRIO /COMPONENTS/
4.2.1) O FICHEIRO /COMPONENTS/STYLES.JS
4.3) O DIRETÓRIO /.PERSISTENCE/
4.3.1) O FICHEIRO /.PERSISTENCE/LOG.CSV
5) OBSERVAÇÕES
REFERÊNCIAS
Vislumbres do primeiro quarto do século XXI revelam claras tendências tecnológicas, e novas preocupações acompanham as referidas tendências. O LLM Tester é uma aplicação para computadores móveis e portáteis capaz de testar serviços de inteligência artificial gerativa ou generativa, i.e., serviços LLM.
A disciplina "ARA0089 Programação para dispositivos móveis em Android" é ministrada em formato sala de aula invertida, conforme determina a sua ementa.
As turmas da disciplina foram divididas em equipes de cinco alunos no máximo, lideranças foram definidas, e a partir de então, as referidas equipes passaram a trabalhar no desenvolvimento de uma aplicação que atendesse aos requisitos funcionais e não-funcionais mínimos do enunciado.
Uma vez que a ementa determina a utilização do arcabouço React Native, a principal linguagem de programação utilizada é a JavaScript, juntamente à extensão JavaScript Syntax eXtension (JSX), que agrega a sintaxe XML à referida linguagem de programação.
O professor utiliza o laboratório para orientar as equipes, e para produzir interações entre elas. Assim, algumas aulas ocorrem como o chamado "coding dojo", um modelo de programação coletiva no qual o código é projetado para que todos os presentes possam auxiliar em sua depuração e/ou em seu aprimoramento.
A engenharia de software do projeto lança mão do notório arcabouço Scrum, que por sua vez compõe o conjunto de sistemáticas chamado "desenvolvimento ágil de software".
A aplicação está disponível para Android e iOS.
Arcabouço mantido pela organização chamada Meta, que permite a criação de aplicativos para Android e iOS a partir de uma base única, escrita predominantemente em JavaScript e JSX.
O projeto utiliza uma implementação do React Native chamada Snack.
A presente seção trata das dependências listadas pelo ficheiro package.json.
Utiliza-se o IDE Expo Snack para prototipagem. Ele permite que o resultado do código seja automaticamente mostrado no painel à direita, que funciona como se fosse a tela de um dispositivo móvel. É possível emular equipamentos com Android e com iOS. Caso seja desejável visualizar telas em smartphones reais e/ou outros dispositivos, utiliza-se o código QR.
Não se esqueça de salvar as suas edições caso escolha usar o Expo Snack. Elas nem sempre são salvas automaticamente.
O URL de um Snack pode ser compartilhado para que outras pessoas vejam o projeto facilmente. Note que todos os projetos criados no Snack são acessíveis publicamente através do URL do projeto, e.g., o Projeto RH em Ação [1]. Isso é bem útil para mostrar o código a alguém, e facilita bastante a vida do professor.
O próprio Snack tem o seu código aberto, disponível em seu repositório do GitHub.
Caso queira testar ou mostrar o aplicativo em funcionamento num dispositivo móvel de verdade, use o QR code disponível em "My Device", que fica sobre a telinha do dispositivo virtual.
Caso você já tenha um editor de texto ou IDE de sua preferência, faça o download do seu projeto, e use o expo cli).
Adicionalmente, o Expo oferece um fórum para dúvidas gerais e específicas.
O protótipo para o arcabouço React Native se encontra adaptado às restrições do IDE web chamado Expo Snack.
A biblioteca react-native-fs figura como uma opção para a criação de ficheiros, entretanto se mostrou problemática no IDE Snack.
Dados da aplicação são salvos localmente e remotamente. Eles são organizados em três tipos de tabelas: um tipo para tabelas de contas, um tipo para tabelas de consultas, e um tipo para tabelas de registros ou logs.
Tabelas de registros ou logs servem para auxíliar a própria atividade do desenvolvimento da aplicação.
O armazenamento local de dados depende da plataforma.
Caso a plataforma seja Android ou iOS, o armazenamento local pode utilizar os componentes AsyncStorage e Cache, que amenizam problemas do usuário nas situações em que as consultas a bancos de dados remotos forem impossíveis. Isso significa que o Cache melhora a experiência do usuário. O referido componente copia para o sistema operacional local alguns dados que normalmente exigiriam consultas a serviços remotos.
Dada a urgência de uso, a implementação padrão irá provisoriamente utilizar planilhas online como bancos de dados.
Diretórios e ficheiros com códigos-fontes. O ficheiro principal é o App.js.
Abriga conteúdo visual e audiovisual.
Abriga os ficheiros locais de biblioteca, chamados de componentes.
Os estilos ficam concentrados no ficheiro /components/Styles.js.
Abriga dados, e.g., etc.
Persiste registros.
Quanto à viabilidade da utilização de planilhas online como bancos de dados para situações urgentes.
[1] BARBADO JUNIOR, Marcio et al. LLM Tester prototype. 2024. 650 Industries. Disponível em: https://snack.expo.dev/@marcio.barbado/llm-tester-prototype, acessado em 30 de Setembro de 2024.
[2] BARBADO JUNIOR, Marcio et al. LLM Tester. 2024. GitHub. Disponível em: https://github.com/odabrab/llm-tester, acessado em 30 de Setembro de 2024.