1. 概要
Snowflake の公式ガイド Build a Cortex Agents from Scratch with Snowflake と付属の Notebook をベースに、売上データを分析する Cortex Analyst と、製品ドキュメントを検索する Cortex Search を組み合わせる方法を紹介します。
公式ガイドは英語で書かれていますが、コンテンツの一部を日本語に修正して、日本語での動作を確認します。
Snowflake Cortex Agents の構成
2. 前提条件とライセンス
2.1. 検証環境
Snowflake の Azure 東日本リージョン(AZURE_JAPANEAST)を利用しています。Cortex AI のクロスリージョン推論設定(CORTEX_ENABLED_CROSS_REGION)は ANY_REGION に設定しており、クラウドプロバイダーを問わず、Snowflake がサポートするリージョンで推論リクエストを処理できる構成です。
| REGION | SNOWFLAKE_VERSION |
|---|---|
| AZURE_JAPANEAST | 10.38.100 |
| key | value | default | level | description | type |
|---|---|---|---|---|---|
| CORTEX_ENABLED_CROSS_REGION | ANY_REGION | DISABLED | ACCOUNT | Comma separated list of allowed cortex cross regions. Order does not matter. | STRING |
2.2. 本記事のコードのライセンスと改変内容
本記事の第 3 章に掲載する SQL は、Snowflake-Labs の snowflake-demo-notebooks 内の Notebook を改変したものです。元リポジトリのコードは Apache License 2.0 で提供されています。第 3 章で提示するコードは、元の Notebook から一部を改変しています。本記事の解説文は独自に作成しており、公式ガイドの文章を翻訳・転載したものではありません。
参照した Notebook のコミットは 7ad9d60019c754d7c30a07cf55fcfd71e2623751 です。
3. 公式ガイド・Notebook に沿った Cortex Agent の構築
3.1. Notebook のインポートと環境構築
公式 Notebook をダウンロードします。右側にある Download raw file を選択すると、ファイルをダウンロードできます。
Snowsight の Workspace で + Add new -> Upload files を選択し、ダウンロードしたファイルをアップロードします。
Notebook が表示されることを確認します。
セル 4 を実行して、データベースなどを作成します。
セル 6 を下記のように書き換えて、claude-sonnet-5-5 を利用できることを確認します。
-- SELECT SNOWFLAKE.CORTEX.COMPLETE('claude-3-5-sonnet', 'Say hello in one word') AS cortex_test;
SELECT SNOWFLAKE.CORTEX.COMPLETE('claude-sonnet-5-5', 'Say hello in one word') AS cortex_test;
3.2. サンプルデータの作成
公式 Notebook のセルを実行して、テーブルの作成とデータの挿入を実施します。
Sales
Inventory
Product Documentation
セル 17 を下記のように書き換えて、content を日本語にします。
INSERT INTO product_docs (product_name, doc_type, content, last_updated)
VALUES
('Laptop Pro', 'specifications',
'Laptop Proは、15.6インチの4Kディスプレイ、Intel i9プロセッサ、32GBのRAM、1TBのSSDを搭載しています。バッテリー駆動時間は最大12時間です。Thunderbolt 4ポートとWi-Fi 6Eに対応しています。重量は4.2ポンドです。標準保証期間は3年間で、最大5年間まで延長できます。',
'2024-01-01'),
('Laptop Pro', 'troubleshooting',
'よくある問題と対処方法:1) バッテリーの消耗が早い場合は、バックグラウンドで動作しているアプリを確認し、画面の明るさを下げてください。2) 本体が過熱する場合は、通気口がふさがれていないことを確認し、硬く平らな場所で使用してください。3) 動作が遅い場合は、ソフトウェアの更新を確認し、ディスククリーンアップを実行してください。4) Wi-Fiに問題がある場合は、ネットワークドライバーを更新し、ネットワーク設定をリセットしてください。',
'2024-01-15'),
('Standing Desk', 'specifications',
'高さを記憶できるメモリー機能付きの電動昇降デスクです。高さの調整範囲は28~48インチです。天板のサイズは60×30インチです。最大耐荷重は300ポンドです。安定性を高めるためにデュアルモーターシステムを採用しています。ケーブル管理用トレーと衝突防止センサーを搭載しています。',
'2024-01-01'),
('Standing Desk', 'assembly',
'組み立て手順:1) 付属のボルトを使用して脚部をフレームに取り付けます。2) モーターのケーブルをコントロールボックスに接続します。3) 天板をフレームに固定します。4) 電源コードを接続します。5) 操作パネルを使用して高さのプリセットを登録します。組み立て時間の目安は約45分です。必要な工具はプラスドライバーです。',
'2024-01-10'),
('Office Chair', 'specifications',
'ランバーサポートを備えた人間工学に基づくオフィスチェアです。アームレスト、座面の高さ、リクライニングの反発力を調整できます。背もたれには通気性の高いメッシュ素材を採用しています。座面のサイズは20×19インチです。最大耐荷重は275ポンドです。保証期間はフレームが5年間、張地が2年間です。',
'2024-01-01'),
('Office Chair', 'care',
'お手入れ方法:メッシュ部分は中性洗剤と水を使用して清掃してください。キャスターには年に1回潤滑剤を塗布してください。6か月ごとにボルトを点検し、必要に応じて締め直してください。最大耐荷重を超えないようにしてください。湿気の少ない乾燥した環境で保管してください。座面が自然に下がる場合は、ガスシリンダーを交換してください。',
'2024-02-01');
件数チェック
| TABLE_NAME | ROW_COUNT |
|---|---|
| sales | 12 |
| inventory | 6 |
| product_docs | 6 |
3.3. 日本語セマンティックビューの作成
物理テーブル名と列名は元の英語のまま使用し、業務上の論理名を日本語で定義します。
-- Modified 2026-10-19: Japanese logical names and CREATE OR ALTER.
CREATE OR ALTER SEMANTIC VIEW
CORTEX_AGENTS_LAB.TUTORIAL.SALES_SEMANTIC_VIEW
TABLES (
sales AS CORTEX_AGENTS_LAB.TUTORIAL.SALES
PRIMARY KEY (sale_id)
COMMENT = '小売業の売上明細。1行は1件の販売取引を表す。金額の単位は米ドル。'
)
DIMENSIONS (
sales."商品名" AS product_name
WITH SYNONYMS = ('製品名', 'product name')
COMMENT = '販売した商品の名称。例:Laptop Pro、Standing Desk。',
sales."商品カテゴリ" AS category
WITH SYNONYMS = ('カテゴリ', '製品カテゴリ')
COMMENT = '商品の分類。Electronics は電子機器、Furniture は家具。',
sales."地域" AS region
WITH SYNONYMS = ('販売地域', '売上地域')
COMMENT = '販売地域。North America は北米、Europe は欧州、Asia Pacific はアジア太平洋。',
sales."顧客区分" AS customer_segment
WITH SYNONYMS = ('顧客セグメント', '顧客種別')
COMMENT = 'Enterprise は大企業、SMB は中小企業、Consumer は個人。'
)
METRICS (
sales."売上高" AS SUM(total_amount)
WITH SYNONYMS = ('売上金額', '売上', 'revenue')
COMMENT = '売上金額の合計。単位は米ドル(USD)。',
sales."販売数量" AS SUM(quantity)
WITH SYNONYMS = ('販売個数', '販売数')
COMMENT = '販売した商品の数量の合計。',
sales."取引件数" AS COUNT(*)
WITH SYNONYMS = ('販売取引数', '明細件数')
COMMENT = '売上明細の行数。顧客数や販売数量ではない。'
)
COMMENT = '商品、地域、顧客区分ごとに売上高と販売数量を分析する日本語セマンティックビュー。';
Agent を介さず、セマンティックビューを直接問い合わせます。
従来の SEMANTIC_VIEW() 構文に加えて、セマンティックビューを FROM 句で直接参照し、SELECT、GROUP BY、AGG() などを使ってクエリできるようになりました。
SELECT
AGG(total_sales) AS total_sales,
AGG(total_quantity) AS total_quantity,
region
FROM CORTEX_AGENTS_LAB.TUTORIAL.SALES_SEMANTIC_VIEW
GROUP BY
region
ORDER BY
total_sales DESC;
SELECT
AGG(total_sales) AS total_sales,
AGG(transaction_count) AS transaction_count,
region,
category
FROM CORTEX_AGENTS_LAB.TUTORIAL.SALES_SEMANTIC_VIEW
GROUP BY
region,
category
ORDER BY
total_sales DESC;
3.4. Cortex Search Service の構築
PRODUCT_DOCS.CONTENT を検索対象にします。PRODUCT_NAME と DOC_TYPE は属性として登録し、製品や文書種別で絞り込めるようにします。
サービスが作成されたら、Agent とは独立して検索します。
SELECT
r.value:product_name::STRING AS product_name,
r.value:doc_type::STRING AS doc_type,
SUBSTRING(r.value:content::STRING, 1, 100) AS content_preview
FROM TABLE(FLATTEN(
PARSE_JSON(
SNOWFLAKE.CORTEX.SEARCH_PREVIEW(
'CORTEX_AGENTS_LAB.TUTORIAL.PRODUCT_SEARCH_SERVICE',
'{"query": "ノートパソコンの過熱を解消する方法", "columns": ["content", "product_name", "doc_type"], "limit": 3}'
)
)['results']
)) r;
| PRODUCT_NAME | DOC_TYPE | CONTENT_PREVIEW |
|---|---|---|
| Laptop Pro | troubleshooting | よくある問題と対処方法:1) バッテリーの消耗が早い場合は、バックグラウンドで動作しているアプリを確認し、画面の明るさを下げてください。2) 本体が過熱する場合は、通気口がふさがれていないことを確認し |
| Office Chair | care | お手入れ方法:メッシュ部分は中性洗剤と水を使用して清掃してください。キャスターには年に1回潤滑剤を塗布してください。6か月ごとにボルトを点検し、必要に応じて締め直してください。最大耐荷重を超えないよう |
| Standing Desk | specifications | 高さを記憶できるメモリー機能付きの電動昇降デスクです。高さの調整範囲は28~48インチです。天板のサイズは60×30インチです。最大耐荷重は300ポンドです。安定性を高めるためにデュアルモーターシステ |
-- RAG:Cortex Searchから関連情報を取得し、LLMで回答を生成する
WITH search_results AS (
SELECT
r.value:content::STRING AS content
FROM TABLE(FLATTEN(
PARSE_JSON(
SNOWFLAKE.CORTEX.SEARCH_PREVIEW(
'CORTEX_AGENTS_LAB.TUTORIAL.PRODUCT_SEARCH_SERVICE',
'{"query": "ノートパソコンの過熱を解消する方法", "columns": ["content"], "limit": 3}'
)
)['results']
)) r
),
context AS (
SELECT LISTAGG(content, '\n\n') AS combined_context
FROM search_results
)
SELECT SNOWFLAKE.CORTEX.COMPLETE(
'claude-sonnet-5-5',
CONCAT(
'あなたは製品サポートを担当するアシスタントです。以下に提供されたコンテキストの情報のみを使用して質問に回答してください。',
'コンテキストに回答に必要な情報が十分に含まれていない場合は、その旨を明確に伝えてください。\n\n',
'コンテキスト:\n', combined_context, '\n\n',
'質問:ノートパソコンの過熱を解消するにはどうすればよいですか?\n\n',
'回答:'
)
) AS rag_answer
FROM context;
コンテキストには、本体が過熱する場合の対処方法として次の2点が記載されています。
1. **通気口がふさがれていないか確認する**
2. **硬く平らな場所で使用する**
ただし、この記載は「本体」についての一般的な内容で、ノートパソコン専用の手順とは明記されていません。ファンの清掃や冷却パッドの使用など、これ以外の具体的な対処法はコンテキストに含まれていません。上記を試しても改善しない場合は、メーカーのサポート窓口にお問い合わせください。
なお、コンテキストの製品説明は電動昇降デスクに関するものです。お使いのノートパソコンに関する情報は含まれていません。
3.5. Cortex Agent の作成
初回は、売上の質問を Analyst、製品文書の質問を Search に振り分ける構成を作成します。単一の質問で両方を使う指示は第 5 章で追加します。
CREATE OR REPLACE AGENT CORTEX_AGENTS_LAB.TUTORIAL.TUTORIAL_AGENT
COMMENT = '売上分析と製品ドキュメント検索の検証用 Agent'
PROFILE = '{"display_name":"小売業データ分析エージェント"}'
FROM SPECIFICATION
$$
models:
orchestration: claude-sonnet-5-5
orchestration:
tool_not_accessible: reject
budget:
seconds: 90
tokens: 16000
instructions:
orchestration: >-
あなたは小売業の売上データと製品ドキュメントを調べるアシスタントである。
売上高、販売数量、取引件数の質問には Analyst を使用する。
製品仕様、組み立て方法、トラブルへの対処方法の質問には Search を使用する。
製品の名称は元の英語名を維持する。
response: >-
日本語で簡潔に回答する。数値は Analyst の実行結果、製品情報は Search の
検索結果を根拠とする。売上金額の単位は USD とする。
文書から得た情報には利用可能な引用を付ける。
根拠のない情報を補わず、確認できない場合はその旨を明記する。
tools:
- tool_spec:
type: cortex_analyst_text_to_sql
name: Analyst
description: 売上高、販売数量、取引件数を商品、地域、顧客区分別に分析する
- tool_spec:
type: cortex_search
name: Search
description: 製品仕様、組み立て方法、トラブルへの対処方法を製品文書から検索する
tool_resources:
Analyst:
semantic_view: CORTEX_AGENTS_LAB.TUTORIAL.SALES_SEMANTIC_VIEW
execution_environment:
type: warehouse
warehouse: COMPUTE_WH
Search:
search_service: CORTEX_AGENTS_LAB.TUTORIAL.PRODUCT_SEARCH_SERVICE
max_results: 3
$$;
3.6. Notebook からの動作確認
Python から Agent に質問し、回答を取得します。
まず、構造化データに関する質問の結果です。
import json
from snowflake.snowpark.context import get_active_session
session = get_active_session()
# 構造化データに関する質問をエージェントに送信する
result = session.sql("""
SELECT SNOWFLAKE.CORTEX.DATA_AGENT_RUN(
'CORTEX_AGENTS_LAB.TUTORIAL.TUTORIAL_AGENT',
$${"messages": [{"role": "user", "content": [{"type": "text", "text": "地域別の売上金額の合計を教えてください。"}]}]}$$
) AS resp
""").collect()
resp = json.loads(result[0]["RESP"])
# レスポンスの各コンテンツを解析して表示する
for item in resp.get("content", []):
item_type = item.get("type")
if item_type == "thinking":
print("=== 思考プロセス ===")
print(item["thinking"]["text"])
print()
elif item_type == "tool_use":
print(f"=== ツール呼び出し: {item['tool_use'].get('name', '')} ({item['tool_use'].get('type', '')}) ===")
print()
elif item_type == "tool_result":
tr = item["tool_result"]
print(f"=== ツール実行結果: {tr.get('name', '')} ===")
content_json = tr.get("content", [{}])[0].get("json", {})
if content_json.get("sql"):
print(f"生成されたSQL:\n{content_json['sql']}\n")
if content_json.get("sql_explanation"):
print(f"SQLの説明: {content_json['sql_explanation']}\n")
if content_json.get("result_set", {}).get("data"):
meta = content_json["result_set"].get("resultSetMetaData", {})
cols = [col["name"] for col in meta.get("rowType", [])]
data = content_json["result_set"]["data"]
if cols:
print(" | ".join(cols))
print("-" * (len(" | ".join(cols))))
for row in data:
print(" | ".join(str(v) for v in row))
print()
elif item_type == "text":
print("=== 最終回答 ===")
print(item["text"])
print()
=== ツール呼び出し: Analyst (system_agentic_semantic_context) ===
=== ツール実行結果: Analyst ===
=== ツール呼び出し: system_execute_sql (system_execute_sql) ===
=== ツール実行結果: system_execute_sql ===
生成されたSQL:
WITH __sales AS (
SELECT
region,
total_amount
FROM CORTEX_AGENTS_LAB.TUTORIAL.SALES
)
SELECT
region,
SUM(total_sales) AS total_sales
FROM __sales
GROUP BY
region
ORDER BY
total_sales DESC NULLS LAST /* Generated by Cortex */;
=== 最終回答 ===
Metric は集計式で書く必要がある。
=== ツール呼び出し: system_execute_sql (system_execute_sql) ===
=== ツール実行結果: system_execute_sql ===
生成されたSQL:
WITH __sales AS (
SELECT
region,
total_amount
FROM CORTEX_AGENTS_LAB.TUTORIAL.SALES
)
SELECT
region,
SUM(total_amount) AS total_sales
FROM __sales
GROUP BY
region
ORDER BY
total_sales DESC NULLS LAST /* Generated by Cortex */;
REGION | TOTAL_SALES
--------------------
North America | 69497.00
Europe | 51498.60
Asia Pacific | 39999.60
=== ツール呼び出し: server_skill (server_skill) ===
=== ツール実行結果: server_skill ===
=== ツール呼び出し: data_to_chart (data_to_chart) ===
=== ツール実行結果: data_to_chart ===
=== 最終回答 ===
地域別の売上金額の合計は次のとおりです(単位: USD)。North America が最も高くなりました。
続いて、製品ドキュメントに関する質問の結果です。
# 製品ドキュメントに関する質問をエージェントに送信する
result = session.sql("""
SELECT SNOWFLAKE.CORTEX.DATA_AGENT_RUN(
'CORTEX_AGENTS_LAB.TUTORIAL.TUTORIAL_AGENT',
$${"messages": [{"role": "user", "content": [{"type": "text", "text": "ノートパソコンの過熱を解消するにはどうすればよいですか?"}]}]}$$
) AS resp
""").collect()
resp = json.loads(result[0]["RESP"])
for item in resp.get("content", []):
item_type = item.get("type")
if item_type == "thinking":
print("=== 思考プロセス ===")
print(item["thinking"]["text"])
print()
elif item_type == "tool_use":
print(f"=== ツール呼び出し: {item['tool_use'].get('name', '')} ({item['tool_use'].get('type', '')}) ===")
print()
elif item_type == "tool_result":
tr = item["tool_result"]
print(f"=== ツール実行結果: {tr.get('name', '')} (ステータス: {tr.get('status', '')}) ===")
print()
elif item_type == "text":
print("=== 最終回答 ===")
print(item["text"])
print()
=== ツール呼び出し: Search (cortex_search) ===
=== ツール実行結果: Search (ステータス: success) ===
=== 最終回答 ===
製品文書によると、本体が過熱する場合は次の2点を確認してください。
- 通気口がふさがれていないことを確認する。
- 硬く平らな場所で使用する。
文書にはこれ以外の対処方法(清掃やサポートへの連絡など)の記載は確認できませんでした。上記を試しても改善しない場合は、メーカーのサポートに問い合わせてください。
3.7. (オプション)リソースの削除
公式ガイドには、本手順で作成したリソースを削除する手順が掲載されています。ただし、データベースは削除対象に含まれていないため、別途削除する必要があります。本記事では追加検証を実施するため、リソースを削除しています。
4. 追加検証: Snowflake CoWork の利用
4.1. Snowflake CoWork に移動
AI & ML -> Snowflake CoWork を選択します。
Snowflake CoWork(https://ai.snowflake.com/)に移動することを確認します。
4.2. Snowflake CoWork で質問
Snowflake CoWork に移動したら、小売業データ分析エージェント を選択し、地域別の売上高、販売数量、取引件数を売上高の降順で教えてください。 と入力して質問します。
回答が表示されることを確認します。
4.3. Artifacts 機能の確認
回答の表にある Save を選択します。
Artifacts を選択します。
保存した表が表示されることを確認します。
グラフも保存できます。
5. 追加検証: Agent Studio の利用
5.1. Agent Studio の表示
Snowsight で AI & ML -> Agents Studio を選択します。
All agents の 小売業データ分析エージェント(TUTORIAL_AGENT)を選択します。
作成した Agent が表示されることを確認します。
5.2. Preview で動作確認
Preview を選択します。
Laptop Pro が過熱する場合の対処方法を、製品文書を根拠に教えてください。 と入力して質問します。
回答が表示されることを確認します。
5.3. Observability で動作確認
Observability を選択します。
FIRST INPUT が Laptop Pro が過熱する場合の対処方法を、製品文書を根拠に教えてください。 の項目を選択します。
処理内容を確認できます。
6. 追加検証: SQL による情報取得
6.1. Agent の情報を取得
DESCRIBE AGENT
CORTEX_AGENTS_LAB.TUTORIAL.TUTORIAL_AGENT;
| 項目 | 値 |
|---|---|
| name | TUTORIAL_AGENT |
| database_name | CORTEX_AGENTS_LAB |
| schema_name | TUTORIAL |
| owner | ACCOUNTADMIN |
| comment | 売上分析と製品ドキュメント検索の検証用 Agent |
| profile | {"display_name":"小売業データ分析エージェント"} |
| agent_spec | 下記参照 |
| created_on | 2026-10-18 18:49:56.988 -0700 |
| default_version_name | LAST |
| versions | ["VERSION$1"] |
| aliases | {"DEFAULT":"VERSION$1","FIRST":"VERSION$1","LAST":"VERSION$1"} |
agent_spec の詳細
| 項目 | 値 |
|---|---|
| models.orchestration | claude-sonnet-5-5 |
| orchestration.budget.seconds | 90 |
| orchestration.budget.tokens | 16000 |
| orchestration.tool_not_accessible | reject |
| instructions.response | 日本語で簡潔に回答する。数値は Analyst の実行結果、製品情報は Search の 検索結果を根拠とする。売上金額の単位は USD とする。 文書から得た情報には利用可能な引用を付ける。 根拠のない情報を補わず、確認できない場合はその旨を明記する。 |
| instructions.orchestration | あなたは小売業の売上データと製品ドキュメントを調べるアシスタントである。 売上高、販売数量、取引件数の質問には Analyst を使用する。 製品仕様、組み立て方法、トラブルへの対処方法の質問には Search を使用する。 製品の名称は元の英語名を維持する。 |
| tools[0].tool_spec.type | cortex_analyst_text_to_sql |
| tools[0].tool_spec.name | Analyst |
| tools[0].tool_spec.description | 売上高、販売数量、取引件数を商品、地域、顧客区分別に分析する |
| tools[1].tool_spec.type | cortex_search |
| tools[1].tool_spec.name | Search |
| tools[1].tool_spec.description | 製品仕様、組み立て方法、トラブルへの対処方法を製品文書から検索する |
| tool_resources.Analyst.semantic_view | CORTEX_AGENTS_LAB.TUTORIAL.SALES_SEMANTIC_VIEW |
| tool_resources.Analyst.execution_environment.type | warehouse |
| tool_resources.Analyst.execution_environment.warehouse | COMPUTE_WH |
| tool_resources.Search.search_service | CORTEX_AGENTS_LAB.TUTORIAL.PRODUCT_SEARCH_SERVICE |
| tool_resources.Search.max_results | 3 |
DESCRIBE AGENT
CORTEX_AGENTS_LAB.TUTORIAL.TUTORIAL_AGENT
->>
WITH spec AS (
SELECT PARSE_JSON("agent_spec") AS body
FROM $1
)
SELECT
body:models:orchestration::STRING AS MODEL,
body:instructions:system::STRING AS SYSTEM_PROMPT,
body:instructions:orchestration::STRING AS ORCHESTRATION_INSTRUCTIONS,
body:instructions:response::STRING AS RESPONSE_INSTRUCTIONS,
body:instructions AS ALL_INSTRUCTIONS,
body:orchestration AS ORCHESTRATION_SETTINGS,
body:tools AS TOOLS,
body:tool_resources AS TOOL_RESOURCES
FROM spec;
| 項目 | 値 |
|---|---|
| MODEL | claude-sonnet-5-5 |
| SYSTEM_PROMPT | (空欄) |
| ORCHESTRATION_INSTRUCTIONS | あなたは小売業の売上データと製品ドキュメントを調べるアシスタントである。売上高、販売数量、取引件数の質問には Analyst を使用する。製品仕様、組み立て方法、トラブルへの対処方法の質問には Search を使用する。製品の名称は元の英語名を維持する。 |
| RESPONSE_INSTRUCTIONS | 日本語で簡潔に回答する。数値は Analyst の実行結果、製品情報は Search の検索結果を根拠とする。売上金額の単位は USD とする。文書から得た情報には利用可能な引用を付ける。根拠のない情報を補わず、確認できない場合はその旨を明記する。 |
| ALL_INSTRUCTIONS | 下記参照 |
| ORCHESTRATION_SETTINGS | 下記参照 |
| TOOLS | 下記参照 |
| TOOL_RESOURCES | 下記参照 |
ALL_INSTRUCTIONS
| 項目 | 値 |
|---|---|
| orchestration | あなたは小売業の売上データと製品ドキュメントを調べるアシスタントである。売上高、販売数量、取引件数の質問には Analyst を使用する。製品仕様、組み立て方法、トラブルへの対処方法の質問には Search を使用する。製品の名称は元の英語名を維持する。 |
| response | 日本語で簡潔に回答する。数値は Analyst の実行結果、製品情報は Search の検索結果を根拠とする。売上金額の単位は USD とする。文書から得た情報には利用可能な引用を付ける。根拠のない情報を補わず、確認できない場合はその旨を明記する。 |
ORCHESTRATION_SETTINGS
| 項目 | 値 |
|---|---|
| budget.seconds | 90 |
| budget.tokens | 16000 |
| tool_not_accessible | reject |
TOOLS
| 項目 | 値 |
|---|---|
| tools[0].tool_spec.name | Analyst |
| tools[0].tool_spec.type | cortex_analyst_text_to_sql |
| tools[0].tool_spec.description | 売上高、販売数量、取引件数を商品、地域、顧客区分別に分析する |
| tools[1].tool_spec.name | Search |
| tools[1].tool_spec.type | cortex_search |
| tools[1].tool_spec.description | 製品仕様、組み立て方法、トラブルへの対処方法を製品文書から検索する |
TOOL_RESOURCES
| 項目 | 値 |
|---|---|
| Analyst.execution_environment.type | warehouse |
| Analyst.execution_environment.warehouse | COMPUTE_WH |
| Analyst.semantic_view | CORTEX_AGENTS_LAB.TUTORIAL.SALES_SEMANTIC_VIEW |
| Search.max_results | 3 |
| Search.search_service | CORTEX_AGENTS_LAB.TUTORIAL.PRODUCT_SEARCH_SERVICE |
6.2. SNOWFLAKE.LOCAL.GET_AI_OBSERVABILITY_EVENTS
SELECT *
FROM TABLE(SNOWFLAKE.LOCAL.GET_AI_OBSERVABILITY_EVENTS(
'CORTEX_AGENTS_LAB',
'TUTORIAL',
'TUTORIAL_AGENT',
'CORTEX AGENT'
))
ORDER BY TIMESTAMP DESC;
| 項目 | 値 |
|---|---|
| TIMESTAMP | 2026-10-19 02:23:51.149 |
| START_TIMESTAMP | 2026-10-19 02:23:41.551 |
| TRACE | 下記参照 |
| RESOURCE_ATTRIBUTES | 下記参照 |
| RECORD_TYPE | SPAN |
| RECORD | 下記参照 |
| RECORD_ATTRIBUTES | 下記参照 |
| VALUE | (空欄) |
TRACE
| 項目 | 値 |
|---|---|
| span_id | a01665e2a3dbaff0 |
| trace_id | 4d384235536c41a9c0cdd01d5901211f |
RESOURCE_ATTRIBUTES
| 項目 | 値 |
|---|---|
| snow.session.id | 361679196706194 |
| snow.session.role.primary.id | 21557772 |
| snow.session.role.primary.name | ACCOUNTADMIN |
| snow.user.id | 215XXX |
| snow.user.name | MANABIANXXXX |
RECORD
| 項目 | 値 |
|---|---|
| kind | SPAN_KIND_INTERNAL |
| name | Agent |
| status.code | STATUS_CODE_OK |
RECORD_ATTRIBUTES
| 項目 | 値 |
|---|---|
| ai.observability.input_id | 870bfc452b4ad11645c12b86cd5d2000 |
| ai.observability.record_id | 1de7c36a-1525-44cd-a513-4979532d4c2e |
| request_id | 1de7c36a-1525-44cd-a513-4979532d4c2e |
| snow.ai.observability.agent.message_id | 5518788645 |
| snow.ai.observability.agent.thread_id | 21557844 |
| snow.ai.observability.database.id | 5518788085 |
| snow.ai.observability.database.name | CORTEX_AGENTS_LAB |
| snow.ai.observability.object.id | 21557800 |
| snow.ai.observability.object.name | TUTORIAL_AGENT |
| snow.ai.observability.object.type | Cortex Agent |
| snow.ai.observability.object.version.id | 361679196098598 |
| snow.ai.observability.object.version.name | LIVE |
| snow.ai.observability.schema.id | 5518789689 |
| snow.ai.observability.schema.name | TUTORIAL |
| snow.ai.observability.span_kind | 1 |
6.3. SNOWFLAKE.ACCOUNT_USAGE.CORTEX_AGENT_USAGE_HISTORY
SELECT
START_TIME,
END_TIME,
DATEDIFF('millisecond', START_TIME, END_TIME)
AS DURATION_MS,
REQUEST_ID,
USER_NAME,
AGENT_NAME,
TOKENS,
TOKEN_CREDITS,
TOKENS_GRANULAR,
CREDITS_GRANULAR,
METADATA
FROM SNOWFLAKE.ACCOUNT_USAGE.CORTEX_AGENT_USAGE_HISTORY
WHERE AGENT_DATABASE_NAME = 'CORTEX_AGENTS_LAB'
AND AGENT_SCHEMA_NAME = 'TUTORIAL'
AND AGENT_NAME = 'TUTORIAL_AGENT'
ORDER BY START_TIME DESC
LIMIT 1;
基本情報
| 項目 | 値 |
|---|---|
| START_TIME | 2026-10-18 19:23:41.551 -0700 |
| END_TIME | 2026-10-18 19:23:51.333 -0700 |
| DURATION_MS | 9782 |
| REQUEST_ID | 1de7c36a-1525-44cd-a513-4979532d4c2e |
| USER_NAME | MANABIANXXX |
| AGENT_NAME | TUTORIAL_AGENT |
| TOKENS | 68682 |
| TOKEN_CREDITS | 0.046476170 |
| TOKENS_GRANULAR | 下記参照 |
| CREDITS_GRANULAR | 下記参照 |
| METADATA | 下記参照 |
TOKENS_GRANULAR
| 項目 | 値 |
|---|---|
| request_id | 1de7c36a-1525-44cd-a513-4979532d4c2e |
| cortex_agents.model | claude-sonnet-5-5 |
| cortex_agents.cache_read_input | 43518 |
| cortex_agents.cache_write_input | 24588 |
| cortex_agents.input | 10 |
| cortex_agents.output | 566 |
| start_time | 2026-10-18 19:23:41.551 -0700 |
CREDITS_GRANULAR
| 項目 | 値 |
|---|---|
| request_id | 1de7c36a-1525-44cd-a513-4979532d4c2e |
| cortex_agents.model | claude-sonnet-5-5 |
| cortex_agents.cache_read_input | 0.00282867 |
| cortex_agents.cache_write_input | 0.0399555 |
| cortex_agents.input | 0.000013 |
| cortex_agents.output | 0.003679 |
| start_time | 2026-10-18 19:23:41.551 -0700 |
METADATA
| 項目 | 値 |
|---|---|
| agent_version_alias | null |
| agent_version_id | 25609 |
| agent_version_is_default | false |
| agent_version_name | LIVE |
| ai_functions_credits | null |
| inference_region | global |
| interaction_interface | agent_admin_ui |
| role_id | 3 |
| role_name | ACCOUNTADMIN |
| sql_query_credits | null |
| sql_query_warehouses | null |
CORTEX_AGENT_USAGE_HISTORYビューには、遅延があることに注意してください。
Latency for the view may be up to 1 hour.
出所: CORTEX_AGENT_USAGE_HISTORY view | Snowflake Documentation
このビューのデータ反映には、最大1時間の遅延が発生する場合があります。
上記の翻訳
7. 参考資料
7.1. 公式ガイド・サンプルコード
- 公式チュートリアル
- GitHub リポジトリ
7.2. オブジェクトの作成・管理
- Semantic View
- Cortex Agent
7.3. エージェントの実行・監視
- エージェントの実行
- リクエストの監視
- 利用状況の確認
7.4. 料金・クレジット消費
- 料金体系
- クレジット消費単価










































