状態を更新
式を使って、会話の途中でエージェントが動的変数を更新できるようにします。
概要
状態を更新ツールを使うと、会話の進行中にエージェントが1つ以上の動的変数を設定できます。ほかのシステムツールと同様に、会話の内部状態のみを変更し、外部APIやクライアントサイド関数を呼び出すことはありません。
通話の進行に合わせて情報を記録する際に使用できます。たとえば、会話をエスカレーションすべきことを示したり、ユーザーが提供した値を保存したり、ほかの動的変数から値を計算したりできます。
LLMがツールを呼び出すタイミングではなく、ワークフロー内の決まった地点で状態更新を適用するには、状態を更新ノードを使用します。同じ状態更新を受け付けます。
機能
- 1回の呼び出しで複数更新:1回のツール呼び出しで、最大50個の動的変数を同時に割り当てられます。
- 式ベースの値:各値は式の結果です。定数、既存の動的変数、LLMが会話から抽出した値、演算子を組み合わせられます。
- 必要な場合のみLLMが抽出:ツールは、必要な更新についてのみLLMにパラメータの抽出を依頼します。定数や既存の動的変数のみで構成された更新では、関数呼び出しにパラメータは追加されません。
- 即時に利用可能:ツールの実行後、更新された動的変数は会話の残りの部分で利用できます。後続のプロンプト、ほかのツール呼び出し、オーバーライドはいずれも、ほかの動的変数と同様に参照できます。
仕組み
各状態更新は、式の結果を動的変数に割り当てます。
式には次の種類があり、より複雑なロジックを構築するために式を入れ子にできます。
たとえば、次の状態更新では、LLMがユーザーを不満に感じていると判断した場合、またはretry_count動的変数がすでに3より大きい場合に、should_escalateをtrueに設定します。
状態更新の評価に失敗した場合(たとえばゼロ除算)は、ツール呼び出しがエラーを返し、 その呼び出し内の更新はいずれも適用されません。
設定
ユースケース
- エスカレーションフラグ:Genesysインテグレーションガイドで示すように、後続システムまたはビジネスルールが確認する動的変数(例:
should_escalate)を設定します。 - 抽出した情報の記録:ユーザーが提供した値(注文番号、設定、選択した部署)を、会話の後半で使用する動的変数として保存します。
- 派生値:カウンターを増加させたり、2つの変数を1つに結合したりするなど、ほかの動的変数から値を計算します。
目的:外部APIを呼び出さずに、会話に基づいてエージェントが1つ以上の動的変数を更新できるようにします。
トリガー条件:LLMは、次の場合にこのツールを呼び出す必要があります。
- 会話に記録すべき情報(例:エスカレーションフラグ、選択されたオプション、ユーザーが提供した値)が含まれている場合
- 設定された状態更新が、LLMが会話から判断または抽出する必要がある値に依存する場合
パラメーター:
関数のパラメーターは、ツールの設定方法によって異なります。LLMで抽出した値を使用する状態更新ごとに、その更新の動的変数名を持ち、型がstring、number、またはbooleanであるプロパティが1つスキーマに追加されます。定数または他の動的変数のみから構成される状態更新では、パラメーターは追加されません。
関数呼び出し形式:
実装:エージェントは、抽出したパラメーターと会話の現在の動的変数を使用して、設定されたすべての式を評価し、結果を対応する動的変数に割り当てます。外部リクエストは行われません。
FAQ
このツールは外部呼び出しを行いますか?
いいえ。すべてのシステムツールと同様に、状態を更新は会話の内部状態のみを変更します。 外部APIやクライアントサイド関数を呼び出すことはありません。
このツールの呼び出しでは、常にLLMによるパラメータ抽出が必要ですか?
いいえ。このツールがLLMにパラメータの抽出を依頼するのは、式にLLM抽出値が 含まれる状態更新のみです。設定済みのすべての更新が定数や既存の 動的変数のみで構成される場合、関数呼び出しはパラメータを取りません。
このツールで設定した動的変数はどこで使えますか?
動的変数を使える場所ならどこでも使えます。システムプロンプト、最初のメッセージ、ツールパラメータ、 ヘッダー、オーバーライドです。詳しくは動的 変数をご覧ください。
このツールはAPIから設定できますか?
状態を更新は現在、エージェントダッシュボードから設定できます。APIおよびSDKのサポートは まだ利用できません。