【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 风格)

python 复制代码
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做依赖管理;采用串行、并行、条件分支、循环、容错模式组合;基于状态机/工作流引擎统一编排,实现复杂业务流程自动化。

相关推荐
不简说1 分钟前
JS 代码技巧 vol.1 — 10 个让代码少写 30% 的小套路
前端·javascript·面试
Mr_凌宇19 分钟前
# AI 应用工程入门学习笔记 一
人工智能·面试·程序员
Mr_凌宇38 分钟前
AI 应用工程进阶扩展学习笔记 二
前端·面试
Hyyy1 小时前
Git Worktree 完全讲解
前端·后端·面试
云技纵横2 小时前
Redis 延迟双删还是读到脏数据?一次缓存一致性事故
redis·后端·面试
weedsfly2 小时前
前端开发中的代理模式——从 Vue 3 响应式到日常开发
前端·javascript·面试
咖啡八杯2 小时前
GoF设计模式——状态模式
java·面试·架构
尘世中一位迷途小书童3 小时前
Cesium 涟漪扩散点:自定义材质,参数调对了才好看
前端·面试
zzz_23683 小时前
【Java实习面试算法冲刺】图论
java·算法·面试
Sam_Deep_Thinking3 小时前
一次线程池线上故障复盘:四层防线如何避免数据丢失
java·面试·程序员