エージェントの構成と操作¶
次のメソッドでエージェントをビルドできます。
Snowsight で
Agents REST API の使用
Cortex Agents SQL コマンドにより
その後、エージェントをアプリケーションに統合して、タスクを実行したり、クエリに応答したりできます。まず、エージェントがタスクを実行したり、質問に回答したりするために使用できるメタデータ、ツール、オーケストレーションの指示などの情報を含むエージェントオブジェクトを作成する必要があります。その後、アプリケーションでエージェントオブジェクトを参照して、エージェントの機能を統合できます。 コンテキストをメモリ内で維持するようにスレッドを構成できるため、クライアントは会話のたびにコンテキストを送信する必要がありません。
注釈
Snowflake REST APIs は、プログラムアクセストークン (PATs) による認証コード、 JSON Web トークン (JWTs) を使用したキーペア認証、および OAuth をサポートしています。詳細については、 Snowflakeでの Snowflake REST APIs 認証 をご参照ください。
エージェントの作成¶
エージェントを配置するデータベースとスキーマを、エージェントの名前と説明とともに指定して、エージェントオブジェクトを作成します。さらに、表示名、アバター、色を指定します。これらの属性は、クライアントアプリケーションがエージェントを表示するために使用します。表示名は、会話でエージェントを参照するためのハンドルとしても使用されます。
エージェントを作成する際のベストプラクティスについては、 Cortex Agentsの構築のベストプラクティス をご参照ください。
次の例は、Snowsight から、または REST API を使用してエージェントオブジェクトを作成する方法を示しています。
エージェントが作成されるデータベースとスキーマ、およびエージェントに必要なパラメーターを指定して、エージェントオブジェクトを作成します。エージェントオブジェクトの作成時にツールフィールドを指定することもできます。
エージェントが作成されるデータベースとスキーマにエージェントオブジェクトを作成します。CREATE AGENTコマンドの:code:
FROM SPECIFICATION`句を使用して、エージェントのプロパティと仕様を指定できます。詳細については、 :doc:/sql-reference/sql/create-agent` をご参照ください。
ツールを追加する¶
エージェントを作成したら、ツールを追加し、ツール間でオーケストレーションを行う方法を指示する必要があります。エージェントは以下のツールタイプをサポートします。
**Cortex Analyst:**Cortex Analystがこれらを使用して構造化データを取得できるように、セマンティックビューを指定します。Agentは、複数のセマンティックビューにルーティングして応答を提供できます。
注釈
Cortex Analystがエージェントによって呼び出された場合、オープンソース LLM モデルにアクセスできません。エージェントから呼び出されたときにCortex Analystが使用できるモデルのリストについては、 Snowflakeサービス利用表 をご参照ください。
**Cortex Search:**フィルター可能な列と検索可能な列についての列の説明とともに、Cortex Searchインデックスをツールとして提供します。Cortex Agentは、Cortex Searchインデックスを使用して非構造化データを取得します。
**Data to Chart:**エージェントがデータから可視化を自動的に生成できるようになります。ツール配列に含めると、エージェントは視覚的表現の恩恵を受けるクエリに応答してVega-Lite仕様を使用してチャートを作成することができます。
**カスタムツール:**特定のビジネスロジックのコードを、ストアドプロシージャまたはユーザー定義関数(UDF)として実装できます。または、カスタムツールを使用して、 APIs を使ってバックエンドシステムからデータを取得することもできます。
**ウェブ検索:**エージェントに対してウェブ検索を有効にし、それらの検索結果を使用して応答を生成したりタスクを計画したりできます。
また、各ツールが使用するリソースも指定します。例えば、Cortex Analystでは、SQL クエリ実行のタイムアウトとともにウェアハウスを指定します。Cortex Searchと同様に、検索クエリで使用するフィルターと列名を、検索応答結果の最大件数とともに指定します。カスタムツールの場合は、ウェアハウスの詳細を提示します。
既存のエージェントの構成を変更するには、次のステップに従います。
ナビゲーションメニューで AI & ML » Agents を選択します。
- エージェントのリストから、変更するエージェントを選択します。
エージェントの構成の詳細が表示されます。
Edit を選択します。
Description の場合、エージェントとユーザーがそのエージェントをどのように操作できるかを説明します。
ユーザーがエージェントにできるサンプルの質問を追加するには、サンプルの質問を入力して Add a question を選択します。
Tools を選択します。次のツールを1つ以上追加します。
エージェントにCortex Analystのセマンティックビューを追加する場合:このセクションは、既にセマンティックビューが作成されていることを前提としています。セマンティックビューとその作成方法の詳細については、セマンティックビューの概要 をご参照ください。
Cortex Analyst を検索し、+ Add ボタンを選択します。
:ui:`Name`には、セマンティックビューの名前を入力します。
Semantic view を選択します。
エージェントが使用するセマンティックビューを選択します。
Warehouse には、エージェントがクエリを実行するために使用するウェアハウスを選択します。
Query timeout (seconds) には、エージェントがタイムアウトするまでにクエリが完了するまでの最大待機時間を秒単位で指定します。
Description では、セマンティックビューを説明します。
Add を選択します。
エージェントにCortex Search Serviceを追加する場合:このセクションでは、すでにCortex Search Serviceが作成されていることを前提としています。Cortex Search Serviceの作成については、Cortex Search をご参照ください。共有されているCortexナレッジ拡張機能(CKE)も使用できます。CKE を使用するチュートリアルの場合 一般的な問題と解決策 を参照してください。
Cortex Search Services を検索し、+ Add ボタンを選択します。
Name には、 Cortex Search Serviceの名前を入力します。
:ui:`Description`は、 Cortex Searchサービスについて説明しています。
Search service では、エージェントが使用するCortex Search serviceを選択します。
:ui:`Tool details`で、エージェントが検索サービスを効果的に利用できるように:ui:`Columns Description`を追加します。列の説明はすべての列に必要なわけではありませんが、結果の品質を向上させるために、フィルター可能な列と検索可能な列には説明を提供することをお勧めします。列の内容とサンプル値を説明する説明を提供します。
Add を選択します。
エージェントにカスタムツールを追加する場合:カスタムツールを追加することで、エージェントの機能を拡張することができます。カスタムツールを使用すると、エージェントは定義したストアドプロシージャや関数を呼び出して、アクションを実行したり計算を実行したりできます。このセクションでは、すでにカスタムツールが作成されていることを前提としています。プロシージャと関数については、 関数とプロシージャによるSnowflakeの拡張 をご参照ください。
Custom tools を検索し、+ Add ボタンを選択します。
Name のカスタムツールの名前を入力します。
Resource type では、カスタムツールが関数かプロシージャかを選択します。関数を使用するかプロシージャを使用するかどうかの情報については、ストアドプロシージャとユーザー定義関数のどちらを記述するかの選択 をご参照ください。
:ui:`Custom tool identifier`の場合、カスタムツールとして追加する既存の関数またはプロシージャを選択します。
関数またはプロシージャの関連パラメーターが自動的に表示されます。名前、タイプ、説明を追加し、パラメーターが必須かどうかを選択すると、カスタムツールのパラメーターを手動で追加できます。自動的に入力されるパラメーターを変更することもできます。
注釈
Snowflake Cortexは、
object型のパラメーターを持つストアドプロシージャおよびカスタムツールをサポートしていません。Warehouse では、エージェントがカスタムツールを実行するために使用するウェアハウスを選択します。手動でウェアハウスを選択する必要があります。
:ui:`Description`では、カスタムツールとその使用方法について説明します。
Add を選択します。
カスタムツールを作成したら、カスタムツールとしてユーザーが追加した関数またはプロシージャに対してUSAGE 権限が付与されていることを確認してください。ストアドプロシージャを使用する場合、プロシージャが所有者権限で実行されるか、呼び出し元権限で実行されるかをエージェントが維持します。所有者と呼び出し元の権利については、呼び出し元権限と所有者権限のストアドプロシージャについて をご参照ください。
エージェントにウェブ検索ツールを追加する場合:このセクションでは、アカウントレベルでウェブ検索がすでに有効になっていることを前提としています。アカウントレベルでウェブ検索を有効にする方法について詳しくは、:ref:`label-cortex_agents_web_search`を参照してください。
:ui:`Web search`を見つけ、それぞれのトグルを選択して機能を有効にします。
Save を選択します。
REST API を使用してエージェントにツールを追加するには、Cortex Agentを更新する へのリクエストの一部として次のペイロードを追加します。エージェントオブジェクトの作成時にこれらのフィールドを指定することもできます。
Cortex Analystツールとツールリソースを追加する:次の例は、既存のエージェントオブジェクトにCortex Analystツールとツールリソースを追加する方法を示しています。
Cortex Analystツールを追加します。
Cortex Analystツールリソースを追加します。
** Cortex Searchツールとツールリソースを追加する**:次の例は、既存のエージェントオブジェクトにCortex Searchツールとツールリソースを追加する方法を示しています。
Cortex Searchツールを追加します。
Cortex Searchツールリソースを追加します。
:code:`columns_and_descriptions`フィールドは、列名と列プロパティのマップです。説明はすべての列に必要なわけではありませんが、フィルター可能な列と検索可能な列に説明を提供すると、結果の品質が向上します。各列エントリには、次を含める必要があります。
data_to_chartツールを追加する: 次の例は、既存のエージェントオブジェクトにdata_to_chartツールを追加する方法を示しています。
data_to_chartツールを追加する
カスタムツールとツールリソースを追加する:次の例は、既存のエージェントオブジェクトにカスタムツールとツールリソースを追加する方法を示しています。
カスタムツールを追加します。
カスタムツールリソースを追加します。
web_searchツールを追加する:次の例は、既存のエージェントオブジェクトにweb_searchツールを追加する方法を示しています。このセクションでは、アカウントレベルでウェブ検索がすでに有効になっていることを前提としています。アカウントレベルでウェブ検索を有効にする方法について詳しくは、:ref:`label-cortex_agents_web_search`を参照してください。
web_searchツールを追加する
ALTER AGENTコマンドを使用して、エージェントオブジェクトを更新し、ツールやツールリソースを追加できます。ALTER AGENTコマンドについて詳しくは、:doc:`/sql-reference/sql/alter-agent`を参照してください。
注釈
新しい仕様は、既存の仕様を完全に置き換えます。新しい仕様に含まれていないフィールドは削除されます。
オーケストレーションを指定します。¶
Cortex Agentは、タスクをサブタスクのシーケンスに分割し、各サブタスクに適切なツールを特定することで、タスクをオーケストレーションします。Agent がこのオーケストレーションの実行に使用する必要がある LLM を指定します。指示することで、オーケストレーションに影響を与えることもできます。たとえば、小売製品の質問に応答するように構築されたエージェントを考えてみましょう。オーケストレーションの指示 "Use the search tool for all requests related to refunds" を使用すると、確実にAgentが払い戻しポリシーの詳細を提示する(Cortex Searchを使用)だけで、実際に払い戻し金額を計算する(Cortex Analystを使用)ことがないようにできます。"Always provide provide a concise response; maintain a friendly tone" のようなブランドやトーンに合わせた応答指示を指定することもできます。
Orchestration を選択します。
Orchestration model では、エージェントがオーケストレーションを処理するために使用するモデルを選択します。
Planning instructions では、ユーザーからの入力に基づいてエージェントによるツールの選択に影響する指示を提供します。これには、各ツールを使用するタイミングに関する具体的な指示や、応答の最初や最後に常にツールを使用するための指示も含まれます。
Response instruction の場合、モデルが応答生成に使用する指示を提供します。たとえば、エージェントにチャートの作成を優先させるか、ユーザーと一定のトーンを維持するかを指定します。
Budget configuration の場合、エージェントの時間制限とトークン制限を指定できます。予算は、エージェントが応答を生成するために使用できる時間またはトークンの最大値です。いずれかの制限に達すると、エージェントは応答の生成を停止します。トークンの制限はオーケストレーションにのみ使用され、Cortex Analyst、Cortex Search、その他のツール起動で使用されるトークンは含まれません。
Save を選択します。
REST API を使用してエージェントを更新するには、Cortex Agentを更新する へのリクエストの一部として次のペイロードを追加します。エージェントオブジェクトの作成時にこれらのフィールドを指定することもできます。次のプロシージャは、計画と応答の指示によりエージェントを更新し、オーケストレーションに使用する LLM モデルを指定する方法を示しています。
LLM モデルを更新します。
計画と応答の指示を指定します。
ALTER AGENTコマンドを使用して、エージェントオブジェクトを更新し、オーケストレーション情報を追加できます。ALTER AGENTコマンドについて詳しくは、:doc:`/sql-reference/sql/alter-agent`を参照してください。
エージェントへのアクセスを設定する¶
重要
デフォルトでは、Cortex Agentsはユーザーの既定のロールとデフォルトのウェアハウスを使用します。他のユーザーがエージェントを使用している場合は、そのユーザーが次の事項を実行していることを確認してください。
既定のロールを設定した
デフォルトのウェアハウスを設定した
既定のロールにエージェントの USAGE 権限を付与した
使用権限の付与については、 アクセス制御の要件 をご参照ください。
Cortex Agentを呼び出したり更新したりするときは、ユーザーの既定のロールを使用する必要があります。別のロールにエージェントの使用を許可するには、そのロールにエージェントの USAGE を付与します。
Snowsight UI から、または SQL を使用してアクセスポリシーを設定し、ユーザーがAgentにアクセスできるようにします。Agentへのアクセスを提供するロールを指定します。
Access を選択します。
ロールにエージェントへのアクセスを与えるには、 Add role を選択し、ドロップダウンメニューからロールを選択します。
Save を選択します。
エージェントを精査する¶
Agentを構築したら、Agentを精査してすべてのパラメーターを確認できます。
注釈
Snowsight からエージェントを確認する場合は、エージェント管理者 UI でのみエージェントを表示できます。データベースオブジェクトエクスプローラーでエージェントを表示することはできません。
ナビゲーションメニューで AI & ML » Agents を選択します。
エージェントのリストから、詳細を表示するエージェントを選択します。エージェントの詳細の概要を表示する新しいページが開きます。
すべてのエージェントの詳細を精査するには、Next を選択します。
エージェントをリストし、説明するには、REST APIs を使用します。
すべてのエージェントをリストします。
目的のエージェントを説明します。
SQL を使用して、エージェントをリストし、説明することができます。
すべてのエージェントをリストします。
目的のエージェントを説明します。
エージェントをテストする¶
エージェントを作成したら、ユーザーのクエリにどのように応答するかをテストできます。エージェントオブジェクトによるエージェント実行リクエスト を使用してエージェントをテストすることもできます。
エージェントをテストするには、次のステップに従います。
エージェントとやり取りする¶
エージェントオブジェクトを作成したら、REST API を使用して、エージェントをアプリケーションに直接統合できます。対話中のコンテキストを維持するには、スレッドを使用します。エージェントオブジェクトとスレッドを組み合わせることで、クライアントアプリケーションコードが簡素化されます。
スレッドを作成する¶
会話中のコンテキストを維持するスレッドを作成します。スレッドが正常に作成されると、システムは Thread ID を返します。
エージェントにリクエストを送る¶
Agentとやり取りするには、REST API リクエストの一部として、エージェントオブジェクト、スレッド ID、および一意の parent_message_id を渡す必要があります。初期 parent_message_id は 0 である必要があります。
エージェントに関するフィードバックを収集する¶
エージェントの応答について、ユーザーからのフィードバックを収集できます。このフィードバックは、ユースケースを反復する際にエージェントを改良するのに役立ちます。 ユーザーは、客観的な評価(肯定的/否定的)とともに、メッセージにより主観的な詳細も提供できます。また、ユーザーは多くのカテゴリの1つにフィードバックを分類できます。
エージェントオブジェクトなしでやりとりする¶
場合によっては、エージェントオブジェクトなしで、agent:run を使用してCortex Agentを使い始める必要があることもあります。たとえば、ユースケースを素早く試したい場合には、これが役立つ可能性があります。REST API の詳細については、エージェントオブジェクトなしでのエージェントの実行 をご参照ください。
注釈
エージェントオブジェクトを作成せずにエージェントとやりとりする場合は、リクエストごとにエージェントのコンテキストを手動で維持する必要があります。