Skip to content

Kaiofprates/poc-lang-graph

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Local Perplexity

Este projeto implementa um sistema de pesquisa e síntese de informações utilizando LLMs locais e APIs de busca, inspirado no funcionamento do Perplexity AI. O sistema permite que usuários façam perguntas e recebam respostas sintetizadas com base em informações obtidas da web.

Funcionalidades

  • Interface gráfica com Streamlit para interação com o usuário
  • Busca na web utilizando APIs como Tavily, Perplexity, e OpenPerplex
  • Processamento com LLMs locais utilizando Ollama (Llama 3.1 e DeepSeek-R)
  • Orquestração de fluxo com LangGraph para coordenar as etapas de processamento
  • Formatação de respostas com referências às fontes utilizadas

Arquitetura

O projeto segue uma arquitetura de fluxo de trabalho baseada em LangGraph:

  1. Geração de consultas - Transforma a pergunta do usuário em múltiplas consultas de busca
  2. Busca de informações - Executa as consultas em serviços de busca na web
  3. Processamento e síntese - Utiliza LLMs para sintetizar as informações coletadas
  4. Apresentação final - Formata a resposta com referências às fontes

Diagrama do Fluxo LangGraph

O fluxo principal da aplicação utiliza o LangGraph para orquestrar as operações. Abaixo está um diagrama representando este fluxo:

┌─────────┐     ┌──────────────────┐     ┌───────────────────┐
│         │     │                  │     │                   │
│  START  ├────►│build_first_queries├────►spawn_researchers  │
│         │     │                  │     │   (distribuidor)  │
└─────────┘     └──────────────────┘     └─────────┬─────────┘
                                                   │
                                                   ▼
┌─────────┐     ┌──────────────────┐     ┌───────────────────┐
│         │     │                  │     │                   │
│   END   │◄────│   final_writer   │◄────│   single_search   │
│         │     │                  │     │                   │
└─────────┘     └──────────────────┘     └───────────────────┘

Descrição das etapas:

  1. START - Ponto de entrada do grafo
  2. build_first_queries - Transforma a pergunta do usuário em múltiplas consultas de busca utilizando LLM
  3. spawn_researchers - Distribui as consultas geradas para pesquisas paralelas
  4. single_search - Executa cada consulta em APIs de busca e processa os resultados
  5. final_writer - Sintetiza todos os resultados em uma resposta final com referências
  6. END - Ponto de saída do grafo

Arquivos principais

  • graph.py - Implementação do fluxo de trabalho com LangGraph
  • schemas.py - Definição dos modelos de dados utilizados no sistema
  • prompts.py - Templates de prompts utilizados na interação com os LLMs
  • utils.py - Funções utilitárias para busca e processamento de dados

Configuração

  1. Clone o repositório
  2. Instale as dependências:
    pip install -r requirements.txt
    
  3. Configure suas chaves de API no arquivo .env:
    TAVILY_API_KEY=sua_chave_aqui
    PERPLEXITY_API_KEY=sua_chave_aqui (opcional)
    OPENPERPLEX_API_KEY=sua_chave_aqui (opcional)
    
  4. Certifique-se de ter o Ollama instalado e os modelos necessários baixados:
    ollama pull llama3.1:latest
    ollama pull deepseek-r1:8b
    

Uso

Execute o aplicativo Streamlit:

streamlit run graph.py

Acesse a interface no navegador, digite sua pergunta e clique em "Pesquisar" para obter resultados.

Requisitos

  • Python 3.8+
  • Ollama (para execução de LLMs locais)
  • Acesso à internet para as APIs de busca

Licença

Este projeto é distribuído sob a licença MIT.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages