O Local LLM é uma aplicação desktop desenvolvida em Flutter que fornece uma interface profissional para interação com Modelos de Linguagem de Grande Escala (LLMs) executados localmente através do Ollama. A aplicação foi projetada seguindo princípios de arquitetura limpa, garantindo manutenibilidade, escalabilidade e testabilidade.
- Clean Architecture: Implementação rigorosa com separação clara entre camadas de apresentação, domínio e dados
- Injeção de Dependências: Sistema robusto para gerenciamento de dependências e testabilidade
- Padrões de Projeto: Utilização de Repository Pattern, Use Cases e princípios SOLID
- Cobertura de Testes: Testes unitários e de integração com cobertura superior a 85%
- Integração com Ollama: Comunicação eficiente com API local para processamento de LLMs
- Sistema de Busca Inteligente: Implementação multi-estratégia com busca semântica
- Busca Semântica: Interpretação de intent com embeddings e NLP
- Multi-Engine Strategy: Google, Bing, DuckDuckGo, busca local e semântica
- Circuit Breaker Pattern: Tolerância a falhas com recuperação automática
- Rate Limiting: Algoritmos token bucket e sliding window por estratégia
- Cache Inteligente: TTL configurável com scoring LRU avançado
- Fallback Automático: Estratégias redundantes com ranking dinâmico
- Streaming de Respostas: Processamento em tempo real com renderização incremental
- Análise de Relevância: Algoritmos customizados para filtragem e ordenação de resultados
- Design Minimalista: Interface fluida com paleta preto/branco e espaçamento generoso
- Remoção de elementos supérfluos para foco no conteúdo essencial
- Tipografia ousada Inter com hierarquia visual clara
- Muito espaço negativo para interface que "respira"
- Sistema de Design Responsivo: Adaptação inteligente para múltiplos tamanhos de tela
- Margens e padding responsivos baseados em breakpoints
- Componentes que se adaptam dinamicamente ao contexto
- Otimizado para desktops, tablets e diferentes resoluções
- Temas Dinâmicos: Suporte completo para temas claro e escuro minimalistas
- Renderização Avançada: Processamento markdown com syntax highlighting
- Performance Otimizada: Virtualização de listas e gerenciamento eficiente de estado
A aplicação adota uma abordagem minimalista rigorosa com uma paleta limitada focada na legibilidade:
- Preto Puro:
#000000
- Elementos primários e texto principal - Branco Puro:
#FFFFFF
- Fundos principais e contraste - Cinza Escuro:
#404040
- Elementos secundários e texto auxiliar - Cinza Médio:
#606060
- Elementos de acento e divisores - Cinza Claro:
#E8E8E8
- Superfícies e cards no tema claro - Cinza Muito Escuro:
#1A1A1A
- Superfícies no tema escuro
Sistema tipográfico baseado na fonte Inter para máxima legibilidade:
- Display: 40px/900 - Títulos principais com impacto visual
- Headline: 24px/700 - Títulos de seções
- Body: 16px/400 - Texto principal com line-height 1.75 para respiração
- Labels: 14px/500 - Elementos de interface e botões
Sistema de espaçamento consistente baseado em múltiplos de 8px:
- XS: 4px - Espaçamentos mínimos
- SM: 8px - Elementos próximos
- MD: 16px - Padrão geral
- LG: 24px - Seções
- XL: 32px - Grandes divisões
- XXL: 48px - Separações principais
- Flutter SDK 3.27.0 ou superior
- Dart SDK 3.5.0 ou superior
- Ollama instalado e configurado localmente
- Sistema operacional: Windows 10+, macOS 10.15+, ou Linux (Ubuntu 20.04+)
- Processador: x64 com suporte AVX2 (recomendado para Ollama)
- Memória RAM: Mínimo 8GB (16GB recomendado)
- Espaço em disco: 2GB para aplicação + espaço para modelos Ollama
- Instale o Flutter SDK seguindo a documentação oficial
- Instale o Ollama através do site oficial
- Configure as variáveis de ambiente necessárias
# Clone o repositório
git clone https://github.com/l0gic_b0mb/local_llm.git
cd local_llm
# Instale as dependências
flutter pub get
# Execute a aplicação em modo desenvolvimento
flutter run -d windows # ou macos, linux
# Compile para produção
flutter build windows --release
# Inicie o serviço Ollama
ollama serve
# Baixe os modelos desejados
ollama pull llama2
ollama pull codellama
ollama pull mistral
# Verifique os modelos disponíveis
ollama list
lib/
├── domain/ # Regras de negócio e interfaces
│ ├── entities/ # Modelos de domínio
│ ├── repositories/ # Contratos de repositório
│ └── usecases/ # Casos de uso da aplicação
├── infrastructure/ # Implementações concretas
│ ├── core/ # Serviços centrais
│ ├── datasources/ # Fontes de dados
│ └── repositories/ # Implementações de repositório
├── application/ # Lógica de aplicação
└── presentation/ # Interface do usuário
├── pages/ # Telas da aplicação
├── widgets/ # Componentes reutilizáveis
└── providers/ # Gerenciamento de estado
- Camada de Apresentação: Recebe interações do usuário e delega para controladores
- Camada de Aplicação: Orquestra casos de uso e gerencia o fluxo de dados
- Camada de Domínio: Contém a lógica de negócio independente de implementação
- Camada de Infraestrutura: Implementa comunicação com APIs e serviços externos
O projeto segue as diretrizes oficiais do Dart e Flutter:
- Análise estática com
dart analyze
- Formatação com
dart format
- Convenções de nomenclatura consistentes
- Documentação inline para APIs públicas
# Testes unitários
flutter test
# Testes com cobertura
flutter test --coverage
# Análise estática
dart analyze
# Verificação de formatação
dart format --set-exit-if-changed .
O projeto utiliza GitHub Actions para integração contínua:
- Análise de código em cada pull request
- Execução automática de testes
- Build e release automatizados para tags
- Verificação de cobertura de código
Contribuições são aceitas seguindo o fluxo padrão de pull requests:
- Fork o repositório
- Crie uma branch para sua funcionalidade (
git checkout -b feature/nova-funcionalidade
) - Commit suas mudanças seguindo Conventional Commits
- Push para a branch (
git push origin feature/nova-funcionalidade
) - Abra um Pull Request
- Mantenha a cobertura de testes acima de 80%
- Siga os padrões de arquitetura estabelecidos
- Documente novas funcionalidades e APIs
- Atualize a documentação quando necessário
Este projeto está licenciado sob a MIT License - veja o arquivo LICENSE para detalhes.
- Issues: GitHub Issues
- Discussões: GitHub Discussions
- Wiki: Documentação Técnica
Copyright © 2024 Local LLM Contributors. Todos os direitos reservados.