基于 Dify + vLLM + Qwen3 构建问答机器人

一、环境准备

  • 操作系统:Ubuntu 20.04/22.04(推荐),也可用其他 Linux
  • Python 3.8 及以上
  • 推荐有 NVIDIA GPU(如 A100, V100, 3090, 4090 等)

二、安装 vLLM 并加载 Qwen3

1.安装依赖

sudo apt update
sudo apt install python3-pip git -y
pip3 install --upgrade pip

2. 安装 vLLM

pip3 install vllm

 3. 下载 Qwen3 模型(以 Qwen1.5-7B-Chat 为例)

资源加速

export https_proxy=http://turbo.gpushare.com:30000 http_proxy=http://turbo.gpushare.com:30000
export https_proxy=http://turbo2.gpushare.com:30000 http_proxy=http://turbo2.gpushare.com:30000

下载 Qwen3 模型 👈

pip3 install huggingface_hub
python3 -c "from huggingface_hub import snapshot_download; snapshot_download(repo_id='Qwen/Qwen3-8B', local_dir='./Qwen3-8B')"



python3 -c "from huggingface_hub import snapshot_download; snapshot_download(repo_id='Qwen/Qwen3-4B', local_dir='./Qwen3-4B')"

 关闭资源加速

unset http_proxy && unset https_proxy

4. 启动 vLLM OpenAI API 服务

python3 -m vllm.entrypoints.openai.api_server --model Qwen3-8B --host 0.0.0.0 --port 8000 --dtype half

python3 -m vllm.entrypoints.openai.api_server --model Qwen3-4B --host 0.0.0.0 --port 8000 --dtype half

python3 -m vllm.entrypoints.openai.api_server \
  --model Qwen3-8B \
  --host 0.0.0.0 \
  --port 8000 \
  --dtype half \
  --gpu-memory-utilization 0.8 \
  --max-num-batched-tokens 2048 \
  --trust-remote-code

vLLM OpenAI API 服务已经成功启动了!从日志可以看到:

        服务器已经在 http://0.0.0.0:8000 上运行

        模型已经成功加载

        API 路由都已经正确配置(包括 /v1/chat/completions 等)

 先测试一下 vLLM 服务是否正常工作:

curl http://localhost:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "Qwen3-8B",
    "messages": [{"role": "user", "content": "你好"}]
  }'


curl http://localhost:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "Qwen3-4B",
    "messages": [{"role": "user", "content": "你好"}]
  }'

连通成功后效果如下: 

    三、 使用 tmux 来管理多个终端 

    首先安装 tmux(如果还没安装):

    apt-get install tmux

    创建一个新的 tmux 会话:

    tmux

     tmux 的基本操作(所有命令都是先按 Ctrl+b,松开后再按其他键):

    重要快捷键(先按 Ctrl+b,再按以下键):
    - c:创建新窗口
    - n:切换到下一个窗口
    - p:切换到上一个窗口
    - w:显示所有窗口列表
    - d:暂时断开会话(服务继续运行)
    - [:进入复制模式(可以查看历史输出,按 q 退出)
    - 数字键:直接切换到对应编号的窗口

    如果不小心退出了:

    # 重新连接到 tmux 会话
    tmux attach

    完整操作步骤:

    # 1. 启动 tmux
    tmux
    
    # 2. 在第一个窗口运行 vLLM 服务
    python3 -m vllm.entrypoints.openai.api_server --model Qwen3-8B --host 0.0.0.0 --port 8000 --dtype half
    
    # 3. 按 Ctrl+b,再按 c 创建新窗口
    
    # 4. 在新窗口中测试服务
    curl http://localhost:8000/v1/chat/completions \
      -H "Content-Type: application/json" \
      -d '{
        "model": "Qwen3-8B",
        "messages": [{"role": "user", "content": "你好"}]
      }'

    三、安装 Dify

     然后按照步骤安装 Dify,但有几点建议:

    注意事项:

    • 保持 vLLM 服务在运行状态(不要关闭那个终端)
    • 在新的终端窗口中运行 Dify 的安装步骤
    # 1. 创建新目录(可选,但建议)
    mkdir dify_app
    cd dify_app
    
    # 2. 克隆代码
    git clone https://github.com/langgenius/dify.git
    cd dify
    
    # 3. 建议创建虚拟环境(可选,但建议)
    python3 -m venv venv
    source venv/bin/activate
    
    # 4. 安装依赖
    pip3 install -r requirements.txt
    
    # 5. 配置环境变量
    cp .env.example .env
    # 编辑 .env 文件,添加:
    # OPENAI_API_BASE_URL=http://127.0.0.1:8000/v1
    # OPENAI_API_KEY=EMPTY
    # MODEL_PROVIDER=openai
    
    # 6. 启动 Dify
    python3 main.py

    安装依赖

    sudo apt-get update
    sudo apt-get install -y python3 python3-pip python3-venv git build-essential
    sudo apt-get install -y postgresql postgresql-contrib redis-server
    sudo apt-get install -y nodejs npm

    建议用 nvm 安装 Node.js 18.x(可选)务必在root或tmp下安装:

    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
    source ~/.bashrc
    nvm install 18
    nvm use 18

    准备数据库 

     启动 PostgreSQL 和 Redis

       sudo service postgresql start
       sudo service redis-server start

    创建数据库和用户(以 dify/dify 为例):

     sudo -u postgres psql

    现在的状态

    • PostgreSQL 和 Redis 服务都已启动,正常。
    • 你还在 PostgreSQL 的命令行界面(psql),但没有创建数据库和用户。

    正确操作方法

    我们需要在 postgres=# 提示符下依次输入(每条命令后回车):

    CREATE DATABASE dify;
    CREATE USER dify WITH PASSWORD 'dify';
    GRANT ALL PRIVILEGES ON DATABASE dify TO dify;
    \q
    • \q 用于退出 psql 命令行。

     如果你已经退出 psql,可以重新进入:

    sudo -u postgres psql

     

    克隆 Dify 源码并安装后端(请逐条执行)

    git clone https://github.com/langgenius/dify.git
    cd dify
    python3 -m venv venv
    source venv/bin/activate
    pip install --upgrade pip
    pip install -r requirements.txt

     Dify 项目结构近期有变化导致 requirements.txt被替代为~/dify/api 目录下 pyproject.toml 文件,这说明 Dify 后端现在采用了新的 Python 包管理方式(PEP 517/518 标准),通常用 pip 或 poetry、uv、pipx 等工具来安装依赖。

    因此我们使用 pip 安装依赖

    pip install .

    这会根据 pyproject.toml 自动安装所有依赖。

    如遇到报错:

    Apply to .bash_histor...

    × Cannot uninstall blinker 1.4

    ╰─> It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.

    可以用 --ignore-installed 参数强制安装:

    pip install . --ignore-installed blinker

    五、配置环境变量

    在 ~/dify 目录下手动创建 .env 文件,内容如下(根据你的数据库和 Redis 配置调整):

    # PostgreSQL
    DATABASE_URL=postgresql://dify:dify@localhost:5432/dify
    
    # Redis
    REDIS_URL=redis://localhost:6379/0
    
    # 端口
    PORT=5000
    
    # 其他可选配置
    # OPENAI_API_KEY=sk-xxx
    # 参考官方文档补充更多配置项

    六、初始化数据库 

    进入 api 目录

    cd ~/dify/api
    安装 uv(如果还没装)
    pip install uv
    安装依赖

    在 ~/dify/api 目录下执行:

    uv sync --dev
     复制并编辑 .env 文件

    如果 api 目录下没有 .env.example,你可以手动创建 .env 文件,内容参考前述建议(数据库、Redis、SECRET_KEY 等)。

    生成 SECRET_KEY:

    echo "SECRET_KEY=$(openssl rand -base64 42)" >> .env

     数据库迁移(初始化)

    在 ~/dify/api 目录下执行:

    uv run flask db upgrade

    这一步会自动根据你的 .env 配置连接数据库并初始化表结构。 

    查看 api 目录下的 README 或官方文档

    Dify 近期有较大结构调整,数据库迁移命令可能有变化。

    如果 flask db upgrade 依然不可用,可以尝试:

    flask db upgrade

    七、启动后端服务

    python3 main.py

     默认监听 5000 端口。

    八、安装并构建前端   

    cd web
    npm install
    npm run build

    构建完成后,静态文件会在 web/dist 目录。   

    九、启动前端服务

    你可以用 nginx 或 serve 工具托管 web/dist 静态文件。例如:

    npm install -g serve
    serve -s dist -l 3000

      现在前端服务在 3000 端口。

    十、访问和配置

    • 访问 http://localhost:3000 进入 Dify 前端
    • 注册账号,后台配置你的 vLLM+Qwen3 服务
    ### DIFYVLLM模型概述 DIFY是一个用于构建和部署大型语言模型的应用框架,支持多种类型的模型和服务化接口。该平台允许开发者轻松上传自己的预训练模型并提供API服务给其他应用调用[^1]。 对于VLLM(Very Large Language Model),这是一种特指超大规模参数的语言理解与生成类AI系统。这类模型通常具备强大的自然语言处理能力,在文本摘要、问答对话等方面表现出色。具体实现细节会因不同版本而有所差异[^2]。 ### 安装配置指南 为了能够在本地环境中运行这些工具,首先需要准备一台具有适当硬件条件的工作站或云实例,并按照官方文档完成环境搭建工作: #### 安装OLLAMA ```bash pip install ollama ``` 接着参照特定说明来启动服务端程序以及加载所需的权重文件,比如Qwen2:7B这样的预训练成果。 #### 设置Xinference 如果打算利用Xinference来进行更复杂的任务,则需额外执行如下命令获取对应资源包: ```bash git clone https://www.modelscope.cn/ai-modelscope/bge-reranker-v2-m3.git ``` 之后依照指引调整配置选项直至成功激活Web界面为止[^3]。 ### 实际操作案例 假设现在要测试一个简单的场景——基于已有的知识库回答用户提问。此时可以先通过浏览器访问`http://localhost:9997/`确认一切正常运作;再编写一段Python脚本来发起请求示例代码如下所示: ```python import requests url = "http://localhost:9997/v1/completions" data = { 'prompt': '你好世界', 'max_tokens': 50, } response = requests.post(url, json=data).json() print(response['choices'][0]['text']) ``` 此段落展示了如何发送HTTP POST消息至指定路径从而获得由目标引擎产生的回复内容。
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值