
自然言語によるSnowflakeのデータ分析を実現する、Cortex Agentsの利用インターフェースをおさらいする
データ事業本部の鈴木です。
SnowflakeではCortex Agentsに自然言語で問い合わせをすると、分析したいことに対してLLMが自動でツールを選択し、データに対する洞察を得ることができます。
プレビュー期間中に一度紹介しましたが、当時とも状況が変わったので、改めてこの機能についてご紹介します。
▼ 以前の記事
昨年の11月にGAとなりました。
Cortex Agentsについて
どんなものか
非構造化データに対して検索と取得ができるCortex Searchと構造化データに対するCortex Analystなどをツールとして登録し、自動で使い分けてSnowflake内のデータを分析できます。

できること
一般的なAIエージェントと比較して、データ分析の観点でより適切にSnowflakeに格納したデータを分析できる点が強みです。
例えば、データを分析するためには、分析向けのSQL文を書いて実行する必要があります。
SQL文はエンジンによって方言があるため、SnowflakeであればSnowflakeの最新の仕様に沿ったSQL文を生成する必要があります。
また、ユーザーの質問をデータや集計の仕様に合わせて、解釈する必要もあります。
ユーザーが依頼したKPIの集計定義は、LLMが知っているKPIの定義とは異なることも多いです。さらにユーザーが質問したビジネス用語が必ずしもテーブル定義に一致しているとは限りません。分析対象が複数のテーブルにまたがっている場合は、結合するためにテーブル設計の情報も必要です。
このように、データ分析向けのAIエージェントは、自作にはかなりの作り込みやデータ分析への理解が必要です。Cortex Agentsでは、Cortex Analystをツールとして使えるため、組み込みの機能を使うことで簡単にAIエージェントにデータ分析を実行させることができます。
Cortex Analystは以下で紹介しました。
また、Cortex Agentsは後述するSnowflake Intelligenceのエンジンとしても採用されています。
Snowflake IntelligenceがUIとして要件を満たすのであれば、Cortex Agentsを作っておくだけで、簡単にユーザー向けの画面を提供できます。
Snowflake Intelligenceは以下で紹介しました。Snowflake Intelligenceも昨年11月にGAになっています。
Cortex Agentsの利用インターフェース
現状、ざっくりと以下の利用方法があります。
- Snowflake Intelligenceから使う
- REST APIから使う
- MCPサーバーから使う
以下でそれぞれの利用イメージをご紹介します。
なお、Cortex Agentsは以下のクイックスタートを参考に作成したとします。
1. Snowflake Intelligenceからの使用
Snowflake IntelligenceはエンジンがCortex Agentsとして、分析向けのUIを提供します。以下のようなUIがすぐに利用できます。エージェントに対する権限があるユーザーはSnowflake Intelligenceからそのエージェントを使って分析ができます。

会話履歴の保存やマルチターンの会話など、チャットアプリに必要な機能をすぐに利用できる点が特徴です。Cortex Agentsが返してきたグラフや思考内容も同様に表示できる点も差別化ポイントです。

Streamlitアプリでも近しい機能を持ったUIは作成可能と思いますが、これだけの機能を搭載しようとすると開発には手間がかかります。UIとしての要件を確認した上で不足がなければSnowflake Intelligenceを使うのが利用開始の近道です。
2. REST APIからの使用
REST APIからも実行できるため、独自のシステムから利用したいようなケースに対応できます。
REST APIから使用すると、Cortex AgentsからのレスポンスをServer-Sent Events(SSE)で取得できます。
REST APIからはエージェントは作成済みでもそうでなくても利用できます。作成済みのものを使うことが多いと思うので、ここではこのパターンを紹介します。
REST API利用時には認証が必要になります。自環境に沿ったセキュアな方法を選択してください。
今回は認証自体はあまり関係がないため、以下の例ではユーザー・パスワードで認証しました。
import json
import requests
import snowflake.connector
# 接続の作成
session = snowflake.connector.connect(
user="使用ユーザー名",
password="パスワード",
account="アカウント識別子",
warehouse="使用ウェアハウス名",
role="使用ロール名",
)
def send_message(message, session):
request_body = {
"messages": [message],
"tool_choice": {
"type": "auto",
"name": [
"Sales_And_Marketing_Data",
"Support_Cases"
]
}
}
resp = requests.post(
url=f"https://{session.host}/api/v2/databases/{データベース名}/schemas/{スキーマ名}/agents/{エージェント名}:run",
json=request_body,
headers={
"Authorization": f'Snowflake Token="{session.rest.token}"',
"Content-Type": "application/json",
},
stream=True,
)
# SSE形式のレスポンスが返却される
return resp
# 質問例
query = "6月から8月までの商品カテゴリー別の売上トレンドを見せてください"
message = {"role": "user",
"content": [
{
"type": "text",
"text": query
}]}
# 質問の実行
resp = send_message(message, session)
APIからの利用については以下の資料にも詳しく使い方が紹介されています。
なお、SnowflakeのStreamlitアプリからは、ウェアハウスで動作する場合は_snowflakeモジュール使ってリクエストができるほか、コンテナランタイムで動作する場合は別の方法を使って認証情報を取得できます。以下のクイックスタートが参考になります。
3. MCPサーバーからの使用
SnowflakeはマネージドのMCPサーバーをサポートしており、このMCPサーバーから自身のアクセス権限のあるCortex Agentsを利用することができます。
以下の記事を参考にPATを作成して利用して試しました。(推奨はOAuthです)
以下のようにMCPサーバーをSnowsightから作成しました。
-- クイックスタートの場合は、SNOWFLAKE_INTELLIGENCE_ADMINで実行、SNOWFLAKE_INTELLIGENCE.AGENTSに作成
create or replace mcp server retail_business_performance_mcp_server from specification
$$
tools:
- name: "RetailBusinessPerformanceAnalysisCortexAgents"
identifier: "SNOWFLAKE_INTELLIGENCE.AGENTS.SALES_AI"
type: "CORTEX_AGENT_RUN"
description: "小売ビジネスのパフォーマンスを分析するCortex Agent"
title: "Analyze Retail Business Performance Agent"
$$;
Cursorのmcp.jsonに以下のように登録しました。<>で囲った箇所は自身のものに置き換えてください。
{
"mcpServers": {
"BizPerformance": {
"url": "https://<Account/Server URL>/api/v2/databases/<MCPサーバーを作ったデータベース名>/schemas/<MCPサーバーを作ったスキーマ名>/mcp-servers/<MCPサーバー名>",
"headers": {
"Authorization": "Bearer <PAT>"
}
}
}
}
以下のように登録されたので、ツール名をクリックして有効化しておきました。

チャットで設定したリモートMCPサーバーを使うように質問をすると、Cortex Agentsを使って回答を生成してくれました。


グラフ表示はシームレスにできるクライアントがまだ少ないと思うので、分析場面での使いやすさはSnowflake Intelligenceに優位性がありそうです。MCPからのレスポンスにはVega-Lite形式でチャート情報が入っているため、HTMLに変換してもらって見るようなことは可能です。

料金
以下の課金要素がかかります。
- Cortex Agents自体
- Cortex Analystツール
- Cortex Searchツール
- そのほかに利用するツールがあれば
料金表は以下にあります。
Cortex Agentsはモデルごとに100万トークン単位の料金がかかります。
Cortex Analystはもともとはリクエスト数による課金だったため、Cortex Agentsから使うと課金額が大きくなる可能性がありましたが、Snowflake IntelligenceまたはCortex Agentsから使う場合はトークン数ベースの課金となっており、使いやすくなりました。
Cortex Searchは課金要素がいろいろあるため計算は難しいですが、ものすごく大量のドキュメントを検索するような場合は別なものの、そこまで課金は大きくならないと思います。
そのほか
Cortex AgentsはSnowsight(コンソール)からも簡単に作成でき、とても手軽に利用できますが、より振る舞いを制御するためのいくつかの設定ができます。
- orchestration instructions
- response instructions

ツールのDescriptionも適宜書いておき、エージェントからツールがどのようなものでいつ使うものなのか分かるようにしておくことも必要です。

また、エージェントの評価機能もあります。導入初期時の性能評価や普段の運用で重宝します。
現状はTruLensを使った評価機能が利用できます。
現在はプライベートプレビュー中のCortex Agents専用の評価機能もあるようです。
最後に
自然言語によるSnowflakeのデータ分析を実現するCortex Agentsの利用動線のおさらいでした。
以下のウェビナーでもご紹介した通り、AIに分析を任せられるかどうかで、組織のデータ分析環境の品質や改善スピードが変わってくると期待しています。
SnowflakeではネイティブのCortex Agentsを使うことで誰でも簡単に分析向けエージェントを作成できます。
この記事でご紹介したように複数のインターフェースが用意されているため、自環境に合わせてご利用ください。








