Files
autumn-recruitment/06.AI/agent-design/Eino DAG 工作流设计_test.md

6.4 KiB
Raw Permalink Blame History

tags, create time
tags create time
test/review
ai
agent-design
eino-dag
2026-08-09 12:00

Eino DAG 工作流设计 — 测试题

概述

本测试覆盖 Eino DAG 核心概念(Node/Edge/Workflow)、状态传递机制、Choice 条件分支、ParallelStep 并行执行以及错误处理与重试策略。共 10 道题目(6 选择 + 3 填空 + 1 简答)。


一、选择题(6道,由浅入深)

难度阶梯: Q1-Q2 基础概念 → Q3-Q4 核心原理 → Q5-Q6 深入应用/边界场景

Q1(基础)— 考察定义层面

Eino 框架中,以下哪个节点类型不是原生支持的?

A. LLM Node — 调用大模型生成文本 B. Tool Node — 执行预注册的外部工具 C. Database Node — 直接执行 SQL 查询 D. Lambda Node — 自定义 Go 函数闭包

Q2(基础)→

DAG 的核心优势在于并行性——如果两个节点没有数据依赖,它们可以在不同 Goroutine 中同时运行。那么两个节点能否安全并发的判定条件是:

A. 它们的输入相同 B. 它们的上游节点相同 C. 它们没有重叠的 writes D. 它们的执行时间相近

Q3(进阶)— 核心原理

在 Eino 中 Choice 节点根据什么决定走向哪个下游节点?

A. 固定的路由规则表 B. 回调函数返回的目标节点 ID C. 节点的拓扑排序位置 D. 随机选择一个未饱和的下游

Q4(进阶)— 比较/辨析

关于 ParallelStep 的描述,以下哪个是错误的?

A. 可以对同一上游 fan-out 到多个下游 B. 需要一个 Merge 函数负责将子图结果聚合为最终输出 C. 三个子任务串行执行后合并结果以节省资源 D. 每个子任务可以处理输入的不同维度

Q5(深入)— 场景推理

一个 RAG 系统中,检索节点的输出可能为空(找不到相关文档)。用 Eino DAG 实现时,最合理的方案是:

A. 在检索节点后加一个 Checkpoint,如果为空就中断整个 DAG B. 使用 Choice 节点判断 hits 是否为空,为空时走 fallback 路径,不为空时走主路径 C. 配置重试策略无限重试直到有结果 D. 让 LLM 自己编造答案

Q6(深入)— 源码级/边界场景

关于 Eino DAG 的错误处理策略,"连续失败 N 次后跳过整条链路"对应的是哪种机制?

A. 节点级超时 B. 失败重试 C. 降级路径 D. 熔断器


二、填空题(3道)

F1 — 填空1

DAG 在编译期完成_____,确保图中无环。运行时按拓扑序执行所有没有未满足依赖的节点,已就绪节点可并发执行。如果实际项目中节点数超过_____个,建议拆分为嵌套子 DAG。

提示: 第一个空是编译期的关键动作;第二个空是原文中的经验上限值。

F2 — 填空2

State Schema 中节点的读集合(reads)和写集合(writes)决定了节点间能否安全并行——两个节点如果没有_____就一定能并发执行。如果都写同一个字段则必须串行。

提示: 原文面试常考点的原话。

F3 — 填空3

重试配置的参数包括 MaxRetries = _____、BackoffBase = 1s、BackoffMul = 2。这是一个标准的_____退避算法。

提示: 回忆重试代码示例中的数值和时间算法名称。


三、简答题(1道)

S1

面试官问:"如何用 DAG 实现一个多轮对话系统?"请给出你的架构设计,需要涵盖:

  1. State 如何携带上下文
  2. Intent 判断的节点设计
  3. 专业 Agent 的分发机制
  4. 质量保障闭环

答题框架提示:

  1. 单轮 vs 多轮的建模方式
  2. 关键节点类型及其职责
  3. 循环/反馈的设计(如 self-check)
  4. 复杂度控制

参考答案与解析

选择题答案

题号 正确答案 解析
Q1 C Eino 原生的五种节点是:LLM Node、Tool Node、Prompt Node、State Node、Lambda Node。Database Node 不是原生类型——如果需要数据库操作,可以用 Tool Node 或 Lambda Node 封装 SQL 查询逻辑。
Q2 C 原文面试常考点:两个节点如果没有重叠的 writes,就一定能并发执行。共享读取不冲突,只有写入冲突才需要序列化。
Q3 B Choice 节点基于回调函数(路由函数)返回目标节点 ID,然后 map 中将字符串 key 映射到对应的下游节点。回调函数的签名是 func(state *eino.State) (string, error)。
Q4 C ParallelStep 是并行执行而非串行——三个 Agent 同时启动各自处理 query 的一个维度。C 说"串行执行"完全违背了 ParallelStep 的设计目的。
Q5 B Choice 判断 hits 是否为空是最合理的方案:RAG 检索为空时回退到备用路径(如默认回答或直接拒绝),这是原文中提到的降级模式。
Q6 D 熔断器的定义是"连续失败 N 次后跳过整条链路"。这是为了防止上游服务不可用时持续浪费资源尝试调用。

填空题答案

题号 答案 解析
F1 拓扑排序;15 DAG 编译期做拓扑排序确保无环。原文建议控制在 15 个节点以内,超出则拆分为嵌套子 DAG——因为复杂度随节点数呈组合增长。
F2 重叠的 writes(或"共同的写入字段") 读读不冲突,读写也不冲突(只要不是同一个字段),只有写写冲突才需要串行。这也是 Eino 状态机的核心并发安全原则。
F3 3;指数 标准指数退避:第一次 1s,第二次 2s,第三次 4s。MaxRetries=3 表示最多重试 3 次。

简答题参考答案

S1:参考答案要点:

  1. 单轮建模:每轮对话作为一个独立的 DAG 实例,但 State 携带历史消息(messages 数组),保证上下文连贯。
  2. IntentNode:LLM Node 分析用户意图类型(问答/创作/闲聊),通过 Choice 分发给不同专业 Agent。
  3. 分发机制:Choice 根据 IntentNode 的输出路由到不同路径;ParallelStep 并行调用搜索 Agent、知识库加载 Agent 等。
  4. 质量保障:在 LLM 生成后加入质量评估节点做 self-check,如果不达标则重新触发检索节点(形成循环)。
  5. 复杂度控制:单轮 DAG 控制在 15 个节点内;复杂的多轮对话拆分为嵌套子 DAG,外层管理回合切换。

评分标准:答出任意 2 个要点即可得满分;完全正确需覆盖全部要点。

关联笔记