# ðŠ DeerFlow
[](https://www.python.org/downloads/)
[](https://opensource.org/licenses/MIT)
[English](./README.md) | [ç®äœäžæ](./README_zh.md) | [æ¥æ¬èª](./README_ja.md) | [Deutsch](./README_de.md) | [Español](./README_es.md) | [Ð ÑÑÑкОй](./README_ru.md) | [Portuguese](./README_pt.md)
> ãªãŒãã³ãœãŒã¹ããçãŸãããªãŒãã³ãœãŒã¹ã«éå
ããã
**DeerFlow**ïŒ**D**eep **E**xploration and **E**fficient **R**esearch **Flow**ïŒã¯ããªãŒãã³ãœãŒã¹ã³ãã¥ããã£ã®çŽ æŽãããææã®äžã«æ§ç¯ãããã³ãã¥ããã£äž»å°ã®æ·±å±€ç ç©¶ãã¬ãŒã ã¯ãŒã¯ã§ããç§ãã¡ã®ç®æšã¯ãèšèªã¢ãã«ãšãŠã§ãæ€çŽ¢ãã¯ããŒãªã³ã°ãPython ã³ãŒãå®è¡ãªã©ã®å°éããŒã«ãçµã¿åãããªããããããå¯èœã«ããã³ãã¥ããã£ã«è²¢ç®ããããšã§ãã
çŸåšãDeerFlow ã¯ç«å±±åŒæã® FaaS ã¢ããªã±ãŒã·ã§ã³ã»ã³ã¿ãŒã«æ£åŒã«å
¥å±
ããŠããŸãããŠãŒã¶ãŒã¯äœéšãªã³ã¯ãéããŠãªã³ã©ã€ã³ã§äœéšãããã®åŒ·åãªæ©èœãšäŸ¿å©ãªæäœãçŽæçã«æããããšãã§ããŸããåæã«ãããŸããŸãªãŠãŒã¶ãŒã®å±éããŒãºãæºãããããDeerFlow ã¯ç«å±±åŒæã«åºã¥ãã¯ã³ã¯ãªãã¯å±éããµããŒãããŠããŸããå±éãªã³ã¯ãã¯ãªãã¯ããŠå±éããã»ã¹ãè¿
éã«å®äºããå¹ççãªç ç©¶ã®æ
ãå§ããŸãããã
DeerFlow ã¯æ°ãã«BytePlusãèªäž»éçºããã€ã³ããªãžã§ã³ãæ€çŽ¢ã»ã¯ããŒãªã³ã°ããŒã«ã»ãããçµ±åããŸãã--[InfoQuest (ãªã³ã©ã€ã³ç¡æäœéšããµããŒã)](https://docs.byteplus.com/en/docs/InfoQuest/What_is_Info_Quest)
詳现ã«ã€ããŠã¯[DeerFlow ã®å
¬åŒãŠã§ããµã€ã](https://deerflow.tech/)ãã芧ãã ããã
## ãã¢
### ãããª
ãã®ãã¢ã§ã¯ãDeerFlowã®äœ¿ç𿹿³ã玹ä»ããŠããŸãïŒ
- MCPãµãŒãã¹ãšã®ã·ãŒã ã¬ã¹ãªçµ±å
- 深局ç ç©¶ããã»ã¹ã®å®æœãšç»åãå«ãå
æ¬çãªã¬ããŒãã®äœæ
- çæãããã¬ããŒãã«åºã¥ãããããã£ã¹ããªãŒãã£ãªã®äœæ
### ãªãã¬ã€äŸ
- [ãšããã§ã«å¡ã¯äžçäžé«ããã«ãšæ¯ã¹ãŠã©ããããé«ãïŒ](https://deerflow.tech/chat?replay=eiffel-tower-vs-tallest-building)
- [GitHub ã§æã人æ°ã®ãããªããžããªã¯ïŒ](https://deerflow.tech/chat?replay=github-top-trending-repo)
- [å京ã®äŒçµ±æçã«é¢ããèšäºãæžã](https://deerflow.tech/chat?replay=nanjing-traditional-dishes)
- [è³è²žã¢ããŒãã®è£
é£Ÿæ¹æ³ã¯ïŒ](https://deerflow.tech/chat?replay=rental-apartment-decoration)
- [å
¬åŒãŠã§ããµã€ãã§ããå€ãã®ãªãã¬ã€äŸãã芧ãã ããã](https://deerflow.tech/#case-studies)
---
## ð ç®æ¬¡
- [ð ã¯ã€ãã¯ã¹ã¿ãŒã](#ã¯ã€ãã¯ã¹ã¿ãŒã)
- [ð ç¹åŸŽ](#ç¹åŸŽ)
- [ðïž ã¢ãŒããã¯ãã£](#ã¢ãŒããã¯ãã£)
- [ð ïž éçº](#éçº)
- [ð£ïž ããã¹ãèªã¿äžãçµ±å](#ããã¹ãèªã¿äžãçµ±å)
- [ð äŸ](#äŸ)
- [â ãããã質å](#ãããã質å)
- [ð ã©ã€ã»ã³ã¹](#ã©ã€ã»ã³ã¹)
- [ð è¬èŸ](#è¬èŸ)
- [â ã¹ã¿ãŒå±¥æŽ](#ã¹ã¿ãŒå±¥æŽ)
## ã¯ã€ãã¯ã¹ã¿ãŒã
DeerFlow 㯠Python ã§éçºãããNode.js ã§æžããã Web UI ãä»å±ããŠããŸããã¹ã ãŒãºãªã»ããã¢ããããã»ã¹ã確ä¿ããããã«ã以äžã®ããŒã«ã®äœ¿çšããå§ãããŸãïŒ
### æšå¥šããŒã«
- **[`uv`](https://docs.astral.sh/uv/getting-started/installation/):**
Python ç°å¢ãšäŸåé¢ä¿ã®ç®¡çãç°¡çŽ åããŸãã`uv`ã¯ã«ãŒããã£ã¬ã¯ããªã«èªåçã«ä»®æ³ç°å¢ãäœæããå¿
èŠãªããã±ãŒãžããã¹ãŠã€ã³ã¹ããŒã«ããŸãâPython ç°å¢ãæåã§ã€ã³ã¹ããŒã«ããå¿
èŠã¯ãããŸããã
- **[`nvm`](https://github.com/nvm-sh/nvm):**
è€æ°ã® Node.js ã©ã³ã¿ã€ã ããŒãžã§ã³ãç°¡åã«ç®¡çããŸãã
- **[`pnpm`](https://pnpm.io/installation):**
Node.js ãããžã§ã¯ãã®äŸåé¢ä¿ãã€ã³ã¹ããŒã«ããã³ç®¡çããŸãã
### ç°å¢èŠä»¶
ã·ã¹ãã ã以äžã®æå°èŠä»¶ãæºãããŠããããšã確èªããŠãã ããïŒ
- **[Python](https://www.python.org/downloads/):** ããŒãžã§ã³ `3.12+`
- **[Node.js](https://nodejs.org/en/download/):** ããŒãžã§ã³ `22+`
### ã€ã³ã¹ããŒã«
```bash
# ãªããžããªãã¯ããŒã³
git clone https://github.com/bytedance/deer-flow.git
cd deer-flow
# äŸåé¢ä¿ãã€ã³ã¹ããŒã«ãuvãPythonã€ã³ã¿ãŒããªã¿ãšä»®æ³ç°å¢ã®äœæãå¿
èŠãªããã±ãŒãžã®ã€ã³ã¹ããŒã«ãæ
åœ
uv sync
# APIããŒã§.envãèšå®
# Tavily: https://app.tavily.com/home
# Brave_SEARCH: https://brave.com/search/api/
# ç«å±±åŒæTTS: TTSã®è³æ Œæ
å ±ãããå Žåã¯è¿œå
cp .env.example .env
# äžèšã®ããµããŒããããŠããæ€çŽ¢ãšã³ãžã³ããšãããã¹ãèªã¿äžãçµ±åãã»ã¯ã·ã§ã³ã§ãã¹ãŠã®å©çšå¯èœãªãªãã·ã§ã³ã確èª
# LLMã¢ãã«ãšAPIããŒã®conf.yamlãèšå®
# 詳现ã¯ãdocs/configuration_guide.mdããåç
§
cp conf.yaml.example conf.yaml
# PPTçæçšã«marpãã€ã³ã¹ããŒã«
# https://github.com/marp-team/marp-cli?tab=readme-ov-file#use-package-manager
brew install marp-cli
```
ãªãã·ã§ã³ã§ã[pnpm](https://pnpm.io/installation)ã䜿çšã㊠Web UI äŸåé¢ä¿ãã€ã³ã¹ããŒã«ïŒ
```bash
cd deer-flow/web
pnpm install
```
### èšå®
詳现ã«ã€ããŠã¯[èšå®ã¬ã€ã](docs/configuration_guide.md)ãåç
§ããŠãã ããã
> [!泚æ]
> ãããžã§ã¯ããéå§ããåã«ãã¬ã€ããæ³šææ·±ãèªã¿ãç¹å®ã®èšå®ãšèŠä»¶ã«åãããŠæ§æãæŽæ°ããŠãã ããã
### ã³ã³ãœãŒã« UI
ãããžã§ã¯ããå®è¡ããæãè¿
éãªæ¹æ³ã¯ãã³ã³ãœãŒã« UI ã䜿çšããããšã§ãã
```bash
# bashã©ã€ã¯ãªã·ã§ã«ã§ãããžã§ã¯ããå®è¡
uv run main.py
```
### Web UI
ãã®ãããžã§ã¯ãã«ã¯ Web UI ãå«ãŸããŠãããããåçã§é
åçãªã€ã³ã¿ã©ã¯ãã£ãäœéšãæäŸããŸãã
> [!泚æ]
> å
ã« Web UI ã®äŸåé¢ä¿ãã€ã³ã¹ããŒã«ããå¿
èŠããããŸãã
```bash
# éçºã¢ãŒãã§ããã¯ãšã³ããšããã³ããšã³ããµãŒããŒã®äž¡æ¹ãå®è¡
# macOS/Linuxã®å Žå
./bootstrap.sh -d
# Windowsã®å Žå
bootstrap.bat -d
```
> [!NOTE]
> ããã©ã«ãã§ã¯ãã»ãã¥ãªãã£äžã®çç±ããããã¯ãšã³ããµãŒããŒã¯ 127.0.0.1 (localhost) ã«ãã€ã³ããããŸããå€éšæ¥ç¶ãèš±å¯ããå¿
èŠãããå Žå (äŸ: Linux ãµãŒããŒã«ãããã€ããå Žå) ã¯ãããŒãã¹ãã©ããã¹ã¯ãªããã§ãµãŒããŒãã¹ãã 0.0.0.0 ã«å€æŽã§ããŸã (uv run server.py --host 0.0.0.0)ã
> ãµãŒãã¹ãå€éšãããã¯ãŒã¯ã«å
¬éããåã«ãç°å¢ãé©åã«ä¿è·ãããŠããããšã確èªããŠãã ããã
ãã©ãŠã¶ãéãã[`http://localhost:3000`](http://localhost:3000)ã«ã¢ã¯ã»ã¹ã㊠Web UI ãæ¢çŽ¢ããŠãã ããã
[`web`](./web/)ãã£ã¬ã¯ããªã§è©³çްã確èªã§ããŸãã
## ãµããŒããããŠããæ€çŽ¢ãšã³ãžã³
DeerFlow ã¯è€æ°ã®æ€çŽ¢ãšã³ãžã³ããµããŒãããŠããã`.env`ãã¡ã€ã«ã®`SEARCH_API`倿°ã§èšå®ã§ããŸãïŒ
- **Tavily**ïŒããã©ã«ãïŒïŒAI ã¢ããªã±ãŒã·ã§ã³åãã®å°éæ€çŽ¢ API
- `.env`ãã¡ã€ã«ã«`TAVILY_API_KEY`ãå¿
èŠ
- ç»é²å
ïŒ
- **InfoQuest**ïŒæšå¥šïŒïŒBytePlusãéçºããAIæé©åã®ã€ã³ããªãžã§ã³ãæ€çŽ¢ãšã¯ããŒãªã³ã°ããŒã«ã»ãã
- `.env`ãã¡ã€ã«ã«`INFOQUEST_API_KEY`ãå¿
èŠ
- æéç¯å²ãã£ã«ã¿ãªã³ã°ãšãµã€ããã£ã«ã¿ãªã³ã°ããµããŒã
- é«åè³ªãªæ€çŽ¢çµæãšã³ã³ãã³ãæœåºãæäŸ
- ç»é²å
ïŒ
- ããã¥ã¡ã³ãïŒ
- **DuckDuckGo**ïŒãã©ã€ãã·ãŒéèŠã®æ€çŽ¢ãšã³ãžã³
- APIããŒäžèŠ
- **Brave Search**ïŒé«åºŠãªæ©èœãåãããã©ã€ãã·ãŒéèŠã®æ€çŽ¢ãšã³ãžã³
- `.env`ãã¡ã€ã«ã«`BRAVE_SEARCH_API_KEY`ãå¿
èŠ
- ç»é²å
ïŒ
- **Arxiv**ïŒåŠè¡ç ç©¶çšã®ç§åŠè«ææ€çŽ¢
- APIããŒäžèŠ
- ç§åŠã»åŠè¡è«æå°çš
- **Searx/SearxNG**ã»ã«ããã¹ãåã¡ã¿æ€çŽ¢ãšã³ãžã³
- `.env`ãã¡ã€ã«ã«`SEARX_HOST`ãå¿
èŠ
- Searx ãŸã㯠SearxNG ã«æ¥ç¶å¯èœ
ã奜ã¿ã®æ€çŽ¢ãšã³ãžã³ãèšå®ããã«ã¯ã`.env`ãã¡ã€ã«ã§`SEARCH_API`倿°ãèšå®ããŸãïŒ
```bash
# éžæè¢: tavily, infoquest, duckduckgo, brave_search, arxiv
SEARCH_API=tavily
```
### ã¯ããŒãªã³ã°ããŒã«
- **Jina**ïŒããã©ã«ãïŒïŒç¡æã§ã¢ã¯ã»ã¹å¯èœãªãŠã§ãã³ã³ãã³ãã¯ããŒãªã³ã°ããŒã«
- åºæ¬æ©èœã䜿çšããã«ã¯APIããŒã¯äžèŠ
- APIããŒã䜿çšãããšããé«ãã¢ã¯ã»ã¹ã¬ãŒãå¶éãé©çšãããŸã
- 詳现ã«ã€ããŠã¯ ãåç
§ããŠãã ãã
- **InfoQuest**ïŒæšå¥šïŒïŒBytePlusãéçºããAIæé©åã®ã€ã³ããªãžã§ã³ãæ€çŽ¢ãšã¯ããŒãªã³ã°ããŒã«ã»ãã
- `.env`ãã¡ã€ã«ã«`INFOQUEST_API_KEY`ãå¿
èŠ
- èšå®å¯èœãªã¯ããŒãªã³ã°ãã©ã¡ãŒã¿ãæäŸ
- ã«ã¹ã¿ã ã¿ã€ã ã¢ãŠãèšå®ããµããŒã
- ãã匷åãªã³ã³ãã³ãæœåºæ©èœãæäŸ
- 詳现ã«ã€ããŠã¯ ãåç
§ããŠãã ãã
ã奜ã¿ã®ã¯ããŒãªã³ã°ããŒã«ãèšå®ããã«ã¯ã`conf.yaml`ãã¡ã€ã«ã§ä»¥äžãèšå®ããŸãïŒ
```yaml
CRAWLER_ENGINE:
# ãšã³ãžã³ã¿ã€ãïŒ"jina"ïŒããã©ã«ãïŒãŸã㯠"infoquest"
engine: infoquest
```
## ç¹åŸŽ
### ã³ã¢æ©èœ
- ð€ **LLMçµ±å**
- [litellm](https://docs.litellm.ai/docs/providers)ãéããŠã»ãšãã©ã®ã¢ãã«ã®çµ±åããµããŒã
- Qwenãªã©ã®ãªãŒãã³ãœãŒã¹ã¢ãã«ããµããŒã
- OpenAIäºæã®APIã€ã³ã¿ãŒãã§ãŒã¹
- ç°ãªãã¿ã¹ã¯ã®è€éãã«å¯Ÿå¿ãããã«ããã£ã¢LLMã·ã¹ãã
### ããŒã«ãš MCP çµ±å
- ð **æ€çŽ¢ãšååŸ**
- TavilyãInfoQuestãBrave Searchãªã©ãéããWebæ€çŽ¢
- JinaãšInfoQuestã䜿çšããã¯ããŒãªã³ã°
- é«åºŠãªã³ã³ãã³ãæœåº
- ð **MCPã·ãŒã ã¬ã¹çµ±å**
- ãã©ã€ããŒããã¡ã€ã³ã¢ã¯ã»ã¹ããã¬ããžã°ã©ããWebãã©ãŠãžã³ã°ãªã©ã®æ©èœãæ¡åŒµ
- 倿§ãªç ç©¶ããŒã«ã𿹿³è«ã®çµ±åãä¿é²
### 人éãšã®åå
- ð§ **人éåå åã«ãŒã**
- èªç¶èšèªã䜿çšããç ç©¶èšç»ã®å¯Ÿè©±çä¿®æ£ããµããŒã
- ç ç©¶èšç»ã®èªåæ¿èªããµããŒã
- ð **ã¬ããŒãåŸç·šé**
- Notionã©ã€ã¯ãªãããã¯ç·šéããµããŒã
- AIæ¯æŽã«ããæŽç·Žãæã®ççž®ãæ¡åŒµãªã©ã®AIæ¹è¯ãå¯èœã«
- [tiptap](https://tiptap.dev/)ãæŽ»çš
### ã³ã³ãã³ãäœæ
- ðïž **ããããã£ã¹ããšãã¬ãŒã³ããŒã·ã§ã³çæ**
- AIé§åã®ããããã£ã¹ãã¹ã¯ãªããçæãšé³å£°åæ
- ã·ã³ãã«ãªPowerPointãã¬ãŒã³ããŒã·ã§ã³ã®èªåäœæ
- ã«ã¹ã¿ãã€ãºå¯èœãªãã³ãã¬ãŒãã§åå¥ã®ã³ã³ãã³ãã«å¯Ÿå¿
## ã¢ãŒããã¯ãã£
DeerFlow ã¯ãèªåç ç©¶ãšã³ãŒãåæã®ããã®ã¢ãžã¥ã©ãŒãªãã«ããšãŒãžã§ã³ãã·ã¹ãã ã¢ãŒããã¯ãã£ãå®è£
ããŠããŸããã·ã¹ãã 㯠LangGraph äžã«æ§ç¯ãããã³ã³ããŒãã³ããæç¢ºã«å®çŸ©ãããã¡ãã»ãŒãžããã·ã³ã°ã·ã¹ãã ãéããŠéä¿¡ããæè»ãªç¶æ
ããŒã¹ã®ã¯ãŒã¯ãããŒãå®çŸããŠããŸãã

> [deerflow.tech](https://deerflow.tech/#multi-agent-architecture)ã§ã©ã€ãã§ç¢ºèªã§ããŸã
ã·ã¹ãã ã¯ä»¥äžã®ã³ã³ããŒãã³ããå«ãåçåãããã¯ãŒã¯ãããŒãæ¡çšããŠããŸãïŒ
1. **ã³ãŒãã£ããŒã¿ãŒ**ïŒã¯ãŒã¯ãããŒã®ã©ã€ããµã€ã¯ã«ã管çãããšã³ããªãŒãã€ã³ã
- ãŠãŒã¶ãŒå
¥åã«åºã¥ããŠç ç©¶ããã»ã¹ãéå§
- é©åãªã¿ã€ãã³ã°ã§ãã©ã³ããŒã«ã¿ã¹ã¯ãå§èš
- ãŠãŒã¶ãŒãšã·ã¹ãã éã®äž»èŠãªã€ã³ã¿ãŒãã§ãŒã¹ãšããŠæ©èœ
2. **ãã©ã³ããŒ**ïŒã¿ã¹ã¯åè§£ãšèšç»ã®ããã®æŠç¥çã³ã³ããŒãã³ã
- ç ç©¶ç®æšãåæããæ§é åãããå®è¡èšç»ãäœæ
- ååãªã³ã³ããã¹ããå©çšå¯èœãããããªãç ç©¶ãå¿
èŠãã倿
- ç ç©¶ãããŒã管çããæçµã¬ããŒãçæã®ã¿ã€ãã³ã°ã決å®
3. **ç ç©¶ããŒã **ïŒèšç»ãå®è¡ããå°éãšãŒãžã§ã³ãã®éåïŒ
- **ç ç©¶è
**ïŒWeb æ€çŽ¢ãšã³ãžã³ãã¯ããŒãªã³ã°ãããã«ã¯ MCP ãµãŒãã¹ãªã©ã®ããŒã«ã䜿çšã㊠Web æ€çŽ¢ãšæ
å ±åéãè¡ãã
- **ã³ãŒããŒ**ïŒPython REPL ããŒã«ã䜿çšããŠã³ãŒãåæãå®è¡ãæè¡çã¿ã¹ã¯ãåŠçããã
åãšãŒãžã§ã³ãã¯èªåã®åœ¹å²ã«æé©åãããç¹å®ã®ããŒã«ã«ã¢ã¯ã»ã¹ã§ããLangGraph ãã¬ãŒã ã¯ãŒã¯å
ã§åäœãã
4. **ã¬ããŒã¿ãŒ**ïŒç ç©¶åºåã®æçµæ®µéããã»ããµ
- ç ç©¶ããŒã ã®èª¿æ»çµæãéçŽ
- åéããæ
å ±ãåŠçããã³æ§é å
- å
æ¬çãªç ç©¶ã¬ããŒããçæ
## ããã¹ãèªã¿äžãçµ±å
DeerFlowã«ã¯çŸåšãç ç©¶ã¬ããŒããé³å£°ã«å€æã§ããããã¹ãèªã¿äžãïŒTTSïŒæ©èœãå«ãŸããŠããŸãããã®æ©èœã¯ç«å±±åŒæTTS APIã䜿çšããŠé«å質ãªããã¹ããªãŒãã£ãªãçæããŸããé床ãé³éãããããªã©ã®ç¹æ§ãã«ã¹ã¿ãã€ãºå¯èœã§ãã
### TTS APIã®äœ¿çš
`/api/tts`ãšã³ããã€ã³ãããTTSæ©èœã«ã¢ã¯ã»ã¹ã§ããŸãïŒ
```bash
# curlã䜿çšããAPIåŒã³åºãäŸ
curl --location 'http://localhost:8000/api/tts' \
--header 'Content-Type: application/json' \
--data '{
"text": "ããã¯ããã¹ãèªã¿äžãæ©èœã®ãã¹ãã§ãã",
"speed_ratio": 1.0,
"volume_ratio": 1.0,
"pitch_ratio": 1.0
}' \
--output speech.mp3
```
## éçº
### ãã¹ã
ãã¹ãã¹ã€ãŒãã®å®è¡ïŒ
```bash
# ãã¹ãŠã®ãã¹ããå®è¡
make test
# ç¹å®ã®ãã¹ããã¡ã€ã«ãå®è¡
pytest tests/integration/test_workflow.py
# ã«ãã¬ããžãã¹ããå®è¡
make coverage
```
### ã³ãŒãå質
```bash
# ã³ãŒããã§ãã¯ãå®è¡
make lint
# ã³ãŒãããã©ãŒããã
make format
```
### LangGraph Studio ã«ãããããã°
DeerFlow ã¯ã¯ãŒã¯ãããŒã¢ãŒããã¯ãã£ãšã㊠LangGraph ã䜿çšããŠããŸããLangGraph Studio ã䜿çšããŠã¯ãŒã¯ãããŒããªã¢ã«ã¿ã€ã ã§ãããã°ããã³å¯èŠåã§ããŸãã
#### ããŒã«ã«ã§ LangGraph Studio ãå®è¡
DeerFlow ã«ã¯`langgraph.json`èšå®ãã¡ã€ã«ãå«ãŸããŠãããããã LangGraph Studio ã®ã°ã©ãæ§é ãšäŸåé¢ä¿ãå®çŸ©ããŠããŸãããã®ãã¡ã€ã«ã¯ãããžã§ã¯ãã§å®çŸ©ãããã¯ãŒã¯ãããŒã°ã©ããæãã`.env`ãã¡ã€ã«ããç°å¢å€æ°ãèªåçã«èªã¿èŸŒã¿ãŸãã
##### Mac
```bash
# uvããã±ãŒãžãããŒãžã£ããªãå Žåã¯ã€ã³ã¹ããŒã«
curl -LsSf https://astral.sh/uv/install.sh | sh
# äŸåé¢ä¿ãã€ã³ã¹ããŒã«ãLangGraphãµãŒããŒãéå§
uvx --refresh --from "langgraph-cli[inmem]" --with-editable . --python 3.12 langgraph dev --allow-blocking
```
##### Windows / Linux
```bash
# äŸåé¢ä¿ãã€ã³ã¹ããŒã«
pip install -e .
pip install -U "langgraph-cli[inmem]"
# LangGraphãµãŒããŒãéå§
langgraph dev
```
LangGraphãµãŒããŒãéå§ãããšã端æ«ã«ããã€ãã®URLã衚瀺ãããŸãïŒ
- API:
- Studio UI:
- APIããã¥ã¡ã³ã:
- API:
- Studio UI:
- APIããã¥ã¡ã³ã:
ãã©ãŠã¶ã§ Studio UI ãªã³ã¯ãéããŠãããã°ã€ã³ã¿ãŒãã§ãŒã¹ã«ã¢ã¯ã»ã¹ããŸãã
#### LangGraph Studio ã®äœ¿çš
Studio UI ã§ã¯ã次ã®ããšãã§ããŸãïŒ
1. ã¯ãŒã¯ãããŒã°ã©ããå¯èŠåããã³ã³ããŒãã³ãã®æ¥ç¶æ¹æ³ã確èª
2. å®è¡ããªã¢ã«ã¿ã€ã ã§è¿œè·¡ããããŒã¿ãã·ã¹ãã å
ãã©ã®ããã«æµããããçè§£
3. ã¯ãŒã¯ãããŒã®åã¹ãããã®ç¶æ
ãæ€æ»
4. åã³ã³ããŒãã³ãã®å
¥åãšåºåãæ€æ»ããŠåé¡ããããã°
5. èšç»æ®µéã§ãã£ãŒãããã¯ãæäŸããŠç ç©¶èšç»ãæŽç·Ž
Studio UIã§ç ç©¶ãããã¯ãéä¿¡ãããšã次ãå«ãå
šã¯ãŒã¯ãããŒå®è¡ããã»ã¹ãèŠãããšãã§ããŸãïŒ
- ç ç©¶èšç»ãäœæããèšç»æ®µé
- èšç»ãä¿®æ£ã§ãããã£ãŒãããã¯ã«ãŒã
- åã»ã¯ã·ã§ã³ã®ç ç©¶ãšå·ç段é
- æçµã¬ããŒãçæ
### LangSmith ãã¬ãŒã¹ã®æå¹å
DeerFlow 㯠LangSmith ãã¬ãŒã¹æ©èœããµããŒãããŠãããã¯ãŒã¯ãããŒã®ãããã°ãšã¢ãã¿ãªã³ã°ã«åœ¹ç«ã¡ãŸããLangSmith ãã¬ãŒã¹ãæå¹ã«ããã«ã¯ïŒ
1. `.env` ãã¡ã€ã«ã«æ¬¡ã®èšå®ãããããšã確èªããŠãã ããïŒ`.env.example` ãåç
§ïŒïŒ
```bash
LANGSMITH_TRACING=true
LANGSMITH_ENDPOINT="https://api.smith.langchain.com"
LANGSMITH_API_KEY="xxx"
LANGSMITH_PROJECT="xxx"
```
2. 次ã®ã³ãã³ããå®è¡ã㊠LangSmith ãã¬ãŒã¹ãéå§ããŸãïŒ
```bash
langgraph dev
```
ããã«ãããLangGraph Studio ã§ãã¬ãŒã¹å¯èŠåãæå¹ã«ãªãããã¬ãŒã¹ãã¢ãã¿ãªã³ã°ãšåæã®ããã« LangSmith ã«éä¿¡ãããŸãã
## Docker
ãã®ãããžã§ã¯ã㯠Docker ã§ãå®è¡ã§ããŸãã
ãŸãã以äžã®[èšå®](#èšå®)ã»ã¯ã·ã§ã³ãèªãã§ãã ããã`.env`ãš`.conf.yaml`ãã¡ã€ã«ãæºåã§ããŠããããšã確èªããŠãã ããã
次ã«ãç¬èªã® Web ãµãŒããŒã® Docker ã€ã¡ãŒãžããã«ãããŸãïŒ
```bash
docker build -t deer-flow-api .
```
æåŸã«ãWeb ãµãŒããŒãå®è¡ãã Docker ã³ã³ãããèµ·åããŸãïŒ
```bash
# deer-flow-api-appãåžæã®ã³ã³ããåã«çœ®ãæããŠãã ãã
# ãµãŒããŒãèµ·åããŠlocalhost:8000ã«ãã€ã³ã
docker run -d -t -p 127.0.0.1:8000:8000 --env-file .env --name deer-flow-api-app deer-flow-api
# ãµãŒããŒã忢
docker stop deer-flow-api-app
```
### Docker Compose
ãã®ãããžã§ã¯ã㯠docker compose ã§ãèšå®ã§ããŸãïŒ
```bash
# dockerã€ã¡ãŒãžããã«ã
docker compose build
# ãµãŒããŒãèµ·å
docker compose up
```
> [!WARNING]
> DeerFlow ãæ¬çªç°å¢ã«ãããã€ããå Žåã¯ããŠã§ããµã€ãã«èªèšŒã远å ããMCPServer ãš Python Repl ã®ã»ãã¥ãªãã£ãã§ãã¯ãè©äŸ¡ããŠãã ããã
## ããã¹ãèªã¿äžãçµ±å
DeerFlow ã«ã¯çŸåšãç ç©¶ã¬ããŒããé³å£°ã«å€æã§ããããã¹ãèªã¿äžãïŒTTSïŒæ©èœãå«ãŸããŠããŸãããã®æ©èœã¯ç«å±±åŒæ TTS API ã䜿çšããŠé«å質ãªããã¹ããªãŒãã£ãªãçæããŸããé床ãé³éãããããªã©ã®ç¹æ§ãã«ã¹ã¿ãã€ãºå¯èœã§ãã
### TTS API ã®äœ¿çš
`/api/tts`ãšã³ããã€ã³ããã TTS æ©èœã«ã¢ã¯ã»ã¹ã§ããŸãïŒ
```bash
# curlã䜿çšããAPIåŒã³åºãäŸ
curl --location 'http://localhost:8000/api/tts' \
--header 'Content-Type: application/json' \
--data '{
"text": "ããã¯ããã¹ãèªã¿äžãæ©èœã®ãã¹ãã§ãã",
"speed_ratio": 1.0,
"volume_ratio": 1.0,
"pitch_ratio": 1.0
}' \
--output speech.mp3
```
## äŸ
以äžã®äŸã¯ DeerFlow ã®æ©èœã瀺ããŠããŸãïŒ
### ç ç©¶ã¬ããŒã
1. **OpenAI Sora ã¬ããŒã** - OpenAI ã® Sora AI ããŒã«ã®åæ
- æ©èœãã¢ã¯ã»ã¹æ¹æ³ãããã³ãããšã³ãžãã¢ãªã³ã°ãå¶éãå«ççèæ
®ã«ã€ããŠè°è«
- [å®å
šãªã¬ããŒããèŠã](examples/openai_sora_report.md)
2. **Google ã® Agent to Agent ãããã³ã«ã¬ããŒã** - Google ã® Agent to AgentïŒA2AïŒãããã³ã«ã®æŠèŠ
- AI ãšãŒãžã§ã³ãéä¿¡ã«ããã圹å²ãšãAnthropic ã® Model Context ProtocolïŒMCPïŒãšã®é¢ä¿ã«ã€ããŠè°è«
- [å®å
šãªã¬ããŒããèŠã](examples/what_is_agent_to_agent_protocol.md)
3. **MCP ãšã¯äœãïŒ** - è€æ°ã®ã³ã³ããã¹ãã«ããããMCPããšããçšèªã®å
æ¬çåæ
- AI ã«ããã Model Context ProtocolãååŠã«ããã Monocalcium Phosphateãé»åå·¥åŠã«ããã Micro-channel Plate ãæ¢ã
- [å®å
šãªã¬ããŒããèŠã](examples/what_is_mcp.md)
4. **ãããã³ã€ã³äŸ¡æ Œå€å** - æè¿ã®ãããã³ã€ã³äŸ¡æ Œååã®åæ
- åžå ŽååãèŠå¶ã®åœ±é¿ããã¯ãã«ã«ææšã®èª¿æ»
- æŽå²çããŒã¿ã«åºã¥ãæèš
- [å®å
šãªã¬ããŒããèŠã](examples/bitcoin_price_fluctuation.md)
5. **LLM ãšã¯äœãïŒ** - å€§èŠæš¡èšèªã¢ãã«ã®è©³çŽ°ãªæ¢æ±
- ã¢ãŒããã¯ãã£ããã¬ãŒãã³ã°ãå¿çšãå«ççèæ
®ã«ã€ããŠè°è«
- [å®å
šãªã¬ããŒããèŠã](examples/what_is_llm.md)
6. **Claude ã䜿ã£ã深局ç ç©¶ã®æ¹æ³ã¯ïŒ** - 深局ç ç©¶ã§ã® Claude ã®äœ¿çšã«é¢ãããã¹ããã©ã¯ãã£ã¹ãšã¯ãŒã¯ãããŒ
- ããã³ãããšã³ãžãã¢ãªã³ã°ãããŒã¿åæãä»ã®ããŒã«ãšã®çµ±å
- [å®å
šãªã¬ããŒããèŠã](examples/how_to_use_claude_deep_research.md)
7. **å»çã«ããã AI æ¡çšïŒåœ±é¿èŠå ** - å»çã«ããã AI æ¡çšã«åœ±é¿ããèŠå ã®åæ
- AI ãã¯ãããžãŒãããŒã¿å質ãå«ççèæ
®ãçµæžçè©äŸ¡ãçµç¹ã®æºåç¶æ³ãããžã¿ã«ã€ã³ãã©ã«ã€ããŠè°è«
- [å®å
šãªã¬ããŒããèŠã](examples/AI_adoption_in_healthcare.md)
8. **éåã³ã³ãã¥ãŒãã£ã³ã°ã®æå·åŠãžã®åœ±é¿** - éåã³ã³ãã¥ãŒãã£ã³ã°ã®æå·åŠãžã®åœ±é¿ã®åæ
- å€å
žçæå·ã®è匱æ§ããã¹ãéåæå·åŠãèéåæå·ãœãªã¥ãŒã·ã§ã³ã«ã€ããŠè°è«
- [å®å
šãªã¬ããŒããèŠã](examples/Quantum_Computing_Impact_on_Cryptography.md)
9. **ã¯ãªã¹ãã£ã¢ãŒãã»ãããŠãã®ããã©ãŒãã³ã¹ãã€ã©ã€ã** - ã¯ãªã¹ãã£ã¢ãŒãã»ãããŠãã®ããã©ãŒãã³ã¹ãã€ã©ã€ãã®åæ
- 圌ã®ãã£ãªã¢éæãåœéãŽãŒã«ãããŸããŸãªå€§äŒã§ã®ããã©ãŒãã³ã¹ã«ã€ããŠè°è«
- [å®å
šãªã¬ããŒããèŠã](examples/Cristiano_Ronaldo's_Performance_Highlights.md)
ãããã®äŸãå®è¡ããããç¬èªã®ç ç©¶ã¬ããŒããäœæãããããã«ã¯ã次ã®ã³ãã³ãã䜿çšã§ããŸãïŒ
```bash
# ç¹å®ã®ã¯ãšãªã§å®è¡
uv run main.py "å»çã«ãããAIæ¡çšã«åœ±é¿ããèŠå ã¯äœãïŒ"
# ã«ã¹ã¿ã èšç»ãã©ã¡ãŒã¿ã§å®è¡
uv run main.py --max_plan_iterations 3 "éåã³ã³ãã¥ãŒãã£ã³ã°ã¯æå·åŠã«ã©ã®ããã«åœ±é¿ãããïŒ"
# çµã¿èŸŒã¿è³ªåã䜿çšããã€ã³ã¿ã©ã¯ãã£ãã¢ãŒãã§å®è¡
uv run main.py --interactive
# ãŸãã¯åºæ¬çãªã€ã³ã¿ã©ã¯ãã£ãããã³ããã§å®è¡
uv run main.py
# å©çšå¯èœãªãã¹ãŠã®ãªãã·ã§ã³ã衚瀺
uv run main.py --help
```
### ã€ã³ã¿ã©ã¯ãã£ãã¢ãŒã
ã¢ããªã±ãŒã·ã§ã³ã¯çŸåšãè±èªãšäžåœèªã®çµã¿èŸŒã¿è³ªåã䜿çšããã€ã³ã¿ã©ã¯ãã£ãã¢ãŒãããµããŒãããŠããŸãïŒ
1. ã€ã³ã¿ã©ã¯ãã£ãã¢ãŒããéå§ïŒ
```bash
uv run main.py --interactive
```
2. 奜ã¿ã®èšèªïŒEnglish ãŸã㯠ChineseïŒãéžæ
3. çµã¿èŸŒã¿è³ªåãªã¹ãããéžæããããç¬èªã®è³ªåãæç€ºãããªãã·ã§ã³ãéžæ
4. ã·ã¹ãã ã質åãåŠçããå
æ¬çãªç ç©¶ã¬ããŒããçæ
### 人éåå åã«ãŒã
DeerFlow ã«ã¯äººéåå åã«ãŒãã¡ã«ããºã ãå«ãŸããŠãããç ç©¶èšç»ãå®è¡ããåã«ã¬ãã¥ãŒãç·šéãæ¿èªããããšãã§ããŸãïŒ
1. **èšç»ã¬ãã¥ãŒ**ïŒäººéåå åã«ãŒããæå¹ãªå Žåãã·ã¹ãã ã¯å®è¡åã«çæãããç ç©¶èšç»ã衚瀺
2. **ãã£ãŒãããã¯æäŸ**ïŒæ¬¡ã®ããšãã§ããŸãïŒ
- `[ACCEPTED]`ãšè¿ä¿¡ããŠèšç»ãæ¿èª
- ãã£ãŒãããã¯ãæäŸããŠèšç»ãç·šéïŒäŸïŒ`[EDIT PLAN] æè¡å®è£
ã«é¢ããã¹ããããããã«è¿œå ãã`ïŒ
- ã·ã¹ãã ã¯ãã£ãŒãããã¯ãçµ±åããä¿®æ£ãããèšç»ãçæ
3. **èªåæ¿èª**ïŒã¬ãã¥ãŒããã»ã¹ãã¹ãããããããã«èªåæ¿èªãæå¹ã«ã§ããŸãïŒ
4. **APIçµ±å**ïŒAPIã䜿çšããå Žåã`feedback`ãã©ã¡ãŒã¿ã§ãã£ãŒãããã¯ãæäŸã§ããŸãïŒ
```json
{
"messages": [
{ "role": "user", "content": "éåã³ã³ãã¥ãŒãã£ã³ã°ãšã¯äœã§ããïŒ" }
],
"thread_id": "my_thread_id",
"auto_accepted_plan": false,
"feedback": "[EDIT PLAN] éåã¢ã«ãŽãªãºã ã«ã€ããŠãã£ãšå«ãã"
}
```
### ã³ãã³ãã©ã€ã³åŒæ°
ã¢ããªã±ãŒã·ã§ã³ã¯åäœãã«ã¹ã¿ãã€ãºããããã®è€æ°ã®ã³ãã³ãã©ã€ã³åŒæ°ããµããŒãããŠããŸãïŒ
- **query**ïŒåŠçããç ç©¶ã¯ãšãªïŒè€æ°ã®åèªã§ãå¯ïŒ
- **--interactive**ïŒçµã¿èŸŒã¿è³ªåã䜿çšããã€ã³ã¿ã©ã¯ãã£ãã¢ãŒãã§å®è¡
- **--max_plan_iterations**ïŒæå€§èšç»ãµã€ã¯ã«æ°ïŒããã©ã«ãïŒ1ïŒ
- **--max_step_num**ïŒç ç©¶èšç»ã®æå€§ã¹ãããæ°ïŒããã©ã«ãïŒ3ïŒ
- **--debug**ïŒè©³çްãªãããã°ãã°ãæå¹å
## ãããã質å
詳现ã«ã€ããŠã¯[FAQ.md](docs/FAQ.md)ãåç
§ããŠãã ããã
## ã©ã€ã»ã³ã¹
ãã®ãããžã§ã¯ãã¯ãªãŒãã³ãœãŒã¹ã§ããã[MIT ã©ã€ã»ã³ã¹](./LICENSE)ã«åŸã£ãŠããŸãã
## è¬èŸ
DeerFlow ã¯ãªãŒãã³ãœãŒã¹ã³ãã¥ããã£ã®çŽ æŽãããææã®äžã«æ§ç¯ãããŠããŸããDeerFlow ãå¯èœã«ãããã¹ãŠã®ãããžã§ã¯ããšè²¢ç®è
ã«æ·±ãæè¬ããŸããç§ãã¡ã¯ç¢ºãã«å·šäººã®è©ã®äžã«ç«ã£ãŠããŸãã
以äžã®ãããžã§ã¯ãã«å¿ããã®æè¬ã衚ããŸãïŒ
- **[LangChain](https://github.com/langchain-ai/langchain)**ïŒåœŒãã®åªãããã¬ãŒã ã¯ãŒã¯ã¯ãã·ãŒã ã¬ã¹ãªçµ±åãšæ©èœæ§ãå®çŸãã LLM çžäºäœçšãšãã§ãŒã³ã«åãäžããŠããŸãã
- **[LangGraph](https://github.com/langchain-ai/langgraph)**ïŒãã«ããšãŒãžã§ã³ããªãŒã±ã¹ãã¬ãŒã·ã§ã³ãžã®é©æ°çã¢ãããŒãã¯ãDeerFlow ã®è€éãªã¯ãŒã¯ãããŒã®å®çŸã«äžå¯æ¬ ã§ããã
ãããã®ãããžã§ã¯ãã¯ãªãŒãã³ãœãŒã¹ã³ã©ãã¬ãŒã·ã§ã³ã®å€é©åã瀺ããŠããããã®åºç€ã®äžã«æ§ç¯ã§ããããšãèªãã«æããŸãã
### äž»èŠè²¢ç®è
`DeerFlow`ã®äž»èŠãªäœè
ã«å¿ããæè¬ããŸãã圌ãã®ããžã§ã³ãæ
ç±ãç®èº«ããã®ãããžã§ã¯ããå®çŸããŸããïŒ
- **[Daniel Walnut](https://github.com/hetaoBackend/)**
- **[Henry Li](https://github.com/magiccube/)**
ããªãã®æºãããªãåãçµã¿ãšå°éç¥èã DeerFlow ã®æåãæšé²ããŠããŸãããã®æ
ããªãŒãããŠããã ãå
æ ã§ãã
## ã¹ã¿ãŒå±¥æŽ
[](https://star-history.com/#bytedance/deer-flow&Date)