网站建设项目工作分解河南专业的做网站的公司
2026/4/17 23:49:47 网站建设 项目流程
网站建设项目工作分解,河南专业的做网站的公司,网站建设对教育解决方案,iis默认网站打不开目录为什么选择 Dify OllamaOllama 本地部署Dify 本地容器化部署模型接入与知识库 RAG 构建准备 Embedding 模型在 Dify 中添加 Ollama 模型供应商构建知识库检索测试构建智能体应用创建应用编排界面概览查询预处理关联知识库编写提示词调整模型参数调试与发布Python API 调用…目录为什么选择 Dify OllamaOllama 本地部署Dify 本地容器化部署模型接入与知识库 RAG 构建准备 Embedding 模型在 Dify 中添加 Ollama 模型供应商构建知识库检索测试构建智能体应用创建应用编排界面概览查询预处理关联知识库编写提示词调整模型参数调试与发布Python API 调用实战获取 API 密钥环境准备编写脚本你是否也有过这样的经历当汽车仪表盘上突然跳出一个陌生的黄色故障灯或者你想调整后视镜的倒车下翻功能却不得不从副驾手套箱里翻出那本厚达 400 页、封皮都快粘连的《用户使用手册》。你试图在目录中寻找关键词翻到第 218 页却发现还有“参见第 56 页”的跳转。在那一刻你一定希望有一个懂行的老司机坐在旁边你只需问一句“这个像茶壶一样的灯亮了是什么意思”他就能立马告诉你答案。在 AI 大模型时代这个愿望已经可以零成本实现。今天这篇博客将带大家实战一个非常典型的 RAG检索增强生成 场景利用开源工具 Dify 和本地大模型工具 Ollama搭建一个能够完全读懂你汽车手册的 AI 智能体。完成后不仅可以通过 Web 界面与它对话还能通过 Python API 将其集成到其他应用中。为什么选择 Dify Ollama在开始动手之前先聊聊为什么选择这套技术栈。市面上有很多构建 AI 应用的方法比如像之前博客介绍的那样直接用LangChain手搓或者使用云端的 API但对于不懂编程、不懂技术的用户Dify Ollama 是目前性价比最高、上手最快的选择。Ollama之前已经介绍过了它是目前在本地运行大语言模型LLM最简单的工具。不需要复杂的环境配置不需要研究 PyTorch只需一行命令就能在 PC 上运行 Llama 3、Qwen 2.5 等开源模型最重要的是它是本地化的隐私绝对安全。Dify如果说 Ollama 提供了“大脑”那么 Dify 就提供了“身体”和“四肢”使模型具备了一些“能力”。Dify 是一个开源的 LLM 应用开发平台它解决了 LLM 开发中最常见的问题知识库的切片与索引、Prompt 的编排、上下文记忆的管理以及对外提供标准的 API 接口。它是低代码的几乎不需要写代码就能搭出一个企业级的 AI 应用。在接下来的教程中将完成以下操作环境搭建在本地部署 Ollama 和 Dify。模型接入让 Dify 连接上本地运行的 Qwen2.5 模型。知识库构建上传《用户手册》PDF通过 RAG 技术让 AI “学会”手册的内容。智能体编排调试 Prompt让它根据用户手册回答问题。API 调用编写 Python 脚本调用搭建好的智能体实现问答。操作用到的用户手册可在此处下载https://oss.mpdoc.com/doc/2026/01/10/CA60DABA002540C5894B85DA2DB46E14.pdf?attnameBMW_用户手册_01405A7D339.pdfOllama 本地部署Ollama 的安装极度简化几乎是“开箱即用”。直接访问 Ollama 官网 https://ollama.com/download 下载安装包即可。Linux 使用官方的一键安装脚本curl -fsSL https://ollama.com/install.sh | sh。安装完成后在命令行输入ollama -v看到版本号即表示安装成功。访问 https://ollama.com/search 可以查看 Ollama 支持的模型这里选择 Qwen2.5-7B 版本70 亿参数平衡了速度和智能。在命令行中执行ollama run qwen2.5:7b等待模型下载完成大约 5GB即可在本地运行该模型。下载完成后会直接进入对话框。你可以试着问它“你好介绍一下你自己。” 如果它能流畅回复说明模型已经激活。按Ctrl D退出对话模式模型会在后台继续运行。Dify 本地容器化部署为了保证环境的纯净和易于管理官方推荐使用 Docker Compose 进行部署。首先确保你的机器上安装了 Docker 和 Docker Composehttps://www.docker.com。下面需要将 Dify 的代码仓库下载到本地。在命令行中执行以下命令git clone --depth 1 https://github.com/langgenius/dify.git如果你本地没有安装 Git也可以直接去 GitHub 页面下载 ZIP 压缩包并解压。Dify 是一个完整的应用架构包含前端、后端、数据库PostgreSQL、缓存Redis和向量数据库Weaviate/Qdrant等多个组件。手动安装这些组件非常繁琐但通过 Docker Compose可以一键拉起所有服务。进入目录并执行以下命令初次运行需要拉取多个 Docker 镜像。/* by 01130.hk - online tools website : 01130.hk/zh/reproduce.html */ # 进入 docker 目录 cd dify/docker # 复制环境变量配置文件 cp .env.example .env # 启动容器 docker compose up -d等待所有容器启动完毕后打开浏览器访问http://localhost/install你将看到 Dify 的初始化引导界面。在这里设置你的管理员账号和密码。设置完成后即可登录进入 Dify。模型接入与知识库 RAG 构建环境搭建完毕后目前的 Dify 还是一个“空壳”。下面需要做两件事把 Ollama 的模型接入 Dify让它拥有对话和理解能力把《用户手册》喂给它构建向量知识库。准备 Embedding 模型在构建知识库时除了对话模型还需要一个专门的Text Embedding文本向量化模型。之前的博客已经介绍了 Embedding 的概念简单来说它的作用是把手册里的文字变成计算机能理解的“数字向量”。打开命令行拉取轻量级向量模型ollama pull nomic-embed-text。在 Dify 中添加 Ollama 模型供应商回到 Dify 的网页界面点击右上角的头像 - 设置 - 模型供应商。找到 Ollama 卡片点击“安装”。安装完成后点击 Ollama 卡片中的“添加模型”。这里需要添加两次第一次添加 LLM对话模型模型名称qwen2.5:7b必须与你在命令行 ollama list 查看到的名称完全一致模型类型LLM基础 URLhttp://host.docker.internal:11434Docker 容器访问宿主机的地址第二次添加 Text Embedding向量模型模型名称nomic-embed-text模型类型Text Embedding基础 URL同上如果保存时提示“Error”请检查 Ollama 能否通过 URL http://localhost:11434 访问或者 Docker 网络配置和防火墙设置。构建知识库点击顶部导航栏的知识库 - 创建知识库。上传文档选择“导入已有文本”将用户手册.pdf拖进去点击“下一步”。分段Chunk设置这里需要配置如何将 PDF 拆解成小段落方便后续检索。分段标识符文档段落之间是怎样分隔的。\n表示换行符例如此处上传的文档段落之间就是通过换行符分隔的有些时候可能会使用双换行符\n\n即两个段落之间有一个空行。最大分段长度决定了 AI “一口吃多少东西”。如果设置得太小知识库会被切得过碎影响检索效果如果设置得太大AI 可能无法有效利用上下文。分段重叠长度*相邻段落之间重叠的字符数有助于保持上下文连续性。使用 QA 分段如果你的文档是“问答”类型的开启此选项可以让 Dify 识别问答对提升检索效果。索引方式选择 “高质量”这会调用刚才配置的nomic-embed-text模型进行向量化处理。点击 “保存并处理”。此时Dify 会将几百页的 PDF 拆解成小段转换成向量并存入内置的向量数据库中。根据文档大小这可能需要较长的时间。检索测试不要急着去创建聊天助手先确认知识库“懂了”没有。在知识库详情页的左侧找到召回测试按钮。这里可以模拟检索过程。例如输入测试文本“如何打开远光灯”点击测试系统会展示它从手册中找到的最相关的几个段落。如果结果不准说明分段可能切得太碎了或者 PDF 解析乱码。这时需要回到设置中调整分段规则重新索引。构建智能体应用如果说知识库是 AI 的“图书馆”那么智能体编排Orchestration就是给 AI 制定“员工手册”。需要告诉 AI你现在的身份是什么你应该怎么查阅资料遇到不知道的问题该怎么回答在 Dify 中这一步不需要写代码全程可视化操作。创建应用回到 Dify 首页的工作室点击创建应用按钮。应用类型选择Chatflow并起一个合适的名称。编排界面概览进入应用后会看到一个左右分栏的界面左侧编排区编排 AI 的工作流程。默认创建了一个包含 LLM 节点的最简单对话流程。右侧调试区用来设置提示词、上下文、开场白等也可以实时测试 AI 的反应。查询预处理在实际测试中你可能会发现 AI 有时候变得“笨笨的”。因为用户的口语表达和手册的书面术语不完全一致导致检索失败。为了解决这个问题需要在 AI 去知识库“翻书”之前先对用户的问题进行“预处理”也就是提取检索的关键词句。下面点击默认提供的LLM节点修改名称为“提取关键词”。在右侧的SYSTEM提示词区域输入以下内容/* by 01130.hk - online tools website : 01130.hk/zh/reproduce.html */ # Task 你将收到用户的问题。请先提取问题中的关键信息用于进行检索知识库内容。 # Output 输出多个关键词或关键句关键词或关键句之间使用空格分隔禁止直接回答用户的问题完成后可以点击顶部的预览按钮进行测试。关联知识库检索关键词有了之后就可以利用关键词在知识库中检索相关内容。在提取关键词和直接回复节点之间添加一个新节点知识检索。将查询文本改为提取关键词节点的输出知识库选择刚刚创建的“用户手册”知识库。编写提示词从知识库中检索到相关信息Context上下文后接下来就是让 AI 根据这些信息回答用户的问题了。在知识检索和直接回复节点之间添加一个LLM 节点名称为回答问题。在右侧的上下文中选择知识检索节点输出的结果resultSYSTEM提示词区域输入下面的提示词这段提示词使用了Role-Constraints-Goal框架能有效防止 AI 产生幻觉。# Role 你是一位经验丰富的汽车维修与使用专家。你的任务是根据【Context】提供的内容准确、简洁地回答用户关于车辆使用的问题。 # Constraints 1. 必须完全基于【Context】中的信息回答严禁凭空捏造或利用外部知识回答手册未涉及的内容。 2. 如果【Context】中没有相关信息请直接回答“很抱歉当前手册中未找到关于该问题的说明。” 3. 回答步骤要清晰如果是操作指南请按 1. 2. 3. 分点列出。 4. 语气要专业、耐心、乐于助人。 # Goal 帮助用户快速解决车辆使用中的疑惑确保行车安全。 # Context {{#context#}}调整模型参数点击模型右侧的图标设置温度Temperature参数可以设为小于 0.5 的值。温度越低AI 越严谨、越死板温度越高AI 越发散、越有创造力。对于“查阅说明书”这种严肃场景需要的是绝对的准确而不是创造力。调试与发布以上配置完成后先在右侧进行预览测试观察 AI 的回答是否准确、步骤是否清晰并且有无引用来源。如果不满意可以继续调整提示词或上下文设置直到满意为止。测试满意后点击右上角的发布按钮。发布成功后点击运行即可通过 URL 进入 Web 界面和你的“车辆管家”聊天了Python API 调用实战在前面的步骤中已经实现了一个能在 Dify 网页端流畅对话的“用车顾问”。Dify 最强大的地方在于它遵循 API First 的设计理念。我们在网页上看到的所有功能都可以通过 API 进行调用。这意味着可以把这个“大脑”接入到任何你想要的地方。接下来编写一段 Python 代码实现与智能体的远程对话。获取 API 密钥要通过 API 调用 Dify首先需要拿到通行证。在 Dify 应用编排页面的左侧导航栏点击访问 API。在右上角点击API 密钥 - 创建密钥。复制生成的密钥。留意页面上的 API 服务器地址本地部署通常是 http://localhost/v1 。环境准备需要使用 Python 的 requests 库来发送 HTTP 请求。如果还没有安装请在命令行执行pip install requests。编写脚本新建一个文件car_bot.py将以下代码复制进去。这段代码使用了阻塞模式 (Blocking)程序会等待 AI 完全生成完答案后一次性返回结果。import requests # 配置区域 # 替换为你的 API 密钥 API_KEY app-pJRiHLHP4UMJ3tGqyYLyAjGb # Dify 的 API 地址 BASE_URL http://localhost/v1 # 定义请求头 headers { Authorization: fBearer {API_KEY}, Content-Type: application/json } # def ask(question, user_iduser_123, conversation_id): 发送问题给 Dify 智能体 :param question: 用户的问题 :param user_id: 用户唯一标识用于区分不同用户的上下文 :param conversation_id: 会话 ID用于多轮对话 url f{BASE_URL}/chat-messages payload { inputs: {}, # 如果你的 Prompt 没设置变量这里留空 query: question, # 用户的问题 response_mode: blocking, # blocking等待全部生成, streaming流式输出 conversation_id: conversation_id, # 留空表示开启新会话填入 ID 可延续上下文 user: user_id, # 必须字段区分用户 } try: print(f正在思考问题{question} ...) response requests.post(url, headersheaders, jsonpayload) response.raise_for_status() result response.json() # 提取 AI 的回答 answer result.get(answer, ) # 提取引用来源如果有 metadata result.get(metadata, {}) usage metadata.get(usage, {}) print(- * 30) print(f AI 回答\n{answer}) print(- * 30) print(f 消耗 Token{usage.get(total_tokens, 0)}) return result.get(conversation_id) # 返回会话 ID 供下次使用 except requests.exceptions.RequestException as e: print(f请求出错: {e}) return None if __name__ __main__: # 测试调用 current_conversation_id ask(如何分享数字钥匙)运行脚本python car_bot.py你将看到 AI 根据手册内容给出的准确回答。通过这个 Python 脚本想象力就可以起飞了。将脚本封装成一个 Web 服务接收微信消息转发给 Dify再把答案发回微信制作一个聊天机器人。也可以结合 Whisper语音转文字和 Edge-TTS文字转语音给这个智能体加上耳朵和嘴巴...

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询