プロシージャ
関連する際にエージェントが読み込むタスク固有の指示
概要
プロシージャには、特定の1つのタスクに対する指示が含まれます。各プロシージャには、適用されるタイミングを示すトリガーと、実行内容を示すコンテンツがあります。会話がトリガーに一致すると、エージェントはそのプロシージャを読み込みます。
エージェントで多くの異なるタスクを処理する必要がある場合は、プロシージャを使用してください。たとえばカスタマーサポートエージェントでは、返金、本人確認、アカウント復旧、接続トラブルシューティングなど、リクエストの種類ごとに1つのプロシージャを作成できます。

プロシージャの種類
プロシージャには2種類あります。
- 自由形式プロシージャ は、エージェントが解釈し、状況に応じて調整する自然言語の指示として記述します。
- 構造化プロシージャ は、毎回同じ方法でエージェントが実行する、型付きステップの順序付きリストです。
同じエージェントで両方の種類を使用できます。エージェントは種類にかかわらず、トリガーに基づいて関連するプロシージャを選択します。
エージェントには、プロシージャ、ワークフロー、またはその両方を設定できます。両方がある場合、すべてのプロシージャをワークフロー内のすべての地点から利用できます。プロシージャを特定のワークフローノードに限定することはできません。ほとんどのエージェントはどちらか一方のアプローチを中心に構築されますが、両者は組み合わせて使用できます。
プロシージャを使用するタイミング
すべてのエージェントにはシステムプロンプトがあります。プロシージャとワークフローは、その上に構造を追加する2つの方法であり、エージェントは両方を使用できます。会話の変動の大きさに応じて、開始点を選択してください。
自由形式プロシージャがデフォルトの選択肢です。最も素早く作成でき、ドキュメントのように読めるため技術者以外のチームでも管理でき、会話が想定から外れてもエージェントが対応できます。認証、エスカレーション、金融取引など、ステップのスキップや順序変更によるコストが高い場合は、構造化プロシージャを選択してください。どちらのプロシージャタイプでも提供されないルーティングロジックやステップごとのモデル制御が必要な場合は、ワークフローを選択してください。
プロシージャを管理する
プロシージャの作成にはダッシュボードを推奨します。プログラムでプロシージャを管理する場合やデプロイツールに組み込む場合は、CLIまたはAPIを使用してください。
ダッシュボードで作成
CLIで管理
APIで管理
ダッシュボードでエージェントを開き、プロシージャを選択します。 + を使用して、自由形式または構造化プロシージャを作成します。同じメニューからプロシージャをフォルダにグループ化することもできます。作成方法については、自由形式プロシージャと構造化プロシージャを参照してください。
会話ごとにプロシージャを選択する
デフォルトでは、すべての会話でエージェントのすべてのプロシージャを使用でき、会話がトリガーに一致した場合にのみエージェントがプロシージャを読み込みます。多くの場合、アプリケーションは会話開始前により多くの情報を把握しています。たとえば、ユーザーが誰か、どの地域にいるか、何について電話したかなどです。会話開始時のクライアントデータでプロシージャIDを渡すことで、この情報を利用できます。エージェントが使用できるプロシージャと、最初のターンから従うプロシージャを指定します。
start_procedure_ids内のプロシージャは、ユーザーが最初に話したときにはすでに読み込まれているため、エージェントはそれを読み込むためのLLM呼び出しを省略します。アクティブなプロシージャは、エージェントまたはアプリケーションのどちらが開始した場合でも、すべてのターンでプロンプトに残ります。会話で不要になった開始済みプロシージャでも、そのコンテンツはすべてのターンに追加されるため、会話で使用する可能性が高いプロシージャだけを開始してください。
プロシージャの選択を許可する
プロシージャオーバーライドはデフォルトでオフになっています。クライアントからのプロシージャIDを受け入れる必要がある各エージェントで有効にしてください。
ダッシュボード
CLI
SDK
ダッシュボードでエージェントを開き、セキュリティタブを選択して、プロシージャオーバーライドを有効にします。
会話開始時にIDを渡す
エージェントでプロシージャオーバーライドが有効になっていない場合、またはIDが無効な場合、会話を開始できません。
プロシージャIDはプロシージャを一覧表示から取得します。会話開始時のクライアントデータにprocedure_ids、start_procedure_ids、または両方を追加します。
エージェントは、最初のプロシージャがすでに実行中の状態で会話を開始します。会話がトリガーに一致すれば、ほかの2つも開始できます。
PythonおよびJavaScriptの会話SDKは、procedure_idsまたはstart_procedure_idsを送信しません。これらのフィールドを使用するには、WebSocket経由で開始メッセージを自分で送信してください。
両フィールドには次のルールが適用されます。
procedure_ids内の各IDは、エージェントに属している必要があります。選択したプロシージャがサブプロシージャを呼び出す場合は、サブプロシージャも含めてください。start_procedure_ids内の各IDは、自由形式プロシージャである必要があります。procedure_idsも渡す場合、各IDはそのリストにも含まれている必要があります。procedure_idsは、会話開始時のエージェントにのみ適用されます。エージェント転送後には適用されません。- 開始済みプロシージャは、制限事項にある5つのアクティブなプロシージャの上限に含まれます。会話履歴には、それぞれが
start_procedureツール呼び出しとして記録されます。
制限事項
- プロシージャのコンテンツは50,000文字までです。
- エージェントは、直近に開始された5つのプロシージャをコンテキストに保持します。1つの会話でさらに多くのプロシージャが開始されると、最も古い自由形式プロシージャのコンテンツ、インラインツール、ナレッジベースドキュメントがプロンプトから除外されます。プロシージャは対象を絞り、同時にアクティブになる数を減らすためにサブプロシージャを使用してください。
- 作成後にプロシージャのタイプを変更することはできません。自由形式と構造化プロシージャを変換するには、新しいプロシージャを作成し、すべての参照を更新してください。
- プロシージャは1つのエージェントに属します。エージェント間で共有したり、ワークスペースレベルのリソースとして保存したりすることはできません。
- エージェントを複製すると、プロシージャは共有されずにコピーされます。コピーには新しいプロシージャIDが付与されるため、複製したエージェント内の参照では新しいIDを使用する必要があります。
- プロシージャを特定のワークフローノードに限定することはできません。エージェントに両方がある場合、すべてのプロシージャをすべてのノードから利用できます。
- 構造化プロシージャからナレッジベースドキュメントを参照することはできません。