【FrostyFriday】Week 145 – Intermediate Snowflake Intelligence

がく@ちゅらデータエンジニアです。
今日は、最近GAとなった目玉機能「Snowflake Intelligence」がFrostyFridayでも出題されていましたので、これを解いてようと思います。Snowflake Intelligence の使い方を調べながら、理解を深められればいいかなと思っています。
課題概要

て書かれておりますが、
2025年11月にGAされています!🎉🎉🎉🎉🎉🎉
チャレンジの内容としては、(以下、Google翻訳)
- SEC Filings データ共有をマーケットプレイスから取得する→リンクが無効になっていた、そのようなサービスは無いと怒られた(涙
- Snowflake Intelligenceを設定する→やる、結構やることいっぱい、何をするか分からない
- セマンティックモデルをダウンロードする→FrostyFridayのS3がおかしくなっていて、Access deny と出ていて、使えないorz
- ステージにアップロードする→取得できないからできないorz
- Snowflake Intelligenceを使用して、適切なセマンティックモデルに質問をルーティングできるエージェントを作成します。
- 次のサンプルの質問を投げてみる
- Snowflake Intelligenceにログインし、FROSTY AGENTを選択してください→FROSTY AGENTってなに???
- 次のグラウンドトゥルースの質問をしてください → グランドトゥルースってなに???
なかなかハードルが高いチャレンジですorz
やってみよう
SEC Filingsデータ共有をインストールする
「SEC Filingsデータ共有をインストールする」
とあるのですが、このリンクへアクセスすると

なんて出るので・・・・
https://app.snowflake.com/marketplace/data-products/search?search=SEC%20Filings
で検索窓に「SEC Filings」と入力します。
多分ですが、ログイン時のリンクと未ログイン時のリンクが違ったり、グローバルでマーケットプレイスを検索するにはこちらのリンクが正しいのかなと推測しています。
SEC Filings Vector Database: RAG-Ready for AI-Powered Financial Analysis

こちらを自分のアカウントに取り込みます。
取得をクリックすると、対象となるSnowflakeアカウントを選択できます。
(ACCOUNTADMINが必要かもしれません)

取り込むとこのようにOpenと表示されます。
(一応30日間のトライアルですが、今回は17days leftになっています)
Setup Snowflake Intelligence
2つ目の手順「Setup Snowflake Intelligence」を実施します。
ACCOUNTADMINロールになる
-- setup Snowflake Intelligence
use role ACCOUNTADMIN;
Snowflake Intelligenceオブジェクトを作成する
UIからもできるようですが、今回はSQLで実施します。
CREATE SNOWFLAKE INTELLIGENCE SNOWFLAKE_INTELLIGENCE_OBJECT_FROSTY_FRIDAY_GAKU;

作成できました
エージェントを追加する
Snowflake Intelligenceの権限を付与する
基本的にACCOUNTADMINに付与がデフォルトですが、特定のロールに付与できるようです。
今回は、すべてのユーザーが閲覧できるようにします。
オブジェクトに対するUSAGE権限をPUBLICロールに付与します。
GRANT USAGE ON SNOWFLAKE INTELLIGENCE SNOWFLAKE_INTELLIGENCE_OBJECT_FROSTY_FRIDAY_GAKU TO ROLE PUBLIC;

成功しました。
Frosty Friday提供のセマンティックモデルをダウンロードして、ステージにアップロードする

とあるのですが、FrostyFridayのS3がおかしくなっていて、アクセス拒否されてしまいます・・・・

これどうしようorzz
2025年末からこうなっていて、一応Globalで運営されているSnowflakeのSlackコミュニティでも報告してもらったんですが、まだ修正はされていない・・・年明けに修正されると良いと思ったんですけどねぇ・・・
エージェントを作成する
Snowflake Intelligenceでユーザーが操作できるエージェントを作成します。
まずは、環境設定。
使用ロール、DB、スキーマを作成します。
use role sysadmin;
use database gaku_frosty_friday_db;
create or replace schema WEEK146;
use schema WEEK146;
次にエージェントの作成。 を参考にして、エージェント名を変更しただけのものをとりあえず作ります
CREATE OR REPLACE AGENT frosty_friday_agent
COMMENT = 'agent level comment'
PROFILE = '{"display_name": "My Business Assistant", "avatar": "business-icon.png", "color": "blue"}'
FROM SPECIFICATION
$$
models:
orchestration: claude-4-sonnet
orchestration:
budget:
seconds: 30
tokens: 16000
instructions:
response: "You will respond in a friendly but concise manner"
orchestration: "For any revenue question use Analyst; for policy use Search"
system: "You are a friendly agent that helps with business questions"
sample_questions:
- question: "What was our revenue last quarter?"
answer: "I'll analyze the revenue data using our financial database."
tools:
- tool_spec:
type: "cortex_analyst_text_to_sql"
name: "Analyst1"
description: "Converts natural language to SQL queries for financial analysis"
- tool_spec:
type: "cortex_search"
name: "Search1"
description: "Searches company policy and documentation"
- tool_spec:
type: "data_to_chart"
name: "data_to_chart"
description: "Generates visualizations from data"
tool_resources:
Analyst1:
semantic_view: "db.schema.semantic_view"
Search1:
name: "db.schema.service_name"
max_results: "5"
filter:
"@eq":
region: "North America"
title_column: "<title_name>"
id_column: "<column_name>"
$$;

Snowflake Intelligence オブジェクトにエージェントを追加してみます。
use role ACCOUNTADMIN;
ALTER SNOWFLAKE INTELLIGENCE SNOWFLAKE_INTELLIGENCE_OBJECT_FROSTY_FRIDAY_GAKU ADD AGENT gaku_frosty_friday_db.WEEK146.frosty_friday_agent;
Snowflake Intelligenceを使用して、適切なセマンティックモデルに質問をルーティングできるエージェントを作成します。
エージェントは先ほど作りましたが、「SEC Filings」のデータを閲覧できるようにしたいと思います。

今回は、SnowsightのUIからアクセスし、
Work with data -> AI & ML -> Agents をクリックして、Agentsを開きます。

先ほど作ったAgentが一覧で表示されます。
FROSTY_FRIDAY_AGENTをクリックすると、

何も設定されていません。
なので・・・・
右上の編集→ツールをクリック

CortexSearchサービスに、

を取り込んでみます。
が、SEC_FILINGS_VECTOR_DATABASE_RAGREADY_FOR_AIPOWERED_FINANCIAL_ANALYSISには、Cortex Search Serviceがないのです・・・。
これを元に作らねばなりません><
※提供されてるセマンティックモデルがダウンロードできればここは気にしなくても良かったかもしれないのですがガガガ
こちらで提供されているCHUNKSテーブルをCortex Search Serviceにします。
CREATE CORTEX SEARCH SERVICE sec_document_chunks_service
ON TEXT
WAREHOUSE = gaku_cortex_search_tutorial_wh
TARGET_LAG = '1 hour'
AS (
select
*
from
SEC_FILINGS_VECTOR_DATABASE_RAGREADY_FOR_AIPOWERED_FINANCIAL_ANALYSIS.PUBLIC.sec_document_chunks
);
としてみたのですが、TRUCKINGできないのでALTERして〜と言われたので、
ALTER TABLE
SEC_FILINGS_VECTOR_DATABASE_RAGREADY_FOR_AIPOWERED_FINANCIAL_ANALYSIS.PUBLIC.sec_document_chunks
SET CHANGE_TRACKING = TRUE;
としてみましたが、失敗。
まぁシェアリングしたテーブルについてALTERはできない(※)よね・・・。
※トライアルなのでできない、本サービスならCortex Search Serviceが提供されている「かも」しれないのですが。
ってことで、今回はざくっとシェアテーブルをCTASでWEEK146スキーマにコピーして、Cortex Search Serviceを作ります。
-- できないので、コピーする
use role sysadmin;
create table sec_document_chunks as
select *
from SEC_FILINGS_VECTOR_DATABASE_RAGREADY_FOR_AIPOWERED_FINANCIAL_ANALYSIS.PUBLIC.sec_document_chunks;
ALTER TABLE sec_document_chunks SET CHANGE_TRACKING = TRUE;
CREATE OR REPLACE CORTEX SEARCH SERVICE sec_document_chunks_service
ON TEXT
WAREHOUSE = gaku_cortex_search_tutorial_wh
TARGET_LAG = '1 hour'
AS (
select
*
from
sec_document_chunks
);

Agentの設定再び

Cortex AnalystとCortex Search Serviceで不要なものが入っていたので、削除
その結果がこちらです。

問合わせてみる
1つ目の質問
「What is the primary ticker and latest SEC filed data for Apple Inc ?」

ぐぬぬ・・・・。
色々調査してみます。
- エラーメッセージのDEFAULT_ROLEがSYSADMINになっているか
-→なっていた -
DESCRIBE CORTEX SEARCH SERVICE GAKU_FROSTY_FRIDAY_DB.WEEK146.sec_document_chunks_service;を使って、STATUSを確認。
-→ACTIVEで問題なし - Cortex Serviceを使うためにSYSADMINへ権限が付与をできているか?
- できていた
Cortex Search Service自体の動作検証を忘れていたので、Agent経由ではなくSQLで検証してみます。
USE ROLE SYSADMIN;
SELECT SNOWFLAKE.CORTEX.SEARCH_PREVIEW(
'GAKU_FROSTY_FRIDAY_DB.WEEK146.SEC_DOCUMENT_CHUNKS_SERVICE',
'{
"query": "Apple Inc",
"columns": ["TEXT"],
"limit": 10
}'
);

このような形でできたので、Cortex Search Serviceの問題でもなさそう・・・
というわけで、Agentの設定がおかしいのでは?ということで検証してみます。
うーん、何もおかしいところが見つからん・・・・と思ったのですが、

あれ・・・・。
消したはずのサービス(Cortex Search, Cortex Analyst)が消えていない・・・。
これは、前の手順段階で手動でAgentを作った際に、ドキュメントのSQLをそのまま貼り付けた状態だった。
改めて、AGENTサービスをGUIから新規に作成してみます。


FROSTY_FRIDAY_AGENT2が、できたのでこちらを使ってみます。
動いたーーーー!

回答も出たーーー!

Snowflake Intelligenceへ
(ここまで結構かかりましたね・・・・はぁはぁぜぇぜぇ)
https://ai.snowflake.com/ にログインします。

先ほど作成したアカウントを選択します。

FROSTY_FRIDAY_AGENT2を使います。

動いた!!
試しに日本語に翻訳してもらいます。

ぬー、コンテキストは引き継がれないのかな?
改めて詳しく指定して、日本語に翻訳してもらいます。

いい感じ!!
まとめ
今回は、祝!Snowflake IntelligenceがGAされた!ということで、Frosty Fridayのチャレンジをしてみました。
ただ、
- マーケットプレイスのリンクが無効になっていた
- Frosty FridayのS3がAccess Denyになっていて、セマンティックモデルが取得できなくなっていた
といった困難に見舞われました・・・・。
もっと簡単にできると思っていたんやぁぁぁぁぁぁぁぁ(笑)
正直、マーケットプレイスのデータは本当に必要だったのか?
と思いましたが、
マーケットプレイスはそのままRAGに取り込めないので、自分のSnowflakeアカウントにCTASでコピーをして、それをCortex Search Service を作る方法をとりました。
- Cortex Search Service について現状を知ることができた。
- Cortex Agent の設定についても学ぶことができた。
- Snowflake Intelligenceは、
ai.snowflake.comというドメインである。 - Snowflake IntelligenceのGUIがかなりわかりやすく、すぐに作れそう!
- トラブルシューティングが一番勉強になる!
- エラー解析にはClaudeCodeを使いましたが、すんなりは行かなかったけど、すごい捗った!
- Week145なのに、勘違いでスキーマをWeek146でつくってしまった🙇
というわけで、今回は頑張りました!
Discussion