|Agentic AI Group
智能体工程课程
2026 版
基础6 学时更新:2026-07-26

01|AI 智能体基础及应用

从普通大模型问答走向可感知、可规划、可行动、可反馈的智能体系统,并完成第一个设备巡检助手。

前置知识
  • 掌握 Python 函数、字典与异常处理
  • 理解大模型 Prompt 与上下文窗口的基本概念
学习成果
  • 能解释 Agent、Workflow 与 Chatbot 的差异
  • 能实现一个带工具、状态与停止条件的 Agent Loop
  • 能用价值、风险和边界判断场景是否适合智能体化
本章主线不要从“选哪个框架”开始。先理解智能体为什么需要循环、状态、工具和边界,再进入工程框架。
大模型驱动智能体闭环
图 1-1:感知、规划、行动、反馈构成闭环,记忆与状态贯穿其中。

1. 智能体与普通聊天模型

1.1 三类系统不要混用

系统决策路径是否调用外部工具是否维护任务状态适用任务
Chatbot单轮或多轮生成可选通常只保存对话解释、改写、问答
Workflow路径由开发者预先规定稳定、可预测的业务流程
Agent模型在约束下动态选择下一步路径不固定、需要探索与纠错的任务

智能体不是“更会聊天的模型”,而是一个围绕目标持续选择动作的运行系统。最小结构可以写成:

Agent = Model + Instructions + Tools + State + Control Loop + Guardrails

其中,模型负责语言理解与局部决策;运行时负责工具执行、状态持久化、超时、重试、权限和审计。把所有责任都交给模型,会导致不可控的工具调用、循环失控与成本失控。

1.2 什么任务适合智能体

用下面四个问题筛选:

  1. 任务路径是否不确定? 若步骤完全固定,优先用普通工作流。
  2. 是否需要读取实时信息或执行动作? 若只生成文本,不一定需要 Agent。
  3. 错误是否可检测、可恢复? 不能验证结果的高风险任务不宜全自动化。
  4. 收益是否覆盖模型、集成、评估和治理成本? “能做”不等于“值得做”。

适合

研究资料整理、复杂客服分流、设备故障诊断、跨系统工单协同、代码修复建议。

谨慎

医疗诊断、贷款审批、危险设备控制等高影响任务,应采用人工确认、权限最小化和可撤销动作。

2. 感知—规划—行动—反馈闭环

2.1 感知:把环境变成结构化状态

感知不仅是读取用户输入,还包括文件、数据库记录、传感器、网页、图片和上一步工具结果。工程上应把原始输入转换为结构化对象,例如:

state = {
    "goal": "判断设备是否需要停机检修",
    "observations": [
        {"sensor": "temperature", "value": 92.4, "unit": "C"},
        {"sensor": "vibration", "value": 8.1, "unit": "mm/s"},
    ],
    "steps": [],
    "budget": {"max_steps": 6, "used_steps": 0},
}

结构化状态比直接拼接长 Prompt 更容易验证、持久化和回放。

2.2 规划:决定下一步,而不是一次生成全部答案

规划可以分为三种:

  • 即时规划:每轮只决定下一步,适合信息逐步显现的任务。
  • 显式计划:先生成任务清单,再逐项执行,适合长任务。
  • 分层规划:上层负责目标与资源,下层负责具体动作,适合多智能体系统。

课堂中不要求展示模型的私有思维过程,而应让系统输出可审计的行动摘要,例如“需要查询设备阈值标准”,而不是要求模型输出冗长内在推理。

2.3 行动:工具必须是受控函数

工具应具有明确名称、用途、输入类型、输出类型和错误码。工具描述越清楚,模型越容易正确选择。任何写数据库、发消息、付款、删除文件的工具都应增加审批或双重确认。

2.4 反馈:验证动作是否使目标更接近

反馈至少包含:

  • 工具是否成功;
  • 结果是否满足格式和业务约束;
  • 是否需要重试、换工具或交给人工;
  • 是否达到停止条件。

一个没有停止条件的 Agent Loop 很容易陷入重复调用。停止条件可包括:目标完成、达到最大步数、预算耗尽、连续错误、人工终止。

2.5 可运行的最小智能体

下面的例子不依赖任何模型 API,先用规则模拟“决策器”,用于理解运行时结构。完整文件见 examples/01_basic_agent.py

from dataclasses import dataclass, field
from typing import Any, Callable

@dataclass
class State:
    goal: str
    observations: dict[str, float]
    history: list[dict[str, Any]] = field(default_factory=list)
    max_steps: int = 5

TOOLS: dict[str, Callable[..., dict[str, Any]]] = {}

def tool(name: str):
    def register(fn):
        TOOLS[name] = fn
        return fn
    return register

@tool("lookup_threshold")
def lookup_threshold(metric: str) -> dict[str, Any]:
    thresholds = {"temperature": 85.0, "vibration": 7.1}
    if metric not in thresholds:
        return {"ok": False, "error": "UNKNOWN_METRIC"}
    return {"ok": True, "threshold": thresholds[metric]}

def decide(state: State) -> dict[str, Any]:
    checked = {x.get("metric") for x in state.history}
    for metric in state.observations:
        if metric not in checked:
            return {"type": "tool", "name": "lookup_threshold", "args": {"metric": metric}}
    exceeded = [x for x in state.history if x.get("exceeded")]
    return {"type": "finish", "answer": "建议停机检查" if exceeded else "继续运行并监测"}

def run_agent(state: State) -> str:
    for _ in range(state.max_steps):
        action = decide(state)
        if action["type"] == "finish":
            return action["answer"]
        result = TOOLS[action["name"]](**action["args"])
        metric = action["args"]["metric"]
        state.history.append({
            "metric": metric,
            "tool_result": result,
            "exceeded": result.get("ok", False)
                and state.observations[metric] > result["threshold"],
        })
    raise RuntimeError("达到最大步骤,任务未完成")

运行:

python examples/01_basic_agent.py

2.6 从规则决策器替换为大模型

接入任意支持结构化输出或工具调用的模型时,仅替换 decide()。运行时、工具、状态、审计和停止条件仍保留。这样可避免框架锁定,也便于单元测试。

3. 全行业场景与需求分析

3.1 五类典型场景

行业典型任务高价值数据主要风险推荐自动化级别
金融合规问答、材料审查、客服分流制度、产品、客户授权数据错误建议、越权、隐私建议 + 人工确认
医疗病历摘要、随访提醒、知识检索病历、指南、量表诊断风险、敏感数据辅助,不替代医生
教育个性化辅导、作业反馈、课程问答教材、学习记录错误引导、评价偏差分层反馈 + 教师复核
制造设备诊断、工艺问答、巡检编排传感器、SOP、维修记录停机损失、危险动作低风险自动、高风险审批
政务政策问答、材料预审、工单流转政策、办事指南、流程数据政策时效、权限、可解释有据回答 + 全程审计

3.2 价值评估模板

可用一个简化评分帮助讨论,分数不是绝对结论:

价值分 = 0.30×任务频率 + 0.25×单次耗时 + 0.25×信息复杂度 + 0.20×可复制性
风险分 = 0.35×错误影响 + 0.25×数据敏感度 + 0.20×动作不可逆性 + 0.20×监管强度

优先选择“高价值、低到中风险、结果可验证”的场景作为首个项目。

4. 智能体开发全生命周期

规划

定义用户、目标、输入输出、禁止事项、成功指标和人工责任。

原型

先用 20–50 个代表性案例验证 Prompt、工具与知识链路,不急于做复杂界面。

开发

模块化实现模型适配器、工具、状态、权限、评估与日志。

上线

灰度发布,设置限流、预算、超时、回滚和人工兜底。

运营

持续收集 Bad Case,区分模型、检索、工具、数据和流程问题。

治理

管理版本、数据来源、权限、审计、风险和退役策略。

5. 应用案例:设备巡检助手

5.1 目标与边界

输入设备温度、振动值和巡检备注,系统查询阈值标准,输出风险等级和建议。系统不能直接控制设备停机,只生成建议并记录证据。

5.2 实现步骤

  1. 运行本章示例,观察状态变化和停止条件。
  2. 新增 lookup_sop(equipment_type) 工具。
  3. 为工具增加 request_id 和统一错误码。
  4. 加入“高风险必须人工确认”的状态。
  5. 使用 10 组正常、边界和异常数据测试。
验收清单
  • 任何工具错误都不会导致程序崩溃。
  • 超过最大步数时明确失败,而不是编造结论。
  • 输出包含触发风险的指标和阈值证据。
  • 高风险结果仅建议人工处理。

5.3 工程复现与部署

cd repository/enterprise-agent-lab
python -m unittest discover -s tests -v
python -m app.cli --question "设备 P-100 温度 88 度,应该怎么处理?" --user employee-001
python -m app.cli --question "请创建维修工单" --user employee-001 --approve

先阅读 app/schemas.py 的请求/状态,再逐步跟踪 app/agent.py 的“感知—检索—决策—行动—验证”。删除 --approve 后,写工具必须停在 need_approval;把问题改成无证据内容后,必须返回 no_evidence。这两个失败路径与成功路径同等重要。

服务化运行:

python -m app.server --host 127.0.0.1 --port 8080
curl http://127.0.0.1:8080/health

Linux 生产演练按项目 DEPLOY.md 使用 systemd + Nginx;验收需提交一次完整 JSON 结果、对应证据 ID、停止原因和测试输出。

6. 自测与讨论

为什么固定审批流程通常不需要 Agent?

因为路径和规则已知,普通工作流更稳定、更便宜、更易审计;可在需要理解非结构化材料的节点局部使用模型。

工具调用成功是否等于任务成功?

不等于。还要验证工具返回是否满足业务条件、证据是否充分、状态是否一致。

智能体最重要的停止条件有哪些?

目标完成、最大步骤、预算耗尽、连续错误、风险升级或人工终止。

7. 可靠参考资料