【从零搭建本地电商智能客服 Agent:Dify+Ollama+Qwen3.5 部署全流程】

本文针对开源电商智能客服 Agent 的部署与落地,提供一套基于 Docker 自托管 Dify + Ollama 本地大模型 + SQLite 商品数据库 的完整技术方案。该方案完全脱离 OpenAI 付费 API,以 Qwen3.5:4b 为核心模型,实现免费、离线、可定制的电商智能客服系统,解决了传统客服系统依赖付费接口、数据隐私风险高、部署成本高的痛点。文中详细记录了从 WSL2 环境配置、Dify 容器部署、Ollama 模型对接,到 Agent 业务逻辑实现的全流程,为个人开发者和中小企业提供了可直接复用的低成本智能客服落地方案。

一、引言

电商行业中,智能客服是降低人工成本、提升用户咨询效率的核心工具。传统方案多依赖第三方在线大模型 API,存在调用成本高、数据隐私泄露风险、网络依赖强等问题。

为解决上述痛点,本文基于 ReAct(思考 - 执行 - 反馈) 智能体框架,结合 Dify 低代码平台Ollama 本地模型运行时SQLite 轻量数据库,构建了一套完全本地部署的电商智能客服 Agent。该方案具备以下优势:

  1. 零调用成本:使用 Ollama 运行开源模型,无需支付 API 费用;
  2. 数据完全可控:所有对话数据、商品数据均存储在本地,无隐私泄露风险;
  3. 离线运行能力:模型部署在本地,断网环境下仍可正常提供服务;
  4. 低配置门槛:Qwen3.5:4b 模型对硬件要求低,普通笔记本即可流畅运行;
  5. 快速二次开发:基于 Dify 平台,可快速编排业务流程、扩展工具能力。

二、技术架构设计

本项目采用三层架构设计,从下到上分为数据存储层、模型调用层、智能体控制层,整体架构如下:

复制代码
┌─────────────────────────────────────────┐
│  用户交互层:Dify Web 界面/命令行        │
├─────────────────────────────────────────┤
│  智能体控制层:ReAct 流程调度、工具调用  │
├─────────────────────────────────────────┤
│  模型调用层:Ollama(Qwen3.5:4b)        │
├─────────────────────────────────────────┤
│  数据存储层:SQLite 商品库、促销文本库    │
└─────────────────────────────────────────┘

2.1 核心组件说明

  1. Dify 平台:提供低代码智能体编排能力,负责对话交互、流程控制、工具集成,同时提供可视化管理界面;
  2. Ollama 运行时:负责本地大模型的部署与调用,支持一键拉取、管理开源模型,提供 RESTful API 接口;
  3. Qwen3.5:4b 模型:通义千问开源大模型,4B 参数版本,兼顾性能与硬件门槛,支持对话、工具调用等任务;
  4. SQLite 数据库:轻量级关系型数据库,存储商品基础信息(名称、价格、描述、库存等),支持模糊查询;
  5. 工具模块:内置商品查询、价格计算、促销政策读取三类工具,为智能体提供业务能力支持。

三、部署环境准备

3.1 硬件与系统要求

  • 操作系统:Windows 10/11(x64 架构)
  • 处理器:Intel/AMD 双核及以上
  • 内存:至少 8GB(推荐 16GB,以保障模型流畅运行)
  • 存储:至少 10GB 空闲空间(含模型文件、Docker 镜像)

3.2 WSL2 环境配置

Docker 自托管 Dify 需要依赖 WSL2 环境,配置步骤如下:

  1. 下载并安装 WSL2 内核更新包 从微软官方下载适配 x64 架构的内核更新包:

    https://aka.ms/wsl2kernel 双击运行 .msi 文件,按提示完成安装。

  1. 启用并配置 WSL2 以管理员身份打开 PowerShell,执行以下命令:

运行成功:

3.3 Docker 环境部署

  1. 下载并安装 Docker Desktop,安装完成后启动程序;
  1. 配置 Docker 代理(如网络受限):
    • 进入 Settings → Resources → Proxies
    • 勾选 Noproxy
  2. 点击 Apply & Restart 重启 Docker 服务

四、Dify 平台部署与初始化

4.1 拉取并启动 Dify 容器

  1. 下载 Dify 社区版代码,进入 docker 目录;官方地址:https://dify.ai/
    官方中文地址: https://dify.ai/zh
    官方文档地址:https://docs.dify.ai/zh-hans

  2. 在目录地址栏输入 cmd 打开命令行,执行启动命令:

    复制代码
    docker compose up -d
  3. 等待所有容器启动,当所有服务状态显示为 Started/Healthy 时,部署完成。

如果出现网络不好可以换成个人热点

4.2 初始化 Dify 管理员账户

  1. 打开浏览器访问 http://localhost,进入初始化界面;
  2. 设置管理员邮箱、用户名和密码(密码需包含字母和数字,长度≥8 位);
  3. 完成初始化后,进入 Dify 管理后台。

五、Ollama 模型部署与对接

5.1 安装 Ollama 运行时

从 Ollama 官网下载 Windows 客户端并安装,安装完成后 Ollama 服务将默认在后台运行,监听 11434 端口。

5.2 拉取 Qwen3.5:4b 模型

打开命令行,执行以下命令拉取模型:

复制代码
ollama pull qwen3.5:4b

等待模型下载完成(约 3.2GB),下载进度可通过命令行实时查看。

5.3 在 Dify 中添加 Ollama 模型

  1. 进入 Dify 后台,点击 设置 → 模型供应商
  2. 找到 Ollama,点击「安装 / 配置」;
  3. 填写以下配置信息:
    • Base URLhttp://host.docker.internal:11434(Docker 部署的 Dify 需使用此地址访问宿主机 Ollama 服务);
    • API 密钥:留空(Ollama 默认无身份验证);
    • 模型类型:选择「对话」;
    • 模型上下文长度:填写 4096
    • 最大 token 上限:填写 4096
    • 是否支持 Vision:选择「否」。
  4. 点击「添加」,保存配置;
  5. 配置完成后,点击「获取模型列表」,即可看到 qwen3.5:4b 模型,点击启用该模型。

六、电商智能客服 Agent 实现

6.1 核心逻辑设计

本 Agent 基于 ReAct 框架 实现,核心流程如下:

  1. 用户发送商品咨询问题;
  2. Agent 调用 Ollama 模型,对问题进行分析,判断是否需要调用工具;
  3. 如需工具,自动调用内置工具(商品查询 / 价格计算 / 促销读取)获取结果;
  4. 工具结果反馈给模型,模型结合结果生成最终回复;
  5. 循环执行思考 - 执行 - 反馈流程(最多 20 次迭代,避免无效调用),直到生成最终答案。

6.2 数据存储层实现

使用 SQLite 数据库存储商品信息,核心表结构如下:

sql

复制代码
CREATE TABLE products (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL,
    description TEXT,
    material TEXT,
    usage TEXT,
    brand TEXT,
    price REAL NOT NULL,
    stock INTEGER DEFAULT 0
);

通过 init_db.py 脚本初始化数据库并插入测试商品数据:

sql 复制代码
import sqlite3

conn = sqlite3.connect('sports_inventory.db')
cursor = conn.cursor()

# 创建商品表
cursor.execute('''
CREATE TABLE IF NOT EXISTS products (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL,
    description TEXT,
    material TEXT,
    usage TEXT,
    brand TEXT,
    price REAL NOT NULL,
    stock INTEGER DEFAULT 0
)
''')

# 插入测试数据
test_products = [
    ("足球", "专业比赛用足球", "PU材质", "比赛/训练", "Nike", 199.0, 50),
    ("篮球", "室内外通用篮球", "橡胶+PU", "比赛/娱乐", "Spalding", 299.0, 30)
]
cursor.executemany('INSERT INTO products (name, description, material, usage, brand, price, stock) VALUES (?, ?, ?, ?, ?, ?, ?)', test_products)

conn.commit()
conn.close()

通过 init_db.py 脚本初始化数据库并插入测试商品数据:

sql 复制代码
import sqlite3

conn = sqlite3.connect('sports_inventory.db')
cursor = conn.cursor()

# 创建商品表
cursor.execute('''
CREATE TABLE IF NOT EXISTS products (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL,
    description TEXT,
    material TEXT,
    usage TEXT,
    brand TEXT,
    price REAL NOT NULL,
    stock INTEGER DEFAULT 0
)
''')

# 插入测试数据
test_products = [
    ("足球", "专业比赛用足球", "PU材质", "比赛/训练", "Nike", 199.0, 50),
    ("篮球", "室内外通用篮球", "橡胶+PU", "比赛/娱乐", "Spalding", 299.0, 30)
]
cursor.executemany('INSERT INTO products (name, description, material, usage, brand, price, stock) VALUES (?, ?, ?, ?, ?, ?, ?)', test_products)

conn.commit()
conn.close()

6.3 工具模块实现

6.4 智能体编排与测试

1.在 Dify 中新建「对话应用」,进入编排界面;若 Agent 能自动调用工具、返回准确的商品信息与回复,则说明部署成功。

2.将默认模型替换为已启用的 qwen3.5:4b

3.配置系统提示词,定义客服身份与工具调用规则;4.

绑定内置工具,设置最大迭代次数为 10 次;

5.保存配置,发起对话测试:

测试问题 1:你们的足球多少钱?有优惠吗?

测试问题 2:帮我查一下篮球的库存和价格

测试问题 3:现在店铺有什么促销活动?

  1. 商品查询工具:基于 SQLite 模糊匹配,按商品名称查询信息

    sql 复制代码
    def query_by_product_name(product_name: str):
        conn = sqlite3.connect('sports_inventory.db')
        cursor = conn.cursor()
        cursor.execute("SELECT * FROM products WHERE name LIKE ?", (f'%{product_name}%',))
        result = cursor.fetchone()
        conn.close()
        return result
  2. 促销政策读取工具:从本地文本文件读取店铺促销信息

    复制代码
    def read_store_promotions():
        with open('promotions.txt', 'r', encoding='utf-8') as f:
            promotions = f.read()
        return promotions
  3. 价格计算工具:根据原价和折扣计算最终价格

    复制代码
    def calculate_final_price(original_price: float, discount: float):
        return round(original_price * discount, 2)

若 Agent 能自动调用工具、返回准确的商品信息与回复,则说明部署成功。


七、关键问题与解决方案

7.1 Ollama 模型无法在 Dify 中被识别

  1. 问题现象:配置 Ollama 后,无法获取模型列表,提示连接失败;
  2. 解决方案
    1. 确认 Ollama 服务正在运行,执行 ollama list 可查看已拉取模型;
    2. 检查 Base URL 是否正确,Docker 部署的 Dify 必须使用 http://host.docker.internal:11434
    3. 关闭防火墙,确保 11434 端口未被占用

7.2 Dify 容器启动失败

  • 问题现象 :执行 docker compose up -d 后,部分容器状态为 Exited
  • 解决方案
    1. 清理 Docker 缓存:docker system prune -a
    2. 检查 WSL2 环境是否配置正确,重新执行 wsl --update
    3. 检查 Docker 代理配置,确保网络可拉取镜像。

7.3 商品查询工具无法匹配结果

  • 问题现象:用户输入 "速干衣",数据库中 "运动 T 恤" 无法被匹配;
  • 解决方案
    1. 当前方案基于模糊匹配,仅支持关键词检索;
    2. 可升级为 RAG 向量知识库,将商品描述转为向量存储,基于语义相似度实现检索。

八、优化与扩展方向

8.1 模型升级

可根据硬件配置升级更大参数的模型,如 qwen3.5:7bllama3:8b,提升对话理解与工具调用能力。

8.2 能力扩展

新增订单查询、物流追踪、售后处理等工具,扩展客服业务范围; 对接企业现有 ERP/CRM 系统,实现商品库存、订单数据的实时同步。

8.3 性能优化

    • 对 SQLite 数据库建立索引,提升商品查询效率;
    • 配置 Ollama 模型缓存,减少重复推理耗时;
    • 为 Dify 配置反向代理,实现多用户并发访问支持。

九、结论

本文实现了一套基于 Dify + Ollama + Qwen3.5 的本地电商智能客服 Agent,该方案完全脱离付费 API,实现了免费、离线、隐私可控的智能客服能力。从 WSL2 环境配置、Dify 容器部署,到 Ollama 模型对接、智能体业务实现,提供了完整的落地流程,解决了传统智能客服方案成本高、依赖网络、数据隐私风险高的痛点。

该方案不仅适用于电商客服场景,也可快速迁移至企业内部咨询、知识库问答、个人助手等场景,为个人开发者和中小企业提供了低成本、可定制的智能应用开发路径。后续可通过模型升级、工具扩展、性能优化等方式,进一步提升系统的业务适配能力与用户体验。

相关推荐
SpikeKing7 小时前
LLM - 支持 Hermes 智能体的 vLLM 部署 Qwen3.5 与 Qwen3.6 方案
llm·vllm·qwen3.5·hermes·qwen3.6
HeLiang71 天前
【DIFY】插件安装错误问题解决
ai·dify
m_sophia2 天前
Dify搭建Agent输出旅游规划
agent·dify
不懒不懒2 天前
【基于 ReAct 框架的电商智能客服 AI Agent 设计与实现】
人工智能·大语言模型·通义千问·ai agent·ollama·react 框架·电商智能客服
三无推导2 天前
《n8n self-hosted-ai-starter-kit 安装部署教程:用 Docker Compose 快速搭建本地 AI 工作流环境》
人工智能·docker·容器·持续部署·ollama·ai工作流·n8n
寻道模式2 天前
【时间之外】私有化部署AI的3个优点和3个缺点
大数据·人工智能·ollama·私有化·genericagent
Alson_Code3 天前
如何在本地部署大模型-ollama_(保姆级教程)
spring·ai编程·ollama
m_sophia4 天前
Dify搭建数据可视化工作流
信息可视化·工作流·dify
技术小甜甜5 天前
生产环境的“后悔药”:如何利用 Dify 版本控制与回滚机制建立 AI 应用的 CI/CD 闭环?
人工智能·ci/cd·版本控制·dify·ai应用·回滚