【AI面试临阵磨枪-90】Skill 之间如何调用、依赖、组合、编排?

📅 2026/7/25 6:36:49 👁️ 阅读次数 📝 编程学习
【AI面试临阵磨枪-90】Skill 之间如何调用、依赖、组合、编排?

一、面试题目

AI Agent 中多个 Skill 之间如何实现调用、依赖、组合、编排?分别说明调用方式、依赖管理、组合模式、编排引擎与落地实践。

二、知识储备

1. 核心定位

Skill 是可复用的业务能力单元,单个 Skill 只能完成单一业务闭环;复杂业务需要多个 Skill 串联、并联、条件分支、嵌套调用,由编排引擎统一管理,本质是业务流程的可视化编排 + 状态机驱动

2. Skill 调用方式(4 种)

(1)直接调用(同步调用)

  • A Skill 内部直接实例化/调用 B Skill,同步阻塞执行
  • 适合强依赖、串行步骤:查订单 → 校验售后 → 退款
  • 特点:简单直接、上下文透传、同步返回结果

(2)异步调用(事件驱动)

  • Skill 触发后发送事件,由消息队列/总线触发下一个 Skill
  • 适合长耗时、解耦场景:投诉受理 → 派单 → 跟进 → 回访
  • 特点:非阻塞、削峰、解耦,支持跨服务

(3)嵌套调用

  • 一个父 Skill 内部封装多个子 Skill
  • 例:全域售后Skill内部嵌套:判责Skill、赔付Skill、通知Skill
  • 特点:层级清晰、可复用,子 Skill 对外透明

(4)Agent 调度调用

  • Agent 根据意图、上下文、条件,动态选择 Skill 调用
  • 适合不确定流程:用户问题不同,自动匹配不同业务技能

3. Skill 依赖管理

(1)依赖类型

  • 硬依赖:必须先执行 A 才能执行 B,如查订单 → 退款
  • 软依赖:可选执行,不影响主流程,如退款后可执行通知(可降级)
  • 数据依赖:B 需要 A 的输出结果(订单ID、金额、责任判定)

(2)依赖解耦方案

  1. 上下文透传:所有 Skill 共享统一 Context,参数自动传递
  2. 依赖注入 DI:Skill 运行时注入所需前置 Skill,不硬编码
  3. DAG 有向无环图校验:编排时检查循环依赖,禁止死锁
  4. 版本兼容:Skill 升级不破坏下游依赖,接口兼容

4. Skill 常见组合模式(面试必背)

(1)串行组合(顺序执行)

A → B → C,上一个输出作为下一个输入
示例:查询骑手位置 → 判断超时 → 自动赔付

(2)并行组合(并发执行)

多个 Skill 同时执行,全部完成后合并结果
示例:同时查订单、查物流、查库存,综合判断

(3)条件分支组合(if‑else)

根据前序结果走不同 Skill
示例:超时 → 赔付Skill;未超时 → 安抚Skill

(4)循环组合(循环执行)

满足条件重复执行,如多次重试、多轮确认
示例:多次引导用户补充参数,直到信息完整

(5)容错兜底组合

主 Skill 失败自动切换备用 Skill
示例:退款Skill异常 → 人工转接Skill

5. 编排引擎实现(企业级标准)

(1)技术选型

  • 轻量:LangGraph 状态机编排(Agent 首选)
  • 复杂业务:工作流引擎(Camunda、Flowable)
  • 自研:状态机 + DAG 调度器,适配多租户 Skill 中台

(2)编排核心能力

  1. 可视化画布:拖拽配置 Skill、连线、条件分支
  2. 状态持久化:中断后可续跑,防止流程丢失
  3. 超时/重试/熔断透传:编排层统一管控
  4. 上下文全局共享:参数自动传递、无需手动传参
  5. 多租户隔离编排:租户拥有独立编排流程

6. 落地约束(生产环境)

  1. 禁止 Skill 循环依赖,编排前做 DAG 校验
  2. 子 Skill 异常不导致主流程雪崩,支持降级
  3. 所有跨 Skill 调用统一鉴权、幂等、日志可追溯
  4. 编排规则可配置、可灰度、可回滚

三、代码实现(伪代码,LangGraph 风格)

from langgraph import StateGraph # 1. 定义Skill def query_order_skill(context): ... def judge_responsibility_skill(context): ... def refund_skill(context): ... # 2. 编排DAG流程 workflow = StateGraph() workflow.add_node("query_order", query_order_skill) workflow.add_node("judge", judge_responsibility_skill) workflow.add_node("refund", refund_skill) # 串行编排 workflow.add_edge("query_order", "judge") workflow.add_edge("judge", "refund") # 条件分支 workflow.add_conditional_edges( "judge", lambda x: "refund" if x["is_responsibility"] else "end" )

四、破局之道(面试升华)

Skill 之间的调用与编排,本质是把离散的业务能力,组装成可执行的业务工作流
通过直接/异步/嵌套/Agent调度实现灵活调用,用DAG+状态机管理依赖与顺序,支持串行、并行、分支、循环、容错多种组合模式;上层由编排引擎统一管控,实现可视化、可配置、可运维、可灰度,解决传统 Function Calling 无法处理复杂长链路任务的痛点,是企业级 Agent 平台的核心架构。

30 秒口述精简版

Skill 支持直接调用、异步调用、嵌套调用、Agent动态调度;通过上下文透传与DAG做依赖管理;采用串行、并行、条件分支、循环、容错模式组合;基于状态机/工作流引擎统一编排,实现复杂业务流程自动化。