ナビゲーションにスキップ

状態を更新

式を使って、会話の途中でエージェントが動的変数を更新できるようにします。

概要

状態を更新ツールを使うと、会話の進行中にエージェントが1つ以上の動的変数を設定できます。ほかのシステムツールと同様に、会話の内部状態のみを変更し、外部APIやクライアントサイド関数を呼び出すことはありません。

通話の進行に合わせて情報を記録する際に使用できます。たとえば、会話をエスカレーションすべきことを示したり、ユーザーが提供した値を保存したり、ほかの動的変数から値を計算したりできます。

LLMがツールを呼び出すタイミングではなく、ワークフロー内の決まった地点で状態更新を適用するには、状態を更新ノードを使用します。同じ状態更新を受け付けます。

機能

  • 1回の呼び出しで複数更新:1回のツール呼び出しで、最大50個の動的変数を同時に割り当てられます。
  • 式ベースの値:各値は式の結果です。定数、既存の動的変数、LLMが会話から抽出した値、演算子を組み合わせられます。
  • 必要な場合のみLLMが抽出:ツールは、必要な更新についてのみLLMにパラメータの抽出を依頼します。定数や既存の動的変数のみで構成された更新では、関数呼び出しにパラメータは追加されません。
  • 即時に利用可能:ツールの実行後、更新された動的変数は会話の残りの部分で利用できます。後続のプロンプト、ほかのツール呼び出し、オーバーライドはいずれも、ほかの動的変数と同様に参照できます。

仕組み

各状態更新は、式の結果を動的変数に割り当てます。

variable_name = expression

式には次の種類があり、より複雑なロジックを構築するために式を入れ子にできます。

種類説明
定数固定文字列、数値、ブール値、またはnull値。
動的変数別の動的変数の現在値。
LLM抽出値定義した型(文字列、数値、またはブール値)に一致する、LLMが会話から推測した値。
論理演算子and、or、またはほかの式を組み合わせる条件式(if/then/else)。
比較演算子2つの式を比較する=、≠、>、<、≥、≤。
算術演算子2つの数値式(+の場合は文字列式も可)を組み合わせる+、-、×、÷。

たとえば、次の状態更新では、LLMがユーザーを不満に感じていると判断した場合、またはretry_count動的変数がすでに3より大きい場合に、should_escalateをtrueに設定します。

should_escalate = (llm: "User sounds frustrated with the conversation") OR (retry_count > 3)

状態更新の評価に失敗した場合(たとえばゼロ除算)は、ツール呼び出しがエラーを返し、 その呼び出し内の更新はいずれも適用されません。

設定

1

ステップ1:ツールを追加する

エージェントの設定ページに移動します。ツールセクションで ツールを追加 をクリックし、状態を更新を選択します。

2

ステップ2:状態更新を定義する

各状態更新について、以下を指定します。

  • 変数名:割り当てる動的変数。
  • 式:上記の値と演算子の種類から作成する、割り当てる値。より複雑な式を作るために値を入れ子にできます。
  • 必須:無効にすると、LLMはこの更新が依存する値を省略できます。その場合、更新はスキップされ、変数は現在の値を維持します。

1つのツールに対して最大50件の状態更新を定義できます。

3

ステップ3:説明を設定する(任意)

LLMにツールを呼び出すタイミングを案内するカスタム説明を指定できます。空欄の場合、このツール用に最適化されたデフォルトの説明が使用されます。

ユースケース

  • エスカレーションフラグ:Genesysインテグレーションガイドで示すように、後続システムまたはビジネスルールが確認する動的変数(例:should_escalate)を設定します。
  • 抽出した情報の記録:ユーザーが提供した値(注文番号、設定、選択した部署)を、会話の後半で使用する動的変数として保存します。
  • 派生値:カウンターを増加させたり、2つの変数を1つに結合したりするなど、ほかの動的変数から値を計算します。

目的:外部APIを呼び出さずに、会話に基づいてエージェントが1つ以上の動的変数を更新できるようにします。

トリガー条件:LLMは、次の場合にこのツールを呼び出す必要があります。

  • 会話に記録すべき情報(例:エスカレーションフラグ、選択されたオプション、ユーザーが提供した値)が含まれている場合
  • 設定された状態更新が、LLMが会話から判断または抽出する必要がある値に依存する場合

パラメーター:

関数のパラメーターは、ツールの設定方法によって異なります。LLMで抽出した値を使用する状態更新ごとに、その更新の動的変数名を持ち、型がstring、number、またはbooleanであるプロパティが1つスキーマに追加されます。定数または他の動的変数のみから構成される状態更新では、パラメーターは追加されません。

関数呼び出し形式:

{
"type": "function",
"function": {
"name": "update_state",
"arguments": "{\"should_escalate\": true}"
}
}

実装:エージェントは、抽出したパラメーターと会話の現在の動的変数を使用して、設定されたすべての式を評価し、結果を対応する動的変数に割り当てます。外部リクエストは行われません。

FAQ

いいえ。すべてのシステムツールと同様に、状態を更新は会話の内部状態のみを変更します。 外部APIやクライアントサイド関数を呼び出すことはありません。

いいえ。このツールがLLMにパラメータの抽出を依頼するのは、式にLLM抽出値が 含まれる状態更新のみです。設定済みのすべての更新が定数や既存の 動的変数のみで構成される場合、関数呼び出しはパラメータを取りません。

動的変数を使える場所ならどこでも使えます。システムプロンプト、最初のメッセージ、ツールパラメータ、 ヘッダー、オーバーライドです。詳しくは動的 変数をご覧ください。

状態を更新は現在、エージェントダッシュボードから設定できます。APIおよびSDKのサポートは まだ利用できません。