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) INTRODUCTION
1.1) PROTOTYPING AN LLM SERVICE TESTER
1.1.1) REQUISITOS
1.1.2) JAVASCRIPT
1.1.3) REACT NATIVE
1.1.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
A glimpse on the first quarter of the 21st century tech reveal some trends and concerns, e.g., artificial intelligence services and its consequences for mankind. The extent to which LLM services comply with laws has been the subject of debate in many jurisdictions around the globe. Following the referred concerns, the prototype herein approaches them by means of a distributed mobile application. These proof-of-concept routines are the result of a graduation discipline, namely ARA0089, taught at the Estácio university in São Paulo, Brasil.
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.