宣言型エージェント (Declarative Agents)
エージェントをコードではなく YAML で定義し、Web アプリから 有効なエージェントをランタイム
切替 できます -- コード変更も再起動も不要です。ChatWalaʻau は Microsoft Agent Framework の
宣言型フォーマット (agent-framework-declarative、AgentFactory.create_agent_from_yaml /
create_agent_from_yaml_path) を使用します。
重要な原則: YAML は仕様であり、構築は ChatWalaʻau が所有します。 マッピングできないフィールドは
警告とともに無視され、製品の設計方針と衝突するフィールド (例: temperature) は有効化しようとした
時点で拒否されます。Microsoft スキーマとの 100% 互換 は意図的に 目標としません。
できること
- 組み込みの CORE エージェント。 既定の ChatWalaʻau エージェントが CORE エージェントとして 登録され、最初から有効です -- 標準の挙動を完全に再現します。これまで通り使うために設定は一切 不要です。
- フォルダからのカスタムエージェント。
DECLARATIVE_AGENTS_DIRを YAML ファイルのフォルダ (ネストフォルダ可) に向けると、各ファイルが選択可能なエージェントになります。 - 有効なエージェントは 1 つ、Web アプリから切替。 管理モーダル (サイドバー下部の、File Explorer アイコン隣のロボットアイコン) が CORE エージェントとカスタムエージェントをフォルダツリーで一覧 します。1 つを選んで有効化すると、ChatWalaʻau がエージェントを再構築し、切替完了まで「rebuilding」 インジケータを表示します。
- GUI でエージェントを組み立て -- YAML の手書き不要。 Declarative Agents モーダルの Create ボタン (各カスタムエージェントの Edit / Delete) が全画面エディタを開きます。名前・説明・ instructions のフォーム、モデルとツールを接続する視覚キャンバス、直接編集もできるライブ YAML プレビューを備えます。保存すると YAML を生成し、エージェントを即座に登録します。
- エージェント単位のツール。 エージェント は自分専用のツール面を持てます -- 組み込みツール・MCP サーバ/ツール・Skills から必要なものだけを選ぶと、そのエージェントはそれらだけで動作します。省略 すれば従来通り有効な全ツールを継承します。
- 誤りは可視化されます。 マッピングに失敗した YAML はエラー付きで一覧に表示され、有効化できません。
有効化する
# .env
DECLARATIVE_AGENTS_DIR=.agents
フォルダを作成し、YAML ファイルを配置します (ネストフォルダも可):
.agents/
pirate.yaml
support/
triage.yaml
DECLARATIVE_AGENTS_DIR が未設定でも CORE エージェントは常に存在します。
ChatWalaʻau 互換のサンプル
このサンプルは サポートされる全フィールド を網羅しています。警告なくマップされるため、 既定デプロイ (gpt-5.5 を固定) ではそのまま有効化できます。
kind: Prompt # 宣言型スキーマで必須
name: Support Triage Assistant # Declarative Agents 管理画面に表示
displayName: Support Triage # 任意。name が無い場合に使用
description: >- # 管理画面の詳細ペインに表示
受信したサポート質問をトリアージし、構造化サマリを返します。
# 人格 -> Identity (システムプロンプトの最初のブロック)。"=Identity" を指定するか
# instructions を省略すると、グローバルの .agent/IDENTITY.md の人格を引き継ぎます。
instructions: >-
あなたは簡潔なカスタマーサポートのトリアージ担当です。要求を分類し、要約し、
次のアクションを提案してください。簡潔かつ実用的に。
model:
# 優先既定モデル。構成済みモデル (AZURE_OPENAI_MODELS / ANTHROPIC_MODELS) のいずれかで
# ある必要があります (そうでないと有効化はブロックされます)。他の構成済みモデルも選択可能
# なままです。id を省略するとデプロイの既定モデ ルを使用します。
id: gpt-5.5
options:
# サポートされるのは reasoning effort と (gpt-5.x の) text verbosity のみです。
# effort: low | medium | high | xhigh | max
# verbosity: low | medium | high
effort: high
verbosity: medium
# 任意。このエージェントを利用可能ツールの「部分集合」に制限します。ブロックを省略すると
# 有効な全ツールを継承します。各エントリは既存のツールを参照します -- ここで新しいツールを
# 導入することはできません。認識できない名前は警告となり、有効化がブロックされます。
tools:
- kind: function # 組み込みツール (名前指定)
name: rag_search
- kind: mcp # MCP サーバ全体...
name: microsoft_learn
allowedTools: # ...または一部のツールのみ
- microsoft_docs_search
- kind: skill # Agent Skill (名前指定)
name: pptx
# 任意。すべての回答を既定でこの JSON 形に制約します (チャットでメッセージ単位に
# オフ/編集も可能)。通常の会話エージェントにする場合はこのブロックを削除してください。
# strict JSON では列挙した全プロパティが必須で、追加プロパティは許可されません。
outputSchema:
properties:
category:
type: string
required: true
description: billing / technical / account / other のいずれか。
summary:
type: string
required: true
description: 要 求の一文要約。
next_action:
type: string
required: true
description: サポートチームの推奨次アクション。
保存して Declarative Agents モーダル (サイドバー下部のロボットアイコン) を開き、 エージェントを選んで Activate をクリックします。モデル選択、reasoning effort / verbosity コントロール、JSON スキーマエディタがすべてエージェントを反映して更新されます。
GUI でエージェントを組み立てる
YAML を書きたくない場合は、DECLARATIVE_AGENTS_DIR が 書き込み可能 なフォルダを指していれば、
Declarative Agents モーダルに Create ボタン (各カスタムエージェントには Edit / Delete)
が表示されます。全画面エディタは 3 ペイン構成です。
- 左 -- 基本情報。 名前・説明・instructions (人格)。
- 中央 -- キャンバス。 エージェントのノードと、モデル (構成済みモデルからの reasoning effort / verbosity) を選ぶツールバー、そして組み込みツール・MCP サーバ/ツール・Skills の検索可能な一覧から ツールを追加 する操作。追加したツールは削除可能な接続ノードとして表示されます。
- 右 -- YAML。 保存される内容そのままのライブ正規プレビュー。Edit raw YAML に切り替えると 直接編集でき、検証は常時実行され、警告はインライン表示されます。
モデル選択は構成済みモデルが駆動します -- プロバイダー・エンドポイント・資格情報をエディタが尋ねる ことはありません (ChatWalaʻau が解決します)。Save すると YAML が書き込まれ、新しいエージェントが すぐ一覧に現れ、有効化できます。
マップ / 無視 / 拒否される項目
| YAML フィールド | ChatWalaʻau の挙動 |
|---|---|
instructions | エージェントの人格になります (システムプロンプトの最初のブロック)。"=Identity" を指定するか省略すると、グローバルの .agent/IDENTITY.md を引き継ぎます。 |
model.id | エージェントの 優先既定モデル を設定します。他の構成済みモデルも選択可能なまま (選択 UI は消えません)。未構成のモデルは警告とともに無視されます。 |
model.options.effort | reasoning effort にマップされます。 |
model.options.verbosity | text verbosity (gpt-5.x) にマップされます。 |
tools | エージェントを利用可能ツールの 部分集合 に制限します (kind: function / mcp / skill)。省略すると有効な全ツールを継承します。認識できない名前は警告となり有効化をブロックします。既存しないツールを追加することはできません。 |
outputSchema | 既定の構造化出力スキーマになります (メッセージ単位で上書き可能)。 |
model.connection / 資格情報 / =Env.* | 無視 されます (警告を表示)。資格情報とエンドポイントは ChatWalaʻau が解決し、YAML から取りません。 |
temperature / top_p / top_k / seed ... | 有効化時に 拒否 されます。対応モデル (Azure gpt-5.5 / gpt-5.4、Anthropic Opus 4.7 / 4.8) は reasoning 専用で、従来のサンプリングパラメータを受け付けません。 |
不正な effort / verbosity 値 | 警告が表示され (有効化はブロッ ク)、サイレントに無視せずタイポを修正させます。 |
| その他 | 警告とともに無視されます。 |
警告がある場合は有効化できません
警告が 1 つでもあるエージェントは、YAML を修正するまで有効化できません。管理画面は
当該エージェントを明示し、警告を一覧表示し、Activate ボタンを無効化します。これにより有効な
エージェントは常にクリーンで完全対応の定義になります。警告が出るもの: 無視される
model.connection / 資格情報、未知の model.options キー、不正な effort / verbosity 値、
構成されていない model.id。不正な YAML や拒否されるサンプリングパラメータ (例: temperature)
はハードエラーです。
補足
- エージェントのオプションは既定として適用されます。 エージェントの reasoning effort・ verbosity・出力スキーマは切り替えると有効になり、チャットのモデル選択・オプションパネルも それを反映して更新されます。各オプションはメッセージ単位で上書きでき、パネルを明示的に変更して いない項目はエージェントの値が使われます。
- 切替は Web アプリのみ。 OpenAI 互換 API と Microsoft Teams は常に現在有効なエージェントを 使用します -- 選択に追従し、自分では切り替えません。
- 選択は再起動を越えて保存されません。 再起動すると CORE エージェントが再び有効になります。 切替を簡単に取り消せ、新しいプロセスで予期しない状態にならないようにするためです。
- 切替は全員に影響します。 有効化はプロセス全体に作用します (MCP / Skills の管理と同様)。
- 有効なエージェントはログ出力されます。 起動時と切替のたびに、有効なエージェント名を 1 行 出力するので、どの YAML が効いているか確認できます。