PART 04
Agent 应用
Agent = LLM + 工具 + 记忆 + 规划。RAG 让 AI "知道更多",微调让 AI "说得更像",Agent 让 AI "能做事"。本指南使用 Coze + Dify + LangGraph 方案。
10 Agent 概念与架构
什么是 AI Agent?它和 RAG、微调有什么不同?
RAG vs 微调 vs Agent
| 对比 | RAG | 微调 | Agent |
|---|---|---|---|
| 本质 | 检索知识 + 生成回答 | 修改模型记忆 | LLM 自主决策 + 调用工具 |
| 类比 | 查字典的回答者 | 背过书的回答者 | 会用工具的助理 |
| 核心能力 | 回答"知道什么" | 风格/格式定制 | 执行"能做什么" |
| 能否行动 | 只能回答 | 只能回答 | 能调 API、查数据、发邮件 |
Agent 核心架构
Agent 的核心是一个循环:理解任务 → 选择工具 → 调用工具 → 观察结果 → 判断是否完成。四个核心组件:
- LLM(大脑):负责理解、推理和决策。推荐 Qwen2.5-7B-Instruct(硅基流动 API)
- Tools(工具):知识库检索、API 调用、搜索、代码执行、时间查询等
- Memory(记忆):保留对话上下文,支持多轮对话连贯性
- Planning(规划):ReAct 思维链,先思考再行动,边观察边调整
Agent 平台对比
| 平台 | 类型 | 特点 | 国内访问 |
|---|---|---|---|
| Dify | 可视化 | 工作流 + Agent,API 发布,可本地部署 | 云端需梯子 / 本地部署不需要 |
| Coze(扣子) | 可视化 | 字节出品,插件生态强,发布到飞书/微信 | 直接访问 |
| FastGPT | 可视化 | 有简单工作流编排能力 | 本地已部署 |
| LangGraph | 代码 | LangChain 官方,图状态机,最灵活 | 需要写 Python 代码 |
| CrewAI | 代码 | 多 Agent 协作,角色分工 | 需要写 Python 代码 |
Agent 设计原则
| 原则 | 说明 |
|---|---|
| 工具要专一 | 每个工具只做一件事 |
| 描述要清晰 | 工具描述决定 Agent 何时调用 |
| 给工具加限制 | 危险操作要先确认 |
| 设置终止条件 | 防止 Agent 无限循环 |
| 提供示例 | 在提示词中给使用示例 |
11 Coze/Dify Agent 实操
用可视化平台搭建 Agent,零代码完成。
方案 1:Coze(扣子)搭建 Agent
地址:coze.cn · 国内直接访问
操作步骤:
- 注册登录 coze.cn(手机号注册)
- 点击「+ 创建」→ 选择「创建智能体」
- 填写名称和功能描述 → 点击确认
- 在左侧「人设与回复逻辑」面板输入提示词(系统角色设定 + 回答规则 + 限制条件)
- 在中间「技能」区域配置:
- 知识库:添加 → 上传 PDF/Word 文档 → 自动切片向量化
- 插件:添加联网搜索、图片识别、代码执行等
- 工作流:编排采集 → 改写 → 发布的自动化流程
- 配置检索策略:混合检索 + 显示来源 + 无召回自定义回复
- 在右侧预览区测试 3 种场景:知识问答、工具调用、多轮对话
- 点击「发布」→ 选择渠道:Web 链接 / 飞书 / 微信公众号 / 抖音 / API
# 提示词示例
# 角色
你是网站备案智能助理,专门解答网站备案相关问题。
## 回答规则
- 只基于知识库内容回答,不确定时说"我不确定"
- 回答简洁,先给结论再补充说明
- 语气礼貌专业
## 限制
- 不要编造知识库中没有的信息
- 涉及操作类问题,引导用户到系统操作方案 2:Dify 本地部署 + Agent 搭建
云端版:dify.ai(国内需梯子)
本地部署:Docker 一键启动,不需要梯子
本地部署步骤:
# 1. 下载 Dify(用 GitHub 代理)
cd D:\
curl.exe -L -o dify.zip https://gh-proxy.com/https://github.com/langgenius/dify/archive/refs/heads/main.zip
Expand-Archive -Path dify.zip -DestinationPath D:\
Rename-Item dify-main dify
# 2. 启动
cd D:\dify\docker
cp .env.example .env
docker compose up -d
# 3. 访问 http://localhost
# 首次创建管理员账号(邮箱 + 密码)配置模型:
进入 Dify → 设置 → 模型供应商 → 找到 SiliconCloud → 填入 API Key:
API Key: sk-你的硅基流动key
# 自动拉取 Qwen2.5-7B-Instruct、BAAI/bge-m3 等模型创建 Agent:
- 首页 → 「创建空白应用」→ 选择「Agent」
- 配置提示词(Instructions):定义角色、能力、原则
- 选择模型:Qwen/Qwen2.5-7B-Instruct,Temperature: 0.3
- 添加工具:Dify 知识库、时间、计算器、自定义 HTTP API
- 关联知识库:上传文档 → 配置混合检索 + 重排
- 设置记忆:对话历史 10 轮
- 测试 3 种场景 → 发布为 Web App 或 API
自定义工具(OpenAPI Schema):
Agent 最强大的能力是调用外部 API。在 Dify → 工具 → 自定义工具,创建 OpenAPI Schema:
{
"openapi": "3.0.0",
"info": { "title": "备案查询工具", "version": "1.0.0" },
"paths": {
"/api/record/query": {
"get": {
"summary": "查询网站备案进度",
"parameters": [{
"name": "id_card",
"in": "query",
"required": true,
"schema": { "type": "string" }
}],
"responses": {
"200": {
"description": "查询成功",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"status": { "type": "string" },
"estimated_date": { "type": "string" }
}
}
}
}
}
}
}
}
}
}Agent 会自动判断何时调用这个工具——用户问"我的备案到哪了"时,Agent 会主动调用查询接口。
Dify 工作流编排
除了 Agent 模式,Dify 还支持工作流(Workflow)——固定步骤的自动化流程:
开始 → 知识库检索 → LLM 生成回答 → 发送通知 → 结束
# 适合需要确定性流程的场景
# 如:采集 → 改写 → 发布的自动化流程12 LangGraph 代码 Agent
用 Python 代码搭建 Agent,最灵活、最可控。适合进阶学习。
安装 LangGraph
# 在虚拟环境中安装
cd D:\llm-finetune
.\venv\Scripts\Activate.ps1
pip install langgraph langchain-openai最小 Agent 示例
用 LangGraph 创建 ReAct Agent,接入 FastGPT 知识库 + 自定义 API 工具:
from langgraph.prebuilt import create_react_agent
from langchain_openai import ChatOpenAI
import requests
# 1. 定义工具
def search_knowledge(query: str) -> str:
"""搜索网站备案知识库"""
resp = requests.post(
"https://cloud.fastgpt.cn/api/core/dataset/searchTest",
headers={"Authorization": "Bearer fastgpt-你的key"},
json={
"datasetId": "你的知识库ID",
"text": query,
"limit": 5,
"similarity": 0,
"searchMode": "embedding"
}
)
data = resp.json()
contexts = [item.get("content", "") for item in data.get("data", [])]
return "\n".join(contexts[:3])
def query_progress(id_card: str) -> str:
"""查询备案进度"""
# 调用业务系统 API
return f"身份证 {id_card} 的备案状态:审核中,预计3个工作日完成"
# 2. 创建 Agent
model = ChatOpenAI(
model="Qwen/Qwen2.5-7B-Instruct",
base_url="https://api.siliconflow.cn/v1",
api_key="sk-你的硅基流动key"
)
agent = create_react_agent(model, [search_knowledge, query_progress])
# 3. 运行
result = agent.invoke({
"messages": [{
"role": "user",
"content": "网站备案要多久?另外帮我查一下"
"身份证110101199001011234的备案进度"
}]
})
for msg in result["messages"]:
print(f"{msg.type}: {msg.content}")
# Agent 会自动:
# 1. 调用 search_knowledge 回答备案时间
# 2. 调用 query_progress 查询进度
# 3. 汇总两步结果回复用户多 Agent 协作(进阶)
用 CrewAI 或 AutoGen 实现多 Agent 分工协作:
# CrewAI 示例:多角色协作
from crewai import Agent, Task, Crew
# 角色 1:信息收集员
researcher = Agent(
role="备案信息研究员",
goal="收集和分析网站备案相关政策信息",
backstory="你是备案领域的专家,擅长搜集信息",
llm=model
)
# 角色 2:报告撰写员
writer = Agent(
role="报告撰写员",
goal="将研究结果整理成清晰的报告",
backstory="你是技术文档专家,擅长结构化表达",
llm=model
)
# 分配任务
research_task = Task(
description="研究网站备案的最新政策和流程",
agent=researcher,
expected_output="详细的备案政策和流程分析"
)
write_task = Task(
description="将研究结果整理成用户友好的报告",
agent=writer,
expected_output="结构化的备案指南报告",
context=[research_task] # 依赖研究结果
)
# 执行
crew = Crew(agents=[researcher, writer], tasks=[research_task, write_task])
result = crew.kickoff()Agent vs 工作流:什么时候用哪个
| 对比 | Agent(自主决策) | 工作流(固定流程) |
|---|---|---|
| 决策方式 | LLM 自己决定调什么工具 | 预先定义好步骤 |
| 灵活性 | 高,能处理意外情况 | 低,按固定路径走 |
| 可控性 | 低,可能走偏 | 高,行为可预测 |
| 适合场景 | 开放式问答、复杂决策 | 自动化流程、批量处理 |
| 示例 | 智能客服、个人助理 | 采集→改写→发布 |
13 总结与建议
完整学习路径回顾与后续建议。
学习路径回顾
- RAG 搭建:FastGPT 本地部署 + Ollama 本地模型 + 硅基流动重排模型 → 完整知识库问答系统
- 线上微调:阿里云百炼 + LoRA 高效训练 → 零代码完成模型定制
- 本地微调:LLaMA-Factory WebUI + QLoRA 4bit 量化 → 本地可视化微调
- 评测体系:LLM-as-Judge + FastGPT 搜索接口 + 硅基流动裁判模型 → 量化评估 RAG 效果
- Agent 应用:Coze 可视化 Agent + Dify 本地部署 + LangGraph 代码 Agent → AI 自主决策与工具调用
后续进阶方向
- 扩充微调数据:从 92 条扩充到 200~500 条,提升训练效果
- 从零写微调脚本:用 Transformers + PEFT + TRL 写代码,深入理解原理
- 多模态微调:支持图片理解的模型微调(Qwen-VL 系列)
- RAG + 微调结合:用微调让模型输出特定格式,用 RAG 提供实时知识
- 多 Agent 协作:用 CrewAI / AutoGen 搭建多 Agent 协作系统
- Agent 工作流自动化:将 Agent 接入业务系统,实现自动化流程