22 KiB
🦌 DeerFlow
English | 简体中文 | 日本語 | Deutsch | Portuguese
Originado do Open Source, de volta ao Open Source
DeerFlow (Deep Exploration and Efficient Research Flow) é um framework de Pesquisa Profunda orientado-a-comunidade que baseia-se em um íncrivel trabalho da comunidade open source. Nosso objetivo é combinar modelos de linguagem com ferramentas especializadas para tarefas como busca na web, crawling, e execução de código Python, enquanto retribui com a comunidade que o tornou possível.
Por favor, visite Nosso Site Oficial para maiores detalhes.
Demo
Video
https://github.com/user-attachments/assets/f3786598-1f2a-4d07-919e-8b99dfa1de3e
Nesse demo, nós demonstramos como usar o DeerFlow para: In this demo, we showcase how to use DeerFlow to:
- Integração fácil com serviços MCP
- Conduzir o processo de Pesquisa Profunda e produzir um relatório abrangente com imagens
- Criar um áudio podcast baseado no relatório gerado
Replays
- Quão alta é a Torre Eiffel comparada ao prédio mais alto?
- Quais são os top repositórios tendência no GitHub?
- Escreva um artigo sobre os pratos tradicionais de Nanjing's
- Como decorar um apartamento alugado?
- Visite nosso site oficial para explorar mais replays.
📑 Tabela de Conteúdos
- 🚀 Início Rápido
- 🌟 Funcionalidades
- 🏗️ Arquitetura
- 🛠️ Desenvolvimento
- 🐳 Docker
- 🗣️ Texto-para-fala Integração
- 📚 Exemplos
- ❓ FAQ
- 📜 Licença
- 💖 Agradecimentos
- 🏆 Contribuidores-Chave
- ⭐ Histórico de Estrelas
Início-Rápido
DeerFlow é desenvolvido em Python, e vem com uma IU web escrita em Node.js. Para garantir um processo de configuração fácil, nós recomendamos o uso das seguintes ferramentas:
Ferramentas Recomendadas
-
uv
: Simplifica o gerenciamento de dependência de ambientes Python.uv
automaticamente cria um ambiente virtual no diretório raiz e instala todos os pacotes necessários para não haver a necessidade de instalar ambientes Python manualmente -
nvm
: Gerencia múltiplas versões do ambiente de execução do Node.js sem esforço. -
pnpm
: Instala e gerencia dependências do projeto Node.js.
Requisitos de Ambiente
Certifique-se de que seu sistema atenda os seguintes requisitos mínimos:
Instalação
# Clone o repositório
git clone https://github.com/bytedance/deer-flow.git
cd deer-flow
# Instale as dependências, uv irá lidar com o interpretador do python e a criação do venv, e instalar os pacotes necessários
uv sync
# Configure .env com suas chaves de API
# Tavily: https://app.tavily.com/home
# Brave_SEARCH: https://brave.com/search/api/
# volcengine TTS: Adicione sua credencial TTS caso você a possua
cp .env.example .env
# Veja as seções abaixo 'Supported Search Engines' and 'Texto-para-Fala Integração' para todas as opções disponíveis
# Configure o conf.yaml para o seu modelo LLM e chaves API
# Por favor, consulte 'docs/configuration_guide.md' para maiores detalhes
cp conf.yaml.example conf.yaml
# Instale marp para geração de ppt
# https://github.com/marp-team/marp-cli?tab=readme-ov-file#use-package-manager
brew install marp-cli
Opcionalmente, instale as dependências IU web via pnpm:
cd deer-flow/web
pnpm install
Configurações
Por favor, consulte o Guia de Configuração para maiores detalhes.
[!NOTA] Antes de iniciar o projeto, leia o guia detalhadamente, e atualize as configurações para baterem com os seus requisitos e configurações específicas.
Console IU
A maneira mais rápida de rodar o projeto é usar o console IU.
# Execute o projeto em um shell tipo-bash
uv run main.py
Web IU
Esse projeto também inclui uma IU Web, trazendo uma experiência mais interativa, dinâmica e engajadora.
[!NOTA] Você precisa instalar as dependências do IU web primeiro.
# Execute ambos os servidores de backend e frontend em modo desenvolvimento
# No macOS/Linux
./bootstrap.sh -d
# No Windows
bootstrap.bat -d
Abra seu navegador e visite http://localhost:3000
para explorar a IU web.
Explore mais detalhes no diretório web
.
Mecanismos de Busca Suportados
DeerFlow suporta múltiplos mecanismos de busca que podem ser configurados no seu arquivo .env
usando a variável SEARCH_API
:
-
Tavily (padrão): Uma API de busca especializada para aplicações de IA
- Requer
TAVILY_API_KEY
no seu arquivo.env
- Inscreva-se em: https://app.tavily.com/home
- Requer
-
DuckDuckGo: Mecanismo de busca focado em privacidade
- Não requer chave API
-
Brave Search: Mecanismo de busca focado em privacidade com funcionalidades avançadas
- Requer
BRAVE_SEARCH_API_KEY
no seu arquivo.env
- Inscreva-se em: https://brave.com/search/api/
- Requer
-
Arxiv: Busca de artigos científicos para pesquisa acadêmica
- Não requer chave API
- Especializado em artigos científicos e acadêmicos
Para configurar o seu mecanismo preferido, defina a variável SEARCH_API
no seu arquivo:
# Escolha uma: tavily, duckduckgo, brave_search, arxiv
SEARCH_API=tavily
Funcionalidades
Principais Funcionalidades
-
🤖 Integração LLM
- Suporta a integração da maioria dos modelos através de litellm.
- Suporte a modelos open source como Qwen
- Interface API compatível com a OpenAI
- Sistema LLM multicamadas para diferentes complexidades de tarefa
Ferramentas e Integrações MCP
-
🔍 Busca e Recuperação
- Busca web com Tavily, Brave Search e mais
- Crawling com Jina
- Extração de Conteúdo avançada
-
🔗 Integração MCP perfeita
- Expansão de capacidades de acesso para acesso a domínios privados, grafo de conhecimento, navegação web e mais
- Integração facilitdade de diversas ferramentas de pesquisa e metodologias
Colaboração Humana
-
🧠 Humano-no-processo
- Suporta modificação interativa de planos de pesquisa usando linguagem natural
- Suporta auto-aceite de planos de pesquisa
-
📝 Relatório Pós-Edição
- Suporta edição de edição de blocos estilo Notion
- Permite refinamentos de IA, incluindo polimento de IA assistida, encurtamento de frase, e expansão
- Distribuído por tiptap
Criação de Conteúdo
-
🎙️ Geração de Podcast e apresentação
- Script de geração de podcast e síntese de áudio movido por IA
- Criação automatizada de apresentações PowerPoint simples
- Templates customizáveis para conteúdo personalizado
Arquitetura
DeerFlow implementa uma arquitetura de sistema multi-agente modular designada para pesquisa e análise de código automatizada. O sistema é construído em LangGraph, possibilitando um fluxo de trabalho flexível baseado-em-estado onde os componentes se comunicam através de um sistema de transmissão de mensagens bem-definido.
Veja ao vivo em deerflow.tech
O sistema emprega um fluxo de trabalho simplificado com os seguintes componentes:
-
Coordenador: O ponto de entrada que gerencia o ciclo de vida do fluxo de trabalho
- Inicia o processo de pesquisa baseado na entrada do usuário
- Delega tarefas so planejador quando apropriado
- Atua como a interface primária entre o usuário e o sistema
-
Planejador: Componente estratégico para a decomposição e planejamento
- Analisa objetivos de pesquisa e cria planos de execução estruturados
- Determina se há contexto suficiente disponível ou se mais pesquisa é necessária
- Gerencia o fluxo de pesquisa e decide quando gerar o relatório final
-
Time de Pesquisa: Uma coleção de agentes especializados que executam o plano:
- Pesquisador: Conduz buscas web e coleta informações utilizando ferramentas como mecanismos de busca web, crawling e mesmo serviços MCP.
- Programador: Lida com a análise de código, execução e tarefas técnicas como usar a ferramenta Python REPL. Cada agente tem acesso à ferramentas específicas otimizadas para seu papel e opera dentro do fluxo de trabalho LangGraph.
-
Repórter: Estágio final do processador de estágio para saídas de pesquisa
- Resultados agregados do time de pesquisa
- Processa e estrutura as informações coletadas
- Gera relatórios abrangentes de pesquisas
Texto-para-Fala Integração
DeerFlow agora inclui uma funcionalidade Texto-para-Fala (TTS) que permite que você converta relatórios de busca para voz. Essa funcionalidade usa o mecanismo de voz da API TTS para gerar áudio de alta qualidade a partir do texto. Funcionalidades como velocidade, volume e tom também são customizáveis.
Usando a API TTS
Você pode acessar a funcionalidade TTS através do endpoint /api/tts
:
# Exemplo de chamada da API usando curl
curl --location 'http://localhost:8000/api/tts' \
--header 'Content-Type: application/json' \
--data '{
"text": "This is a test of the text-to-speech functionality.",
"speed_ratio": 1.0,
"volume_ratio": 1.0,
"pitch_ratio": 1.0
}' \
--output speech.mp3
Desenvolvimento
Testando
Rode o conjunto de testes:
# Roda todos os testes
make test
# Roda um arquivo de teste específico
pytest tests/integration/test_workflow.py
# Roda com coverage
make coverage
Qualidade de Código
# Roda o linting
make lint
# Formata de código
make format
Debugando com o LangGraph Studio
DeerFlow usa LangGraph para sua arquitetura de fluxo de trabalho. Nós podemos usar o LangGraph Studio para debugar e visualizar o fluxo de trabalho em tempo real.
Rodando o LangGraph Studio Localmente
DeerFlow inclui um arquivo de configuração langgraph.json
que define a estrutura do grafo e dependências para o LangGraph Studio. Esse arquivo aponta para o grafo do fluxo de trabalho definido no projeto e automaticamente carrega as variáveis de ambiente do arquivo .env
.
Mac
# Instala o gerenciador de pacote uv caso você não o possua
curl -LsSf https://astral.sh/uv/install.sh | sh
# Instala as dependências e inicia o servidor LangGraph
uvx --refresh --from "langgraph-cli[inmem]" --with-editable . --python 3.12 langgraph dev --allow-blocking
Windows / Linux
# Instala as dependências
pip install -e .
pip install -U "langgraph-cli[inmem]"
# Inicia o servidor LangGraph
langgraph dev
Após iniciar o servidor LangGraph, você verá diversas URLs no seu terminal:
- API: http://127.0.0.1:2024
- Studio UI: https://smith.langchain.com/studio/?baseUrl=http://127.0.0.1:2024
- API Docs: http://127.0.0.1:2024/docs
Abra o link do Studio UI no seu navegador para acessar a interface de depuração.
Usando o LangGraph Studio
No Studio UI, você pode:
- Visualizar o grafo do fluxo de trabalho e como seus componentes se conectam
- Rastrear a execução em tempo-real e ver como os dados fluem através do sistema
- Inspecionar o estado de cada passo do fluxo de trabalho
- Depurar problemas ao examinar entradas e saídas de cada componente
- Coletar feedback durante a fase de planejamento para refinar os planos de pesquisa
Quando você envia um tópico de pesquisa ao Studio UI, você será capaz de ver toda a execução do fluxo de trabalho, incluindo:
- A fase de planejamento onde o plano de pesquisa foi criado
- O processo de feedback onde você pode modificar o plano
- As fases de pesquisa e escrita de cada seção
- A geração do relatório final
Docker
Você também pode executar esse projeto via Docker.
Primeiro, voce deve ler a configuração below. Make sure .env
, .conf.yaml
files are ready.
Segundo, para fazer o build de sua imagem docker em seu próprio servidor:
docker build -t deer-flow-api .
E por fim, inicie um container docker rodando o servidor web:
# substitua deer-flow-api-app com seu nome de container preferido
docker run -d -t -p 8000:8000 --env-file .env --name deer-flow-api-app deer-flow-api
# pare o servidor
docker stop deer-flow-api-app
Docker Compose (inclui ambos backend e frontend)
DeerFlow fornece uma estrutura docker-compose para facilmente executar ambos o backend e frontend juntos:
# building docker image
docker compose build
# start the server
docker compose up
Exemplos:
Os seguintes exemplos demonstram as capacidades do DeerFlow:
Relatórios de Pesquisa
-
Relatório OpenAI Sora - Análise da ferramenta Sora da OpenAI
-
Discute funcionalidades, acesso, engenharia de prompt, limitações e considerações éticas
-
-
Relatório Protocolo Agent-to-Agent do Google - Visão geral do protocolo Agent-to-Agent (A2A) do Google
- Discute o seu papel na comunicação de Agente de IA e seu relacionamento com o Protocolo de Contexto de Modelo ( MCP ) da Anthropic
- Veja o relatório completo
-
O que é MCP? - Uma análise abrangente to termo "MCP" através de múltiplos contextos
- Explora o Protocolo de Contexto de Modelo em IA, Fosfato Monocálcio em Química, e placa de microcanal em eletrônica
- Veja o relatório completo
-
Bitcoin Price Fluctuations - Análise das recentes movimentações de preço do Bitcoin
- Examina tendências de mercado, influências regulatórias, e indicadores técnicos
- Fornece recomendações baseadas nos dados históricos
- Veja o relatório completo
-
O que é LLM? - Uma exploração em profundidade de Large Language Models
- Discute arquitetura, treinamento, aplicações, e considerações éticas
- Veja o relatório completo
-
Como usar Claude para Pesquisa Aprofundada? - Melhores práticas e fluxos de trabalho para usar Claude em pesquisa aprofundada
- Cobre engenharia de prompt, análise de dados, e integração com outras ferramentas
- Veja o relatório completo
-
Adoção de IA na Área da Saúde: Fatores de Influência - Análise dos fatores que levam à adoção de IA na área da saúde
- Discute tecnologias de IA, qualidade de dados, considerações éticas, avaliações econômicas, prontidão organizacional, e infraestrutura digital
- Veja o relatório completo
-
Impacto da Computação Quântica em Criptografia - Análise dos impactos da computação quântica em criptografia
- Discture vulnerabilidades da criptografia clássica, criptografia pós-quântica, e soluções criptográficas de resistência-quântica
- Veja o relatório completo
-
Destaques da Performance do Cristiano Ronaldo - Análise dos destaques da performance do Cristiano Ronaldo
- Discute as suas conquistas de carreira, objetivos internacionais, e performance em diversas partidas
- Veja o relatório completo
Para executar esses exemplos ou criar seus próprios relatórios de pesquisa, você deve utilizar os seguintes comandos:
# Executa com uma consulta específica
uv run main.py "Quais fatores estão influenciando a adoção de IA na área da saúde?"
# Executa com parâmetros de planejamento customizados
uv run main.py --max_plan_iterations 3 "Como a computação quântica impacta na criptografia?"
# Executa em modo interativo com questões embutidas
uv run main.py --interactive
# Ou executa com um prompt interativo básico
uv run main.py
# Vê todas as opções disponíveis
uv run main.py --help
Modo Interativo
A aplicação agora suporta um modo interativo com questões embutidas tanto em Inglês quanto Chinês:
-
Inicie o modo interativo:
uv run main.py --interactive
-
Selecione sua linguagem de preferência (English or 中文)
-
Escolha uma das questões embutidas da lista ou selecione a opção para perguntar sua própria questão
-
O sistema irá processar sua questão e gerar um relatório abrangente de pesquisa
Humano no processo
DeerFlow inclue um mecanismo de humano no processo que permite a você revisar, editar e aprovar planos de pesquisa antes que estes sejam executados:
-
Revisão de Plano: Quando o humano no processo está habilitado, o sistema irá apresentar o plano de pesquisa gerado para sua revisão antes da execução
-
Fornecimento de Feedback: Você pode:
- Aceitar o plano respondendo com
[ACCEPTED]
- Edite o plano fornecendo feedback (e.g.,
[EDIT PLAN] Adicione mais passos sobre a implementação técnica
) - O sistema irá incorporar seu feedback e gerar um plano revisado
- Aceitar o plano respondendo com
-
Auto-aceite: Você pode habilitar o auto-aceite ou pular o processo de revisão:
- Via API: Defina
auto_accepted_plan: true
na sua requisição
- Via API: Defina
-
Integração de API: Quanto usar a API, você pode fornecer um feedback através do parâmetro
feedback
:
{
"messages": [{ "role": "user", "content": "O que é computação quântica?" }],
"thread_id": "my_thread_id",
"auto_accepted_plan": false,
"feedback": "[EDIT PLAN] Inclua mais sobre algoritmos quânticos"
}
Argumentos via Linha de Comando
A aplicação suporta diversos argumentos via linha de comando para customizar o seu comportamento:
- consulta: A consulta de pesquisa a ser processada (podem ser múltiplas palavras)
- --interativo: Roda no modo interativo com questões embutidas
- --max_plan_iterations: Número máximo de ciclos de planejamento (padrão: 1)
- --max_step_num: Número máximo de passos em um plano de pesquisa (padrão: 3)
- --debug: Habilita Enable um log de depuração detalhado
FAQ
Por favor consulte a FAQ.md para maiores detalhes.
Licença
Esse projeto é open source e disponível sob a MIT License.
Agradecimentos
DeerFlow é construído através do incrível trabalho da comunidade open-source. Nós somos profundamente gratos a todos os projetos e contribuidores cujos esforços tornaram o DeerFlow possível. Realmente, nós estamos apoiados nos ombros de gigantes.
Nós gostaríamos de extender nossos sinceros agradecimentos aos seguintes projetos por suas invaloráveis contribuições:
- LangChain: O framework excepcional deles empodera nossas interações via LLM e correntes, permitindo uma integração perfeita e funcional.
- LangGraph: A abordagem inovativa para orquestração multi-agente deles tem sido foi fundamental em permitir o acesso dos fluxos de trabalho sofisticados do DeerFlow.
Esses projetos exemplificam o poder transformador da colaboração open-source, e nós temos orgulho de construir baseado em suas fundações.
Contribuidores-Chave
Um sincero muito obrigado vai para os principais autores do DeerFlow
, cuja visão, paixão, e dedicação trouxe esse projeto à vida:
O seu compromisso inabalável e experiência tem sido a força por trás do sucesso do DeerFlow. Nós estamos honrados em tê-los no comando dessa trajetória.