0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Tips】Snowflake IntelligenceへCortex Agentを公開する手順と権限エラーの解決ガイド

0
Posted at

はじめに(背景・目的・想定読者)

  • SnowflakeのAIサービスであるCortexシリーズを利用して, AIのサービス開発を実施してます.
  • 作成したAgentをSnowflake Intelligence(Agent利用窓口のような機能)を利用して公開・利用をしております.
  • このSnowflake IntelligenceへAgentを公開する際権限等で解決すべきポイント等をまとめましたので共有いたします.

想定読者:Snowflake Intelligenceを利用し組織におけるAIAgent開発・利用を推進したい方
「そもそもCortexシリーズってどんなサービスなの?」という方向けに記事も投稿しておりますので,
よろしければそちらもご覧ください.
【使ってみた】Snowflake Cortexシリーズ徹底解説:Agent/Analyst/Searchの特徴と使い分け, コスト管理まで

Snowflake IntelligenceとAgentの公開について

今回主題となる, Snowflake IntelligenceとCortex Agentについて紹介いたします.
Snowflake Intelligenceを利用してエージェントの公開・利用を制御するメリットも記載しております.

Snowflake Intelligence

組織で作成したエージェントの公開やアクセスの窓口となる機能です.
以下に記載するCortex Agentを作成後本機能に登録することにより, Agentを多くのユーザーに公開することが可能になります.
本機能を利用してエージェントを公開する場合以下のメリットがあります.

  • Cortex Agent作成後設定画面でエージェント公開を押下するだけで公開・非公開を簡単に設定可能.
  • 本機能で公開したエージェントはSnowflake Intelligence画面で簡単に見つけることが可能.

Snowflake Intelligenceオブジェクトをアカウントで作成することによりエージェントの登録・公開等ができるようになります.
(以前は特定のDatabase, Schema(SNOWFLAKE_INTELLIGENCE.AGENTS)にエージェントを配置する必要がありました.)
Cortex Agentの作成・公開について以下を制御することが可能です.

  • Agentを任意のDatabase, Schemaに作成可能.
  • Agentの作成と公開を分離することが可能.
  • Agentの利用権限を制御することにより公開範囲の制御が可能.

Cortex Agent

Snowflakeが提供するエージェント機能です.
Agentにツールとして各機能を登録することにより, Agentがこなすことのできるタスクが拡張されます.
ツールにはCortex Analyst, Cortex Search, カスタムツールが登録可能です.
Cortex AnalystやCortex Searchについては以下記事で紹介しておりますので, よろしければそちらもご覧ください.

Snowflake IntelligenceへAgentを公開する

Snowflake Intelligence画面上で社員情報問合せAgentを公開・利用できる状態にします.
本AgentはツールとしてCortex Analsytが利用でき, (架空の)社員情報を用いて回答をすることができるエージェントとなります.
Snowflake Intelligence上で社員情報問合せAgentに問い合わせを実施している画面
ゴール. Snowflake IntelligenceからAgentに問い合わせる
以下3段階で必要な権限とそれを付与する前後での状態を説明していきます.

前提として, アカウントでSnowflake Intelligenceオブジェクトの作成をお願いします.
オブジェクト作成方法は以下をご確認ください.
Snowflake Intelligence オブジェクトを作成する

#1. Agentの登録と公開(Intelligence/Agentの権限)

Agent開発者に以下権限があればAgentをSnowflake Intelligenceに登録することが可能になります.

  • Cortex Agentが格納されているDatabase, Schemaに対するUsage権限.
  • Cortex Agent自体に対するUsage権限.
  • Snowflake Intelligenceオブジェクト(SNOWFLAKE_INTELLIGENCE_OBJECT_DEFAULT)に対するModify権限.
-- Snowflake Intelligenceオブジェクトに対するMODIFY権限を付与する
GRANT MODIFY ON SNOWFLAKE INTELLIGENCE SNOWFLAKE_INTELLIGENCE_OBJECT_DEFAULT TO ROLE <role_name>;

Agentの登録はGUIでもできますし, 以下クエリを実行することでも登録可能です.

-- Snowflake IntelligenceにAgentを登録する
ALTER SNOWFLAKE INTELLIGENCE SNOWFLAKE_INTELLIGENCE_OBJECT_DEFAULT ADD AGENT <db_name>.<schema_name>.<agent_name>;

一方利用者へは以下権限を付与することにより, Snowflake Intelligence上に該当のエージェントが表示されます.

  • Cortex Agentが格納されているDatabase, Schemaに対するUsage権限.
  • Cortex Agent自体に対するUsage権限.
  • Snowflake Intelligenceオブジェクト(SNOWFLAKE_INTELLIGENCE_OBJECT_DEFAULT)に対するUsage権限.
-- Snowflake Intelligenceオブジェクトに対するUSAGE権限を付与する
GRANT USAGE ON SNOWFLAKE INTELLIGENCE SNOWFLAKE_INTELLIGENCE_OBJECT_DEFAULT TO ROLE <role_name>;

利用者にSnowflake Intelligenceの参照のみを許可した状態
今回公開したいAgentが画面に表示されていない
Snowflake Intelligence 利用者権限付与前
利用者に公開したいAgentに対する各種権限を付与した状態
公開したいAgentが画面に表示されている
Snowflake Intelligence 利用者権限付与後

#2. ツール利用エラーの解消(Semantic Viewの権限)

#1を実施することにより, AgentをSnowflake Intelligenceに公開することが出来ました.
しかしこの状態でAgentを利用しようとしても以下のようにエラーが発生します.
Agent問い合わせ エラー発生
こちらはAgentが利用しているツール(今回ですとSemantic View)に対する権限が不足していることが原因となります.
従って, 利用者に以下権限を付与することによりエラーが解消します.

  • Semantic Viewが格納されているDatabase, Schemaに対するUsage権限.
  • Semantic View自体に対するSelect権限.

利用者にAgentが利用するツールに対する各種権限を付与した状態
Agentが問い合わせを処理してくれている
Agent問い合わせ エラー解消

#3. データ未取得問題の解消(ベーステーブルの権限)

実は#2を実施後Agentにデータが関わる問い合わせをするとエラーは発生しないのですが, 正常な回答が返ってきません.
Agentデータについての問い合わせ. 正常な回答が返ってこない
Cortex Analystを利用する場合Semantic ViewへのSelect権限だけでなく,
Semantic Viewのベースとなるテーブルに対してもSelect権限が必要となります.
Cortex Analystは問い合わせに対し以下2つのクエリを作成します.
特に2つ目のクエリはSemantic Viewのベースとなるテーブルに対してのクエリとなり,
こちらを実行するためにベーステーブルへのSelect権限が必要となります.

  • 論理クエリ:Semantic Viewの情報を基に作成したクエリ. 問い合わせに対する解釈をクエリに落とし込んだ結果となる.
  • 物理クエリ:実際に実行されるクエリ. 上記論理クエリを基にSnowflakeの実際のテーブル名, 列名を利用したクエリに変換後クエリが実行される.

実際にCortex AnalystのPlay Groundで問い合わせを実行すると2種類のクエリが生成されます.
Cortex Analyst Play Groundで問い合わせを実行

-- 論理クエリ
SELECT
  id,
  last_name,
  first_name
FROM
  employee
LIMIT
  10
;
-- 物理クエリ
WITH __employee AS (
  SELECT
    first_name,
    id,
    last_name
  FROM
    SNOWFLAKE_INTELLIGENCE.AI_TEST_SCHEMA.TEST_EMP_001  -- Semantic Viewのベースとなるテーブル
)
SELECT
  id,
  last_name,
  first_name
FROM
  __employee
LIMIT
  10
;

ベーステーブルへのSelect権限付与後再度エージェントに問い合わせを実施した結果, 正常に回答が生成されました.
Agentデータについての問い合わせ 正常に回答が生成された
補足ですが, ベーステーブルからViewを作成しそれを基にSemantic Viewを作成すればベーステーブルに直接Select権限を与えず,
Viewに対してのSelect権限を与えるだけで正常にCortex Analystが機能します.
CAnalyst Play Groundで問い合わせを実行 View経由

-- 物理クエリ
WITH __employee_view AS (
  SELECT
    first_name,
    id,
    last_name
  FROM
    SNOWFLAKE_INTELLIGENCE.AI_TEST_SCHEMA.TEST_EMP_VIEW_001  -- Select対象がViewになっている
)
SELECT
  id,
  first_name,
  last_name
FROM
  __employee_view
LIMIT
  10
;

まとめ:登場人物と必要な権限チェックリスト

Snowflake IntelligenceでAgentを安全に公開・利用するために必要な権限の全体像です.
構築時やエラー発生時のチェックリストとしてご活用ください.

役割 対象オブジェクト 必要な権限 目的・用途
開発者 SNOWFLAKE_INTELLIGENCE_OBJECT_DEFAULT MODIFY IntelligenceへのAgent登録・公開管理
対象のDatabase / Schema / Agent USAGE Agentの作成・管理および参照
利用者 SNOWFLAKE_INTELLIGENCE_OBJECT_DEFAULT USAGE Intelligence画面でのAgentポータルの参照
対象のDatabase / Schema / Agent USAGE Agent自体の表示および実行
Semantic Viewが所属するDB / Schema USAGE ツール(Cortex Analyst)の利用権限
Semantic View 自体 SELECT ツール(Cortex Analyst)の利用権限
ベーステーブル(またはView) SELECT 物理クエリの実行(実際のデータ取得)

注意点
Cortex Analystを利用する場合, 利用者のロールに「ベーステーブルへのSELECT権限」が不足していると, **Agent自体は起動してもデータが引けない(空の返答になる, またはエラーになる)**という事象が発生します.
忘れずに権限を付与するか, 秘匿したい場合はビューを挟むなどの対策を行ってくださ.

Q.A

最後に私が作業していて詰まった点をQA形式で共有します.

Q1.(開発者)Agentを作成できるんだけどSnowflake Intelligenceに公開できない

Snowflake Intelligenceオブジェクトに対するModify権限が不足している可能性が高いです.
以下を参考に開発者が利用しているロールの見直しをしてください.
#1. Agentの登録と公開(Intelligence/Agentの権限)

Q2.(利用者)公開されているはずのAgentが表示されない. 表示はされるが問い合わせるとエラーが発生する.

利用者は主に以下の権限が必要です.

  • Snowflake Intelligenceオブジェクトに対するUsage権限
  • (格納されているDB, Schema含め)Agentに対してのUsage権限 ⇐ここまで付与すると表示される.
  • (格納されているDB, Schema含め)Agentのツールに対してのUsage権限 ⇐ここまで付与するとエラーが解消される.

以下を参考に利用者が利用しているロールの見直しをしてください.
#1. Agentの登録と公開(Intelligence/Agentの権限)
#2. ツール利用エラーの解消(Semantic Viewの権限)

Q3.Agentを使ってみたがAgentがデータにアクセスできないようなことを言う

AgentがCortex Analystを利用している場合,
Semantic ViewだけでなくSemantic ViewのベースとなるテーブルへのSelect権限も必要です.

以下Cortex AnalystがSemantic Viewを利用してクエリを実行する際の挙動についての参考
#3. データ未取得問題の解消(ベーステーブルの権限)

余談ですが, Cortex SearchについてはCortex Searchが検索対象とするTable, Viewに対してのSelect権限は不要となります.

Q4(Ex).AgentをSnowflakeアカウント内全ユーザーに公開したい

SnowflakeにはPUBLICロールと呼ばれる, アカウント内全Snowflakeユーザーにデフォルトで付与されているロールがございます.
前記までの内容を基にして本ロールに各種権限を付与してください.

ただし, PUBLICロールへの権限付与は慎重に行ってください.
特にCortex Analsytを利用する場合, Q3で記載した通りSemantic ViewだけでなくSemantic ViewのベースとなるテーブルへのSelect権限も必要です.
もしベーステーブルへ直接Select権限を付与したくない場合, 1つViewを作成してそのViewに対してSelect権限を付与するという方法も可能となります.
必要に応じて本手法も検討してください.
#3. データ未取得問題の解消(ベーステーブルの権限)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?