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