A GenAI service testing mobile application based on React Native.
Parts of this project result from efforts of students and their teacher, on a Brazilian university named Estácio.
In order to have a quick peek on it working, check [1]. That is where the classroom prototype is kept, a public web IDE implementing the React Native framework. It's known as the Expo Snack web IDE.
Version control is done with Git, which enforces a distributed strategy for source code repositories. The first public repository to receive this project's commits is avaialable on the GitHub service, precisely on [2].
1) INTRODUÇÃO
1.1) A DISCIPLINA ARA0089
1.1.1) CODING DOJO
1.2) O PROTÓTIPO DE UM TESTADOR DE SERVIÇO LLM
1.2.1) REQUISITOS
1.2.2) JAVASCRIPT
1.2.3) REACT NATIVE
1.2.3.1) DEPENDÊNCIAS
2) ESTRUTURA DO PROJETO LLM TESTER
2.1) O DIRETÓRIO /ASSETS/
2.2) O DIRETÓRIO /COMPONENTS/
2.2.1) O FICHEIRO /COMPONENTS/STYLES.JS
2.3) O DIRETÓRIO /.PERSISTENCE/
2.3.1) O FICHEIRO /.PERSISTENCE/LOG.CSV
2.4) O FICHEIRO APP.JS
2.5) O FICHEIRO PACKAGE.JSON
3) ARQUITETURA
3.1) PRINCIPAIS COMPONENTES
3.2) CACHING E PERSISTÊNCIA
3.2.1) LOCALMENTE
3.2.2) REMOTAMENTE
4) LLM
4.1) GEMINI
4.2) GPT
4.3) LLAMA
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. A versão do O LLM Tester aqui presente constitui uma prova de conceito (PoC) referente à capacidade de aplicações para computadores móveis e portáteis testarem 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".
As turmas estão a trabalhar em protótipos aplicações móveis capazes de testar serviços LLM. Todas as aplicações são construídas com a linguagem de programação JavaScript e o arcabouço React Native, o que permite disponibilizar as aplicações para Android e iOS.
A presente seção trata das tecnologias e técnicas inicialmente selecionadas para a prototipagem.
A presente seção mostra os requisitos da aplicação.
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.
Diretórios e ficheiros com códigos-fontes. O ficheiro principal é o App.js. Caso o projeto esteja no Snack, o ficheiro package.json possui particular importância.
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.
Ficheiro de fundamental importância no IDE Snack. Realiza o gerenciamento de bibliotecas e suas versões.
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 pode provisoriamente utilizar planilhas online como bancos de dados. Os estudantes entretanto têm demonstrado alguma preferência pelo serviço Firebase [6].
Uma vez autenticada a conta Google, deve-se verificar [3] e [4]. Cotas de utilização podem ser configuradas em [5].
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-poc, 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.
[3] Google. Google AI Studio. 2024. Disponível em: https://makersuite.google.com/, acessado em 20 de Outubro de 2024.
[4] Google. Get API key. 2024. Disponível em: https://aistudio.google.com/apikey, acessado em 23 de Outubro de 2024.
[5] Google. Quotas & system limits. 2024. Disponível em: https://console.cloud.google.com/iam-admin/quotas, acessado em 24 de Outubro de 2024.
[6] Google. Firebase. 2024. Disponível em: https://firebase.google.com/, acessado em 24 de Outubro de 2024.