以前に Playground でエージェントを構築していた場合(カスタムコードをデプロイしていない場合)、そのエージェントはすでに移行済みで、ここで説明する新機能すべてに自動的にアクセスできるはずです。
引き継がれるもの
- 電話番号。 現在の番号をそのまま保持し、マネージドエージェントに割り当てられます。
- 料金。 音声エージェントの分単価は変わりません。
- 通話履歴。 録音とトランスクリプトはそのまま残り、
GET /agents/calls/{call_id}がこれまでどおり返します。 - API。 Calls、バッチ発信、電話番号、メトリクスはマネージドエージェントに対して動作します。
新しくなったこと
Line エージェントは、ユーザー自身のプロバイダーキーで動作していました。Managed Agents ではキーは不要です。LLM カタログからモデルを選ぶと Cartesia がそのモデルを実行し、トークン使用量をそのまま請求します。維持すべきプロバイダーアカウントも、モデルプロバイダーからの別請求もありません。提供予定
- ナレッジベース。 通話中にエージェントが参照できるドキュメントの添付。
- エージェントごとの複数言語対応。 現在、エージェントは単一の
language.primaryのみを受け付けます。 - 通話イベント Webhook。 通話のライフサイクルイベントをお使いのエンドポイントに配信。
セルフホスト型エージェントコード
セルフホスト型のエージェントコードは、12月1日以降も動作し続けます。移行が必要なのは Cartesia がホストするエージェントのみです。エージェントサーバーを自分で運用し、その URL を Cartesia に指定している場合は、何も変わりません。 Line SDK は GitHub でオープンソースとして公開されており、セルフホスト型エージェントで動作するため、現在のコードをそのまま使い続けられます。自前のサーバーでのホスティングについては、support@cartesia.ai までご相談ください。 エージェントにself_hosted_deployment_url を設定します:
self_hosted_deployment_url に null を送信するか、cartesia disconnect を実行します。
移行の手順
マネージドエージェントを構築する
まず小さなエージェントから始めて、機能を1つずつ追加していきましょう。基本的な Line エージェントは次のとおりです:main.py
PATCH /v1/agents/{agent_id} のリクエストボディです。変更するフィールドだけを送信してください。それ以外の設定はそのまま維持されます。
設定の対応表
プロンプトとモデル
音声とオーディオ
ツール
Managed Agents は、
agent_as_handoff や @handoff_tool による Line SDK のエージェント間ハンドオフをまだサポートしていません。これらのハンドオフは同じ会話を別の Line SDK エージェントにルーティングするものです。一方、transfer_to_number は代わりに設定済みの電話番号へ電話をかけます。ほとんどのフローは単一のマネージドエージェントで実現できます。エージェント間ハンドオフが必要な場合は、Line SDK エージェントをセルフホストのまま維持できます。ユースケースをより深く理解したいので、私たちまでご連絡ください。
エージェントの実行
cartesia deploy、cartesia deployments ls、cartesia env set は、ホストされている Line SDK コードとそのデプロイメントを管理するものであり、Managed Agent の設定は管理しません。右列は Managed Agents での置き換え先を示しています。
プロンプト、モデル、あいさつ
LLM は、自分のプロバイダーキーではなく Cartesia のカタログから利用します。Claude Haiku 4.5 はclaude-haiku-4.5 で利用できるようになりました。API キーを指定する必要はなくなり、Cartesia が通話ごとにモデル使用量を請求します。GET /v1/agents/models は、利用可能な ID をレイテンシと料金とともに一覧表示します。
音声とオーディオ
Line では、pre_call_handler で設定済みの TTS 音声を上書きできました。マネージドエージェントでは、これは設定の一部になります:
language.primary は音声認識と音声合成の両方をカバーし、個別の tts.language と stt.language の設定を置き換えます。keyterms、speed、volume、emotion は新しい設定です。全項目についてはエージェントの設定を参照してください。
ツール
Webhook ツール
http_server_tool は Webhook ツールになります。Cartesia が HTTPS エンドポイントを呼び出し、レスポンスをエージェントに返します。バックエンドサービス、サードパーティ API、あるいは HTTPS で到達できる任意のサーバーエンドポイントに向けられます。
認証情報は
cartesia env set からツール側へ移ります。Cartesia は各認証情報をシークレットとして保存し、シークレット値は書き込み専用のため、読み取り時には値ではなくプレースホルダーが返されます。標準的なベアラートークンやベーシック認証には、ヘッダーではなく api_schema.authentication を設定してください。更新と削除についてはヘッダーと認証を参照してください。
組み込みツール
Line の組み込みツールはシステムツールになります。インポートするコードではなく、設定上のフィールドです。クライアントツール
Line では、エージェントはパススルーツールからカスタムイベントを yield(生成)することでアプリ側に働きかけていました:POST /v1/agents/tools エンドポイントで作成します:
client_tool_call を送信し、アプリがカートを開きます:
expects_response が false なので、何も返しません。エージェントが結果を必要とする場合は true に設定し、client_tool_result で応答してください。
ツールをエージェントにアタッチする
Webhook ツールやクライアントツールを作成しただけでは、どこにもアタッチされません。ツールの ID をエージェントのconfig.tools に追加します。このリストは更新のたびに全体が置き換えられます:
config.system_tools に設定します。
デプロイメントに代わるバージョン
ビルドやデプロイは不要です。すべての設定変更は検証され、不変のバージョンとして保存され、即座に新しい通話に適用されます。進行中の通話は、開始時のバージョンのまま最後まで実行されます。 ロールバックするには、古いバージョンのconfig を読み取り、PATCH で送信します。これにより、履歴を書き換えるのではなく、ロールバックが新しいバージョンとして記録されます。
クライアントを接続する
エージェント WebSocket は/v1/agents/websocket/{agent_id} に移動しました。認証は変わりません。サーバーからは X-API-Key、ブラウザからは /access-token エンドポイントの agent グラントによる短期トークンを使用します。
stream_idは廃止されました。 1つの接続が1つの通話に対応します。- ターンのフィールド名が変更されました。
was_interruptedはinterruptedに、start_timestampとend_timestampはstart_timeとend_timeに、idはturnになりました。