agents について
agentsは、ElevenLabsの音声AIエージェントを構築・管理するスキルです。開発者や会話体験を設定するチーム向けで、複数のLLMプロバイダー、ツール、ワークフロー、接続方式に対応し、Webへの埋め込みも行えます。
主な機能
- 01CLIによるエージェントの作成と管理
- 02複数のLLMプロバイダーの設定
- 03Webhook・クライアント・システムツールの追加
- 04分岐ワークフローと再利用可能な手順
- 05WebRTCまたはクライアント経由のセッション開始
- 06Webページへの会話の埋め込み
活用シーン
- 01音声カスタマーサービスエージェントの構築
- 02ツールを使う会話フローの設定
- 03Webページへのエージェントセッション接続
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ elevenlabs/ skills --skill agentsインストール後、Claude Code で/agentsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/agent-configuration.mdclient-tools.mdinstallation.mdoutbound-calls.mdusing-procedure-api.mdwidget-embedding.mdwriting-procedures.md詳細
ElevenLabs Agents Platform
自然な会話、複数の LLM プロバイダー、カスタムツール、簡単な Web 埋め込みに対応した音声 AI エージェントを構築できます。
コードを書く前のセットアップ: このプロジェクトで
ELEVENLABS_API_KEYが設定されていない場合は、まずアプリのフォルダーからnpx -y @elevenlabs/cli@latest onboard initを実行し、表示される手順に従ってください。ユーザーのサインインとプロジェクト用キーの保存が行われるため、キーを手動でコピーする必要はありません。それ以外の場合は、CLI と SDK のセットアップについてインストールガイドを参照してください。
CLI でクイックスタート
エージェントの作成と管理には ElevenLabs CLI の使用をおすすめします。
# Install CLI and authenticate
npm install -g @elevenlabs/cli
elevenlabs auth login
# Initialize project and create an agent
elevenlabs agents init
elevenlabs agents add "My Assistant" --template complete
# Push to ElevenLabs platform
elevenlabs agents push
利用可能なテンプレート: complete、minimal、voice-only、text-only、customer-service、assistant
Python
from elevenlabs import ElevenLabs
client = ElevenLabs()
agent = client.conversational_ai.agents.create(
name="My Assistant",
conversation_config={
"agent": {
"first_message": "Hello! How can I help?",
"language": "en",
"prompt": {
"prompt": "You are a helpful assistant. Be concise and friendly.",
"llm": "gemini-2.0-flash",
"temperature": 0.7
}
},
"tts": {"voice_id": "JBFqnCBsd6RMkjVDRZzb"}
}
)
JavaScript
import { ElevenLabsClient } from "@elevenlabs/elevenlabs-js";
const client = new ElevenLabsClient();
const agent = await client.conversationalAi.agents.create({
name: "My Assistant",
conversationConfig: {
agent: {
firstMessage: "Hello! How can I help?",
language: "en",
prompt: {
prompt: "You are a helpful assistant.",
llm: "gemini-2.0-flash",
temperature: 0.7
}
},
tts: { voiceId: "JBFqnCBsd6RMkjVDRZzb" }
}
});
CLI
CLI は環境変数から ELEVENLABS_API_KEY を自動的に読み取ります。
elevenlabs agents create \
--json '{"name": "My Assistant", "conversation_config": {"agent": {"first_message": "Hello!", "language": "en", "prompt": {"prompt": "You are helpful.", "llm": "gemini-2.0-flash"}}, "tts": {"voice_id": "JBFqnCBsd6RMkjVDRZzb"}}}'
会話の開始
認証済み WebRTC: バックエンドからセッショントークンをリクエストします。レスポンスにはトークンと会話 ID の両方が含まれます。
session = client.conversational_ai.conversations.get_webrtc_token(
agent_id="your-agent-id",
)
print(session.token, session.conversation_id)
サーバーサイド(Python): クライアント接続用の署名付き URL を取得します。
signed_url = client.conversational_ai.conversations.get_signed_url(
agent_id="your-agent-id",
environment="staging",
)
クライアントサイド(JavaScript):
import { Conversation } from "@elevenlabs/client";
const conversation = await Conversation.startSession({
agentId: "your-agent-id",
environment: "staging",
overrides: { asr: { keywords: ["ElevenLabs", "TechCorp"] } },
onMessage: (msg) => console.log("Agent:", msg.message),
onUserTranscript: (t) => console.log("User:", t.message),
onPing: (event) => console.log("Estimated latency:", event.ping_ms),
onContextUsage: ({ model, context_tokens, context_limit_tokens }) =>
console.log(`${model}: ${context_tokens}/${context_limit_tokens} context tokens`),
onError: (e) => console.error(e)
});
React Hook: Hook を使用するコンポーネントは ConversationProvider でラップしてください。セッション制御と UI の状態には、useConversationControls や useConversationStatus などの細分化された Hook をおすすめします。利便性を重視したオールインワンの Hook として、useConversation も引き続き利用できます。React で会話のエラーを一元的に処理する場合は、onError などのコールバックをプロバイダーレベルで渡してください。
import {
ConversationProvider,
useConversationControls,
useConversationStatus,
} from "@elevenlabs/react";
function Agent({ signedUrl }: { signedUrl: string }) {
const { startSession, endSession } = useConversationControls();
const { status } = useConversationStatus();
if (status === "connected") {
return <button onClick={endSession}>End conversation</button>;
}
return (
<button onClick={() => startSession({ signedUrl })}>
Start conversation
</button>
);
}
function App({ signedUrl }: { signedUrl: string }) {
return (
<ConversationProvider
onError={(error) => console.error("Conversation error:", error)}
onPing={(event) => console.log("Estimated latency:", event.ping_ms)}
onContextUsage={({ model, context_tokens, context_limit_tokens }) =>
console.log(`${model}: ${context_tokens}/${context_limit_tokens} context tokens`)
}
>
<Agent signedUrl={signedUrl} />
</ConversationProvider>
);
}
設定
| プロバイダー | モデル |
|---|---|
| OpenAI | gpt-6.1-sol、gpt-6-sol、gpt-6-luna、gpt-6-astra、gpt-5.6-sol、gpt-5.6-terra、gpt-5.6-luna、gpt-5.5、gpt-5.5-2026-04-23、gpt-5.4、gpt-5.4-mini、gpt-5.4-nano、gpt-5.4-2026-03-05、gpt-5.4-mini-2026-03-17、gpt-5.4-nano-2026-03-17、gpt-5、gpt-5-mini、gpt-5-nano、gpt-4.1、gpt-4.1-mini、gpt-4.1-nano、gpt-4o、gpt-4o-mini、gpt-4-turbo |
| Anthropic | claude-opus-5-5、claude-opus-5、claude-sonnet-5-5、claude-opus-4-7、claude-opus-4-6、claude-sonnet-4-6、claude-sonnet-4-5、claude-sonnet-4、claude-haiku-4-5、claude-3-7-sonnet、claude-3-5-sonnet、claude-3-haiku |
gemini-4-argon、gemini-3.8-flash、gemini-3.7-flash、gemini-3.6-flash、gemini-3.1-flash-lite-preview、gemini-3.1-pro-preview、gemini-3-pro-preview、gemini-3-flash-preview、gemini-2.5-flash、gemini-2.5-flash-lite、gemini-2.0-flash、gemini-2.0-flash-lite | |
| ElevenLabs | glm-52、deepseek-v41-flash、glm-45-air-fp8、qwen3-30b-a3b、qwen36-35b-a3b、qwen35-35b-a3b、qwen35-397b-a17b、nemotron-35-super-vl-nvfp4、gpt-oss-120b |
| カスタム | custom-llm(独自のエンドポイントを使用) |
GET /v1/convai/llm/list を使用すると、非推奨の状態、トークン数やコンテキストの上限、画像入力のサポートなどの機能フラグ、モデル固有の推論レベルのサポート状況を含む、最新のモデルカタログを確認できます。
別個の LLM モデルと TTS モデルの代わりに ElevenLabs Realtime モデルでエージェントを実行するには(conversation_config.realtime_model)、realtime スキルを使用してください。
人気の音声: JBFqnCBsd6RMkjVDRZzb(George)、EXAVITQu4vr4xnSDxMaL(Sarah)、onwK4e9ZLuTAKqWW03F9(Daniel)、XB0fDUnXU5powFXDhCwa(Charlotte)
応答の積極性: patient(ユーザーが話し終えるまで長めに待機)、normal、または eager(すばやく応答)
すべてのオプションについては、エージェントの設定を参照してください。
システムプロンプトの構成
Markdown の見出しでプロンプトをセクション分けすると、モデルが指示をより確実に優先し、解釈できるようになります(プロンプト作成ガイド)。
# Personality – named character, 2-3 traits
# Environment – where they work, who they talk to
# Tone – vocal style as 4-5 bullets
# Goal – what success looks like (numbered for multi-step flows)
指示は短く、行動を促す内容にしてください。重要な手順には「This step is important.」と明記してください。重要な拒否ルールや安全ルールについては、プロンプトに簡潔な指示を含めるとともに、platform_settings.guardrails で独立したカスタムガードレールも設定してください(ガードレールを参照)。
ツール
Webhook、クライアント、または組み込みシステムツールでエージェントを拡張できます。ツールは conversation_config.agent.prompt 内で定義します。
ワークスペース環境変数を使って、環境ごとのサーバーツール URL、ヘッダー、認証接続を解決できます。また、{{system__conversation_history}} などのランタイムシステム変数を使うと、必要に応じて会話全体のコンテキストをツール呼び出しに渡せます。
"prompt": {
"prompt": "You are a helpful assistant that can check the weather.",
"llm": "gemini-2.0-flash",
"tools": [
# Webhook: server-side API call
{"type": "webhook", "name": "get_weather", "description": "Get weather",
"api_schema": {"url": "https://api.example.com/weather", "method": "POST",
"request_body_schema": {"type": "object", "properties": {"location": {"type": "string"}}, "required": ["location"]}}},
# Client: runs in the browser
{"type": "client", "name": "show_product", "description": "Display a product",
"parameters": {"type": "object", "properties": {"productId": {"type": "string"}}, "required": ["productId"]}}
],
"built_in_tools": {
"end_call": {},
"transfer_to_number": {"transfers": [{"transfer_destination": {"type": "phone", "phone_number": "+1234567890"}, "condition": "User asks for human support"}]}
}
}
クライアントツールはブラウザーで実行されます。
clientTools: {
show_product: async ({ productId }) => {
document.getElementById("product").src = `/products/${productId}`;
return { success: true };
}
}
詳しくは、クライアントツールのリファレンスを参照してください。
組み込みシステムツール
conversation_config.agent.prompt.built_in_tools の下で設定します。{} を指定するとデフォルトが有効になります。カスタマイズするには description を指定し、無効にするには省略します。
| ツール | 有効にする対象 |
|---|---|
end_call | すべてのエージェント |
language_detection | 多言語対応エージェント |
transfer_to_number | 電話による人間へのエスカレーション |
transfer_to_agent | マルチエージェントのワークフロー |
skip_turn | 個別指導/コーチング(発話せずに聞く) |
voicemail_detection | 発信 |
play_keypad_touch_tone | IVR の操作 |
start_procedure と end_procedure はここでは設定しません。エージェントに少なくとも 1 つの手順がある場合、プラットフォームが自動的に追加します(手順を参照)。
run_subagent は、別の設定済みエージェントにタスクを委任するシステムツールです。params.system_tool_type: "run_subagent" と agents 配列を指定して、conversation_config.agent.prompt.tools に追加します。各エントリには agent_id と description が必要です。branch_id と JSON スキーマの parameters オブジェクトは任意です。
knowledge_base は、モデルが添付されたナレッジをどのように調べるかを選択できるシステムツールです。type: "system"、name、params.system_tool_type: "knowledge_base" を指定して、conversation_config.agent.prompt.tools に追加します。enabled_strategies を使って、cat、keyword、semantic、ls の任意の組み合わせを公開できます。
{
"type": "system",
"name": "knowledge_base",
"description": "Search the attached knowledge base.",
"params": {
"system_tool_type": "knowledge_base",
"enabled_strategies": ["semantic", "keyword"]
}
}
インテグレーションツール
プラットフォームが管理する、事前構築済みのコネクターです。認証情報を使って接続を作成し、tool_ids で紐付けます。
| インテグレーション | 用途 |
|---|---|
calcom | 予約のスケジュール設定 |
salesforce | CRM の検索、ケースの作成 |
hubspot | CRM、マーケティング、連絡先 |
zendesk | サポートチケットの管理 |
3 ステップのフロー:POST /v1/convai/api-integrations/{id}/connections → GET /v1/convai/api-integrations/{id}/tools → api_integration_id と api_integration_connection_id を指定して POST /v1/convai/tools。"prompt": {"tool_ids": ["tool_xxxx"]} を指定してエージェントに紐付けます。インラインの tools と tool_ids は併用できます。同じ機能のカスタム Webhook より、インテグレーションを優先してください。
公開 API の Webhook 例
プロトタイプに便利な認証不要の API です(URL は HTTPS である必要があります)。
| ツール | URL | 目的 |
|---|---|---|
get_weather | https://wttr.in/{location}?format=j1 | 現在の天気 |
search_wikipedia | https://en.wikipedia.org/api/rest_v1/page/summary/{topic} | トピックの要約 |
get_exchange_rate | https://open.er-api.com/v6/latest/{base_currency} | 為替レート |
ワークフロー
会話を分岐ロジックを備えた個別のステップに振り分けます。エージェントのトップレベルの workflow フィールドで定義します。参考:エージェントのワークフロー。
ノードの種類: start(ID は "start_node" にする必要があります)、end(outcome は会話を success(デフォルト)または failure として記録します)、override_agent(label と additional_prompt を指定するサブエージェントのステップ)、dispatch_tool(成功時と失敗時の振り分けを行いながらツールを実行します)、agent_transfer、transfer_to_number。
エッジの種類: unconditional、llm(自然言語による条件)、expression(決定論的なデータチェック)。ツールノードには、成功時と失敗時の個別のエッジがあります。
各ステップでツールのスコープを設定するには、ノードの additional_tool_ids を使います。これにより、誤ったステップで誤ったツールが実行されるのを防ぎます。挨拶や classify_intent などの会話ルーティングノードには additional_tool_ids: [] を設定し、会話のみを行うようにします。
{
"type": "override_agent",
"label": "Book Appointment",
"additional_prompt": "Discuss preferred dates and doctors. Show the booking form once agreed.",
"entry_behavior": "wait_for_user",
"additional_tool_ids": ["show_booking_form", "display_appointment_card"],
"position": {"x": 0, "y": 400}
}
エディターで適切に表示されるよう、すべてのノードに position({x, y})を指定します。y=0 から開始し、end は最下部に配置します。分岐は x=-150 と x=150 に水平に配置します。推奨間隔は、階層間が垂直方向に 200px、分岐間が水平方向に 300px です。ワークフローは 4~7 個のノードに収め、必ず end に至る経路を用意してください。
override_agent ノードでは entry_behavior を使って、サブエージェントがすぐに発話する(generate_immediately)、ユーザーの入力を待つ(wait_for_user)、またはプラットフォームに判断を任せる(auto)のいずれかを選びます。
ネストされたエージェント転送では、standalone_agent ノードに enable_nesting を設定し、親ワークフローに制御を戻す end ノードに return_when_nested を設定します。
プロシージャ
トリガーが一致した際にエージェントが実行する、再利用可能な指示ブロックです。プロシージャには、エージェントが適宜応用する Markdown のガイダンスで、ナレッジベースのドキュメントを参照できる唯一の種類である free_form と、固定順序で実行される型付きステップ(ダッシュボードでは「structured」と呼ばれ、毎回同じ手順で実行する必要があるフロー向け)の deterministic があります。CLI と SDK の全体的な手順についてはプロシージャ API の使用を、ステップのリファレンス、検証ルール、作成ガイダンスについてはプロシージャの作成を参照してください。
プロシージャはエージェントのブランチに保存され、書き込みを行うたびにユーザーごとのドラフトが作成されます。
| 操作 | 呼び出し |
|---|---|
| 一覧表示、作成、読み取り、更新、破棄、削除 | /v1/convai/agents/{agent_id}/branches/{branch_id}/procedures...(SDK では procedures.* と procedures.drafts.*) |
| 公開 | PATCH /v1/convai/agents/{agent_id}?branch_id=...(agents.update) |
これらの呼び出しを行う前に知っておくべき重要な仕様は次のとおりです。
- 公開するまでは、稼働中のエージェントに何も反映されません。公開はプロシージャのエンドポイントではありません。エージェントに対する1回のPATCHで、ブランチ上の変更されたプロシージャのドラフトがすべてバージョン管理されます。
GET .../procedures/{procedure_id}はブランチのHEADを読み取り、そのプロシージャが初めて公開されるまでは404を返します。作成したばかりのプロシージャを確認するには、/draftのバリアントを読み取ってください。作成を再試行しないでください。- 構造化プロシージャのステップを、エージェントが実行する形式に変換する処理をコンパイルと呼びます。プラットフォームは、エージェントのドラフト保存時または公開時に、すべての構造化プロシージャをコンパイルします。作成者が自分でコンパイルする必要はありません。ドラフトの保存と公開のどちらでも、ブランチ上のすべての構造化プロシージャが検証されます。処理に失敗した場合、何も書き込まれません。公開せずに検証するには、エージェントの現在の
name、conversation_config、platform_settings、workflowを変更せずに送信して、POST /v1/convai/agents/{agent_id}/drafts?branch_id=...でエージェントのドラフトを保存し、同じパスに対してDELETEを実行してそのエージェントのドラフトを破棄してください。Procedure API の使用を参照してください。 - 構造化プロシージャが無効な場合、公開またはドラフトの保存は、
statusがprocedure_validation_failed、errorsがプロシージャ ID をキーとする400を返します。各エントリには、問題のあるフィールドのpathとメッセージが含まれます。何も書き込まれません。プロシージャのドラフトを修正して、再度公開してください。 - ドラフトの更新では、本文全体が置き換えられます。ドラフトを先に読み取り、新しい
contentとともにname、type、triggerを再送信してください。typeは作成後に変更できません。 contentは、free_formプロシージャではMarkdown、deterministicプロシージャではsteps配列を含むJSONエンコードされたオブジェクトです。どちらの場合も、トリガーはcontentの一部ではなく、最上位のtriggerフィールドです。シリアライズしてください。引用符を手動でエスケープしないでください。- 手動で作成したワークフローのエッジを、構造化プロシージャに接続したり、そこから接続したりすることはできません。構造化プロシージャを連鎖させるには
sub_procedureステップを使用してください。一致するトリガーからの開始と完了は、プラットフォームが管理します。 - 3つ目の
typeであるfolderは、ダッシュボードでプロシージャをグループ化します。フォルダーにはcontentもtriggerもありません。POST .../procedures/{procedure_id}/moveでプロシージャをフォルダーに移動してください。 - エージェントは、直近で開始された5つのプロシージャをコンテキストに保持します。それより多く開始されると、最も古いフリーフォームのプロシージャのコンテンツ、インラインツール、ナレッジベースのドキュメントがプロンプトから外れますが、プロシージャは引き続きアクティブです。一度にアクティブになるプロシージャが少なくなるよう、プロシージャの範囲を絞り、サブプロシージャを使用してください。
- ルーティングはプロシージャ名ではなく、
triggerのテキストによって決まります。ユーザーが実際に使うと考えられる言い回しを網羅し、具体的で重複しないトリガーを記述してください。モデルに表示されるのは番号付きのトリガー一覧のみで、プロシージャ名やIDは表示されません。 - 1回の会話で開始エージェントが使用できるプロシージャを限定するには、
platform_settings.overrides.enable_procedure_ids_from_clientを有効にし、会話開始データのprocedure_idsとしてそれらのIDを渡してください。空のリストを指定すると、その開始エージェントのすべてのプロシージャが無効になります。 - プロシージャAPIには、
2.60.0以降のelevenlabs(Python)または@elevenlabs/elevenlabs-jsが必要です。
ガードレール
LLM とは独立して動作する多層の安全性適用機能です。システムプロンプトではなく、platform_settings.guardrails で設定します。参考:ガードレール。
"platform_settings": {
"guardrails": {
"version": "1",
"focus": {"is_enabled": true},
"prompt_injection": {"is_enabled": true},
"content": {"config": {"harassment": {"is_enabled": true, "threshold": 0.5}}},
"custom": {
"config": {
"configs": [{
"is_enabled": true,
"name": "No medical diagnoses",
"prompt": "Block the agent from providing medical diagnoses or treatment advice.",
"execution_mode": "blocking",
"model": "gemini-2.5-flash-lite",
"history_message_count": 1,
"trigger_action": {"type": "retry", "feedback": "Reason: {{trigger_reason}}"}
}]
}
}
}
}
種類: focus(話題の維持)、prompt_injection(操作への防御)、content(カテゴリーフィルター)、custom(LLM で評価するドメインルール)。コンテンツカテゴリーには harassment、profanity、sexual、violence、self_harm、medical_and_legal_information が含まれます。しきい値の範囲は 0.0~1.0(デフォルトは 0.3)です。カスタムルールでは、model、history_message_count、trigger_action(フィードバック付きの retry など)とともに execution_mode: "blocking" を使用します。カスタムガードレールは並列に評価され、失敗時は処理を続行します。
業種別: 医療・金融・法律 → medical_and_legal_information を有効化します。教育・若年層向け → sexual/violence/self_harm/profanity を有効化します。サポート・営業 → harassment/profanity を有効化します。すべてのエージェントで focus + prompt_injection + 2~4 個のカスタムルールを活用できます。
エージェントのテスト
POST /v1/convai/agent-testing/create で 3 種類のテストを作成し、エージェントに PATCH で追加します。参考:エージェントのテスト。
| 種類 | 目的 |
|---|---|
llm | シナリオテスト — エージェントはメッセージに適切に応答しますか? |
tool | ツール呼び出しテスト — 適切なツールと適切なパラメーターを使用していますか? |
simulation | シミュレートされたユーザーペルソナとの複数ターンのフロー |
// Tool-call test (snake_case throughout; chat_history role is "user" or "agent")
{
"name": "Books with correct doctor and date",
"type": "tool",
"chat_history": [
{"role": "user", "message": "Dr. Smith on March 5 at 2pm", "time_in_call_secs": 10}
],
"tool_call_parameters": {
"referenced_tool": {"id": "show_booking_form", "type": "client"},
"parameters": [
{"path": "doctor_name", "eval": {"type": "llm", "description": "Should reference Dr. Smith"}},
{"path": "date", "eval": {"type": "regex", "pattern": "2025-03-05|March 5"}}
]
}
}
評価方式:exact、regex、llm。プロンプトの評価基準では、バイナリスコアリング、または scoring_mode: "numeric_uniform"、max_score、score_instructions を使用した数値スコアリングを利用できます。数値スコアは正規化され、会話全体の成功率に反映されます。エージェントの更新時に追加します。
elevenlabs agents update --agent-id "your-agent-id" \
--json '{"platform_settings": {"testing": {"attached_tests": [{"test_id": "test_xxxx"}]}}}'
選択したテストを POST /v1/convai/agents/{agent_id}/run-tests で実行します。リクエストボディでは tests が必須です。また、繰り返し実行する場合は 1~50 の repeat_count を指定できます。
シミュレーションテストでは、最大 30 個の success_conditions プロンプトを定義できます。すべての基準が評価され、最終結果に統合されます。
シミュレーションテストでは、ツール ID をキーとする tool_mock_overrides を定義して、1 つのテストに限り共有レスポンスモックを置き換えることもできます。各オーバーライドは、必須の mock_result を含むモックの配列です。ツールの失敗経路をテストするには、is_error: true を設定します。オーバーライドは、tool_mock_config でモックが有効になっているツールにのみ適用されます。
完了した会話については、POST /v1/convai/conversations/{conversation_id}/analysis/evaluations/run に evaluation_id を含むリクエストボディを指定して、評価基準を 1 つ再実行できます。
ウィジェットの埋め込み
<elevenlabs-convai agent-id="your-agent-id"></elevenlabs-convai>
<script src="https://unpkg.com/@elevenlabs/convai-widget-embed" async type="text/javascript"></script>
次の属性でカスタマイズできます:avatar-image-url、action-text、start-call-text、end-call-text。
すべてのオプションについては、ウィジェット埋め込みリファレンスをご覧ください。
発信通話
Twilio または Exotel との連携を通じて、エージェントを使った電話の発信ができます。
以下の例では Twilio を使用しています。Exotel の使用方法についてはリファレンスをご覧ください。
Python
response = client.conversational_ai.twilio.outbound_call(
agent_id="your-agent-id",
agent_phone_number_id="your-phone-number-id",
to_number="+1234567890",
call_recording_enabled=True
)
print(f"Call initiated: {response.conversation_id}")
JavaScript
const response = await client.conversationalAi.twilio.outboundCall({
agentId: "your-agent-id",
agentPhoneNumberId: "your-phone-number-id",
toNumber: "+1234567890",
callRecordingEnabled: true,
});
CLI
elevenlabs agents twilio outbound_call \
--agent-id "your-agent-id" \
--agent-phone-number-id "your-phone-number-id" \
--to-number "+1234567890" \
--call-recording-enabled true
プロバイダー固有のエンドポイント、設定の上書き、動的変数については、発信通話リファレンスをご覧ください。
エージェントの管理
CLI の使用(推奨)
# List agents and check status
elevenlabs agents list
elevenlabs agents status
# Import agents from platform to local config
elevenlabs agents pull # Import all agents
elevenlabs agents pull --agent <agent-id> # Import specific agent
# Push local changes to platform
elevenlabs agents push # Upload configurations
elevenlabs agents push --dry-run # Preview changes first
# Add tools
elevenlabs tools add-webhook "Weather API"
elevenlabs tools add-client "UI Tool"
プロジェクト構成
CLI は、エージェントを管理するためのプロジェクト構成を作成します。
your_project/
├── agents.json # Agent definitions
├── tools.json # Tool configurations
├── tests.json # Test configurations
├── agent_configs/ # Individual agent configs
├── tool_configs/ # Individual tool configs
└── test_configs/ # Individual test configs
SDK の例
# List
agents = client.conversational_ai.agents.list()
# Get
agent = client.conversational_ai.agents.get(agent_id="your-agent-id")
# Update (partial - only include fields to change)
client.conversational_ai.agents.update(agent_id="your-agent-id", name="New Name")
client.conversational_ai.agents.update(agent_id="your-agent-id",
conversation_config={
"agent": {"prompt": {"prompt": "New instructions", "llm": "claude-sonnet-4"}}
})
# Delete
client.conversational_ai.agents.delete(agent_id="your-agent-id")
すべての設定オプションと SDK の例については、エージェント設定をご覧ください。
エラー処理
try:
agent = client.conversational_ai.agents.create(...)
except Exception as e:
print(f"API error: {e}")
一般的なエラー:401(無効なキー)、404(見つかりません)、422(無効な設定)、429(レート制限)
参考資料
- インストールガイド - SDK のセットアップと移行
- エージェントの設定 - すべての設定オプションと CRUD の例
- クライアントツール - Webhook、クライアント、システムツール
- Procedure API の使用 - Procedure CLI と SDK のフロー、下書きと公開
- Procedure の作成 - トリガーとコンテンツの作成、構造化されたステップのリファレンスとルール
- ウィジェットの埋め込み - ウェブサイトへの統合
- 発信通話 - 電話通話の統合