Cortex Agent REST API でスレッドを使用する¶
このガイドでは、Cortex Agent REST API を使用してスレッド化された会話を作成、継続、管理する方法を説明します。
スレッドを使用するワークフローには次のステップがあります。
新しいスレッドを作成し、Cortex Agent REST API への
agent:runリクエストの一部として使用します。スレッドのメッセージ IDs を読みます。
スレッドを継続するメッセージを選択します。
新しいスレッドを立ち上げ、Agent Runで使用します。¶
新しいスレッドを作成し、リクエストの一部として agent:run に渡す必要があります。
スレッドを作成する を使用して新しいスレッドを作成します。
agent:runREST API のいずれかのエンドポイントへのリクエストの一部として、新しく作成されたスレッドの ID を渡します。
エージェントオブジェクトを含む
agent:run:/api/v2/databases/{database}/schemas/{schema}/agents/{name}:runエージェントオブジェクトを含まない
agent:run:/api/v2/cortex/agent:runリクエストの一部として、次を渡します。
parent_message_idは0である必要があります。これは、このリクエストがスレッドの開始であることを示します。
messagesにユーザーメッセージが1件だけあります。POST <agent run endpoint> { "thread_id": 1234, "parent_message_id": 0, "messages": [ { "role": "user", "content": [ { "type": "text", "text": "What is the total revenue for 2025?" } ] } ], }
返ってきたメッセージ IDs を読む¶
Agent API は、会話の各メッセージのメタデータイベントをストリームバックします。次の出力は、メタデータの構造を示しています。常にユーザーとアシスタントの両方のメタデータイベントをリッスンします。
event: metadata
data: {"role":"user","message_id":123}
event: metadata
data: {"role":"assistant","message_id":456}
この出力では、メッセージ IDs は、会話中の次の部分に対応しています。
123: 永続化されたユーザーメッセージ ID456: 永続化されたアシスタントメッセージ ID
これらの IDs を組み合わせると、次のスレッドが形成されます。
0 -> 123 (user) -> 456 (assistant)
会話を続ける¶
会話の次のターンでは、 parent_message_id を最後に成功したアシスタントメッセージ ID にセットし、 messages に新しい値を渡します。この例では、親メッセージ ID は 456 です。
注釈
LLM が期待通りに機能するように、 parent_message_id としてアシスタントメッセージ ID を渡す必要があります。ユーザーメッセージ ID を渡すことはできません。最後のメッセージ ID がわからなくなった場合は、 スレッドを作成する を使ってスレッド内の全メッセージをリストアップしてください。
{
"thread_id": 1234,
"parent_message_id": 456,
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "What about last year?"
}
]
}
],
}
以降のリクエストでは、最新の成功したアシスタントメッセージ ID を parent_message_id として引き続き使用します。
会話を分岐する¶
以前のアシスタントメッセージから継続して会話を分岐することもできます。会話を分岐するには、新しいリクエストで希望するアシスタントメッセージ ID を parent_message_id として渡します。 以下の例では、 3 (user) -> 4 (assistant) と 5 (user) -> 6 (assistant) は同じアシスタント応答からの2つの異なる分岐を表しています。
0 -> 1 (user) -> 2 (assistant) -> 3 (user) -> 4 (assistant)
0 -> 1 (user) -> 2 (assistant) -> 5 (user) -> 6 (assistant)
トラブルシューティング¶
まれに、Agent API は、アシスタントメッセージの保存に失敗することがあります。アシスタントのメタデータが応答から欠落している場合、失敗したターンを無視し、最後に成功したアシスタントメッセージから続行します。
たとえば、次のスレッドを考慮します。
0 -> 1 (user) -> 2 (assistant) -> 3 (user) -> [assistant failed]
会話を続けるには、メッセージ ID 2を新しいリクエストの一部として渡します。これは、最後に成功したアシスタントメッセージであるためです。
0 -> 1 (user) -> 2 (assistant) -> 5 (user) -> 6 (assistant)