概要
Shannonのテンプレートシステムは、決定論的でゼロトークンのワークフローを一般的なパターンに対して可能にします。テンプレートは、AIの分解なしに実行されるYAMLで構造化されたワークフローを定義し、繰り返し可能なタスクに対して大幅なコスト削減を提供します。ゼロトークンコスト
テンプレートはワークフローのルーティングにLLM呼び出しをバイパスします
決定論的実行
予測可能で繰り返し可能なワークフローの動作
予算管理
ノードごとのトークン制限と自動的な劣化
DAGサポート
依存関係管理を伴う並列実行
テンプレートを使用するタイミング
テンプレートを使用する場合:- ワークフローが既知の構造で繰り返し可能な場合
- 分解トークンコストを排除したい場合
- 予測可能な実行順序が必要な場合
- ワークフローの各ステージで予算管理が必要な場合
- タスクの構造が不明または変動する場合
- ワークフロー設計に関する複雑な推論が必要な場合
- 一回限りまたは非常に動的なタスク
テンプレート構造
テンプレートは次の構造のYAMLファイルです:コアフィールド
デフォルト設定
ノードタイプ
Shannonは、異なる実行パターンのために4つのノードタイプをサポートしています。シンプルノード
単一タスクの実行と直接ツールの呼び出し。コグニティブノード
複雑な推論と多段階の分析。DAGノード
内部タスク依存関係を持つ並列実行。スーパーバイザーノード
階層的なタスク分解と調整。実行戦略
戦略はノードがタスクを処理する方法を定義します:自動劣化
予算制約に達した場合、戦略は自動的に劣化します:テンプレートの作成
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 - オーケストレーターを再起動してテンプレートを再読み込み
- オーケストレーターのログでロードエラーを確認
バリデーションエラー
バリデーションエラー
症状:
Template validation failed: circular dependency解決策:depends_onフィールドにサイクルがないか確認- DAGノードが非循環のタスク依存関係を持つことを確認
edgesがループを作成していないか確認
予算超過
予算超過
症状: ノードの実行が早期に停止するか、予期せず劣化する解決策:
- 影響を受けるノードの
budget_maxを増加 - 優雅なフォールバックのために
degrade_toを設定 - 総予算とノード予算の合計を確認
ツールが利用できない
ツールが利用できない
症状:
tool 'my_tool' not registered解決策:- ツールがツールレジストリに登録されているか確認
tools_allowlistでツール名のスペルを確認- LLMサービスがツールをロードしていることを確認
合成テンプレート
合成テンプレートは、すべてのエージェントが作業を完了した後に Shannon が最終出力をどのようにフォーマットするかを制御します。これらの 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の設計を理解する