マルチターンセッションとストリーミング入力¶
このトピックでは、Cortexコードエージェント SDK にプロンプトを送信するための主な方法について説明します。すなわち、 query() によってセッションのライフサイクルが管理されるようにすることを必要とする場合の 単一プロンプトクエリ 、増分プロンプトを配信するための ストリーミングされる入力、および交換間でコンテキストを維持するインタラクティブな会話のための マルチターンセッション です。
入力パターン¶
SDK には3つの入力パターンがあります。
モード |
使用するタイミング |
API |
|---|---|---|
単一プロンプト入力 |
|
TypeScript およびPythonの両方の |
ストリーミングされる入力 |
単一のプロンプト文字列の代わりに、非同期イテラブルからユーザーメッセージを増分送信します |
TypeScript およびPythonの両方の |
マルチターンセッション |
インタラクティブな会話: 複数のプロンプトの送信、コンテキストの維持、セッションのライフサイクルの制御 |
|
単一プロンプトクエリ¶
query() 関数は、SDK を使用するための最も簡単な方法です。単一のプロンプト文字列または SDK ユーザーメッセージの非同期イテラブルを送信することができ、エージェントが ResultMessage を生成するまでイベントをストリームバックします。このモードでは、「単一のプロンプト」は入力パターンを指します。出力は引き続き正常にストリーミングされます。
query() 関数は、セッションのライフサイクル全体を管理します。セッションを作成し、プロンプトを送信するとともにイベントを生成して、結果が到達するかイテレーターが使用され残余分がなくなったときにセッションを閉じます。
maxTurns / max_turns とは異なります。単一プロンプトのクエリでは、エージェントは引き続き構成されたターン制限に従い、必要な数の内部ターンを取得することができます。maxTurns: 1 または max_turns=1 の設定は、エージェントを1つの内部ターンに制限する別の制約であり、 error_max_turns 結果を生成する可能性があります。
マルチターンセッション¶
複数回の交換を必要とする会話には、セッションを使用してください。エージェントはターン間でコンテキストを保持するため、後続のプロンプトは、ファイルの読み取り、分析の実行、先行するターンで説明されたトピックを参照できます。
セッションライフサイクル¶
createCortexCodeSession(options)を呼び出してセッションを開始します。これにより CLI プロセスが生成されます。session.send(prompt)を呼び出してユーザーメッセージを送信します。session.stream()を反復して応答を受信します。resultイベントが表示されたら反復を停止します。追加のターンを実施する場合は、ステップ2~3を繰り返します。
session.close()を呼び出して、セッションを終了しプロセスをクリーンアップします。
CortexCodeSDKClientを作成してconnect()を呼び出します(またはasync withを使用します)。client.query(prompt)を呼び出してユーザーメッセージを送信します。client.receive_response()を反復して最大数かつResultMessageを含むメッセージを受信します。追加のターンを実施する場合は、ステップ2~3を繰り返します。
client.disconnect()を呼び出します(またはasync withブロックを終了します)。
先行するセッションを継続する¶
先行するセッションから会話を再開することができます。エージェントは以前の会話履歴をロードし、中断したところから続行します。
ID によって特定のセッションを再開することもできます。
セッションをフォークする¶
フォークすると、既存のセッションの全会話履歴を保持して開始される新しいセッションが作成されます。元のセッションは変更されません。これは、元の会話を失うことなく代替アプローチを検討するのに役立ちます。
ターンを中断する¶
アプリケーションは、エージェントがターンを処理している間に中断をリクエストすることができます。これには、CLI の:kbd:Esc を押すのと同じ効果があります。セッションはさらにプロンプトが表示されるまで維持されます。
直接中断呼び出し¶
interrupt() メソッドを呼び出して中断リクエストを直接送信します。
コントローラーを停止/イベントを中止¶
セッション作成時に中止シグナルを渡すこともできます。信号が起動すると、SDK は自動的に同じ中断リクエストを送信します。
注釈
TypeScript で、abort() メソッドにより中断リクエストをトリガーする AbortController を渡します。Pythonでは、set() メソッドにより中断リクエストをトリガーする asyncio.Event を渡します。どちらの場合も、セッションは中断後も有効です。
法的通知¶
Cortexコードの設定が `モデルとサービスのパススルー規約<https://www.snowflake.com/en/legal/optional-offerings/offering-specific-terms/ai-features/model-pass-through-terms/>`__ において提供されるモデルを使用する場合、そのモデルの使用にはそのページにあるモデルの規約も適用されます。
インプットとアウトプットのデータ分類は以下の表の通りです。
入力データの分類 |
出力データの分類 |
指定 |
|---|---|---|
Usage Data |
顧客データ |
カバーされているAI機能[1]_ |
詳細については、 Snowflake AI と ML をご参照ください。