从“流程固化“到“意图驱动“:大模型调智能体调Skill架构深度解析

传统业务系统基于确定性逻辑构建:if-else分支、状态机、工作流引擎。业务进化意味着修改这些逻辑------提需求、排期、上线,周期以周或月为单位。大语言模型(LLM)的出现带来了新的可能性:让模型理解业务目标,动态编排已有能力,在执行中自我优化。这就是"大模型调智能体调Skill"的核心思想。

本文将深度拆解这套架构的三个层次、调用协议、设计原则以及如何形成业务进化的闭环。面向具备一定AI工程经验的读者,我们不仅讲概念,更讲落地的细节与权衡。


一、重新定义三层能力模型

1.1 为什么不是单一"大模型调API"?

许多人尝试过直接让LLM调用函数(Function Calling)。这在简单场景下有效,但业务系统面临三个挑战:

  • 长期任务:一个业务目标可能需要多步推理、条件分支、甚至等待外部事件。
  • 错误恢复:某个API失败后,需要重试、降级或切换策略。
  • 状态管理:跨轮对话或异步执行需要记忆上下文。

因此需要引入**智能体(Agent)作为中间层,它具备环境感知、规划、记忆和执行能力。而技能(Skill)**则是Agent可调用的最小能力单元,对应一个确定性的业务操作。

1.2 三层定义与职责

层次 角色 输入 输出 典型技术载体
大模型 决策核心、任务规划器 用户自然语言意图 + 历史记忆 任务序列(Plan) GPT-4、Claude、LLaMA 3,带结构化输出
智能体 任务执行器、状态管理者 高层任务计划 低阶技能调用序列 + 中间结果 LangGraph、AutoGen、CrewAI、自研状态机
技能 原子业务操作 结构化参数(JSON Schema) 结构化结果 + 执行元数据 云函数、API、SQL、REST endpoint

调用关系并非简单的链式调用,而是一个递归的、带反馈的控制回路

复制代码
用户意图 → LLM规划 → Agent分解 → 调用Skill1 → 结果返回Agent → 
Agent决策(成功/需修正)→ 调用Skill2 → ... → 最终结果 → LLM总结

1.3 一个具体例子

用户说:"帮我查一下上周订单量最大的品类,然后给该品类的VIP用户发送一张8折优惠券。"

  • LLM规划:输出JSON任务列表
json 复制代码
[
  {"action": "query_top_category", "params": {"time_range": "last_week"}},
  {"action": "send_coupon", "params": {"category": "{{前一步.result}}", "user_segment": "VIP", "discount": 0.2}}
]
  • Agent执行 :维护变量上下文,先调用 query_top_category Skill,拿到结果"运动鞋",再调用 send_coupon Skill。
  • Skill实现query_top_category 执行SQL查询,返回 {"category":"运动鞋","order_count":1230}send_coupon 调用促销引擎API。

二、Skill设计:原子化与可观测性

业务进化的最小单元是Skill。如果Skill设计得粗糙,Agent无论怎么调度都无法产生高质量结果。

2.1 原子化原则

一个Skill只做一件明确的事,且不依赖外部上下文(所有参数显式传入)。

反面例子process_order 混合了库存检查、支付、发货通知。

正确拆分

复制代码
check_inventory(sku, quantity)      → {available: bool, estimated_restock_date: date}
create_payment_intent(user_id, amount, currency) → {payment_id, status}
schedule_shipment(order_id, address) → {tracking_number, carrier}

原子化带来三个好处:

  • 可复用:不同Agent可以组合相同Skill。
  • 可测试:每个Skill可单独单元测试。
  • 可观测:失败时可以精确定位到最小环节。

2.2 标准化接口

每个Skill必须提供OpenAPI风格的定义,包含:

  • 输入参数的JSON Schema(含类型、枚举、范围)
  • 输出结果的JSON Schema
  • 预期副作用(如"修改数据库"、"发送消息")

示例(YAML格式)

yaml 复制代码
name: send_coupon
description: 向指定用户发送一张优惠券
input:
  type: object
  properties:
    user_id:
      type: string
      pattern: '^USR-\d+$'
    coupon_template_id:
      type: string
    expiry_days:
      type: integer
      minimum: 1
      maximum: 365
  required: [user_id, coupon_template_id]
output:
  type: object
  properties:
    success: boolean
    coupon_code: {type: string}
    sent_at: {type: string, format: date-time}
side_effects: ['insert into coupon_issue_log']

2.3 可观测性元数据

Skill的每次执行都应该返回或上报以下元数据,供Agent和LLM做后续决策:

字段 说明
duration_ms 执行耗时
confidence 结果置信度(如预测类Skill)
retry_count 重试次数
error_type 失败时分类(network / business / permission / rate_limit)

这些数据会进入执行轨迹(Trace),成为业务进化的燃料。


三、Agent实现模式:从ReAct到Plan-and-Execute

Agent负责将LLM的计划转化为对Skill的调用序列,并处理异常。这里介绍两种主流模式。

3.1 ReAct模式(Reason + Act)

LLM在每一步思考:"当前状态是什么?下一步应该调用哪个Skill?调用后预期得到什么?" 适合交互式、步骤数少的场景。

伪代码流程

复制代码
while not goal_achieved:
  prompt = build_prompt(history, available_skills, current_state)
  response = llm.generate(prompt)  # 输出 Thought + Action + Action Input
  if response.action == "finish":
    break
  result = call_skill(response.action, response.action_input)
  history.append((response.action, result))
  • 优点:灵活性高,LLM可以动态纠错。
  • 缺点:Token消耗大,容易陷入循环。

3.2 Plan-and-Execute模式

LLM首先生成完整计划(一系列Skill调用),然后由Agent执行引擎按顺序执行,支持条件跳转和并行。

关键组件

  • Planner:输出有向无环图(DAG)或线性步骤列表。
  • Executor:解释计划,调用Skill,管理变量上下文,处理跳转。
  • Checker:验证计划可行性(例如检查Skill输入输出类型是否匹配)。

LangGraph示例结构(Python风格)

python 复制代码
from langgraph.graph import StateGraph, MessageGraph

class AgentState(TypedDict):
    plan: List[Dict]
    current_step: int
    variables: Dict
    final_answer: str

graph = StateGraph(AgentState)
graph.add_node("planner", llm_plan_node)
graph.add_node("executor", skill_executor_node)
graph.add_node("reflector", llm_reflect_node)  # 可选的反思节点
graph.add_edge("planner", "executor")
graph.add_conditional_edges("executor", should_continue)

3.3 多Agent协作

对于复杂业务,可以使用多个专职Agent(如"数据分析Agent"、"客服Agent"、"交易Agent"),由主控Agent进行任务分发。每个Agent内部有自己的Skill集合。这种模式更适合大型业务系统,因为职责隔离、易于调试。


四、业务进化闭环:数据驱动的自我优化

"Agent驱动业务进化"不是一句口号,而是通过以下三个机制实现的工程化设计。

4.1 反馈回路:执行轨迹 → 微调与优化

每次Agent完成一个任务,系统记录完整轨迹(Trace),包括:

  • 用户原始意图
  • LLM生成的计划
  • 每个Skill的输入输出及元数据
  • 最终结果是否成功

这些轨迹可以用于:

用途 说明
离线评估 计算计划执行成功率、平均Skill调用次数、耗时分布
错误分析 哪些Skill组合经常失败?是因为参数错误,还是Skill本身不稳定?
LLM微调 将成功的轨迹作为正样本,失败的轨迹作为负样本,微调Planner模型
动态Skill路由 如果某个Skill在特定条件下失败率超过阈值,Agent学习先调用"预处理Skill"(如数据清洗)

4.2 策略学习:从固定流程到动态组合

传统工作流是人工预定义的路径。在Agent架构中,路径由LLM根据当前上下文动态生成。这意味着系统能够发现从未被程序员写过的成功模式。

例如,一个电商售后Agent遇到"用户要求换货但目标SKU无货"时,标准流程是告知无货。但通过实验,LLM可能生成新路径:

复制代码
1. check_inventory(target_sku) → 无货
2. get_similar_skus(original_sku) → 返回3个推荐
3. ask_user_accept_similar() → 用户同意
4. create_exchange_order(new_sku)

这个路径如果成功率高,可以被缓存为"模式",后续类似场景直接复用,降低LLM调用成本。

4.3 主动进化:Agent发现业务盲区

Agent不仅可以被动响应,还可以主动扫描系统状态。例如:

  • 监控Skill调用频率的变化,发现某个入口功能使用量下降,推测产品流程有问题,自动在团队协作工具中创建工单:"检查XX功能是否被新UI隐藏"。
  • 分析用户重复询问的问题,发现缺少一个"批量退款"Skill,自动提议新增该能力。

这种主动进化需要Agent具备元认知能力,通常通过定时运行一个"审计Agent"来实现。


五、实战案例:电商售后智能体

为了展示完整的技术实现,我们以电商售后场景为例,使用Plan-and-Execute模式构建一个Agent。

5.1 定义Skill集合

Skill名称 输入 输出 实现方式
get_order_detail order_id order_items, status, user_id 订单中心API
check_refund_eligibility order_id, user_id eligible: bool, reason: string 规则引擎
create_refund order_id, amount, reason refund_id, status 支付网关API
send_notification user_id, message_template sent: bool 消息中心
get_inventory sku available_qty 库存服务
create_exchange order_id, old_sku, new_sku exchange_id 售后系统

5.2 Agent规划提示词设计

Planner的Prompt需要明确约束:

复制代码
你是售后Agent规划器。根据用户需求生成一个JSON任务列表。
每个任务包含:skill_name, parameters (可以是常量或变量引用,变量用{{变量名}}表示)

可用Skill列表:
- get_order_detail: 需要order_id
- check_refund_eligibility: 需要order_id, user_id
- create_refund: 需要order_id, amount, reason
- send_notification: 需要user_id, message_template
- get_inventory: 需要sku
- create_exchange: 需要order_id, old_sku, new_sku

规则:
1. 如果用户要求退款,必须先检查资格。
2. 如果用户要求换货,必须先检查新SKU库存,无库存则不能创建换货。
3. 任何操作后都必须通知用户。
4. 变量使用双花括号,例如{{get_order_detail.user_id}}。

用户输入:{{user_input}}

5.3 执行器核心逻辑(伪代码)

python 复制代码
class Executor:
    def __init__(self, skills_registry):
        self.skills = skills_registry
        self.variables = {}

    def execute_plan(self, plan: List[Dict]) -> Dict:
        for step in plan:
            # 解析参数中的变量引用
            resolved_params = self._resolve_variables(step["parameters"])

            # 调用Skill
            skill = self.skills[step["skill_name"]]
            result = skill(**resolved_params)

            # 存储结果到变量上下文,key为 skill_name_output
            self.variables[f"{step['skill_name']}_output"] = result

            # 检查业务异常(例如资格检查不通过)
            if step.get("on_failure") == "abort" and not result.get("success"):
                return {"status": "failed", "reason": result.get("error")}

        return {"status": "success", "final_variables": self.variables}

5.4 进化闭环:从一次换货请求看数据收集

用户输入:"我要把订单ORD-123中的蓝色M码T恤换成黑色L码,但我后天要出差。"

Agent生成的计划:

  1. get_order_detail(order_id="ORD-123")
  2. get_inventory(sku="BLK-TS-L")
  3. 条件判断:库存>0 → 执行 create_exchange;否则执行替代方案
  4. send_notification

假设库存为0,Agent动态生成替代计划:

  1. get_similar_skus(category="T恤", size="L", color="black") (假设有推荐Skill)
  2. 向用户询问是否接受替代品

该轨迹被记录后,数据分析发现:"换货时原始SKU无货"的占比为23%。产品团队因此决定增加"相似商品推荐"功能作为标准流程,并开发了专门的 get_similar_skus Skill。这就是业务进化。


六、工程落地要点与最佳实践

6.1 安全围栏:防止失控

Agent再强大,也不能拥有无限权限。需要设置:

机制 说明
操作白名单 每个Agent只能调用其授权范围内的Skill
频次限制 同一Skill单位时间内调用上限(如退款接口每分钟不超过10次)
金额/数量上限 在参数层面钳制(如优惠券面额不超过50元)
人工审批点 对于高风险操作(如批量退款、修改核心配置),Agent必须暂停并等待人工确认

实现方式:在Skill调用前增加一个Guard层,检查当前Agent会话的权限和配额。

6.2 人机协同:Human-in-the-loop

不是所有场景都适合全自动。推荐的成熟度模型:

等级 描述 适用场景
L1 完全人工 新业务,无历史数据
L2 Agent推荐,人工确认 中等风险操作
L3 Agent执行,人工抽查 低风险、高频操作
L4 全自动,事后审计 已验证的稳定路径

实现时,可以在Executor中插入 human_approval 节点:当计划中包含高风险Skill时,通过消息通道(如飞书、Slack)发送审批卡片。

6.3 可观测性:三大支柱

  • Logs:每个Agent决策、Skill调用的结构化日志。
  • Metrics:成功率、平均耗时、Token消耗、计划长度分布。
  • Traces:完整的分布式追踪(从用户输入到最终输出)。

推荐使用OpenTelemetry协议,将数据导出到Jaeger或阿里云ARMS。

6.4 成本控制

LLM调用(尤其是Plan阶段)是主要成本来源。优化手段:

  • 缓存常用计划:对于重复性高的请求(如"查询订单状态"),不经过LLM,直接映射到预定义计划。
  • 小模型做路由:使用BERT等小模型判断用户意图,分流到不同Agent,减少LLM调用。
  • 流式输出与早停:如果Agent已经收集到足够信息回答用户,可以中断后续Skill调用。

七、总结与展望

"大模型调智能体调Skill"不是简单地把LLM当作API网关,而是一种新的业务系统编程范式。它要求我们:

  1. 重新设计Skill:原子、可观测、结构化。
  2. 精心构建Agent:规划、执行、记忆、安全。
  3. 建立进化闭环:通过数据反馈持续优化策略。

目前,这一范式已经在客服自动化、智能运维、数据分析等场景展现出显著效果。未来,随着LLM推理能力的提升和成本的下降,Agent将从"辅助人类"走向"自主驱动业务",但核心原则不会变:让模型理解业务目标,让代码保障确定性,让数据驱动进化。


实践建议 :如果你正准备在自己的系统中落地这套架构,建议从一个低风险、高频的业务场景(如内部知识问答、工单分类)开始,先封装3-5个Skill,搭建一个简单的ReAct Agent,积累执行轨迹数据,再逐步扩展。

愿你在这条路上,不仅收获技术成长,更能看到业务因智能而进化的力量。

相关推荐
xyz_CDragon2 小时前
OpenClaw Skills 完全指南:ClawHub 安装、安全避坑与自定义开发(2026)
人工智能·python·ai·skill·openclaw·clawhub
2501_948114242 小时前
DeepSeek V4 全面实测:万亿参数开源模型的工程落地与成本推演
人工智能·ai·开源
南师大蒜阿熏呀2 小时前
openclaw 多智能体协同简易版案例实战
ai·openclaw
前进的李工3 小时前
LangChain使用AI工具赋能:解锁大语言模型无限潜力
开发语言·人工智能·语言模型·langchain·大模型
Agent产品评测局3 小时前
互联网行业自动化平台选型,运营全流程提效指南:2026企业级智能体架构与实战全解析
运维·人工智能·ai·chatgpt·架构·自动化
AI航向标3 小时前
OpenClaw 完整本地部署安装(接入飞书)
人工智能·飞书·openclaw
无问芯穹3 小时前
探路智能体落地“最后一公里”:复现Cursor在线强化学习,RLinf-Online团队详解技术实现路径及背后思考
agent·强化学习·rlinf
zandy10113 小时前
【全新 3.0版本】openclaw github installation guide
github·openclaw·installation
AI航向标3 小时前
Openclaw一键本地部署接入豆包
人工智能·openclaw