ストーリーラインを構築する
エージェントを多段階でステートフルなプロセスに変える方法 — ノード、退出条件、ディメンション、サードパーティのコールバック、バージョン管理、進行中ユーザーの移行。
ストーリーラインの用途
素のエージェントは 1 つのことをうまくこなします。ストーリーライン (storyline) は、1 つのエージェントが各人と多段階のプロセス全体を進めること、つまり講座を教える、プログラムをコーチングする、申請を判断まで導くことを可能にし、しかも各個人がどこにいるかをセッションとチャネルをまたいで覚えています。この考え方が初めてなら、まず ストーリーラインの概念ページ から始めてください。このページは実践方法です。
ストーリーラインは Pro の機能です。テナントで有効になると、コンソールにストーリーラインエディタが表示されます。API(/v1/storylines)でストーリーラインを構築することもでき、セットアップウィザードやアシスタントがあなたのために 1 つ生成できるのはこの仕組みです。
ストーリーラインの形
ストーリーラインはグラフです。ノード (node) を描き、それらを 退出 (exit) でつなぎます。
各 ノード は 1 つのステップです。そのステップについて、以下を設定します:
- タスク (task) — ここでエージェントが行うべきこと(
{dimension}や{blackboard.key}を差し込むと、その人の現在の値で埋められます)。 - その ナレッジ、スキル、ツール — エージェントの基本セットの上に追加されます。あるいは、上級スイッチを使えば、このステップだけ基本セットを置き換えます。
- 任意の 開始のひとこと — ステップに入ったときにエージェントが言う言葉(空欄にすると静かに切り替わります)。
- それが エントリー ステップかどうか、および 終端(完了) ステップかどうか。
エージェントのアイデンティティと安全境界はノード間で決して変わりません。変わるのはタスク、ナレッジ、ツールだけです。
ステップの進み方:退出条件
ノードから出るすべての退出には条件が付きます。5 種類あり、正しいものを選ぶことが重要です:
- ルール (Rule) — ディメンションまたは保存された値に対するしきい値。フィールド、演算子、数値を選んで作ります(
listening ≥ 70 and attempts ≥ 3)。決定論的で、無料、モデル呼び出しなし。信頼性が必須の判断にはこれを使います。 - ユーザー選択 (User choice) — その人がタップするボタン。「続ける準備はできましたか?」や、明確な好みでの分岐に適しています。
- AI — あいまいな基準を記述した一文(「生徒が促されずに過去形の文を作れるとき」)で、モデルが判定します。いつ チェックするかも書くので、毎ターン判定されるわけではありません。厳密さが必要なゲートではなく、判断を要する場面に使います。
- コールバック (Callback) — 外部システムからのシグナルを待ちます(下記参照)。
- ストーリーラインへ移動 (Go to storyline) — 別のストーリーラインへジャンプします(結果による分岐、または学年の連鎖)。
複数の退出が発火しうる場合、上から下へと評価されます。ですから決定論的なものを先に置いてください。
ディメンション:人とともに移動するプロフィール
ストーリーラインの設定の下で、対象者向けの ディメンション (dimension) を定義します。語学講座なら listening、speaking、reading、writing で、それぞれ 0〜100 です。これらはストーリーラインをまたいで人に蓄積される(つまり学年から学年へ引き継がれる)ため、それぞれをユーザーに表示するか、自分だけが見る値にとどめるかを指定できます。ディメンションは 3 通りの方法で書き込まれます。AI が定期的にスコアリングする、ルールが設定する、またはサードパーティのコールバックが報告する、です。
ディメンションと並んで、各登録には ブラックボード (blackboard) があります。あるノードから次のノードへ渡される引き継ぎメモの自由形式のスクラッチパッドです。その人が新しいストーリーラインへ移るとリセットされます。
サードパーティを取り込む(コールバック)
ノードは、人を外部システムに引き渡し、そこから返される報告に基づいて動作できます。採点付きクイズ、KYC チェック、埋め込み型のミニゲームなどです。2 つの形があります:
- バックエンド (Backend) — データがツールへ送られ、結果が目に見えない形で返ってきます。
- リダイレクトして待機 (Redirect-and-wait) — 会話がリンクを表示し、ロックされ、外部のステップが終わると再開します(決済ウィンドウの動き方と同じです)。その人がキャンセルするかタイムアウトした場合は、分岐できる別個の結果になります。
コンソールは各コールバックに、サードパーティへ渡すための URL とシグナル名を与えます。結果は、その人とステップに紐づいた短命のトークンで検証され、一度だけ適用され(繰り返しは無視されます)、報告されたディメンションはあなたのスキーマに照らして検査されます。外部システムは、あなたが定義していないフィールドを書き込めません。コールバックが書き込むものはすべて、指示ではなくデータとして扱ってください。
公開、バージョン、稼働中のストーリーラインの変更
ストーリーラインは、公開 (publish) するまで ドラフト (draft) のままです。公開はまずグラフを検証します。エントリーの欠落なし、行き止まりなし、到達不能なし、宙ぶらりんや未知のターゲットなし、を確認し、何か問題があればブロックします。公開は不変の バージョン (version) を固定します。すでに途中まで進んでいる人は開始したバージョンにピン留めされたままになるので、変更が誰かを途中で妨げることはありません。
人が現在いる ノードを削除または変更 するとき、その人たちに何が起こるかを選びます。別のノードへ移す(安全)、最初へ戻す、進捗をクリアする、のいずれかです。後者 2 つはユーザーの進捗を失うため、コンソールは確認を求め、影響を受ける人数を表示します。
稼働前に試す
エディタには 2 つのテスト方法があります。ロジックのウォークスルー は、モデルを呼ばずに(無料、即時)グラフをたどり、到達可能性と条件を確認します。ライブ実行 は、実際にメッセージをモデルに通して(クォータを使い、エディタもそう告げます)本物の感触を確かめます。