基于Python/FastAPI的InfiniWebSearch
项目简介
InfiniWebSearch是一个基于Megrez-3B-Instruct模型的Web搜索增强问答能力的演示项目。它集成了网络搜索工具,通过增强模型的问答能力来提供更准确的回答。
主要特性和功能
- 意图识别:模型自动决定何时调用搜索工具。
- 上下文理解:根据多轮对话生成合理的搜索关键词。
- 模型回答包含引用:回答内容可查明出处。
- 即插即用:通过系统提示控制WebSearch功能的开启或关闭。
安装使用步骤
环境准备
- 安装Python 3.10及以上版本。
- 安装
conda
环境管理工具。 - 安装必要的依赖库,如
requests
、fastapi
等。
运行步骤
启动网络搜索服务:
- 从Google Chrome Labs下载Chrome和Chromedriver,并解压到本地。
- 安装必要的系统依赖。
- 在Serper注册账户并获取
SERPER_API_KEY
,设置环境变量。 - 启动搜索服务并指定端口号。
cd infini_websearch/service wget https://storage.googleapis.com/chrome-for-testing-public/128.0.6613.86/linux64/chrome-linux64.zip wget https://storage.googleapis.com/chrome-for-testing-public/128.0.6613.86/linux64/chromedriver-linux64.zip unzip chrome-linux64.zip unzip chromedriver-linux64.zip sudo apt-get update sudo apt-get install -y \ libatk-bridge2.0-0 \ libatk1.0-0 \ libgconf-2-4 \ libnss3 \ libxss1 \ libappindicator1 \ libindicator7 \ libasound2 \ libxcomposite1 \ libxcursor1 \ libxdamage1 \ libxi6 \ libxtst6 \ libglib2.0-0 \ libpango1.0-0 \ libcups2 \ libxrandr2 \ libxrandr-dev \ libxkbcommon0 \ libgbm1 export SERPER_API_KEY=$YOUR_API_KEY python search_service.py --port 8021 --chrome ./chrome-linux64/chrome --chromedriver ./chromedriver-linux64/chromedriver
启动模型服务:
- 使用VLLM模型,设置模型路径和端口号。
- 在
server.py
中设置MODEL_SERVER_URL
和MODEL_NAME
。
python -m vllm.entrypoints.openai.api_server --served-model-name megrez --model $MODEL_PATH --port 8011 --max-seq-len 4096 --trust_remote_code
启动Gradio服务:
- 运行Gradio应用,指定模型路径和端口号。
python gradio_app.py -m $MODEL_PATH --port 7860
访问应用:
- 成功启动后,访问
http://localhost:7860/
即可使用。
- 成功启动后,访问
注意事项
- 修改
server.py
中的配置参数以适应你的环境。 - 根据实际情况调整模型的最大输出长度、搜索服务URL等参数。
- 确保Chrome和Chromedriver的路径正确,并在运行搜索服务时设置环境变量。
协议
本开源仓库的代码遵循Apache 2.0协议。