ナビゲーションにスキップ

プロシージャ

関連する際にエージェントが読み込むタスク固有の指示

概要

プロシージャには、特定の1つのタスクに対する指示が含まれます。各プロシージャには、適用されるタイミングを示すトリガーと、実行内容を示すコンテンツがあります。会話がトリガーに一致すると、エージェントはそのプロシージャを読み込みます。

エージェントで多くの異なるタスクを処理する必要がある場合は、プロシージャを使用してください。たとえばカスタマーサポートエージェントでは、返金、本人確認、アカウント復旧、接続トラブルシューティングなど、リクエストの種類ごとに1つのプロシージャを作成できます。

エージェントダッシュボードのプロシージャタブ

プロシージャの種類

プロシージャには2種類あります。

  • 自由形式プロシージャ は、エージェントが解釈し、状況に応じて調整する自然言語の指示として記述します。
  • 構造化プロシージャ は、毎回同じ方法でエージェントが実行する、型付きステップの順序付きリストです。

同じエージェントで両方の種類を使用できます。エージェントは種類にかかわらず、トリガーに基づいて関連するプロシージャを選択します。

プロシージャは相互に呼び出すことができます。自由形式プロシージャはインライン参照で別のプロシージャを呼び出し、構造化プロシージャはサブプロシージャステップで別の構造化プロシージャを呼び出します。よくあるパターンとして、自由度の高い処理は自由形式プロシージャに残し、毎回同じ方法で実行する必要がある部分を構造化プロシージャに渡します。

エージェントには、プロシージャ、ワークフロー、またはその両方を設定できます。両方がある場合、すべてのプロシージャをワークフロー内のすべての地点から利用できます。プロシージャを特定のワークフローノードに限定することはできません。ほとんどのエージェントはどちらか一方のアプローチを中心に構築されますが、両者は組み合わせて使用できます。

プロシージャを使用するタイミング

すべてのエージェントにはシステムプロンプトがあります。プロシージャとワークフローは、その上に構造を追加する2つの方法であり、エージェントは両方を使用できます。会話の変動の大きさに応じて、開始点を選択してください。

要件使用するもの理由
シンプルな概念実証エージェントシステムプロンプトのみ最も素早く設定・反復できますが、エージェントの対象範囲が広がるにつれて、単一のプロンプトは扱いにくくなります。
エージェントが言い回しや順序を調整できるタスク自由形式プロシージャ会話全体を1つのLLMのコンテキストに保持するため、エージェントは言い回しや順序を調整し、想定外の展開にも対応できます。コンテキストウィンドウをより多く使用します。
毎回同じ方法でステップを実行する必要があるタスク構造化プロシージャ設定した順序で、毎回同じように各ステップが実行され、短いステップ一覧として作成できます。
複雑な分岐やエッジケースを完全に制御したいワークフロー自分で設計・接続するサブエージェントのグラフとして実行され、分岐と各ステップで使用するモデルを完全に制御できます。

自由形式プロシージャがデフォルトの選択肢です。最も素早く作成でき、ドキュメントのように読めるため技術者以外のチームでも管理でき、会話が想定から外れてもエージェントが対応できます。認証、エスカレーション、金融取引など、ステップのスキップや順序変更によるコストが高い場合は、構造化プロシージャを選択してください。どちらのプロシージャタイプでも提供されないルーティングロジックやステップごとのモデル制御が必要な場合は、ワークフローを選択してください。

プロシージャを管理する

プロシージャの作成にはダッシュボードを推奨します。プログラムでプロシージャを管理する場合やデプロイツールに組み込む場合は、CLIまたはAPIを使用してください。

ダッシュボードでエージェントを開き、プロシージャを選択します。 + を使用して、自由形式または構造化プロシージャを作成します。同じメニューからプロシージャをフォルダにグループ化することもできます。作成方法については、自由形式プロシージャと構造化プロシージャを参照してください。

会話ごとにプロシージャを選択する

デフォルトでは、すべての会話でエージェントのすべてのプロシージャを使用でき、会話がトリガーに一致した場合にのみエージェントがプロシージャを読み込みます。多くの場合、アプリケーションは会話開始前により多くの情報を把握しています。たとえば、ユーザーが誰か、どの地域にいるか、何について電話したかなどです。会話開始時のクライアントデータでプロシージャIDを渡すことで、この情報を利用できます。エージェントが使用できるプロシージャと、最初のターンから従うプロシージャを指定します。

フィールド機能使用する理由
procedure_ids会話で使用できるプロシージャをこれらに限定します。空の配列では、エージェントのすべてのプロシージャが無効になります。各ユーザーには、該当するプロシージャだけを提供します。たとえば、サインインしていないユーザーにはアカウント関連のプロシージャを非表示にします。また、地域ごとに返金プロシージャがある場合のように、避けられない類似トリガーがプロシージャにある場合にも使用します。ユーザーの地域のものだけを渡すことで、エージェントが別の地域のプロシージャに従うことを防げます。
start_procedure_idsこれらの自由形式プロシージャを会話開始時に開始し、エージェントが最初のターンから従うようにします。最大5つのIDを指定できます。たとえばIVRメニューの選択、ウィジェットをホストするページ、CRMデータなどからユーザーのタスクがすでにわかっている場合に、より速く応答できます。

start_procedure_ids内のプロシージャは、ユーザーが最初に話したときにはすでに読み込まれているため、エージェントはそれを読み込むためのLLM呼び出しを省略します。アクティブなプロシージャは、エージェントまたはアプリケーションのどちらが開始した場合でも、すべてのターンでプロンプトに残ります。会話で不要になった開始済みプロシージャでも、そのコンテンツはすべてのターンに追加されるため、会話で使用する可能性が高いプロシージャだけを開始してください。

1

プロシージャの選択を許可する

プロシージャオーバーライドはデフォルトでオフになっています。クライアントからのプロシージャIDを受け入れる必要がある各エージェントで有効にしてください。

ダッシュボードでエージェントを開き、セキュリティタブを選択して、プロシージャオーバーライドを有効にします。

2

会話開始時にIDを渡す

エージェントでプロシージャオーバーライドが有効になっていない場合、またはIDが無効な場合、会話を開始できません。

プロシージャIDはプロシージャを一覧表示から取得します。会話開始時のクライアントデータにprocedure_ids、start_procedure_ids、または両方を追加します。

会話開始ペイロード
{
"type": "conversation_initiation_client_data",
"procedure_ids": [
"agtprc_4101k8f3w2pqv6xs9mhdr0tz7n3b",
"agtprc_2301k8f3xq9zfa7tkrqs6m4bdn5e",
"agtprc_7801k8f3yt4mfzh2xbq9d0vcpw1r"
],
"start_procedure_ids": ["agtprc_4101k8f3w2pqv6xs9mhdr0tz7n3b"]
}

エージェントは、最初のプロシージャがすでに実行中の状態で会話を開始します。会話がトリガーに一致すれば、ほかの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を使用する必要があります。
  • プロシージャを特定のワークフローノードに限定することはできません。エージェントに両方がある場合、すべてのプロシージャをすべてのノードから利用できます。
  • 構造化プロシージャからナレッジベースドキュメントを参照することはできません。