|
--- |
|
title: MindSearch |
|
emoji: ๐ |
|
colorFrom: purple |
|
colorTo: yellow |
|
sdk: gradio |
|
sdk_version: 5.7.1 |
|
app_file: app.py |
|
pinned: false |
|
--- |
|
|
|
<div id="top"></div> |
|
|
|
<div align="center"> |
|
|
|
<img src="assets/logo.svg" style="width: 50%; height: auto;"> |
|
|
|
[๐ Paper](https://arxiv.org/abs/2407.20183) | [๐ป Demo](https://internlm-chat.intern-ai.org.cn/) |
|
|
|
English | [็ฎไฝไธญๆ](README_zh-CN.md) |
|
|
|
<https://github.com/user-attachments/assets/44ffe4b9-be26-4b93-a77b-02fed16e33fe> |
|
|
|
</div> |
|
</p> |
|
|
|
## โจ MindSearch: Mimicking Human Minds Elicits Deep AI Searcher |
|
|
|
## ๐
Changelog |
|
|
|
- 2024/11/05: ๐ฅณ MindSearch is now deployed on Puyu! ๐ [Try it](https://internlm-chat.intern-ai.org.cn/) ๐ |
|
- Refactored the agent module based on [Lagent v0.5](https://github.com/InternLM/lagent) for better performance in concurrency. |
|
- Improved the UI to embody the simultaneous multi-query search. |
|
|
|
|
|
## โฝ๏ธ Build Your Own MindSearch |
|
|
|
### Step1: Dependencies Installation |
|
|
|
```bash |
|
git clone https://github.com/InternLM/MindSearch |
|
cd MindSearch |
|
pip install -r requirements.txt |
|
``` |
|
|
|
### Step2: Setup Environment Variables |
|
|
|
Before setting up the API, you need to configure environment variables. Rename the `.env.example` file to `.env` and fill in the required values. |
|
|
|
```bash |
|
mv .env.example .env |
|
# Open .env and add your keys and model configurations |
|
``` |
|
|
|
### Step3: Setup MindSearch API |
|
|
|
Setup FastAPI Server. |
|
|
|
```bash |
|
python -m mindsearch.app --lang en --model_format internlm_silicon --search_engine DuckDuckGoSearch --asy |
|
``` |
|
|
|
- `--lang`: language of the model, `en` for English and `cn` for Chinese. |
|
- `--model_format`: format of the model. |
|
- `internlm_server` for InternLM2.5-7b-chat with local server. (InternLM2.5-7b-chat has been better optimized for Chinese.) |
|
- `gpt4` for GPT4. |
|
if you want to use other models, please modify [models](./mindsearch/agent/models.py) |
|
- `--search_engine`: Search engine. |
|
- `DuckDuckGoSearch` for search engine for DuckDuckGo. |
|
- `BingSearch` for Bing search engine. |
|
- `BraveSearch` for Brave search web api engine. |
|
- `GoogleSearch` for Google Serper web search api engine. |
|
- `TencentSearch` for Tencent search api engine. |
|
|
|
Please set your Web Search engine API key as the `WEB_SEARCH_API_KEY` environment variable unless you are using `DuckDuckGo`, or `TencentSearch` that requires secret id as `TENCENT_SEARCH_SECRET_ID` and secret key as `TENCENT_SEARCH_SECRET_KEY`. |
|
- `--asy`: deploy asynchronous agents. |
|
|
|
### Step4: Setup MindSearch Frontend |
|
|
|
Providing following frontend interfaces, |
|
|
|
- React |
|
|
|
First configurate the backend URL for Vite proxy. |
|
|
|
```bash |
|
HOST="127.0.0.1" # modify as you need |
|
PORT=8002 |
|
sed -i -r "s/target:\s*\"\"/target: \"${HOST}:${PORT}\"/" frontend/React/vite.config.ts |
|
``` |
|
|
|
```bash |
|
# Install Node.js and npm |
|
# for Ubuntu |
|
sudo apt install nodejs npm |
|
|
|
# for windows |
|
# download from https://nodejs.org/zh-cn/download/prebuilt-installer |
|
|
|
# Install dependencies |
|
|
|
cd frontend/React |
|
npm install |
|
npm start |
|
``` |
|
|
|
Details can be found in [React](./frontend/React/README.md) |
|
|
|
- Gradio |
|
|
|
```bash |
|
python frontend/mindsearch_gradio.py |
|
``` |
|
|
|
- Streamlit |
|
|
|
```bash |
|
streamlit run frontend/mindsearch_streamlit.py |
|
``` |
|
|
|
## ๐ Change Web Search API |
|
|
|
To use a different type of web search API, modify the `searcher_type` attribute in the `searcher_cfg` located in `mindsearch/agent/__init__.py`. Currently supported web search APIs include: |
|
|
|
- `GoogleSearch` |
|
- `DuckDuckGoSearch` |
|
- `BraveSearch` |
|
- `BingSearch` |
|
- `TencentSearch` |
|
|
|
For example, to change to the Brave Search API, you would configure it as follows: |
|
|
|
```python |
|
BingBrowser( |
|
searcher_type='BraveSearch', |
|
topk=2, |
|
api_key=os.environ.get('BRAVE_API_KEY', 'YOUR BRAVE API') |
|
) |
|
``` |
|
|
|
## ๐ Using the Backend Without Frontend |
|
|
|
For users who prefer to interact with the backend directly, use the `backend_example.py` script. This script demonstrates how to send a query to the backend and process the response. |
|
|
|
```bash |
|
python backend_example.py |
|
``` |
|
|
|
Make sure you have set up the environment variables and the backend is running before executing the script. |
|
|
|
## ๐ Debug Locally |
|
|
|
```bash |
|
python -m mindsearch.terminal |
|
``` |
|
|
|
## ๐ License |
|
|
|
This project is released under the [Apache 2.0 license](LICENSE). |
|
|
|
## Citation |
|
|
|
If you find this project useful in your research, please consider cite: |
|
|
|
``` |
|
@article{chen2024mindsearch, |
|
title={MindSearch: Mimicking Human Minds Elicits Deep AI Searcher}, |
|
author={Chen, Zehui and Liu, Kuikun and Wang, Qiuchen and Liu, Jiangning and Zhang, Wenwei and Chen, Kai and Zhao, Feng}, |
|
journal={arXiv preprint arXiv:2407.20183}, |
|
year={2024} |
|
} |
|
``` |
|
|
|
## Our Projects |
|
|
|
Explore our additional research on large language models, focusing on LLM agents. |
|
|
|
- [Lagent](https://github.com/InternLM/lagent): A lightweight framework for building LLM-based agents |
|
- [AgentFLAN](https://github.com/InternLM/Agent-FLAN): An innovative approach for constructing and training with high-quality agent datasets (ACL 2024 Findings) |
|
- [T-Eval](https://github.com/open-compass/T-Eval): A Fine-grained tool utilization evaluation benchmark (ACL 2024) |
|
|