A plataforma HarpIA é composta por três módulos independentes e um repositório com recursos úteis em projetos de pesquisa envolvendo grandes modelos de linguagem (LLMs):
- HarpIA Survey: auxilia o pesquisador na avaliação de desempenho de LLMs utilizando o feedback de avaliadores humanos (avaliação centrada no usuário).
- HarpIA Lab: fornece ao pesquisador ferramentas para avaliação e análise do desempenho de LLMs por meio do cálculo de métricas populares da literatura especializada e por meio da execução de outros procedimentos de avaliação automatizados.
- HarpIA Chatbot: o desempenho de LLMs acoplados a sistemas de informação sociotécnicos é avaliado com base nos requisitos funcionais e não funcionais pré definidos para a funcionalidade executada pelo LLM.
- HarpIA Recursos: repositório dedicado à disseminação de casos de uso comuns de LLMs na literatura e à promoção do avanço das práticas de avaliação de LLMs.
HarpIA Survey
A arquitetura do módulo HarpIA Survey se baseia fundamentalmente em quatro componentes: um servidor Moodle, dois plugins que estendem as funcionalidades nativas do Moodle e um gateway customizado. O primeiro deles trata-se de um servidor Moodle 4.5. O Moodle é uma plataforma de eLearning utilizada por milhões de pessoas ao redor do mundo. No HarpIA Survey, suas funcionalidades nativas são concatenadas para compor os casos de uso suportados pelo HarpIA Survey (p. ex., funcionalidade de autorização de acesso do avaliador humano ao módulo). O servidor Moodle é acompanhado de um banco de dados (MySQL 8) e um servidor web (Apache 2.4), ambos amplamente empregados na indústria e na academia. Desta forma, quando recrutados pelo pesquisador para participar da avaliação, os avaliadores humanos interagem com o HarpIA Survey por meio de uma interface Web baseada nas funcionalidades nativas do Moodle.
Os dois plugins que estendem as funcionalidades do Moodle têm papel de destaque na comunicação do módulo HarpIA Survey com o LLM que está sendo avaliado. O plugin HarpIA Interaction cria um tipo de campo que pode ser usado em atividades do tipo “Base de Dados”. Campos do tipo “HarpIA Interaction” permitem o registro casado de prompts submetidos ao LLM e suas respostas. Por sua vez, o plugin HarpIA Ajax coordena a submissão de prompts e o recebimento das respostas junto ao gateway customizado. A função do LLM Gateway é centralizar e abstrair chamadas a LLMs. Alguns detalhes adicionais a respeito desses componentes:
- Plugin HarpIA Interaction: Durante a especificação da página web com a qual os participantes vão interagir para avaliar um LLM, o pesquisador insere um campo do tipo “HarpIA Interaction” na página. A configuração deste campo tem três parâmetros importantes, como ilustrado na figura abaixo: (a) o tipo de modelo com o qual o HarpIA Survey vai interagir — p. ex., Llama 3.1 8B ou GPT 3.5 Turbo, (b) o prompt de sistema que deve ser configurado no LLM, e (c) o tipo de experimento que o pesquisador quer conduzir.
- Plugin HarpIA Ajax: esse componente implementa uma interação AJAX entre páginas do Moodle e o LLM Gateway. Basicamente, sua função garantir a formatação adequada do request enviado ao gateway, bem como a extração adequada dos dados do response que serão apresentados ao avaliador humano. Ambos request e response seguem a especificação de uma API criada pelo projeto HarpIA.
- LLM Gateway: Esse componente implementa, entre outras funções, a tradução de requests no padrão do projeto HarpIA para o formato esperado por cada LLM, e o serviço oposto para as responses encaminhadas pelo LLM ao HarpIA Survey. A API criada pelo projeto HarpIA se baseia em serviços oferecidos pelo ollama e busca ser genérica o suficiente para permitir a comunicação com qualquer LLM. Para configurar o LLM Gateway para operar com um novo tipo de modelo, basta o pesquisador atualizar um arquivo de configuração com dados para ativação do modelo, como nome e tipo do modelo, o tipo de adaptador que deve ser usado para acessar o model (p. ex., modelos que expõem a API dos modelos Llama devem informar a classe “OllamaAnswerProvider” como adaptador), entre outros.
HarpIA Lab
A arquitetura do módulo HarpIA Lab conta com três componentes principais: o HarpIA Lab Frontend, que oferece uma interface gráfica web para facilitar a interação com o módulo; (b) o Harpia Lab Server, que permite a disponibilização do módulo como um serviço que pode ser invocado pela interface gráfica ou via linha de comando (e neste caso, possibilitando o uso de scripts para customizar o processo de avaliação); e a HarpIA Lab Library, onde são organizados os componentes que implementam métricas ou procedimentos para avaliação de LLMs.
Os componentes Server e Library do HarpIA Lab se baseiam em tecnologias do ecossistema Python que são amplamente usadas na indústria e na academia. Por exemplo, as métricas implementadas no componente HarpIA Lab Library são, quando possível, wrappings de implementações oferecidas por pacotes como NLTK, PyTorch, Gensim e Evaluate (da Hugging Face). Isso reduz o esforço necessário para realização de testes de verificação de novas contribuições. Já o Frontend do HarpIA Lab foi construído com base em frameworks do ecossistema Javascript (ReactJS e NextJS).
Juntos, os três componentes formam um pipeline que aceita arquivos em um formato que permite especificar uma tarefa de avaliação de LLM com muita precisão. Esse arquivo segue o padrão JSON e contém, em sua forma mais simples, duas chaves principais: “instances” e “metrics”. A primeira especifica uma lista de tuplas (ID, prompt, lista de respostas esperadas, resposta obtida) que foram coletadas pelo usuário durante sua investigação do comportamento do LLM sendo avaliado. A segunda chave especifica uma lista de tuplas (nome da métrica, parâmetros exigidos para execução da métrica). Uma vez recebido, o pipeline analisa o arquivo JSON de entrada e cada uma das métricas especificadas sob a chave “metrics” é aplicada a cada instância especificada sob a chave “instances”. Ao final do processamento, o pipeline produz dois arquivos, também em formato JSON: um deles contém os resultados das métricas escolhidas pelo usuário em nível de instância e o outro arquivo contém resultados semelhantes, mas em nível agregado.
HarpIA Twin
… em breve!
Harpia Resources
… em breve!