crivano / apoia

https://apoia.vercel.app
GNU Affero General Public License v3.0
2 stars 1 forks source link

alt text

ApoIA

ApoIA é uma ferramenta de inteligência artificial generativa originalmente desenvolvida para auxiliar na triagem de acervos. Ela analisa documentos de processos e gera resumos das principais peças e gera um relatório sobre acervo.

A ApoIA também pode ser utilizada para realizar uma Síntese do Processo on-line, a partir da informação do número do processo.

Outros recursos disponíveis são a geração de ementas conforme Resolução 156/2024 do CNJ e a revisão de textos por inteligência artificial.

Clique aqui para ver uma apresentação da ApoIA.

Funcionalidades

Integração com Eproc: Login, consulta processual e obtenção de peças via MNI.

Integração com IA: Repositório de prompts, envio e recebimento, limites de acesso.

Interface com o Usuário: Informação do número do processo, apresentação dos resultados em tempo real, processamento de relatórios.

Arquitetura

Configuração

A ApoIA requer que diversas variáveis de ambiente sejam informadas. No ambiente de desenvolvimento, isso pode ser feito criando um arquivo na raiz do projeto chamado .env.local.

Primeiro, indique quais são os sistemas aos quais deseja conectar a ApoIA, depois, para cada sistema, informe o endereço do WSDL e do Endpoint do MNI:

Observação: caso haja a necessidade de utilizar senhas criptografadas ao enviar as requisições, devemos adicionar a variavél de anbiente <SYSTEM>_HASH_PASSWORD

SYSTEMS=TRF2,JFRJ,JFES
TRF2_MNI_WSDL_URL="https://epr.trf2.jus.br/eproc/wsdl.php?srv=intercomunicacao2.2"
TRF2_MNI_ENDPOINT_URL="https://epr.trf2.jus.br/eproc/ws/controlador_ws.php?srv=intercomunicacao2.2"
JFRJ_MNI_WSDL_URL="https://epr.jfrj.jus.br/eproc/wsdl.php?srv=intercomunicacao2.2"
JFRJ_MNI_ENDPOINT_URL="https://epr.jfrj.jus.br/eproc/ws/controlador_ws.php?srv=intercomunicacao2.2"
JFES_MNI_WSDL_URL="https://epr.jfes.jus.br/eproc/wsdl.php?srv=intercomunicacao2.2"
JFES_MNI_ENDPOINT_URL="https://epr.jfes.jus.br/eproc/ws/controlador_ws.php?srv=intercomunicacao2.2"
JFES_HAS_PASSWORD=true

Informe o identificador do modelo de inteligência artificial que deseja utilizar. Outros possíveis seriam: gpt-4o-mini-2024-07-18, claude-3-5-sonnet-20241022 ou qualquer outro suportado pelo framework Vercel AI.

MODEL=gpt-4o-2024-08-06

Forneça a chave da API. Informe a chave de API relativa ao modelo selecionado. As outras não serão utilizadas.

OPENAI_API_KEY=CHAVE_DE_API_OPENAI
ANTHROPIC_API_KEY=CHAVE_DE_API_ANTHROPIC (opcional)
GOOGLE_API_KEY=CHAVE_DE_API_GOOGLE (opcional)

Sugerimos que a ApoIA não tenha acesso a documentos sigilosos. Isso pode ser obtido aplicando a propriedade abaixo:

CONFIDENTIALITY_LEVEL_MAX=0

A Apoia utiliza o framework de autenticação NextAuth, portanto é necessário configurar as propriedades abaixo:

NEXTAUTH_URL_INTERNAL=http://localhost:8081
NEXTAUTH_URL=http://localhost:8081
NEXTAUTH_SECRET=SUBSTITUIR_POR_UM_UUID_ALEATORIO

A API da ApoIA funciona com um token JWE, portanto, é necessário configurar as seguintes propriedades:

JWT_SECRET=SUBSTITUIR_POR_UM_UUID_ALEATORIO
JWT_ISSUER=apoia.trf2.jus.br
JWT_AUDIENCE=apoia.trf2.jus.br

Uma encriptação a mais é realizada na senha a partir da chave abaixo:

PWD_SECRET=SUBSTITUIR_POR_UM_UUID_ALEATORIO

Para que a ApoIA possa gerar relatórios de triagem e para que possa fazer o cache dos textos gerados por IA, é necessário conectá-la ao MySQL ou ao PostgreSQL. Se nenhuma destas funcionalidades for importante, basta omitir os parâmetros abaixo que a ApoIA, ainda que limitada, funcionará.

Para conectar ao MySQL, utilize propriedades como as descritas abaixo:

DB_CLIENT=mysql2
DB_HOST=localhost
DB_PORT=3306
DB_USER=root
DB_PASSWORD=SUBSTITUIR_PELA_SENHA_DO_MYSQL
DB_DATABASE=apoia
DB_POOL=2
DB_SSL=

Para conectar ao PostgreSQL, utilize siga o padrão abaixo:

DB_CLIENT=pg
DB_HOST=localhost
DB_PORT=5432
DB_USER=postgres
DB_PASSWORD=SUBSTITUIR_PELA_SENHA_DO_POSTGRESQL
DB_DATABASE=apoia
DB_POOL=2
DB_SSL=

Se desejar que a ApoIA, ao clicar sobre o número de um processo, abra o sistema processual, use a configuração abaixo:

NAVIGATE_TO_PROCESS_URL=https://balcaojush.jfrj.jus.br/balcaojus/#/processo/{numero}?avisos=0

Inicialização do MySQL

Para criar o esquema apoia, execute os comandos encontrados no arquivo migration-001.sql

Executando a ApoIA em Modo de Desenvolvimento

  1. Faça o download e instale o Node.js ou, se já tiver o Node.js instalado, atualize o Node.js e o NPM para as últimas versões

  2. Faça o donwload e instale o VSCode

  3. Clone o repositório da ApoIA

$ cd seu-diretorio-de-repositórios
$ git clone https://github.com/trf2-jus-br/apoia
  1. Abra o VSCode no diretório seu-diretorio-de-repositórios/apoia (utilize o menu File/Open Folder)

  2. Crie o arquivo de configuração conforme explicado acima

  3. Abra o terminal no VSCode (utilize o menu Terminal/New Terminal) depois instale as dependências com o comando abaixo:

$ npm install
  1. Execute a aplicação em modo de desenvolvimento com o comando no terminal:
$ npm run dev

Fazendo o Deploy em Produção com Docker ou Vercel

  1. Instale o Docker na sua máquina

  2. Edite o arquivo docker-compose.yaml e ajuste o valor das configurações em services/apoiaserver/environment

  3. Execute a aplicação e depois aponte o navegador para http://localhost:8080

$ docker-compose up
  1. Se desejar apenas criar o container do docker, isso pode ser realizado assim:
$ docker build -t apoiaserver .

Caso deseje fazer deploy na nuvem, a ApoIA funciona perfeitamente no Vercel, basta indicar o repositório do GitHub e inserir as configurações.

Testando os Prompts

A ApoIA utiliza o framework PromptFoo para realizar testes em seus prompts.

Para executar o teste de um prompt específico, vá para o diretório onde se encontra o arquivo prompt.txt e execute o comando:

npx promptfoo@latest eval --env-file ../../.env.local --no-table --repeat 1 -c test.yaml

Para abrir a visualização dos resultados no browser, digite:

npx promptfoo@latest view