> This is a page from the ElevenLabs documentation. For a complete page index, fetch https://elevenlabs.io/docs/llms.txt. For the full documentation in a single file, fetch https://elevenlabs.io/docs/llms-full.txt.

# 状態を更新

## 概要

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

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

LLMがツールを呼び出すタイミングではなく、[ワークフロー](/docs/ja/eleven-agents/customization/agent-workflows)内の決まった地点で状態更新を適用するには、[状態を更新ノード](/docs/ja/eleven-agents/customization/agent-workflows#update-state-node)を使用します。同じ状態更新を受け付けます。

## 機能

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

## 仕組み

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

```text
variable_name = expression
```

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

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

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

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

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

## 設定

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

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

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

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

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

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

### ステップ3：説明を設定する（任意）

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

## ユースケース

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

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

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

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

**パラメーター**：

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

**関数呼び出し形式**：

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

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

## FAQ

#### このツールは外部呼び出しを行いますか？

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

#### このツールの呼び出しでは、常にLLMによるパラメータ抽出が必要ですか？

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

#### このツールで設定した動的変数はどこで使えますか？

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

#### このツールはAPIから設定できますか？

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