Snowflakeのエージェント評価機能を触ってみた ~Snowflake CoWorkのテスト自動化へ~

こんにちは、SCSK斉藤です🐧

SCSKでは現在、社内のデータ活用基盤としてSnowflakeを採用しており、Snowflake CoWorkの利用についても検証を行っています
 
AIエージェントを作った後に必ず出てくるのが
「ちゃんと回答できるの?」
という問題です
 
例えば、
  • 顧客数を聞いたら正しい数値を返せるか
  • グラフ作成が正しくできるか
 
これまでは人が一つずつ質問を投げて確認することが多かったのですが、Snowflakeにはその作業を自動化できる評価機能が用意されています!
今回は評価機能を触ってみたので、
  • 簡単な概要
  • 実際の操作画面
  • 使ってみた感想
をまとめてみます!
※本ブログ内で利用する”海外展開しているECサイトの顧客データ”は、サンプルデータです
 

簡単な概要

Q1 評価機能とは?

「あらかじめ用意したQAセットを使って、エージェントの回答を自動採点する機能」
 
例えば以下のQAセットを準備します
Question Answer
アメリカからの顧客数は? 48人
顧客数が一番多い国のTop5を棒グラフで出して アメリカが48人、日本が42人、イギリスが5人、ドイツが4人、インドが1人
評価を実行すると、Snowflakeがエージェントに質問を投げて、その結果を元に
  • 回答正確性(Answer Correctness)
  • 論理一貫性(Logical Consistency)
などを自動で評価してくれます!
 
 

回答正確性

期待する回答との差を評価します
上記表のQAを用いると、エージェントがアメリカからの顧客数を「48人」と答えれば高スコア、「40人」と答えれば中スコア、「ペンギンです🐧」と答えれば低スコアが出ます
 

論理一貫性

こちらでは「たまたま正解した」ケースを避けるため、以下を評価します
  • 指示に従っているか
  • 計算過程が破綻していないか
  • ツール利用が適切か

 

Q2 評価機能はどこから使える?

Snowsightにて簡単に使えます!
各エージェント配下に評価ページがあります(SQLでも実行可能)
AIとML
エージェント
対象エージェント
Evaluations
既存のデータセットを使用
評価実行を作成

[AIとML]にある[評価]は別機能なので注意!

Q3 課金は?

評価機能のための特別な課金は不要です
評価実行時には、通常のSnowflake CoWorkと会話するときに発生するコストのみがかかります
追加課金や、追加契約は不要です
試しやすいのはありがたいですね!
 

Q4 必要な権限は?

ここが一番複雑なポイントです。。
評価機能を利用するには複数の権限が必要です!

Cortex Agentの評価 | Snowflake Documentation

上記に少し加えて、以下をロールに付与しました!

①DATABASE ROLE SNOWFLAKE.CORTEX_USERロール
②EXECUTE TASK ON ACCOUNT権限
③エージェントを含むデータベースとスキーマに対する USAGE 権限
④評価データを含むデータベースとスキーマに対する USAGE 権限
⑤CREATE DATASET ON SCHEMA(入力テーブルからデータセットを作成する場合)
評価が実行されるデータベースとスキーマに対する次の権限
⑥USAGE
⑦CREATE FILE FORMAT ON SCHEMA、USAGE ON ALL FILE FORMAT
⑧CREATE TASK
⑨エージェントに対するUSAGEまたはOWNERSHIP権限
⑩エージェントに対するMONITORまたはOWNERSHIP権限
⑪既存データセットに対するUSAGE
⑫セマンティックビューに対するUSAGE

②は強めの権限

とりあえずACCOUNTADMINで試す場合でも、⑩は持っていない事が多いので追加付与が必要

 
 

評価の流れ

さてさて、概要を理解したところで実際の流れは以下です!

① テーブル作成

まず評価用テーブルを作成します
今回だとsnowflake_intelligenceというDBの、publicというスキーマ配下に、「TestQATable」というテーブルを作ります
create or replace table snowflake_intelligence.public.TestQATable(
 input_query varchar,
 ground_truth variant
)
 

② QAセット登録

評価したい質問と期待回答を登録します
今回は冒頭で例えに出したQAセットをそのまま使います!
insert into snowflake_intelligence.public.TestQATable
select
'アメリカからの顧客数は?',
parse_json('{"ground_truth_output":"48人"}');

insert into snowflake_intelligence.public.TestQATable
select
'顧客数が一番多い国のTop5を棒グラフで出して',
parse_json('{"ground_truth_output":"アメリカが48人、日本が42人、イギリスが5人、ドイツが4人、インドが1人"}');
 

③ データセット化

ここからは評価機能から実行します
作成したテーブルを、評価用データセットに変換します

既に作成したデータセットを使い回すことも可能

④ 評価実行

対象エージェントとデータセットを選択して実行!
数分程度で結果が返ってきます

⑤ 結果分析

各QAごとに
  • Answer Correctness
  • Logical Consistency
  • 回答内容
  • 回答時間
などが確認できます
 
 

実際に触った感想

1.感じたメリット

人力テストを大幅に減らせる

個人的にはこれが一番大きいです
質問
回答確認
スクショ
記録
 
を何十回も繰り返していました。。
評価機能を使うと、
その作業をかなり自動化できます!
 

棒グラフも評価できる

「テキストだけかな?」
と最初は思っていました
 
実際にはグラフ出力を確認できました
グラフ生成系エージェントにも使えそうです!
 
 

分析画面が思ったより優秀

結果一覧だけではなく、
各質問ごとに以下を確認可能です
  • 回答内容
  • 評価理由
  • トレース情報
  • スコア
「なぜ低評価だったのか」まで追えるのは助かりました!
 
 

注意点

実際に触ってみて気になったポイントです
 

Execute Task権限が必要

先ほど書いた通り、
評価機能を実施するには、EXECUTE TASK ON ACCOUNTが必要です
 
アカウント全体でタスクが実行できるようになる権限なので、付与するロールは絞った方が良さそうです
 

データセットは定期棚卸が必要

データセットは、その時点のテーブル状態を切り出して保存する仕組みです
そのため、テーブルを新しくするたびにデータセットを作る必要があります
 
運用していく上で
  • 四半期ごと
  • エージェント改修時
などで定期的なデータセット棚卸が必要そうです
 

QA型評価なので未来予測は苦手

評価機能は、期待される正解があって初めてスコアを出せます
 
「来月の売上予測をして」のような未来予測系は評価が難しいです
正解が存在しませんからね。
 
 

ロール切替は手動

エージェントの評価をする上で、「AロールとBロールで回答に差異がでるか」は必須で知りたいですよね
評価実行の画面上で「このロールで実行」は指定できません。。
事前にロールを切り替えてから評価実行する必要があります
切り替えが面倒なのと、各ロールに評価機能を使う為の権限付与が必須なのが難点でした。。
※以下スクショの④のみをAロールやBロールで実施するイメージです
 

まとめ

Snowflakeの評価機能を一言でまとめると、
「AIエージェントのテスト自動化ツール」
 
以下のメリットがあると感じました
  • 人力のテストを大幅削減
  • 棒グラフの表示結果も評価可能
  • 評価理由も含めた詳細分析をできる
一方で、
  • 適切なロールに、評価を使う為の権限付与が必要
  • データセットの棚卸を忘れずに
  • 未来予測系の評価は苦手
  • ロール切り替えのテストは少し手間
といった注意点もあります。
 
「Snowflake CoWorkでエージェント作ったけど品質確認が大変…」なら、
かなりテストが楽になるので、ぜひ試してみてください!
×
タイトルとURLをコピーしました