> 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.

# 言語検出

## 概要

`language detection`システムツールを使うと、ElevenLabsエージェントの出力言語を、エージェントが対応する任意の言語に切り替えられます。
このシステムツールは自動では有効になりません。特定のユースケースに合わせて説明をカスタマイズできます。

> **Note**
>
> 可能な場合は、エージェントですべての言語を有効にし、言語検出システムツールも有効にすることをおすすめします。

言語検出ツールは、受信したオーディオから検出された言語と内容に基づき、次の2つのケースで言語切り替えをトリガーします。

* `detection`：ユーザーが現在の出力言語とは異なる言語で話すと、切り替えがトリガーされます
* `content`：ユーザーが現在の言語で別の言語への変更を求めると、切り替えがトリガーされます

**目的**：会話中に検出されたユーザーの言語へ自動的に切り替えます。

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

* ユーザーが現在の会話言語とは異なる言語で話している
* ユーザーが明示的に言語の切り替えを要求した
* 会話で多言語サポートが必要である

**パラメーター**：

* `reason`（文字列、必須）：言語を切り替える理由
* `language`（文字列、必須）：切り替え先の言語コード（サポート対象言語リストに含まれている必要があります）

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

```json
{
  "type": "function",
  "function": {
    "name": "language_detection",
    "arguments": "{\"reason\": \"User requested Spanish\", \"language\": \"es\"}"
  }
}
```

**実装**：エージェント設定でサポート対象言語を構成し、言語検出システムツールを追加します。エージェントは、検出された言語に合わせて音声と応答を自動的に切り替えます。

## 言語検出を有効にする

#### 対応言語を設定

エージェントが切り替え可能な言語は、`Agent`設定タブで定義する必要があります。

![エージェントの言語](/docs/_fern-img/633707d54276febd3baa054c4f41b186225b74f606307a46e8262607befc8381.webp)

#### 言語検出ツールを追加

`Agent`タブで、事前設定済みのシステムツールをエージェントのツールに選択して追加し、言語検出を有効にします。
`add tool`を選択すると、このオプションが自動的に表示されます。

![システムツール](/docs/_fern-img/3d17048ab2bc1a0547c49056abb98f624caf866927ff1714af27f898b06ab18f.webp)

#### ツールの説明を設定

ツールを呼び出すタイミングを指定する説明を追加します。

![説明](/docs/_fern-img/3bebc9fe07dba7121bce7793f3793858c710fc8ea1c221347604eb05929271df.webp)

## 会話開始時のみに切り替えを制限する

長時間の会話では、バックグラウンドでの発話や珍しいアクセントによって、発信者が意図しない切り替えが発生することがあります。`only_at_conversation_start`を有効にすると、切り替えを最初の2回のユーザーターンに限定できます。

この2ターンの間に言語が切り替わらなかった場合、以降の会話では言語検出が無効になります。以降の試行はすべて失敗し、エージェントは現在の言語で話し続けます。この期間内に言語が切り替わった場合は、会話の残りの間も切り替えを利用できるため、誤検出を修正できます。

このオプションはデフォルトで無効です。

#### ダッシュボードで更新

**Tools**タブで**Detect language**ツールを選択し、**Only at start of conversation**を有効にします。

#### CLIで更新

#### エージェント設定を取得

```bash
elevenlabs agents pull
```

#### \`agent_configs/\<agent-name>.json\`を編集

言語検出ツールで`only_at_conversation_start`を設定します。簡潔にするため、周辺のフィールドは省略しています。

```json
{
  "conversation_config": {
    "agent": {
      "prompt": {
        "built_in_tools": {
          "language_detection": {
            "type": "system",
            "name": "language_detection",
            "params": {
              "system_tool_type": "language_detection",
              "only_at_conversation_start": true
            }
          }
        }
      }
    }
  }
}
```

#### 変更をプッシュ

```bash
elevenlabs agents push
```

#### APIで更新

```python
from elevenlabs import ElevenLabs

elevenlabs = ElevenLabs()

elevenlabs.conversational_ai.agents.update(
    agent_id="agent_7101k5zvyjhmfg983brhmhkd98n6",
    conversation_config={
        "agent": {
            "prompt": {
                "built_in_tools": {
                    "language_detection": {
                        "type": "system",
                        "name": "language_detection",
                        "params": {
                            "system_tool_type": "language_detection",
                            "only_at_conversation_start": True,
                        },
                    }
                }
            }
        }
    },
)
```

```typescript
import { ElevenLabsClient } from "@elevenlabs/elevenlabs-js";

const elevenlabs = new ElevenLabsClient();

await elevenlabs.conversationalAi.agents.update("agent_7101k5zvyjhmfg983brhmhkd98n6", {
  conversationConfig: {
    agent: {
      prompt: {
        builtInTools: {
          languageDetection: {
            type: "system",
            name: "language_detection",
            params: {
              systemToolType: "language_detection",
              onlyAtConversationStart: true,
            },
          },
        },
      },
    },
  },
});
```

> **Note**
>
> 切り替えがブロックされると、ツールは現在の言語で話し続けるよう指示するエラーをLLMに返します。理由は発信者には公開されません。

## API実装

APIでエージェントを作成する際は、エージェント設定に`language detection`ツールを追加できます。システムツールとして定義してください。

```python
from elevenlabs import AgentConfig, ConversationalConfig, ElevenLabs

elevenlabs = ElevenLabs(api_key="YOUR_API_KEY")

# Create language presets
language_presets = {
    "nl": {"overrides": {"agent": {"first_message": "Hoi, hoe gaat het met je?"}}},
    "fi": {"overrides": {"agent": {"first_message": "Hei, kuinka voit?"}}},
    "tr": {"overrides": {"agent": {"first_message": "Merhaba, nasılsın?"}}},
    "ru": {"overrides": {"agent": {"first_message": "Привет, как ты?"}}},
    "pt": {"overrides": {"agent": {"first_message": "Oi, como você está?"}}},
}

response = elevenlabs.conversational_ai.agents.create(
    conversation_config=ConversationalConfig(
        agent=AgentConfig(
            first_message="Hi how are you?",
            prompt={
                "built_in_tools": {
                    "language_detection": {
                        "type": "system",
                        "name": "language_detection",
                        # Optional: customize when the tool should be triggered
                        "description": "",
                        "params": {"system_tool_type": "language_detection"},
                    }
                },
            },
        ),
        language_presets=language_presets,
    ),
)
```

```javascript
import { ElevenLabsClient } from "@elevenlabs/elevenlabs-js";

const elevenlabs = new ElevenLabsClient({
  apiKey: "YOUR_API_KEY",
});

await elevenlabs.conversationalAi.agents.create({
  conversationConfig: {
    agent: {
      firstMessage: "Hi, how are you?",
      prompt: {
        builtInTools: {
          languageDetection: {
            type: "system",
            name: "language_detection",
            description: "", // Optional: Customize when the tool should be triggered
            params: { systemToolType: "language_detection" },
          },
        },
      },
    },
    languagePresets: {
      nl: { overrides: { agent: { firstMessage: "Hoi, hoe gaat het met je?" } } },
      fi: {
        overrides: { agent: { firstMessage: "Hei, kuinka voit?" } },
        firstMessageTranslation: {
          sourceHash: '{"firstMessage":"Hi how are you?","language":"en"}',
          text: "Hei, kuinka voit?",
        },
      },
      tr: { overrides: { agent: { firstMessage: "Merhaba, nasılsın?" } } },
      ru: { overrides: { agent: { firstMessage: "Привет, как ты?" } } },
      pt: { overrides: { agent: { firstMessage: "Oi, como você está?" } } },
      ar: { overrides: { agent: { firstMessage: "مرحبًا كيف حالك؟" } } },
    },
  },
});
```

```bash
curl -X POST https://api.elevenlabs.io/v1/convai/agents/create \
     -H "xi-api-key: YOUR_API_KEY" \
     -H "Content-Type: application/json" \
     -d '{
  "conversation_config": {
    "agent": {
      "first_message": "Hi how are you?",
      "prompt": {
        "built_in_tools": {
          "language_detection": {
            "type": "system",
            "name": "language_detection",
            "description": "",
            "params": { "system_tool_type": "language_detection" }
          }
        }
      }
    },
    "language_presets": {
      "nl": {
        "overrides": {
          "agent": {
            "prompt": null,
            "first_message": "Hoi, hoe gaat het met je?",
            "language": null
          },
          "tts": null
        }
      },
      "fi": {
        "overrides": {
          "agent": {
            "prompt": null,
            "first_message": "Hei, kuinka voit?",
            "language": null
          },
          "tts": null
        }
      },
      "tr": {
        "overrides": {
          "agent": {
            "prompt": null,
            "first_message": "Merhaba, nasılsın?",
            "language": null
          },
          "tts": null
        }
      },
      "ru": {
        "overrides": {
          "agent": {
            "prompt": null,
            "first_message": "Привет, как ты?",
            "language": null
          },
          "tts": null
        }
      },
      "pt": {
        "overrides": {
          "agent": {
            "prompt": null,
            "first_message": "Oi, como você está?",
            "language": null
          },
          "tts": null
        }
      },
      "ar": {
        "overrides": {
          "agent": {
            "prompt": null,
            "first_message": "مرحبًا كيف حالك؟",
            "language": null
          },
          "tts": null
        }
      }
    }
  }
}'
```

> **Tip**
>
> デフォルトの言語検出プロンプトを使用するには、説明を空白のままにしてください。