Skip to content

[scielo-tools-18] Adicionar app ia#25

Open
gitnnolabs wants to merge 1 commit into
scieloorg:mainfrom
gitnnolabs:feature/scielo-tools-18
Open

[scielo-tools-18] Adicionar app ia#25
gitnnolabs wants to merge 1 commit into
scieloorg:mainfrom
gitnnolabs:feature/scielo-tools-18

Conversation

@gitnnolabs

@gitnnolabs gitnnolabs commented Jul 2, 2026

Copy link
Copy Markdown
Collaborator

O que esse PR faz?

Adiciona o app Django ia de forma autônoma e reusável, com modelos de configuração de provedores (Gemini, Ollama, HuggingFace), serviço de orquestração LLM, tarefas de download, exceções de domínio, utilitários e integração com Wagtail Admin. Mantém o grupo IA Models no menu de Settings do Wagtail para preservar o comportamento padrão de navegação do admin. Também expõe IA Models no menu principal, sem ocultar entradas padrão já existentes no admin. Remove o filtro global de menu em core/wagtail_hooks.py que mantinha apenas sps_package_validation, restaurando a navegação padrão completa do Wagtail.

Onde a revisão poderia começar?

ia/models.py, ia/wagtail_hooks.py, ia/service.py, config/settings/base.py, config/urls.py.

Como este poderia ser testado manualmente?

  1. Instalar dependências: pip install -r requirements/local.txt.
  2. Executar migrações: python manage.py migrate.
  3. Validar projeto: python manage.py check.
  4. Acessar /admin/ e confirmar o grupo IA Models em Settings com snippets HuggingFace, Ollama e Gemini.
  5. Baixar modelo Hugging Face:
    1. Abrir Settings > IA Models > HuggingFace.
    2. Criar registro com:
      • Model name: hugging-quants/Llama-3.2-3B-Instruct-Q4_K_M-GGUF
      • Model file: llama-3.2-3b-instruct-q4_k_m.gguf
      • HuggingFace token: token pessoal de leitura
    3. Salvar e confirmar início do download (status Downloading no admin).
    4. Aguardar status Downloaded.
  6. Testar integração Ollama:
    1. Garantir serviço local do Ollama ativo.
    2. Abrir Settings > IA Models > Ollama.
    3. Informar URL http://localhost:11434.
    4. Clicar em Fetch models, selecionar um modelo e validar preenchimento de context_limit.
  7. No shell Django, executar from ia.service import LLMService para validar import.
  8. Opcional: configurar modelo Gemini em Settings > IA Models > Gemini para validar seleção de provider por prioridade.

Como este poderia ser testado automaticamente?

  1. Executar pytest ia/tests.
  2. Validar que os testes cobrem:
    • unicidade de modelo ativo por provider em ia.models;
    • seleção de provider no LLMService;
    • endpoints AJAX de Ollama em admin/ia/;
    • comportamento de IAAdminModelForm.save_all para criação e atualização;
    • decisões do IADatabaseRouter com e sem ia_db;
    • fluxo de mark_reference e mark_references com sucesso e erro inesperado.

Algum cenário de contexto que queira dar?

O app foi estruturado para funcionar sem dependências de core.models e core.forms, permitindo reuso em outros projetos Django/Wagtail. Foi incluído IADatabaseRouter para cenários com banco dedicado ia_db.

Screenshots

N/A

Quais são tickets relevantes?

N/A

Referências

@gitnnolabs gitnnolabs requested a review from Rossi-Luciano July 2, 2026 10:28
@gitnnolabs gitnnolabs self-assigned this Jul 2, 2026
@gitnnolabs gitnnolabs added the enhancement New feature or request label Jul 2, 2026
@gitnnolabs

Copy link
Copy Markdown
Collaborator Author

Rodando os teste unitários:

make test 
Image

Rodando o check:

make django_bash
python manage.py check
Image

Garantir que não tenha chamadas de core.models ou core.forms na pasta ia:

Image Image

Telas em ambiente de desenvolvimento:

Image Image Image Image

Migrações executadas com sucesso:

make django_bash 
python manage.py migrate
python manage.py showmigrations ia
Image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant