Skip to content

Aplicativo desktop em Flutter para interação com LLMs locais via Ollama, com interface moderna, suporte a Markdown, temas adaptáveis e foco em privacidade.

Notifications You must be signed in to change notification settings

baku01/local_llm

Repository files navigation

Local LLM Desktop Client

Flutter Dart License CI/CD

Visão Geral

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.

Características Principais

Arquitetura e Design

  • 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%

Funcionalidades Técnicas

  • 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

Interface e Experiência

  • 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

Design System Minimalista

Paleta de Cores

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

Tipografia

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

Espaçamento

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

Requisitos do Sistema

Dependências Obrigatórias

  • 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+)

Requisitos de Hardware

  • 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

Instalação

Configuração do Ambiente

  1. Instale o Flutter SDK seguindo a documentação oficial
  2. Instale o Ollama através do site oficial
  3. Configure as variáveis de ambiente necessárias

Compilação da Aplicação

# 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

Configuração do Ollama

# 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

Arquitetura do Sistema

Estrutura de Camadas

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

Fluxo de Dados

  1. Camada de Apresentação: Recebe interações do usuário e delega para controladores
  2. Camada de Aplicação: Orquestra casos de uso e gerencia o fluxo de dados
  3. Camada de Domínio: Contém a lógica de negócio independente de implementação
  4. Camada de Infraestrutura: Implementa comunicação com APIs e serviços externos

Desenvolvimento

Padrões de Código

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

Execução de Testes

# 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 .

CI/CD

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

Contribuições são aceitas seguindo o fluxo padrão de pull requests:

  1. Fork o repositório
  2. Crie uma branch para sua funcionalidade (git checkout -b feature/nova-funcionalidade)
  3. Commit suas mudanças seguindo Conventional Commits
  4. Push para a branch (git push origin feature/nova-funcionalidade)
  5. Abra um Pull Request

Diretrizes para Contribuição

  • 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

Licença

Este projeto está licenciado sob a MIT License - veja o arquivo LICENSE para detalhes.

Suporte e Contato


Copyright © 2024 Local LLM Contributors. Todos os direitos reservados.

About

Aplicativo desktop em Flutter para interação com LLMs locais via Ollama, com interface moderna, suporte a Markdown, temas adaptáveis e foco em privacidade.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •