逐日AI

面试题库

共 328 题,当前筛选 1 题。

30 天从前端工程师到 Agent 工程师

D16 Supervisor 动态路由:structured output 路由、override、routingReason

  • Supervisor 模式里的路由决策一般怎么实现?请说说这个节点该做什么、不该做什么。How is the routing decision usually implemented in a supervisor pattern? What should that node do, and what should it not do?
    国内高频海外高频基础#multi-agent#routing#langgraph

    分析过程 · 先想清楚再作答

    1. 这是一道送分题,但送分题最容易答成「让一个 Agent 决定下一步找谁」这种复述题面的话。区分度在后半句:你能不能说清这个节点的职责边界。
    2. 先给机械原理:Supervisor 是图里的一个普通节点,它读状态、调一次模型、只写两个字段——交给谁(route)和为什么这么判(routingReason);真正的分叉发生在它后面那条条件边上,边上挂一个选择函数,把 route 翻译成下一个节点名。
    3. 再划边界,这是拿分的地方:Supervisor 不回答用户的问题、不调业务工具、不产生副作用。它只做选择题,所以可以配一个更便宜的小模型,输入通常只有系统提示词加最后一两句话。
    4. 还有一条边界更容易被忽略:**选择函数里不要再调模型**。判断已经在 Supervisor 节点里做完并落进状态了,选择函数只做翻译。把模型调用塞进选择函数,同一份状态每次可能跳到不同的节点,图就不可复现,后面做检查点重放和评估都会失真。
    5. 最后补一句「一次只派一个人」:Supervisor 解决的是「交给谁」,不解决「一件事要拆成几件、还得有人验收」。后者是 Planner-Executor-Critic 的活。能主动划出这条线,面试官会认为你见过真实系统的边界。
    6. 可以预期的追问:那三个子 Agent 的名单从哪来、加一个新的要改几处?答案是名单应该是单一真相来源——枚举定义、schema、条件边的映射表都从它生成,加一个子 Agent 只改一处,其余地方编译期报错提醒你。

    How to reason about it · think before answering

    1. This is a warm-up question, and warm-ups are where people lose points by restating the prompt: an agent decides who goes next. The discriminator is the second half — can you state the node's responsibility boundary?
    2. Start with the mechanics: the supervisor is an ordinary node. It reads state, makes one model call, and writes exactly two fields — the route and the reason for it. The actual branching happens on the conditional edge after it, whose selector function maps the route to the next node name.
    3. Then draw the boundary, which is where the points are: the supervisor never answers the user, never calls business tools, and produces no side effects. It only takes a multiple-choice test, so it can run on a cheaper small model with a short input.
    4. One boundary people miss: do not call the model inside the selector function. The judgement was already made and stored in state; the selector only translates. Calling a model there makes the same state jump to different nodes across runs, which destroys reproducibility and breaks checkpoint replay and evaluation later.
    5. Close with one-at-a-time: a supervisor answers who takes this, not how to split a task and who reviews the output. That second problem belongs to planner-executor-critic. Drawing that line yourself signals you have seen a real system.
    6. Expect: where does the list of sub-agents live, and how many places change when you add one? Answer that the list should be a single source of truth — the enum, the schema, and the edge mapping all derive from it, so adding an agent is one edit and everything else fails at compile time.

    答题要点

    • Supervisor 是图里的一个普通节点:读状态、调一次模型、只写 route 与 routingReason 两个字段
    • 真正的分叉在它后面的条件边上:选择函数把 route 翻译成下一个节点名,映射表要写全
    • 职责边界:不回答用户、不调业务工具、不产生副作用,因此可以单独配一个更便宜的小模型
    • 选择函数里不能调模型,否则同一份状态每次跳的节点不同,图不可复现,检查点重放与评估都会失真
    • Supervisor 一次只派一个人,只解决「交给谁」;拆任务与验收是 Planner-Executor-Critic 的职责

    Key points

    • The supervisor is an ordinary node: read state, one model call, write only the route and the routing reason
    • Branching lives on the conditional edge after it — a selector maps the route to a node name, and the mapping table must be exhaustive
    • Boundary: it never answers the user, calls no business tools, has no side effects, so it can run on a cheaper small model
    • Never call a model inside the selector, or the same state jumps to different nodes across runs and replay and evaluation both break
    • A supervisor dispatches one agent at a time and only answers who takes this; splitting and reviewing belong to planner-executor-critic