Argilla を用いた生成 AI の出力評価(Human-in-the-Loop)フローの構築
テックタッチ株式会社 / KuragariKurage
メンバー / 機械学習エンジニア / 従業員規模: 101名〜300名
利用機能 | ツールの利用規模 | ツールの利用開始時期 | 事業形態 |
---|---|---|---|
生成AI出力の評価機能 | 10名以下 | 2024年7月 | B to B |
利用機能 | 生成AI出力の評価機能 |
---|---|
ツールの利用規模 | 10名以下 |
ツールの利用開始時期 | 2024年7月 |
事業形態 | B to B |
アーキテクチャ
アーキテクチャの意図・工夫
AI Recovery の大まかの流れ
テックタッチのガイダンス(ウェブナビゲーション)を再生中、あらかじめ設定していた要素が存在せずナビゲーションに失敗すると、ユーザ端末から失敗時の再生データを弊社クラウド基盤に送信します。 AI Recovery ではそのデータを使ってウェブサイト上の変更情報を検知し、LLM がどの要素を特定すれば良いかを推定するワークフローを日次で実行しています。
推定結果は Argilla の基盤に挿入され、レビュワーは Web UI にアクセスして結果の評価を行います。 評価が完了したデータから随時プロダクト基盤へ修正提案データを追加し、プロダクト管理画面から修正を反映することが出来ます。
工夫点
- インフラのリソースは IaC で管理(AWS CDK を採用)
- Google SSO を用いて、Argilla Web アプリへのセキュアなアクセスを実現
- 日次バッチの開発には弊社データ基盤で開発・運用実績のある Dagster を採用
- 将来的に LLM の推論データを直接プロダクトに反映するため、密結合にならないようワークフローを構築
特に「Google SSO による Argilla Web アプリへのセキュアなアクセス」については、構築当時、Argilla が Form 認証と HuggingFace の OAuth 認証しかサポートしておらず、弊社でプロダクションレベルで利用するには追加の対策が必要でした。 そこで、弊社 Google Workspace 上にレビュワー専用のグループを作成し、Amazon Cognito と連携することで、グループに所属するメンバーのみに Argilla へのアクセスを許可する構成を実現しました。
導入の背景・解決したかった問題
導入背景
弊社では「テックタッチ」というノーコード Web システム改善プラットフォームを提供しています。システムによってはその変更に追従することが大変だったのですが、そのペインを解消するためにAI Recovery という新プロジェクトが立ち上がりました。このプロジェクトは、Web サイト上の要素(ボタン、リンク、フォームなど)の変更情報をAIが自動的に認識し、UI の変更があっても継続的に同じ要素を追跡し、ガイダンスの不具合を修正する機能を開発するものでした。
しかし、LLM による要素推定は完璧ではありません。特に初期段階では、推定精度にばらつきがあり、お客様に提供する前に品質保証をしていきながら精度を改善していく体制づくりが必要でした。そこで、LLM の出力を人間(レビュワー)がレビューし、必要に応じて修正する「Human-in-the-Loop」の仕組みを構築することになりました。
ツール導入前の課題
1. 品質保証の課題
- 誤った推定結果がお客様の業務に影響を与えるリスク
- 推定結果の妥当性を判断する仕組みの欠如
2. オペレーション上の課題
- レビュワーが効率的にレビュー作業を行うためのインターフェースが不在
- 検証当初は Notion で DB を作成して管理していたが、プロダクションレベルではスケールしない
- 複数のレビュワーが同時に作業する際の競合に対処する必要がある
3. データ管理の課題
- レビュー結果の記録・追跡が困難で、誰がいつ何を判断したかが不明確
- レビュー済みデータを活用したモデル改善サイクルの構築が困難
どのような状態を目指していたか
理想的なワークフロー
- LLM が推定した要素対応を自動的にレビューシステムに投入
- レビュワーが直感的な UI で「正しい/間違い」を判定
- 間違いの場合は正しい要素を指定
- レビュー結果は即座にシステムに反映され、お客様への提供データとなる
- 蓄積されたレビューデータをモデル改善に活用
必要な要件
- プライバシーに配慮したセキュアな環境での運用
- レビュー結果を第三者が後から確認できる監査性
- ワークフローの変更に柔軟に対応できる拡張性
- レビュワーの採用状況や予算に応じたスケーラビリティ
比較検討したサービス
- LangSmith
比較した軸
1. 評価 UI の直感性
レビュワーの多くは技術的なバックグラウンドを持たないため、複雑な操作を必要としない直感的な UI が必須でした。特に以下の点を重視しました:
- キーボードショートカットの対応
- 視覚的にわかりやすい画面設計
- エラー時の分かりやすいフィードバック
2. 開発・運用の容易さ
- Python によるプログラマブルな操作(データ投入、結果取得の自動化)
- 既存のデータパイプライン(Dagster)との連携のしやすさ
- インフラ構築の簡便性
3. プライバシー・セキュリティ対応
- オンプレミス運用の可否
- アクセス権限の管理
4. コスト効率
- 初期導入コスト
- スケーラビリティ
選定理由
1. スピーディに運用に載せられる点
自前実装では3-6ヶ月かかる見込みだったものが、Argilla では2-3週間で本番運用できるレベルでインフラ構築出来ました。
2. レビュワーフレンドリーな設計
実際にレビュワーに触ってもらったところ、「直感的に利用しやすい」という反応が得られました。特に評価されたのは:
- シンプルで分かりやすい画面構成
- キーボードだけで操作完結(マウス不要)
- 作業の進捗が視覚的に分かる
3. 柔軟な拡張性
Python SDK が充実しており、例えばデータセットは以下のように直感的な実装が可能でした:
import argilla as rg
# データセット定義の例
dataset = rg.FeedbackDataset(
guidelines="LLMの回答が正しいか判定してください",
fields=[
# LLMの回答や元データなどの情報
rg.TextField(name="llm_answer", required=True, use_markdown=True),
],
metadata=[
# メタデータを追加可能
rg.TermsMetadataProperty(name="report_created_at", visible_for_annotators=True)
],
questions=[
# 回答フィールドの設定
rg.LabelQuestion(
name="is_correct",
title="LLMの回答は正しいですか?",
labels=["はい", "いいえ"],
required=True
),
rg.TextQuestion(
name="correct_answer",
title="正しい回答を記入してください",
required=False
)
],
)
4. OSS の開発が活発
Argilla 自体の開発が活発で、Hugging Face 社から買収された点からもコミュニティが成長している印象を受けました。公式 Discord へ質問したことがありますが、開発者からすぐに回答がありましたので、ユーザを大事にされている体制も好印象でした。
導入の成果
改善したかった課題はどれくらい解決されたか
レビュー作業の効率化:
- 1件あたりの処理時間は最長 60 秒
- レビュワーの人数も最小限に絞れるように(1〜2名)
どのような成果が得られたか
1. 技術面での成果
- 継続的な品質改善サイクルの確立
- 評価データを視覚的にレビューすることで、モデルの段階的改善に繋げられる
- 新たなAI機能開発への横展開として Argilla が使えるように
2. 組織面での成果
まだ運用が始まって間もないですが、AI品質保証のノウハウを蓄積していくことで、中長期的な品質改善に繋げられると期待しています。
導入に向けた社内への説明
上長・チームへの説明
まず比較対象となるプロダクト(主に LangSmith)と使い勝手を比較したうえで Argilla を選定しました。 さらに自前で同様の UI を実装する場合との開発コスト・運用コストの見積もり結果を提示することで、プロダクト導入に際する費用対効果をチームに説明しました。
活用方法
日次で AI による要素推定データが追加されるため、レビュワーが営業時間中に追加データを評価するのに利用することを想定しています。
よく使う機能
- 評価UI(アノテーション機能)
- データセット構築・管理機能
- Python SDK(データの入出力、自動化)
- 画像埋め込み機能(スクリーンショット表示)
- メタデータ管理機能
- フィルタリング・検索機能
ツールの良い点
- 自前で UI を一から開発することなく、チームで求めていた評価フローをスピーディに実現できた
- コミュニティのサポートが手厚い
ツールの課題点
- UI は英語のみ(データセットの問題文は日本語対応しているため、私たちの PJ ではそこまでクリティカルな課題ではなかったです)
- PJ 実施時にはドキュメントがあまり充実していなかった(SDK のレファレンスや AWS へのデプロイ手順など)ので、少し開発に手間取る場面はありました
- ユーザ管理(追加・削除)は Python SDK のみ操作可能となっており、UI 上で管理できないのは少々不便でした
今後の展望
- 評価結果を受けた LLM 評価ロジックの改善
- AI Recovery だけでなく、他の生成 AI 利用機能の評価基盤として横展開
テックタッチ株式会社 / KuragariKurage
メンバー / 機械学習エンジニア / 従業員規模: 101名〜300名
テックタッチ株式会社 / KuragariKurage
メンバー / 機械学習エンジニア / 従業員規模: 101名〜300名
レビューしているツール
目次
- アーキテクチャ
- 導入の背景・解決したかった問題
- 活用方法