望岸 發表於 2026-3-19 22:30:00

AI Agent智能体 Dify

<p>AI&nbsp;Agent智能体</p>
<h3 id="ai-agent">AI Agent</h3>
<p>1.什么是AIAgent?<br>
答案:感知环境、自主决策、使用工具完成任务的智能实体</p>
<p>2.Agent和大模型的区别?<br>
大模型:聊天对象;<br>
Agent:不仅能聊,还能做、能执行</p>
<p>Dify<br>
Dify是一个开源的大语言模型(LLM)应用开发平台,旨在简化和加速生成式AI应用的创建和部署。<br>
特定:<br>
低代码/无代码:像拖拽积木一样编排业务逻辑<br>
功能完整强大:支持100+主流模型接入,满足各种企业级场景<br>
开源免费:支持私有化本地部署</p>
<h3 id="dify能做什么">Dify能做什么</h3>
<ul>
<li>聊天助手<br>
快速构建具备上下文理解能力的对话机器人,支持多轮对话。</li>
<li>知识库(RAG)<br>
轻松接入企业私有文档,实现基于自有知识的精准问答。</li>
<li>工作流(Workflow)<br>
通过可视化画布编排复杂的业务逻辑,实现任务自动化。</li>
<li>Agent 智能体<br>
构建能够自主调用工具、拆解并完成复杂任务的智能助手。</li>
</ul>
<h3 id="dify安装">Dify安装</h3>
<p>下载 https://github.com/langgenius/dify</p>
<p>启动 Dify 服务器最简单的方法是通过Docker Compose。在使用以下命令运行 Dify 之前,请确保您的计算机上已安装Docker和Docker Compose :</p>
<pre><code>cd dify
cd docker
cp .env.example .env
docker compose up -d
</code></pre>
<p>运行后,您可以通过浏览器访问http://localhost/install进入 Dify 控制面板,并开始初始化过程。<br>
<img src="https://img2024.cnblogs.com/blog/1090517/202603/1090517-20260319222216230-60868174.png"></p>
<p>本地大模型接入,还可使用API的方式调用云端大模型接入</p>
<h3 id="本地大模型接入完整流程">本地大模型接入完整流程</h3>
<h4 id="1安装ollama大模型管理工具">1:安装Ollama(大模型管理工具)</h4>
<p>Ollama是一个开源的本地大模型运行框架,用于在本地部署、管理和运行各类开源LLM模型下载地址:https://ollama.com/download, 支持macOS, Linux 和 Windows 系统<br>
进行傻瓜式安装即可</p>
<h4 id="2-下载模型-选择对应模型下载">2. 下载模型 (选择对应模型下载)</h4>
<p><img src="https://img2024.cnblogs.com/blog/1090517/202603/1090517-20260323161754791-339206008.png"><br>
可直接在线安装,也可以下载到本地之后选择本地安装(本地安装比较快)<br>
在线安装需要等待一段时间,如果提示错误:<code>Task timed out but not properly terminated</code> 建议更改.env文件配置</p>
<pre><code># 延长插件安装环境初始化时间
PLUGIN_PYTHON_ENV_INIT_TIMEOUT=1200
# 延长插件守护进程响应超时
PLUGIN_DAEMON_TIMEOUT=1200
# 配合你之前设置的镜像,确保这一行也存在
PLUGIN_PYTHON_ENV_PIP_MIRROR_URL=https://pypi.tuna.tsinghua.edu.cn/simple
</code></pre>
<h4 id="3-应用模型-在ollama中运行大模型">3. 应用模型 (在Ollama中运行大模型)</h4>
<p>选择大模型之后 提问即可,查看此大模型是否可用</p>
<h4 id="4-在dify中配置ollama-完成ollama供应商配置">4. 在Dify中配置Ollama (完成Ollama供应商配置)</h4>
<p>首页-&gt;个人-&gt;设置-&gt;模型供应商-&gt;Ollama-&gt;添加模型<br>
<img src="https://img2024.cnblogs.com/blog/1090517/202603/1090517-20260323162147248-1879053821.png"><br>
<img src="https://img2024.cnblogs.com/blog/1090517/202603/1090517-20260323164302048-1717832209.png"><br>
注:</p>
<ul>
<li>模型名称需要与本地下载的Ollama的模型名称一致 否则会报:没有这个模型 错误</li>
<li>url应该是 http://本机的ip地址:11434 (或者使用 Docker 专用的 http://host.docker.internal:11434) ,可以通过浏览器访问下此地址,如果返回<code>Ollama is running</code>表示可以绑定,(因在docker中)如果不能访问说明拒绝了来自外部请求,可以调整Ollama的环境变量:设置用户变量:<pre><code>键: OLLAMA_HOST 值: 0.0.0.0
键: OLLAMA_ORIGINS值: *
</code></pre>
本地退出Ollama 软件并杀死程序,重新打开<br>
再次访问 http://本机的ip地址:11434 检查结果,如果还是不可以访问 可看看是否防火墙的问题</li>
</ul>
<p>展示结果:<br>
<img src="https://img2024.cnblogs.com/blog/1090517/202603/1090517-20260323164601442-564215719.png"></p>
<h4 id="5-dify中测试模型完成模型在dify中应用">5. Dify中测试模型(完成模型在Dify中应用)</h4>
<p><img src="https://img2024.cnblogs.com/blog/1090517/202603/1090517-20260323165105567-1699447198.png"><br>
<img src="https://img2024.cnblogs.com/blog/1090517/202603/1090517-20260323165135714-1421368870.png"></p>
<h4 id="api的方式调用云端大模型接入">API的方式调用云端大模型接入</h4>
<p>本例使用阿里云的百炼<br>
https://www.aliyun.com/product/bailian<br>
创建apikey 对通义进行配置:<br>
<img src="https://img2024.cnblogs.com/blog/1090517/202603/1090517-20260323193412662-1341235457.png"><br>
之后可以通过刚刚创建的空白应用更改使用<br>
<img src="https://img2024.cnblogs.com/blog/1090517/202603/1090517-20260323193313565-1287402926.png"></p>
<h3 id="提示词">提示词</h3>
<p>提示词就是用户给AI下达的指令或者提出的问题。提示词越清晰、具体、AI的表现就越好<br>
提示词帮助用户控制语言模型输出,生成适合的特定需求。<br>
提示词调整提供了对模型行为的直观控制,但对提示的确切措辞和设计敏感,因此需要精心制定的准则以实现期望的结果。</p>
<p>提示词是搭建智能体的第一步<br>
提示词4要素:</p>
<ul>
<li>角色定位: 明确Bot的身份,建立专业形象。角色越具体=回复越专业</li>
<li>技能描述: 清晰的目标,让Bot知道做什么。</li>
<li>输出格式: 结构化回复要求,确保输出规范。</li>
<li>约束条件: 限制不当行为,保证安全合规。</li>
</ul>
<p>标准提示词构成: 结构化提示词(角色+目标+示例+格式)效果最佳</p>
<h3 id="rag">RAG</h3>
<p>RAG是一种结合知识检索和语言生成的人工智能技术,主要用于解决大型语言<strong>模型幻觉问题</strong><br>
模型幻觉问题: 在问大模型问题时,大模型要么没有回答出来,要么回答的是错误的<br>
<img src="https://img2024.cnblogs.com/blog/1090517/202603/1090517-20260323222907880-398170304.png"></p>
<p>基本原理:在生成回答时,先从知识库中检索相关文档,将检索到的文档与原始问题一起输入LLM,LLM基于检索内容生成最终答案。</p>
<h4 id="构建知识库">构建知识库</h4>
<p>构建知识库的具体步骤:<br>
<strong>文档准备 -&gt; 文档切分 -&gt; 文档向量化</strong></p>
<h5 id="文档准备">文档准备</h5>
<ul>
<li>文档类型<br>
支持格式PDF、Word、TXT<br>
适用场景攻略文章、教程文档</li>
<li>表格类型<br>
支持格式Excel, CSV适用场景<br>
结构化数据、统计信息</li>
</ul>
<p>文档预处理建议:清理无关内容(广告、水印)、按主题分类整理、文件命名规范(含关键信息)</p>
<h5 id="文档切片">文档切片</h5>
<p>文档切片:为了适应大语言模型的上下文长度限制,并提升检索的精确度和效率。<br>
切分方式:</p>
<ul>
<li>按字符数切 分固定长度(如每300字一段)</li>
<li>按符号切分 按照句号、换行符、感叹号等</li>
<li>按语义切分 识别主题变化点智能切分</li>
</ul>
<p>一般选择方式:<br>
按照符号和字符长度一块切分:一般200-500字/段长度太小,上下文不完整,检索不准,长度太大,无关信息过多,干扰判断</p>
<h5 id="文档向量化">文档向量化</h5>
<p>文档向量化:将切分后的文本进行向量数字化,便于计算问题和文档的相似性。<br>
向量化作用:语义理解;相似度计算;快速检索</p>
<h5 id="创建知识库的基本操作步骤">创建知识库的基本操作步骤</h5>
<ul>
<li>创建知识库<br>
进入Dfy选择知识库创建</li>
<li>选择数据源<br>
上传文本原始文件</li>
<li>文本分段<br>
选择(设置)分段方式</li>
<li>构建索引将分段后的文档进行向量化</li>
<li>检索设置<br>
向量检索/全文检索/混合检索
<ul>
<li>向量检索:通过生成查询嵌入并查询与其向量表示最相似的文本分段</li>
<li>全文检索:索引文档中的所有词汇,从而允许用户查询任意词汇,并返回包含这些词汇的文本片段</li>
<li>混合检索:同时执行全文检索和向量检索,并应用重排序步骤,从两类查询结果中选择匹配用户问题的最佳结果,用户可以选择设置权重或配置重新排序模型。</li>
</ul>
</li>
<li>查看结果<br>
预览文本处理的效果</li>
<li>使用知识库</li>
</ul>
<h3 id="function-calling函数调用插件">Function Calling(函数调用)(插件)</h3>
<p>Function Calling: (函数调用)功能,该功能指的是在语言模型中<strong>集成外部功能或API的调用能力</strong>,这意味着模型可以在生成文本的过程中调用外部函数或服务,获取额外的数据或执行特定的任务。</p>
<p><img src="https://img2024.cnblogs.com/blog/1090517/202603/1090517-20260323225750304-1511977988.png"></p>
<p>特性:</p>
<ul>
<li>信息实时性<br>
大模型训练的数据集无法包含最新的信息,如最新的新闻、实时股价等。通过Function Call,模型可以实时获取最新数据,提供更加时效的服务。</li>
<li>数据局限性<br>
模型训练数据虽多但有限,无法覆盖所有领域,如医学、法律等领域的专业咨询,Function Call允许模型调用外部数据库或API,获取特定领域的详细信息。</li>
<li>功能扩展性<br>
大模型虽然功能强大,但不可能内置所有可能需要的功能。通过Function Call,可以轻松扩展模型能力,如调用外部工具进行复杂计算、数据分析等。</li>
</ul>
<p>工作原理:<br>
当有函数调用(funciton-call)时候,我们调用GPT构建AI应用的模式比之前要复杂一些。<br>
<img src="https://img2024.cnblogs.com/blog/1090517/202603/1090517-20260323230049858-255548020.png"></p>
<p>主要步骤:<br>
1.用户(Client)发请求prompt以及functions给我们的服务(Chat Server)<br>
2.GPT模型根据用户的prompt,判断是用普通文本还是函数调用的格式响应我们的服务(Chat Server)<br>
3.如果是函数调用格式,那么Chat Server就会执行这个函数,并且将结果返回给GPT<br>
4.然后模型使用提供的数据,用连贯的文本响应。返回<br>
精简版:<strong>用户请求 -&gt; 大模型判断是否调用函数 -&gt; 需要时 调用后 函数结果返回大模型 -&gt; 给出答案</strong></p>
<p>应用实例:<br>
比如大模型不会知道当前时间是多少,可以通过使用时间插件 获取当前时间</p>
<h5 id="自定义插件">自定义插件</h5>
<ul>
<li>实现自定义插件的过程?</li>
<li>python脚本开发</li>
<li>后台运行API接口</li>
<li>在Dif中选择工具</li>
<li>自定义工具</li>
<li>构建Schema</li>
<li>测试插件</li>
<li>保存应用</li>
</ul>
<h3 id="工作流">工作流</h3>
<p>工作流:业务逻辑的可视化执行<br>
Dify的两个工作流类型: 工作流、对话流</p>
<p>工作流的核心组件<br>
节点:特定功能的独立组件,负责处理数据、执行任务</p>
<table>
<thead>
<tr>
<th>维度</th>
<th>工作流(Workflow)</th>
<th>对话流(Chatflow)</th>
</tr>
</thead>
<tbody>
<tr>
<td>适用场景</td>
<td>功能类、数据处理</td>
<td>对话类、交互式应用</td>
</tr>
<tr>
<td>典型案例</td>
<td>报告生成、海报制作、数据分析</td>
<td>智能客服、AI助手、虚拟伴侣</td>
</tr>
<tr>
<td>上下文</td>
<td>不支持对话历史</td>
<td>支持读取对话历史</td>
</tr>
<tr>
<td>会话管理</td>
<td>无会话概念</td>
<td>必须传入会话名称</td>
</tr>
<tr>
<td>发布渠道</td>
<td>本地运行、发布API、潜入网站</td>
<td>本地运行、发布API、潜入网站</td>
</tr>
</tbody>
</table>
<h4 id="创建工作流流程">创建工作流流程</h4>
<p>1:创建工作流<br>
操作路径</p>
<ul>
<li>创建空白应用一工作流/Chatflow</li>
</ul>
<p>设置内容</p>
<ul>
<li>工作流名称(清晰明确)</li>
<li>功能描述(帮助AI理解)</li>
</ul>
<p>2:编排工作流<br>
核心操作</p>
<ul>
<li>在可视化画布中添加节点</li>
<li>在连接节点形成数据流</li>
<li>配置每个节点的输入输出参数</li>
</ul>
<p>设置内容</p>
<ul>
<li>开始节点 一&gt; LLM节点 -&gt; 工具节点 -&gt; 结束节点</li>
</ul>
<p>3:测试并发布<br>
测试方法</p>
<ul>
<li>点击测试运行 一&gt; 输入测试数据 一&gt; 检查节点状态.</li>
</ul>
<p>发布流程</p>
<ul>
<li>测试通过后点击“发布”</li>
<li>发布后其他用户可以使用该工作流</li>
</ul><br><br>
来源:https://www.cnblogs.com/l-zl/p/19740995
頁: [1]
查看完整版本: AI Agent智能体 Dify