概述
Shannon 的模板系统支持为常见模式创建确定性、零Token消耗的工作流。模板在 YAML 中定义结构化工作流,无需 AI 分解即可执行,为可重复任务提供显著的成本节省。零Token成本
模板绕过 LLM 调用进行工作流路由
确定性执行
可预测、可重复的工作流行为
预算控制
每节点Token限制与自动降级
DAG 支持
带依赖管理的并行执行
何时使用模板
使用模板的场景:- 工作流可重复且结构已知
- 希望消除分解Token成本
- 需要可预测的执行顺序
- 需要按工作流阶段进行预算控制
- 任务结构未知或可变
- 需要对工作流设计进行复杂推理
- 一次性或高度动态的任务
模板结构
模板是具有以下结构的 YAML 文件:核心字段
默认设置
节点类型
Shannon 支持四种节点类型以适应不同的执行模式:Simple 节点
单任务执行,直接调用工具。Cognitive 节点
复杂推理,多步骤分析。DAG 节点
带内部任务依赖的并行执行。Supervisor 节点
分层任务分解和协调。执行策略
策略定义节点如何处理任务:自动降级
当达到预算限制时,策略会自动降级:创建模板
1
创建模板文件
在
config/workflows/examples/ 或自定义目录中创建 YAML 文件:2
注册模板目录
模板在启动时通过
InitTemplateRegistry 加载:3
重启服务
4
列出可用模板
通过 gRPC:
使用模板
通过 HTTP Gateway
通过 gRPC
设置
disable_ai: true 可强制仅使用模板执行,不进行 AI 回退。通过 Python SDK
模板示例
简单分析工作流
用于快速摘要的两阶段管道:研究摘要工作流
带渐进推理的四阶段研究管道:并行 DAG 工作流
带并行执行分支的复杂工作流:模板继承
模板可以使用extends 从父模板继承:
验证
模板在加载时会进行以下验证:- YAML 语法正确性
- 必需字段存在
- DAG 无环(无循环依赖)
- 预算层级(节点预算 ≤ 代理预算)
- 工具注册表存在
- 变量引用解析
最佳实践
保持节点小而专注
保持节点小而专注
每个节点应只做好一件事:
显式允许工具列表
显式允许工具列表
限制每个节点的工具以提高安全性和可预测性:
使用预算降级
使用预算降级
配置回退策略以控制成本:
使用继承实现通用模式
使用继承实现通用模式
将共享默认值提取到基础模板中:
版本化您的模板
版本化您的模板
使用语义版本控制并在请求中指定版本:
故障排除
模板未找到
模板未找到
症状:
template 'my_workflow' not found解决方案:- 检查模板文件是否存在于已注册的目录中
- 验证 YAML 语法:
yamllint config/workflows/examples/my_workflow.yaml - 重启 orchestrator 以重新加载模板
- 检查 orchestrator 日志中的加载错误
验证错误
验证错误
症状:
Template validation failed: circular dependency解决方案:- 检查
depends_on字段是否有循环 - 确保 DAG 节点具有无环任务依赖
- 检查
edges是否创建了循环
预算超出
预算超出
症状: 节点执行提前停止或意外降级解决方案:
- 增加受影响节点的
budget_max - 配置
degrade_to以实现优雅回退 - 检查总预算与节点预算之和
工具不可用
工具不可用
症状:
tool 'my_tool' not registered解决方案:- 验证工具已在工具注册表中注册
- 检查
tools_allowlist中的工具名称拼写 - 确保 LLM 服务已加载该工具
合成模板
合成模板控制 Shannon 在所有 agent 完成工作后如何格式化最终输出。这些 Go 模板位于config/templates/synthesis/ 目录中,由 Orchestrator 在返回结果前进行渲染。
可用模板
基础契约
所有合成模板都从_base.tmpl 继承行为规则:
引用处理
引用处理
- 当 CitationAgent 启用时:合成内容中不添加内联
[n]引用 — Citation Agent 会单独添加 - 当 CitationAgent 禁用时:使用与
AvailableCitations列表匹配的内联[n]引用
时间引用
时间引用
CurrentDate 字段会注入到每个模板中,支持在时效性内容中使用”截至”表述。结构化产物
结构化产物
模板必须保留结构化产物(表格、代码块、JSON)— 不得将其扁平化为纯文本。
来源章节
来源章节
模板不应包含”来源”章节。系统会自动追加来源引用。
模板数据
每个合成模板都会接收一个SynthesisTemplateData 结构体,包含以下字段:
选择合成模板
Orchestrator 根据任务类型和配置选择合成模板:- 通过任务上下文
- 通过工作流模板
如果未指定
synthesis_style,Shannon 会自动为研究任务选择 research_comprehensive,为其他任务选择 normal_default。示例工作流
Shannon 在config/workflows/examples/ 目录中附带了 8 个示例工作流模板。这些模板可作为即用型起点和参考实现。
工作流目录
YAML 结构参考
所有示例工作流遵循以下结构:模式降级
示例工作流展示了 Shannon 在资源受限时的自动降级行为:学习路由器
启用后,Learning Router 会根据查询与过去成功执行的相似度自动选择工作流模板。这消除了调用方显式指定模板的需要。下一步
自定义工具
为您的模板添加工具
扩展 Shannon
其他扩展方法
配置
环境和 YAML 配置
架构
了解 Shannon 的设计