状態を更新

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

概要

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

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

機能

  • 1回の呼び出しで複数更新:1回のツール呼び出しで、最大10個の動的変数を一度に代入できます。
  • 式ベースの値:各値は式の結果です。定数、既存の動的変数、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:状態更新を定義する

状態更新ごとに、以下を設定します。

  • 変数名:代入する動的変数。
  • 式:代入する値。上記で説明した値と演算子の種類を使って構築します。より複雑な式を作るために値をネストできます。

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

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}"
}
}

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

よくある質問

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

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

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

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