{"id":1793,"date":"2025-03-01T16:06:12","date_gmt":"2025-03-01T18:06:12","guid":{"rendered":"https:\/\/sites.usp.br\/keml\/?page_id=1793"},"modified":"2025-05-13T21:51:09","modified_gmt":"2025-05-13T23:51:09","slug":"harpia-arquitetura","status":"publish","type":"page","link":"https:\/\/sites.usp.br\/keml\/harpia-arquitetura\/","title":{"rendered":"Arquitetura"},"content":{"rendered":"<p>A plataforma HarpIA \u00e9 composta por tr\u00eas m\u00f3dulos independentes e um reposit\u00f3rio com recursos \u00fateis em projetos de pesquisa envolvendo grandes modelos de linguagem (LLMs):<\/p>\n<p><a href=\"https:\/\/sites.usp.br\/keml\/wp-content\/uploads\/sites\/1460\/2025\/04\/arquitetura-harpia-geral.svg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2114\" src=\"https:\/\/sites.usp.br\/keml\/wp-content\/uploads\/sites\/1460\/2025\/05\/Arquitetura-Geral-SMP.svg\" alt=\"\" width=\"644\" height=\"307\" \/><\/a><\/p>\n<ul>\n<li><strong>HarpIA Survey<\/strong>: auxilia o pesquisador na avalia\u00e7\u00e3o de desempenho de LLMs utilizando o feedback de avaliadores humanos (avalia\u00e7\u00e3o centrada no usu\u00e1rio).<\/li>\n<li><strong>HarpIA Lab<\/strong>: fornece ao pesquisador ferramentas para avalia\u00e7\u00e3o e an\u00e1lise do desempenho de LLMs por meio do c\u00e1lculo de m\u00e9tricas populares da literatura especializada e por meio da execu\u00e7\u00e3o de outros procedimentos de avalia\u00e7\u00e3o automatizados.<\/li>\n<li><strong>HarpIA Chatbot<\/strong>: o desempenho de LLMs acoplados a sistemas de informa\u00e7\u00e3o sociot\u00e9cnicos \u00e9 avaliado com base nos requisitos funcionais e n\u00e3o funcionais pr\u00e9 definidos para a funcionalidade executada pelo LLM.<\/li>\n<li><strong>HarpIA Recursos<\/strong>: reposit\u00f3rio dedicado \u00e0 dissemina\u00e7\u00e3o de casos de uso comuns de LLMs na literatura e \u00e0 promo\u00e7\u00e3o do avan\u00e7o das pr\u00e1ticas de avalia\u00e7\u00e3o de LLMs.<\/li>\n<\/ul>\n<hr \/>\n<p><strong>HarpIA Survey<\/strong><\/p>\n<p>A arquitetura do m\u00f3dulo 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 \u00e9 uma plataforma de eLearning utilizada por milh\u00f5es de pessoas ao redor do mundo. No HarpIA Survey, suas funcionalidades nativas s\u00e3o concatenadas para compor os casos de uso suportados pelo HarpIA Survey (p. ex., funcionalidade de autoriza\u00e7\u00e3o de acesso do avaliador humano ao m\u00f3dulo). O servidor Moodle \u00e9 acompanhado de um banco de dados (MySQL 8) e um servidor web (Apache 2.4), ambos amplamente empregados na ind\u00fastria e na academia. Desta forma, quando recrutados pelo pesquisador para participar da avalia\u00e7\u00e3o, os avaliadores humanos interagem com o HarpIA Survey por meio de uma interface Web baseada nas funcionalidades nativas do Moodle.<\/p>\n<p><a href=\"https:\/\/sites.usp.br\/keml\/wp-content\/uploads\/sites\/1460\/2025\/04\/arquitetura-harpia-survey.svg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2116\" src=\"https:\/\/sites.usp.br\/keml\/wp-content\/uploads\/sites\/1460\/2025\/04\/arquitetura-harpia-survey.svg\" alt=\"\" width=\"644\" height=\"289\" \/><\/a><\/p>\n<p>Os dois plugins que estendem as funcionalidades do Moodle t\u00eam papel de destaque na comunica\u00e7\u00e3o do m\u00f3dulo HarpIA Survey com o LLM que est\u00e1 sendo avaliado. O plugin HarpIA Interaction cria um tipo de campo que pode ser usado em atividades do tipo \u201cBase de Dados\u201d. Campos do tipo \u201cHarpIA Interaction\u201d permitem o registro casado de prompts submetidos ao LLM e suas respostas. Por sua vez, o plugin HarpIA Ajax coordena a submiss\u00e3o de prompts e o recebimento das respostas junto ao gateway customizado. A fun\u00e7\u00e3o do LLM Gateway \u00e9 centralizar e abstrair chamadas a LLMs. Alguns detalhes adicionais a respeito desses componentes:<\/p>\n<ul>\n<li><strong>Plugin HarpIA Interaction<\/strong>: Durante a especifica\u00e7\u00e3o da p\u00e1gina web com a qual os participantes v\u00e3o interagir para avaliar um LLM, o pesquisador insere um campo do tipo \u201cHarpIA Interaction\u201d na p\u00e1gina. A configura\u00e7\u00e3o deste campo tem tr\u00eas par\u00e2metros importantes, como ilustrado na figura abaixo: (a) o tipo de modelo com o qual o HarpIA Survey vai interagir &#8212; 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.<\/li>\n<\/ul>\n<p><a href=\"https:\/\/sites.usp.br\/keml\/wp-content\/uploads\/sites\/1460\/2025\/05\/harpia-survey-screenshot-ptbr-1.svg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2116\" src=\"https:\/\/sites.usp.br\/keml\/wp-content\/uploads\/sites\/1460\/2025\/05\/harpia-survey-screenshot-ptbr-1.svg\" alt=\"\" width=\"623\" height=\"525\" \/><\/a><\/p>\n<ul>\n<li><strong>Plugin HarpIA Ajax<\/strong>: esse componente implementa uma intera\u00e7\u00e3o AJAX entre p\u00e1ginas do Moodle e o LLM Gateway. Basicamente, sua fun\u00e7\u00e3o garantir a formata\u00e7\u00e3o adequada do <em>request<\/em> enviado ao gateway, bem como a extra\u00e7\u00e3o adequada dos dados do <em>response<\/em> que ser\u00e3o apresentados ao avaliador humano. Ambos <em>request<\/em> e <em>response<\/em> seguem a especifica\u00e7\u00e3o de uma API criada pelo projeto HarpIA.<\/li>\n<\/ul>\n<ul>\n<li><strong>LLM Gateway: <\/strong>Esse componente implementa, entre outras fun\u00e7\u00f5es, a tradu\u00e7\u00e3o de <em>requests<\/em> no padr\u00e3o do projeto HarpIA para o formato esperado por cada LLM, e o servi\u00e7o oposto para as <em>responses<\/em> encaminhadas pelo LLM ao HarpIA Survey. A API criada pelo projeto HarpIA se baseia em servi\u00e7os oferecidos pelo ollama e busca ser gen\u00e9rica o suficiente para permitir a comunica\u00e7\u00e3o com qualquer LLM. Para configurar o LLM Gateway para operar com um novo tipo de modelo, basta o pesquisador atualizar um arquivo de configura\u00e7\u00e3o com dados para ativa\u00e7\u00e3o 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\u00f5em a API dos modelos Llama devem informar a classe \u201cOllamaAnswerProvider\u201d como adaptador), entre outros.<\/li>\n<\/ul>\n<hr \/>\n<p><strong>HarpIA Lab<\/strong><\/p>\n<p>A arquitetura do m\u00f3dulo HarpIA Lab conta com tr\u00eas componentes principais: o HarpIA Lab Frontend, que oferece uma interface gr\u00e1fica web para facilitar a intera\u00e7\u00e3o com o m\u00f3dulo; (b) o Harpia Lab Server, que permite a disponibiliza\u00e7\u00e3o do m\u00f3dulo como um servi\u00e7o que pode ser invocado pela interface gr\u00e1fica ou via linha de comando (e neste caso, possibilitando o uso de scripts para customizar o processo de avalia\u00e7\u00e3o); e a HarpIA Lab Library, onde s\u00e3o organizados os componentes que implementam m\u00e9tricas ou procedimentos para avalia\u00e7\u00e3o de LLMs.<\/p>\n<p><a href=\"https:\/\/sites.usp.br\/keml\/wp-content\/uploads\/sites\/1460\/2025\/04\/arquitetura-harpia-lab.svg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2115\" src=\"https:\/\/sites.usp.br\/keml\/wp-content\/uploads\/sites\/1460\/2025\/04\/arquitetura-harpia-lab.svg\" alt=\"\" width=\"644\" height=\"245\" \/><\/a><\/p>\n<p>Os componentes Server e Library do HarpIA Lab se baseiam em tecnologias do ecossistema Python que s\u00e3o amplamente usadas na ind\u00fastria e na academia. Por exemplo, as m\u00e9tricas implementadas no componente HarpIA Lab Library s\u00e3o, quando poss\u00edvel, wrappings de implementa\u00e7\u00f5es oferecidas por pacotes como NLTK, PyTorch, Gensim e Evaluate (da Hugging Face). Isso reduz o esfor\u00e7o necess\u00e1rio para realiza\u00e7\u00e3o de testes de verifica\u00e7\u00e3o de novas contribui\u00e7\u00f5es. J\u00e1 o Frontend do HarpIA Lab foi constru\u00eddo com base em frameworks do ecossistema Javascript (ReactJS e NextJS).<\/p>\n<p>Juntos, os tr\u00eas componentes formam um pipeline que aceita arquivos em um formato que permite especificar uma tarefa de avalia\u00e7\u00e3o de LLM com muita precis\u00e3o. Esse arquivo segue o padr\u00e3o JSON e cont\u00e9m, em sua forma mais simples, duas chaves principais: \u201cinstances\u201d e \u201cmetrics\u201d. A primeira especifica uma lista de tuplas (ID, prompt, lista de respostas esperadas, resposta obtida) que foram coletadas pelo usu\u00e1rio durante sua investiga\u00e7\u00e3o do comportamento do LLM sendo avaliado. A segunda chave especifica uma lista de tuplas (nome da m\u00e9trica, par\u00e2metros exigidos para execu\u00e7\u00e3o da m\u00e9trica). Uma vez recebido, o pipeline analisa o arquivo JSON de entrada e cada uma das m\u00e9tricas especificadas sob a chave \u201cmetrics\u201d \u00e9 aplicada a cada inst\u00e2ncia especificada sob a chave \u201cinstances\u201d. Ao final do processamento, o pipeline produz dois arquivos, tamb\u00e9m em formato JSON: um deles cont\u00e9m os resultados das m\u00e9tricas escolhidas pelo usu\u00e1rio em n\u00edvel de inst\u00e2ncia e o outro arquivo cont\u00e9m resultados semelhantes, mas em n\u00edvel agregado.<\/p>\n<hr \/>\n<p><strong>HarpIA Twin<\/strong><\/p>\n<p>&#8230; em breve!<\/p>\n<hr \/>\n<p><strong>Harpia Resources<\/strong><\/p>\n<p>&#8230; em breve!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A plataforma HarpIA \u00e9 composta por tr\u00eas m\u00f3dulos independentes e um reposit\u00f3rio com recursos \u00fateis em projetos de pesquisa envolvendo grandes modelos de linguagem (LLMs): HarpIA Survey: auxilia o pesquisador na avalia\u00e7\u00e3o de desempenho de LLMs utilizando o feedback de avaliadores humanos (avalia\u00e7\u00e3o centrada no usu\u00e1rio). HarpIA Lab: fornece ao pesquisador ferramentas para avalia\u00e7\u00e3o e<a href=\"https:\/\/sites.usp.br\/keml\/harpia-arquitetura\/\">[&#8230;]<\/a><\/p>\n","protected":false},"author":24022,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"inline_featured_image":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":"","_links_to":"","_links_to_target":""},"class_list":["post-1793","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/sites.usp.br\/keml\/wp-json\/wp\/v2\/pages\/1793","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sites.usp.br\/keml\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/sites.usp.br\/keml\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/sites.usp.br\/keml\/wp-json\/wp\/v2\/users\/24022"}],"replies":[{"embeddable":true,"href":"https:\/\/sites.usp.br\/keml\/wp-json\/wp\/v2\/comments?post=1793"}],"version-history":[{"count":5,"href":"https:\/\/sites.usp.br\/keml\/wp-json\/wp\/v2\/pages\/1793\/revisions"}],"predecessor-version":[{"id":2300,"href":"https:\/\/sites.usp.br\/keml\/wp-json\/wp\/v2\/pages\/1793\/revisions\/2300"}],"wp:attachment":[{"href":"https:\/\/sites.usp.br\/keml\/wp-json\/wp\/v2\/media?parent=1793"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}