はじめに
KCCS デジタルプラットフォーム部Snowflake課の井上です。
本記事では、私がSnowPro資格の勉強中に活用したチャットボットについてご紹介します。
背景
私は2025年10月から部署異動でSnowflake課に配属となりました。
Snowflake課ではデータ分析領域のチームと人材の育成を目標としています。
私もSnowflakeについて専門性を確立するため、
2ヶ月ほどの間Snowflakeの勉強に打ち込みました。
勉強の甲斐もあり、現在では以下の3つのSnowProの資格を保持しています。
- SnowPro Core
- SnowPro Advanced: Architect
- SnowPro Advanced: Data Engineer
勉強するにあたって、ネット上の問題集を購入していました。
それらの問題を解いてみるのですが、問題や模範解答が怪しい......。
AI生成と思わしき回答や、解説の不十分なものが散見されました。
こういった場合は公式ドキュメントを調べることになるのですが、
日本語対応していないドキュメントもあります。
翻訳機能を駆使しながら調べるのも一苦労です。
そんな中、今回ご紹介するチャットボットに出会いました!
公式チャットボット(非公式名称)
私が勝手に公式チャットボットと呼んでいるのは、
Snowflake Developer Guidesの一つである、
『Getting Started with Cortex Knowledge Extensions on Snowflake Marketplace』
で作成できるチャットボットです。
https://www.snowflake.com/en/developers/guides/get-started-snowflake-cortex-knowledge-extensions/
Snowflake Developer Guidesとは、
Snowflake社が公式に提供している技術ドキュメントと学習リソースです。
こちらの学習リソースでは、Snowflake公式ドキュメントと自然言語で
やり取りができるチャットボットを作成できます。
公式ドキュメントを元に回答してくれるということで、正確性に期待できます。
導入
手順通りに進めても一部上手くいかない箇所がありましたが、
エラーメッセージを確認すれば十分に解決できるレベルです。
日本語での問い合わせに対応していなかったので、AIに聞きながら関数を実装しました。
実装した関数はこちら(もっといいものもあると思います)
def translate_text(text, source_lang, target_lang):
"""
LLMを使って、読みやすい自然な日本語に翻訳・整形します。
"""
if not text:
return ""
prompt = f"""
[INST]
You are a professional translator.
Translate the following {source_lang} text into natural, easy-to-read {target_lang}.
Rules:
1. **Keep the formatting**: Preserve Markdown (bold, list items, code blocks) exactly as is.
2. **Punctuation**: MUST use proper {target_lang} punctuation (。, 、) to make sentences clear.
3. **Tone**: Use a polite and professional tone.
4. **No conversational filler**: Do not say "Here is the translation". Just output the {target_lang} text.
Target Text:
{text}
[/INST]
"""
model_for_translation = st.session_state.model_name
return complete(model_for_translation, prompt)
導入についてはこちらの記事でも紹介されています。
エラーの解消についても詳しく記載されていますので、導入で困った方は確認ください。
https://qiita.com/a-kamiya/items/fa630d133614ad5653aa
チャットボットに聞いてみる
実際に問題を投げてみたいと思います。
Snowflakeのスケーラブルなコンピュートをデータ変換に活用しているデータ統合ツールは
次のうちどれですか?
A. アカウントレプリケーション
B. ELT*
C. ETL
D. ストリーミング
『SNOWPROⓇ CORE COF-C02 認定資格 試験学習ガイド』より引用
BのELTで正解ですね。
しっかりと解説も書かれています。
特に注目したい点は、公式ドキュメントへのリンクが貼られるというところ!
より詳しく知りたい場合、そのまま公式ドキュメントにアクセスできるというのは、
勉強中の身からすると非常にありがたいですね......!
まとめ
公式のガイドから作れるチャットボットの紹介をさせてもらいました。
信頼性の高い問題集が少ない中、SnowPro資格の勉強にとても役立つと感じています。
上でも話しましたが、リンクを提示して回答してもらえるのがとてもありがたかったです。
もちろん、これなんだったっけ?みたいなことを確認するのにも使えます!
私自身がこのチャットボットを知ったのは、勉強開始からしばらく時間が経ってからでしたので、私と同じ苦労をする方を少しでも減らしたいと思い筆を執りました。
皆様のSnowPro資格取得の手助けとなれば幸いです!
おまけ - AIが間違える問題
上手く結果が出なかった2パターンを紹介します。
プロンプトをいじることで解答が得られる気もします。
1. 公式ドキュメントに記載がない
共有オブジェクトに追加できるコンシューマーアカウントの最大数はいくつですか?
A. 1
B. 10
C. 100
D. 無制限*
『SNOWPROⓇ CORE COF-C02 認定資格 試験学習ガイド』より引用
正解は、制限がないためDの無制限になるのですが......。
無制限であるとドキュメントに載っていないため、答えられなかったようです。
2. 複雑なシナリオ
データエンジニアがクラウドストレージに保存されているファイルから、
データをテーブルにリロードしようとしています。一部のファイルは64日以上保存されています。
すでにテーブルに保存されているデータと重複しないようにデータをロードするには、
どうすればよいでしょうか?
A. FORCEオプションを= TRUEに設定して、COPY INTO <table>コマンドを実行する。
B. テーブル内のすべての行を削除してから、COPY INTO <table>コマンドを実行する。
C. LOAD_UNCERTAIN_FILESオプションを= TRUEに設定して、COPY INTO <table>コマンドを実行する。
D. テーブルを切り捨ててから、COPY INTO <table>ステートメントを実行する。
『SNOWPROⓇ ADVANCED:データエンジニア 認定資格試験学習ガイド』より引用
問題の一部に対して回答して、選択肢が無視されてしまっています......。
シナリオが長くなるとこういうケースが起こりがちで、
Advanced試験の問題については直接回答を得られないケースがありました。


