必须先同时启动Ollama和Dify:执行ollama serve确保后台运行,再docker compose up -d启动Dify三容器,确认全为Up;接着ollama pull qwen2.5:7b,Dify中配置Ollama供应商并绑定该模型;上传BMW手册PDF至知识库,调优分块参数(500/80);最后在Agent工作流中配置语义检索、条件分支与代码工具,严格按手册原文→建议→来源顺序响应。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

准备本地运行环境:Ollama + Dify 双组件启动
要在电脑上跑通能读懂《BMW用户手册》并自动诊断故障的AI助手,必须先让Ollama和Dify两个核心组件同时健康运行。缺一不可,否则后续所有配置都会卡在“模型不可用”或“工具调用失败”上。
打开终端,依次执行以下命令:
首先确认 Ollama 已安装并后台运行:【必须看到 ollama serve 进程持续运行,不能只执行一次就退出】
然后进入 Dify 项目根目录,启动全部服务:docker compose up -d
等待 30 秒后,执行 docker compose ps,检查 api、web、worker 三个容器状态是否全为 Up。若 api 显示 restarting,立刻执行 docker compose logs -f api --tail=50,重点查找 “model provider not configured” 或 “connection refused” 字样——这说明模型供应商还没配,但此时先别急着配,得确保底层通了。
接入本地大模型:Qwen2.5-7B 作为推理引擎
Dify 不是模型本身,它需要一个“大脑”。我们选用 Qwen2.5-7B,因为它在中文长文本理解(比如汽车手册里的嵌套条款)和指令遵循上表现稳定,且 Ollama 已原生支持。
第一步:在 Ollama 中拉取模型:ollama pull qwen2.5:7b。这一步耗时约 3~8 分钟,取决于网速;若中途断开,重试即可,Ollama 会续传。
第二步:回到 Dify 管理后台,访问 http://localhost:3000/settings/model-providers → 点击「+ 添加模型供应商」→ 选择「Ollama」→ 填写基础信息:
Host 地址填 http://host.docker.internal:11434(Mac/Windows Docker Desktop 默认可用;Linux 用户必须改用宿主机真实IP,如 http://192.168.1.100:11434,否则容器内无法访问)
模型名称栏输入 qwen2.5:7b,注意冒号和版本号完全一致,大小写敏感;测试连接成功后保存。
第三步:进入「应用」→「新建应用」→ 类型选「智能助手(Agent)」→ 模型下拉框中现在应能看见 qwen2.5:7b,勾选它,点击创建。
构建车主手册知识库:PDF切片与向量化
手册不是扔进去就能读的。Dify 会把 PDF 拆成段落,再转成向量存进数据库。拆得不准,检索就错;向量没建好,AI 就答非所问。
方法一:直接上传 PDF 文件
进入刚创建的 Agent 应用 → 左侧菜单点「上下文」→ 「知识库」→ 「+ 创建知识库」→ 命名“BMW_2026_手册”,描述填“G01/G02 系列燃油车用户手册官方PDF”,保存后点击「添加文档」→ 选择已下载好的 BMW_用户手册_01405A7D339.pdf → 提交。
方法二:手动控制切片粒度(推荐用于手册类长文档)
上传前先点击知识库右上角「设置」图标 → 关键参数调为:分块大小 = 500,重叠长度 = 80,文本清理启用「移除页眉页脚」和「合并换行符」。这能避免把“制动系统”章节标题和下一页的“警告符号说明”错误拼在一起。
上传完成后,右侧状态栏显示“处理中”,约 2~4 分钟。不要刷新页面,否则中断索引进程,需重新上传。
配置故障自检工作流:让Agent学会主动查手册+调工具
光有手册还不够。当用户问“仪表盘黄色发动机灯亮怎么办”,AI 必须能:① 定位手册中“故障指示灯”章节 → ② 提取对应灯色含义 → ③ 结合当前车型年份判断是否需立即停车 → ④ 若手册未覆盖,则触发外部工具查TIS工单系统(本例暂用模拟工具)。
第一步:在 Agent 应用内,点击顶部「编辑工作流」→ 进入可视化编排界面。
第二步:拖入一个「知识检索」节点,双击配置:知识库选刚建好的“BMW_2026_手册”,检索方式选「语义检索」,相似度阈值设为 0.65(太低会召回无关内容,太高可能漏掉同义表述)。
第三步:拖入一个「条件分支」节点,连接知识检索输出。设置判断逻辑为:“如果检索结果包含‘立即停车’或‘禁止行驶’字样”,则走「高风险路径」;否则走「常规排查路径」。
第四步:在「常规排查路径」末端,添加一个「代码解释器」工具节点(Dify 内置),输入 Python 脚本:
import re
def check_engine_light(text):
if re.search(r'黄色|琥珀色.*?发动机', text):
return "建议:检查机油液位、冷却液水位,若无异常,可继续行驶至授权服务中心。"
return "未识别到匹配故障描述。"
check_engine_light({{knowledge_retrieval.output}})
第五步:返回「提示词」标签页,重写系统指令,明确要求 Agent 必须严格按以下顺序响应:先引用手册原文段落(带页码),再给出操作建议,最后注明建议来源(手册 or 工具计算)。不许自由发挥。


















