1
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?

Snowflake Intelligence の Quickstarts をやってみた

Posted at

はじめに

間が空いてしまいましたが、先日、Snowflake World Tour 2025 - Tokyo に参加してきました。
その中で感じたのは、Snowflake Intelligence をものすごく推しているな、という印象です。
これまでの DWH 製品はデータベースの延長線にあり、そのデータを利用する業務アプリケーションは別に作る必要がありました。Snowflake では、極端に言ってしまえは Snowsight 上でデータを管理し、業務アプリケーションも作れてしまうという点が強みだと感じました。
Snowflake Intelligence も Snowflake に閉じた環境で簡単に導入していくことができます。
今回は、Snowflake Intelligence の Quickstarts を実際にやってみたので、その内容を書いていこうと思います。

Snowflake intelligence とは?

まず Snowflake intelligence について簡単に説明します。
UI は ChatGPT のようになっていて、AI と対話的にやり取りを行い、データに対する洞察を得ることができます。
構造化データだけでなく、非構造化データもデータソースとして利用でき、自然言語を使用してデータの分析や可視化(グラフ)が簡単に実行できます。

UI はこんな感じです。Snowflake の爽やかな雰囲気がありますね。
image.png

Snowflake Intelligence を支える基盤となっているのが、Cortex Analyst と Cortex Search という機能です。
それぞれを簡単に説明します。

まず、Cortex Analyst は、自然言語でのデータ分析指示をSQL文に変換し、実行する機能を提供します。
ビジネス的な質問を適切なSQLに自動変換し、売上、収益、顧客、製品、注文などの様々なビジネスメトリクスの分析が可能です。そのために、重要になってくるのがセマンティックモデルで、データの構造と意味を定義する必要があります。セマンティックモデルについては、後ほど詳しく見ていきます。

Cortex Search は、低レイテンシーな「ファジー」検索機能を提供してくれます。単純なキーワード検索だけでなく、キーワードの意味に基づいて関連性の高いテキストを検索できます

Quickstarts その1

では、実際に Quickstarts をやっていきましょう。
まずは Getting Started with Snowflake Intelligence をやって、Snowflake Intelligenc の使い方を理解したいと思います。

概要

この Quickstarts では、構造化データと非構造化データの両方に対して推論しながら質問にインテリジェントに応答できる Snowflake Intelligence エージェントを作成するための方法を学ぶことができます。
Quickstarts 用の SQL や YAML ファイルは GitHub リポジトリに用意されています。

セットアップ

まずは、リポジトリに用意されているセットアップ用 SQL を実行し、Snowflake Intelligence を始める上で必要なロールやオブジェクトを作成します。

image.png

理解を深める上で中身を見ていきたいと思います。
作成するオブジェクトは以下の通りです。

  • Roles
    • snowflake_intelligence_admin
  • Warehouses
    • dash_wh_si
  • Databases
    • dash_db_si:
    • snowflake_intelligence
  • Schemas
    • dash_db_si.retail
    • snowflake_intelligence.agents
  • File Format
    • swt_csvformat
  • Stages
    • swt_marketing_data_stage
    • swt_products_data_stage
    • swt_sales_data_stage
    • swt_social_media_data_stage
    • swt_support_data_stage
    • semantic_models
  • Tables
    • marketing_campaign_metrics
    • products
    • sales
    • social_media
    • support_cases
  • Notification Integration
    • email_integration
  • Stored Procedure
    • send_email

まずはロールの作成です。
Snowflake Intelligence を使うための snowflake_intelligence_admin ロールを作成し、適切に権限を付与します。

use role accountadmin;

create or replace role snowflake_intelligence_admin;
grant create warehouse on account to role snowflake_intelligence_admin;
grant create database on account to role snowflake_intelligence_admin;
grant usage on warehouse compute_wh to role snowflake_intelligence_admin;
grant create integration on account to role snowflake_intelligence_admin;

set current_user = (select current_user());   
grant role snowflake_intelligence_admin to user identifier($current_user);
alter user set default_role = snowflake_intelligence_admin;
alter user set default_warehouse = dash_wh_si;

snowflake_intelligence_admin ロールを使って、データベース、スキーマ、ウェアハウスを作成していきます。
dash_db_si はソースデータを格納するデータベースで、snowflake_intelligence は AI エージェントを格納するデータベースです。

use role snowflake_intelligence_admin;
create or replace database dash_db_si;
create or replace schema retail;
create or replace warehouse dash_wh_si with warehouse_size='large';

create database if not exists snowflake_intelligence;
create schema if not exists snowflake_intelligence.agents;

grant create agent on schema snowflake_intelligence.agents to role snowflake_intelligence_admin;

作成したデータベース、スキーマ、ウェアハウスを使って、ソースデータを作成していきます。
やってることは CSV ファイルのフォーマットを作成してから、ステージとテーブルを作成し、CSV ファイルからテーブルへデータをCOPY、を5テーブル分繰り返しているだけです。
CSV ファイルは用意されているので、COPY INTO 文を実行するだけで簡単にデータが取り込めます。

use database dash_db_si;
use schema retail;
use warehouse dash_wh_si;

create or replace file format swt_csvformat  
  skip_header = 1  
  field_optionally_enclosed_by = '"'  
  type = 'csv';  
  
-- create table marketing_campaign_metrics and load data from s3 bucket
create or replace stage swt_marketing_data_stage  
  file_format = swt_csvformat  
  url = 's3://sfquickstarts/sfguide_getting_started_with_snowflake_intelligence/marketing/';  
  
create or replace table marketing_campaign_metrics (
  date date,
  category varchar(16777216),
  campaign_name varchar(16777216),
  impressions number(38,0),
  clicks number(38,0)
);

copy into marketing_campaign_metrics  
  from @swt_marketing_data_stage;

-- create table products and load data from s3 bucket
create or replace stage swt_products_data_stage  
  file_format = swt_csvformat  
  url = 's3://sfquickstarts/sfguide_getting_started_with_snowflake_intelligence/product/';  
  
create or replace table products (
  product_id number(38,0),
  product_name varchar(16777216),
  category varchar(16777216)
);

copy into products  
  from @swt_products_data_stage;

-- create table sales and load data from s3 bucket
create or replace stage swt_sales_data_stage  
  file_format = swt_csvformat  
  url = 's3://sfquickstarts/sfguide_getting_started_with_snowflake_intelligence/sales/';  
  
create or replace table sales (
  date date,
  region varchar(16777216),
  product_id number(38,0),
  units_sold number(38,0),
  sales_amount number(38,2)
);

copy into sales  
  from @swt_sales_data_stage;

-- create table social_media and load data from s3 bucket
create or replace stage swt_social_media_data_stage  
  file_format = swt_csvformat  
  url = 's3://sfquickstarts/sfguide_getting_started_with_snowflake_intelligence/social_media/';  
  
create or replace table social_media (
  date date,
  category varchar(16777216),
  platform varchar(16777216),
  influencer varchar(16777216),
  mentions number(38,0)
);

copy into social_media  
  from @swt_social_media_data_stage;

-- create table support_cases and load data from s3 bucket
create or replace stage swt_support_data_stage  
  file_format = swt_csvformat  
  url = 's3://sfquickstarts/sfguide_getting_started_with_snowflake_intelligence/support/';  
  
create or replace table support_cases (
  id varchar(16777216),
  title varchar(16777216),
  product varchar(16777216),
  transcript varchar(16777216),
  date date
);

copy into support_cases  
  from @swt_support_data_stage;

セマンティックモデルを格納するステージも作成します。

create or replace stage semantic_models encryption = (type = 'snowflake_sse') directory = ( enable = true );

最後に、AI エージェントがメールを送るためのプロシージャを作成します。

create or replace notification integration email_integration
  type=email
  enabled=true
  default_subject = 'snowflake intelligence';

create or replace procedure send_email(
    recipient_email varchar,
    subject varchar,
    body varchar
)
returns varchar
language python
runtime_version = '3.12'
packages = ('snowflake-snowpark-python')
handler = 'send_email'
as
$$
def send_email(session, recipient_email, subject, body):
    try:
        # Escape single quotes in the body
        escaped_body = body.replace("'", "''")
        
        # Execute the system procedure call
        session.sql(f"""
            CALL SYSTEM$SEND_EMAIL(
                'email_integration',
                '{recipient_email}',
                '{subject}',
                '{escaped_body}',
                'text/html'
            )
        """).collect()
        
        return "Email sent successfully"
    except Exception as e:
        return f"Error sending email: {str(e)}"
$$;

作成されたテーブルを見てみましょう。

marketing_campaign_metrics:
キャンペーンについての、広告表示数やクリック数がまとめられています。

image.png

products:
シンプルな商品マスタです。

image.png

sales:
売上データです。販売数量と売上金額を持っています。

image.png

social_medis:
キャンペーンと売上の関連を分析するためのソーシャルメディアの情報です。
各カテゴリー、SNS 毎のメンション数を持ったデータのようです。
SNS でどれだけ話題になっているかが見えるデータと思われます。

image.png

support_cases:
問い合わせ内容のデータです。
TRANSCRIPT には顧客とサポートの実際のやり取りが格納されていて、Cortex Search を使って検索を行うことができます。

image.png

Cortex Analyst

次は Cortex Analyst の設定です。
この Quickstarts では YAML ファイルをアップロードしてセマンティックモデルを作成します。

image.png

image.png

image.png

ステージにアップロードしたファイルが登録されています。

image.png

これだけの操作ではどんな設定をしたのかわからないので、アップロードした YAML ファイルの中身を見ていきたいと思います。
まず、YAML ファイルの中身全量は以下の通りです。

name: Sales_And_Marketing_Data
tables:
  - name: MARKETING_CAMPAIGN_METRICS
    base_table:
      database: DASH_DB_SI
      schema: RETAIL
      table: MARKETING_CAMPAIGN_METRICS
    primary_key:
      columns:
        - CATEGORY
    dimensions:
      - name: CAMPAIGN_NAME
        synonyms:
          - ad_campaign
          - marketing_campaign
          - promo_name
          - advertisement_name
          - campaign_title
          - promotion_name
        description: The name of the marketing campaign, which can be used to identify and analyze the performance of specific promotional initiatives.
        expr: CAMPAIGN_NAME
        data_type: VARCHAR(16777216)
        sample_values:
          - Summer Fitness Campaign
      - name: CATEGORY
        synonyms:
          - type
          - classification
          - group
          - label
          - sector
          - class
          - kind
          - genre
        description: The category of the marketing campaign, which represents the product or service being promoted, such as a specific industry or product line.
        expr: CATEGORY
        data_type: VARCHAR(16777216)
        sample_values:
          - Fitness Wear
    facts:
      - name: CLICKS
        synonyms:
          - click_throughs
          - link_clicks
          - ad_clicks
          - button_clicks
          - selections
          - hits
        description: The total number of times users clicked on an advertisement or promotional link as part of a marketing campaign.
        expr: CLICKS
        data_type: NUMBER(38,0)
        sample_values:
          - '614'
          - '429'
          - '446'
      - name: IMPRESSIONS
        synonyms:
          - views
          - ad_views
          - ad_exposures
          - display_count
          - ad_impressions
          - exposures
          - ad_views_count
          - views_count
        description: The total number of times an ad was displayed to users during a marketing campaign.
        expr: IMPRESSIONS
        data_type: NUMBER(38,0)
        sample_values:
          - '10927'
          - '7278'
          - '9962'
    time_dimensions:
      - name: DATE
        synonyms:
          - day
          - calendar_date
          - timestamp
          - datestamp
          - calendar_day
          - date_value
        description: Date on which the marketing campaign metrics were recorded.
        expr: DATE
        data_type: DATE
        sample_values:
          - '2025-06-15'
          - '2025-06-16'
          - '2025-06-17'
  - name: PRODUCTS
    base_table:
      database: DASH_DB_SI
      schema: RETAIL
      table: PRODUCTS
    primary_key:
      columns:
        - PRODUCT_ID
    dimensions:
      - name: CATEGORY
        synonyms:
          - type
          - classification
          - group
          - genre
          - kind
          - class
          - product_type
          - product_group
          - product_category
          - product_classification
        description: 'The CATEGORY column represents the type of product being sold, which can be classified into three main categories: Fitness Wear, Casual Wear, and Accessories.'
        expr: CATEGORY
        data_type: VARCHAR(16777216)
        sample_values:
          - Fitness Wear
          - Casual Wear
          - Accessories
      - name: PRODUCT_ID
        synonyms:
          - product_key
          - item_id
          - product_number
          - item_number
          - product_code
          - sku
          - product_identifier
        description: Unique identifier for each product in the catalog.
        expr: PRODUCT_ID
        data_type: NUMBER(38,0)
        sample_values:
          - '1'
          - '2'
          - '3'
      - name: PRODUCT_NAME
        synonyms:
          - item_name
          - product_title
          - item_title
          - product_description
          - product_label
          - item_label
        description: The name of the product being sold, such as a specific type of fitness equipment or accessory.
        expr: PRODUCT_NAME
        data_type: VARCHAR(16777216)
        sample_values:
          - Fitness Item 1
          - Fitness Item 2
          - Fitness Item 3
  - name: SALES
    base_table:
      database: DASH_DB_SI
      schema: RETAIL
      table: SALES
    dimensions:
      - name: PRODUCT_ID
        synonyms:
          - product_code
          - item_id
          - product_number
          - item_number
          - sku
          - product_key
        description: Unique identifier for a product sold.
        expr: PRODUCT_ID
        data_type: NUMBER(38,0)
        sample_values:
          - '1'
          - '2'
          - '3'
      - name: REGION
        synonyms:
          - area
          - territory
          - zone
          - district
          - location
          - province
          - state
          - county
          - geographic_area
          - market_area
        description: Geographic region where the sale was made.
        expr: REGION
        data_type: VARCHAR(16777216)
        sample_values:
          - North
          - South
          - East
    facts:
      - name: SALES_AMOUNT
        synonyms:
          - total_sales
          - revenue
          - sales_total
          - sales_value
          - sales_revenue
          - total_revenue
          - sales_figure
          - sales_number
        description: The total amount of sales generated from a transaction or order.
        expr: SALES_AMOUNT
        data_type: NUMBER(38,2)
        sample_values:
          - '2199.67'
          - '1039.35'
          - '692.70'
      - name: UNITS_SOLD
        synonyms:
          - quantity_sold
          - items_sold
          - sales_volume
          - units_purchased
          - volume_sold
          - sales_quantity
        description: The total quantity of products sold.
        expr: UNITS_SOLD
        data_type: NUMBER(38,0)
        sample_values:
          - '28'
          - '25'
          - '26'
    time_dimensions:
      - name: DATE
        synonyms:
          - day
          - calendar_date
          - date_field
          - calendar_day
          - timestamp
          - date_value
          - entry_date
          - record_date
          - log_date
        description: Date of sale, representing the calendar date when a transaction occurred.
        expr: DATE
        data_type: DATE
        sample_values:
          - '2025-05-16'
          - '2025-05-17'
          - '2025-05-18'
  - name: SOCIAL_MEDIA
    base_table:
      database: DASH_DB_SI
      schema: RETAIL
      table: SOCIAL_MEDIA
    dimensions:
      - name: CATEGORY
        synonyms:
          - type
          - classification
          - group
          - genre
          - kind
          - label
          - section
          - class
        description: The category of social media content, representing the type of product or service being promoted, such as fitness-related clothing and accessories.
        expr: CATEGORY
        data_type: VARCHAR(16777216)
        sample_values:
          - Fitness Wear
      - name: INFLUENCER
        synonyms:
          - social_media_personality
          - online_influencer
          - social_media_figure
          - content_creator
          - key_opinion_leader
          - thought_leader
          - industry_expert
          - brand_ambassador
        description: The name of the social media influencer promoting the product or service.
        expr: INFLUENCER
        data_type: VARCHAR(16777216)
        sample_values:
          - NovaFitStar
      - name: PLATFORM
        synonyms:
          - channel
          - medium
          - site
          - social_media_channel
          - network
          - outlet
        description: The social media platform where the activity or engagement took place.
        expr: PLATFORM
        data_type: VARCHAR(16777216)
        sample_values:
          - Instagram
          - Twitter
          - Facebook
    facts:
      - name: MENTIONS
        synonyms:
          - citations
          - references
          - quotes
          - allusions
          - name_drops
          - tags
          - shoutouts
          - credits
          - acknowledgments
        description: The number of times a brand, product, or keyword is mentioned on social media platforms.
        expr: MENTIONS
        data_type: NUMBER(38,0)
        sample_values:
          - '16'
          - '6'
          - '9'
    time_dimensions:
      - name: DATE
        synonyms:
          - day
          - timestamp
          - calendar_date
          - posting_date
          - publication_date
          - entry_date
        description: Date on which social media data was collected or posted.
        expr: DATE
        data_type: DATE
        sample_values:
          - '2025-05-16'
          - '2025-05-17'
          - '2025-05-19'
relationships:
  - name: SALES_TO_PRODUCT
    left_table: SALES
    right_table: PRODUCTS
    relationship_columns:
      - left_column: PRODUCT_ID
        right_column: PRODUCT_ID
    relationship_type: many_to_one
    join_type: inner
  - name: MARKETING_TO_SOCIAL
    left_table: SOCIAL_MEDIA
    right_table: MARKETING_CAMPAIGN_METRICS
    relationship_columns:
      - left_column: CATEGORY
        right_column: CATEGORY
    relationship_type: many_to_one
    join_type: inner
verified_queries:
  - name: sales
    question: |+
      Show me the trend of sales by product category between June 2025 and August 2025

    use_as_onboarding_question: false
    sql: WITH monthly_sales AS (SELECT p.category, DATE_TRUNC('MONTH', s.date) AS month, SUM(s.sales_amount) AS monthly_sales FROM sales AS s INNER JOIN products AS p ON s.product_id = p.product_id WHERE s.date >= '2025-06-01' AND s.date < '2025-09-01' GROUP BY p.category, DATE_TRUNC('MONTH', s.date)) SELECT category, month, monthly_sales FROM monthly_sales ORDER BY category, month
    verified_by: D User
    verified_at: 1752091901

全体感を箇条書きにしてみるとこんな感じです。

  • name: セマンティックモデルの名前
    Sales_And_Marketing_Data
  • tables: 4つの業務テーブルを宣言
    MARKETING_CAMPAIGN_METRICS, PRODUCTS, SALES, SOCIAL_MEDIA
  • relationships: テーブル間のリレーション(結合定義)
  • verified_queries: 動作検証済みの自然言語 → SQL 例

まず、tablesについて見てみましょう。
設定している項目は次のとおりです。

  • base_table: テーブル名
  • primary_key: テーブルのキー
  • dimensions: データを「切る軸(属性)」となる項目
  • facts: 数値的に集計する対象項目
  • time_dimensions: 日付・時刻の項目、時系列分析に必須

その中で、dimensions、facts、time_dimensions では以下の項目を設定しています。これらは各カラムがどういった意味を持つのかを表現するもので、自然言語で AI へ問い合わせを行うために重要なものです。

  • name: カラムの名前(論理名的なもの)
  • synonyms: カラムの同意語(自然言語で質問するときに使うかもしれない言い換え)
  • description: カラムの説明
  • expr: SQLで参照する際の式(物理名)
  • data_type: カラムのデータ型
  • sample_values: カラムに実際に入っている値の例

次に、relationships です。relationships はテーブル間の関係性を定義するものです。

  • name: relationshipsの名前
  • left_table/right_table: 関係性を定義する2つのテーブル
  • relationship_columns: 結合条件に使用するカラム
  • relationship_type: 結合が1対1あるいは多対1(one_to_one:1対1、many_to_one:多対1)
  • join_type: 結合の種類(left_outer、inner)
relationships:
  - name: SALES_TO_PRODUCT
    left_table: SALES
    right_table: PRODUCTS
    relationship_columns:
      - left_column: PRODUCT_ID
        right_column: PRODUCT_ID
    relationship_type: many_to_one
    join_type: inner
  - name: MARKETING_TO_SOCIAL
    left_table: SOCIAL_MEDIA
    right_table: MARKETING_CAMPAIGN_METRICS
    relationship_columns:
      - left_column: CATEGORY
        right_column: CATEGORY
    relationship_type: many_to_one
    join_type: inner

最後に、verified_queries です。自然言語の質問と SQL の対応を「人間が確認済み」として登録する仕組みです。
Cortex Analyst はこの情報を使って SQL 生成の精度を上げることができます。

  • name: クエリの名前
  • question: 定義するSQLを自然言語で問い合わせた場合の文章
  • use_as_onboarding_question: 初回利用時にサンプルとして提示するかどうかのフラグ
  • sql: questionに対する回答を生成する SQL
  • verified_by: このクエリを検証した人
  • verified_at: このクエリを検証した時間(UNIX エポック秒)
verified_queries:
  - name: sales
    question: |+
      Show me the trend of sales by product category between June 2025 and August 2025

    use_as_onboarding_question: false
    sql: WITH monthly_sales AS (SELECT p.category, DATE_TRUNC('MONTH', s.date) AS month, SUM(s.sales_amount) AS monthly_sales FROM sales AS s INNER JOIN products AS p ON s.product_id = p.product_id WHERE s.date >= '2025-06-01' AND s.date < '2025-09-01' GROUP BY p.category, DATE_TRUNC('MONTH', s.date)) SELECT category, month, monthly_sales FROM monthly_sales ORDER BY category, month
    verified_by: D User
    verified_at: 1752091901

以上で Cortex Analyst の設定は完了です。

Cortex Search

次はCortex Search の設定です。引き続き、Snowsight 上で続けていきます。
作成ボタンを押します。

image.png

まずは基本情報として、ロール、ウェアハウス、データベース、スキーマ、サービス名を設定します。

image.png

ここから、検索に必要な情報を設定していきます。
まずは、対象となるテーブルを指定します。

image.png

次にカラムを設定していきます。
「検索列」は検索したいテキストが格納されているカラムを指定します。今回はサポートのやり取りが格納されている「TRANSCRIPT」を選びます。

image.png

「属性列」はクエリを発行する際にフィルタリングに使用したいカラムを指定します。

image.png

「列」はクエリに含めるカラムを指定します。絶対に使わないカラムがあれば除けばよいはず。

image.png

最後に、インデックスの更新頻度や、使用するモデルの選択を行い、「検索サービスの作成」を押します。

image.png

こんな感じで Cortex Search の設定した内容が確認できます。
これで Cortex Search の設定は完了です。

image.png

AI Agent

やっと Snowflake Intelligence の AI エージェントの設定です。
では、始めていきましょう。

image.png

Snowflake Intelligence で使用するために、「このエージェントの作成対象 Snowflake Intelligence」にチェックを入れ、エージェント名を入力します。表示名は Snowflake Intelligence の画面で使用するエージェントを選択する際に表示されるものなので、分かりやすい名前をつけます。

image.png

エージェントが作成されたら、「編集」から使用するツールなどの設定をしていきます。

image.png

まず、「手順」で「サンプルの質問」を追加します。
この質問は Snowflake Intelligence の画面に表示され、すぐに実行することができます。

image.png

続いて、「ツール」の設定です。

Cortex Analyst、Cortext Search、独自のツールを設定します。

image.png

Cortex Analyst では、対象のモデルとそのモデルについての名前や説明などを入力します。

image.png
image.png

Cortex Search では、先ほど Cortex Search を設定したサポートケースのテーブルを選択します。

image.png

カスタムツールでは、Snowflake Intelligence で AI エージェントが使うことできる独自ツールを設定します。
今回の Quickstarts では、セットアップ時に作成していたプロシージャを使用します。
作成しておいたプロシージャを選択し、その引数の情報を入力します。

image.png
image.png
image.png

これで、ツールの設定が一通り完了しました。

image.png

次は、オーケストレーションです。使用するモデルや、タスクを行うための行動方針を入力します。

image.png

AI エージェントの設定が完了しました。

image.png

Snowflake intelligence

では、実際に Snowflake Intelligence を使ってみましょう。

image.png

最初の質問はこちらです。

Show me the trend of sales by product category between June and August

image.png

ちょっと待つと以下の回答が表示されます。
(待っている間も AI エージェントが考えて行動している様子を見ることができます)

image.png

グラフを使って分かりやすく説明してくれています。
「Show Details」を開くを、どのようなプロセスでこの回答が得られたのかが確認できます。
ここから AI エージェントがどのように行動したかを理解することができます。
今回は1ステップしかないですが、複雑な質問に対しては複数ステップを経て最終的な回答に行き着きます。

image.png

では、得られた回答を詳しく見て見ましょう。
グラフによって直感的な売上トレンドを表示するだけでなく、各商品カテゴリーについて定性的・定量的に解説しています。

image.png
image.png

では、次の例です。
今度はカスタマーサポートの問い合わせ内容を調べる必要があるタスクです。

What issues are reported with jackets recently in customer support tickets?

image.png

「Show Details」を開いてみると、2段階で考えられていることがわかります。
まずは、どのツールを使うべきかを考え、問い合わせ内容からサポートケースに対して作成した Cortex Searchs を使うべきだと判断しています。
次に、Cortex Searchs を使った検索結果から、問い合わせ内容に対する解析を行っています。
一昔前の生成 AI はただ質問に対してそれらしい回答をするだけでしたが、近年急速に発達している AI エージェントは与えられたツールを使い、段階的にタスクをこなすことができます。
「強い AI」の時代が近づいてきましたね。

image.png

最終的な回答全文はこちらの通りです。

image.png

ちなみに、日本語で聞いてみた結果はこちらです。

image.png

では次の問いかけは、「なぜそのような結果になっているのか?」を考えさせる質問をしてみました。

Why did sales of Fitness Wear grow so much in July?

回答はこちらです。(日本語で聞いたので、日本語で回答がきました)

image.png
image.png

ちなみに、複数ステップを経て回答が出てきていることがわかります。

image.png
image.png
image.png
image.png
image.png

全体の流れはこのようになっていました。

  • 日本語の質問を英語に翻訳し、解析を開始
  • 質問へ回答するために必要な解析プロセスを判断
  • 売上データの解析 SQL 実行
  • マーケティングキャンペーンの解析 SQL 実行
  • 売上に影響していそうなキャンペーンを特定
  • ソーシャルメディアデータの解析 SQL 実行
  • ソーシャルメディア上での言及があったことを特定
  • キャンペーンと売上の相関を解析する SQL を実行

SQL 実行して得られた結果から、次にすべきことを考え、行動していて、なかなか優秀ですね。
こういった AI の動きを見ると、人間の仕事がだんだんと AI に奪われていくのがわかりますね。
人間にしかできないことをしっかりと見極めていく必要をあらためて感じました。

では最後に、この状態でちょっと変わった問いかけをしてみます。

サマリーメールを送って

image.png

メールが届きました。
メール送信プロシージャを使用するカスタムツールを AI が利用してメールを送ってくれています。

image.png

これで一つ目の Quickstarts は終了です。

Quickstarts その2

次にやってみたのは、Getting Started with Snowflake Intelligence and Cortex Knowledge Extensions です。

概要・設定

Snowflake のドキュメントの内容を問い合わせることのできる機能が提供されてます。
ドキュメント内容はデータベースに保存されており、それを Cortex Searche で検索に行くイメージです。

設定内容は同じようなものなので、概要だけ箇条書きします。

  • セットアップ SQL 実行
  • Marketplace で Snowflake Documentation を取得
  • AI エージェント設定(Cortex Searche にSnowflake Documentation を設定)

Snowflake intelligence

では実際に使ってみましょう。

image.png
image.png
image.png

もう一つ聞いてみます。

image.png

ドキュメントを見に行く必要なく、簡単に情報を得ることができます。

おわりに

Snowflake Intelligence の Quickstarts をやってみました。
結構長くなってしまいましたが、一通り眺めていただくことで Snowflake Intelligence がどういったものかイメージが湧いたのではないでしょうか?

Databricks などの競合でも同様のエージェント機能がありますし、今後どんどんとアップデートが入ってくると思われます。
簡単にこういったエージェントを利用できるとなると、"私たちエンジニアがどこに価値を見出していくのか"、考えていかないといけないですね。

今後も新しく出てきた機能を触ってみて、記録として残していこうと思っています。
では (^^)/~~~

1
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
1
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?