Skip to main content

概要

Shannonのテンプレートシステムは、決定論的でゼロトークンのワークフローを一般的なパターンに対して可能にします。テンプレートは、AIの分解なしに実行されるYAMLで構造化されたワークフローを定義し、繰り返し可能なタスクに対して大幅なコスト削減を提供します。

ゼロトークンコスト

テンプレートはワークフローのルーティングにLLM呼び出しをバイパスします

決定論的実行

予測可能で繰り返し可能なワークフローの動作

予算管理

ノードごとのトークン制限と自動的な劣化

DAGサポート

依存関係管理を伴う並列実行

テンプレートを使用するタイミング

テンプレートを使用する場合:
  • ワークフローが既知の構造で繰り返し可能な場合
  • 分解トークンコストを排除したい場合
  • 予測可能な実行順序が必要な場合
  • ワークフローの各ステージで予算管理が必要な場合
AI分解を使用する場合:
  • タスクの構造が不明または変動する場合
  • ワークフロー設計に関する複雑な推論が必要な場合
  • 一回限りまたは非常に動的なタスク

テンプレート構造

テンプレートは次の構造の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解決策:
  1. 登録されたディレクトリにテンプレートファイルが存在するか確認
  2. YAML構文を検証: yamllint config/workflows/examples/my_workflow.yaml
  3. オーケストレーターを再起動してテンプレートを再読み込み
  4. オーケストレーターのログでロードエラーを確認
症状: Template validation failed: circular dependency解決策:
  1. depends_on フィールドにサイクルがないか確認
  2. DAGノードが非循環のタスク依存関係を持つことを確認
  3. edges がループを作成していないか確認
症状: ノードの実行が早期に停止するか、予期せず劣化する解決策:
  1. 影響を受けるノードの budget_max を増加
  2. 優雅なフォールバックのために degrade_to を設定
  3. 総予算とノード予算の合計を確認
症状: tool 'my_tool' not registered解決策:
  1. ツールがツールレジストリに登録されているか確認
  2. tools_allowlist でツール名のスペルを確認
  3. 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 の自動劣化動作を示しています:
劣化は自動的に行われ、ログに記録されます。フォールバックがいつ発動したかを監視するには、Orchestrator のログで strategy_degraded イベントを確認してください。

ラーニングルーター

有効にすると、Learning Router は過去の成功した実行に対するクエリの類似性に基づいてワークフローテンプレートを自動的に選択します。これにより、呼び出し側がテンプレートを明示的に指定する必要がなくなります。
Learning Router は時間とともに改善されます。新規デプロイメントでは、十分な実行履歴(通常 50 回以上の成功タスク)が蓄積されるまで、テンプレートを明示的に指定することを推奨します。

次のステップ

カスタムツール

テンプレート用のツールを追加

Shannonの拡張

他の拡張方法

設定

環境とYAML設定

アーキテクチャ

Shannonの設計を理解する