Webhook ツールを定義する
このリクエストボディをPOST /v1/agents/tools に送信して、Webhook ツールを作成します。外側のフィールドは、ツールとその実行設定を定義します。ネストされた api_schema は、LLM がツールを呼び出したときに Cartesia がお客様の API に送信する、別個のアウトバウンド HTTPS リクエストを記述します。api_schema には、method と url に加えて、お客様の API が必要とするパスパラメータ、クエリパラメータ、JSON ボディ、ヘッダー、認証を指定します。
POST /v1/agents/tools
config.tools でアタッチします。共有の実行設定についてはツールを参照してください。
api_schema
api_schema.url は HTTPS を使用する必要があり、プライベートおよび内部ネットワーク範囲へのリクエストはブロックされます。api_schema.method は GET、POST、PUT、PATCH、DELETE をサポートします。
api_schema.path_params_schemaは、api_schema.url内の{order_id}のようなプレースホルダーを埋めます。api_schema.url内のすべての{placeholder}には、大文字・小文字まで同じ名前のエントリがapi_schema.path_params_schemaに存在する必要があります。各パスパラメータは必須で、string、integer、number のいずれかです。api_schema.query_params_schemaは、propertiesとオプションのrequiredリストでクエリパラメータを記述します。各プロパティ名はクエリ文字列のキーになります。これらの名前はapi_schema.url内のプレースホルダーには対応しません。api_schema.request_body_schemaは、POST、PUT、PATCH用の JSON オブジェクトを記述します。ボディのプロパティはネストできます。
パラメータの説明は、モデルにどの値を提供すべきかを伝えます。API バージョンなど、モデルに選択させるべきでない値には
constant_value を使用します。顧客ごとのコンテキストや実行時に取得する値には dynamic_variable の値を使用します。
たとえば、このツールはリクエストごとに現在の customer_id を送信します:
POST /v1/agents/tools
Last known status: {{order_status}} を追加すると、モデルもその値を確認できるようになります。
ヘッダーと認証
api_schema.request_headers は、文字列、シークレット、動的変数を受け付けます。ツール ID と API 認証情報を使って、PATCH /v1/agents/tools/{tool_id} でヘッダーを追加します:
PATCH /v1/agents/tools/{tool_id}
authentication は、リクエスト時に Authorization ヘッダーへ認証情報を追加します。bearer は Authorization: Bearer <token> を送信し、basic_auth は Authorization: Basic <base64(username:password)> を送信します。request_headers に Authorization を重ねて設定しないでください。
API が保存済みのシークレット値を返すことはありません。ツールの更新時、省略したヘッダーと認証設定は変更されません。既存のシークレットフィールドを含める場合は、secret_value なしの { "type": "secret" } を使用すると、その値が維持されます。
ヘッダーを削除するには、api_schema.request_headers 内でそのヘッダーを null に設定します。認証を削除するには、api_schema.authentication を null に設定します。
Cartesia は、自身が管理するトランスポートヘッダーを予約しています。ヘッダー名は、大文字・小文字に関係なく一意である必要があります。
レスポンスとタイムアウト
リクエストが成功(2xx)し、レスポンスボディがテキストの場合、そのボディが LLM に渡される結果になります。LLM が必要とするデータのみを返してください。Cartesia はボディを 4096 バイトに制限し、それより長い場合は[cut off: the response was longer than this tool returns] を追加します。
assignments を使うと、レスポンスフィールドを動的変数として保存できます。{"order": {"id": "A-1001", "status": "shipped"}} のようなレスポンスに対して、以下の代入(assignments)は注文 ID とステータスを保存します。プレイグラウンドのツールのサイドパネル、または PATCH /v1/agents/tools/{tool_id} で設定します:
PATCH /v1/agents/tools/{tool_id}
null 値の場合、変数の以前の値はそのまま維持されます。オブジェクトとリストは JSON テキストとして保存されます。
リクエストは response_timeout_secs の経過後にタイムアウトします(デフォルトは 20 秒)。リクエストがタイムアウトした場合、エンドポイントに到達できない場合、またはエンドポイントが 2xx 以外のステータスを返した場合、Cartesia は失敗内容を説明するエラー結果を LLM に渡し、会話は継続します。現在のターンをブロックする必要のないリクエストには、execution_mode: "async" を使用してください。