AI Talks #4 - LLMをコアに持つプロダクトのデータ活用とエージェント設計

LLMをコアに持つプロダクトの
データ活用とエージェント設計

Tomoki Yoshida (birder)🐦

DeNA
AI技術開発部AIイノベーショングループ

2025-12-18

Tomoki Yoshida (birder)🐦️ - DeNA
AI Talks #4 - LLMをコアに持つプロダクトのデータ活用とエージェント設計

自己紹介

吉田 知貴(birder)


  • 学生時代
    • 機械学習凸最適化の高速化 (KDD2018, KDD2019)
    • 2018年 DeNAサマーインターン
  • 社会人

Qiita: @birdwatcher
X: @birdwatcherYT

Tomoki Yoshida (birder)🐦️ - DeNA
AI Talks #4 - LLMをコアに持つプロダクトのデータ活用とエージェント設計

社内の3時間の勉強会から厳選し更に踏み込んだ内容を話します

※重複あり

Tomoki Yoshida (birder)🐦️ - DeNA
AI Talks #4 - LLMをコアに持つプロダクトのデータ活用とエージェント設計

フィードバックループを持ち成長するプロダクト

作りたいですよね?

Tomoki Yoshida (birder)🐦️ - DeNA
AI Talks #4 - LLMをコアに持つプロダクトのデータ活用とエージェント設計

LLM時代のデータ活用

プロダクト全体の最適化

  • ファインチューニング(FT)
  • 強化学習(RL)
  • プロンプト最適化

ユーザー個人への最適化(パーソナライズ)

  • コンテキストエンジニアリング
  • RAG

ユーザーごとにモデル保持するのは非現実的なので、基本このパターンになるはず

Tomoki Yoshida (birder)🐦️ - DeNA
AI Talks #4 - LLMをコアに持つプロダクトのデータ活用とエージェント設計

モデル学習の種類とイメージ

STEP: 事前学習 → ファインチューニング → 強化学習

手法 例え 学習のさせ方
事前学習 義務教育 言葉、計算、一般常識を学ぶ。まだ料理はできない
ファインチューニング 料理学校 「このレシピ通りに作りなさい」と教わる
基礎的な調理スキルと知識を身につける
強化学習 実地研修 客に出した料理に対して「美味しい」「塩辛い」と評価される → 客が喜ぶ味付けや、好まれる接客を身につける

LLMを使う多くの企業は、プロンプトチューニングとファインチューニングだけやる

Tomoki Yoshida (birder)🐦️ - DeNA
AI Talks #4 - LLMをコアに持つプロダクトのデータ活用とエージェント設計

ファインチューニングと強化学習の比較

比較項目 ファインチューニング 強化学習
主な目的 指示従順性の獲得: 特定の形式や知識を教え込む 人間との調和: 安全性、有用性、ニュアンスを調整する
データ形式 「入力」と「正解」のペア
例:Q:首都は? A:東京
回答の「比較」や「採点」
例:回答A > 回答BGOOD/BADなど
学習の仕組み 次単語の予測 (Token Level)
正解データと一言一句合わせようとする
報酬スコアの最大化 (Sentence Level)
文章全体としての良し悪しを評価
得意なこと ・新しい知識の注入
・JSONなど特殊形式の出力
・口調(キャラ付け)の固定
・嘘(ハルシネーション)の抑制
・有害な回答の回避
・「もっと丁寧に」など曖昧な指示への対応

プロンプトチューニングで限界ならファインチューニングが候補に入る。強化学習まで必要なケースは稀。

Tomoki Yoshida (birder)🐦️ - DeNA
AI Talks #4 - LLMをコアに持つプロダクトのデータ活用とエージェント設計

ファインチューニング

事前学習済みモデルを特定タスクに微調整する

低ランクの小さな重みを付け加えるPEFT(Parameter-Efficient Fine Tuning)のLoRA(Low-Rank Adaptation)が主流

Tomoki Yoshida (birder)🐦️ - DeNA
AI Talks #4 - LLMをコアに持つプロダクトのデータ活用とエージェント設計

強化学習(スキップするかも)


強化学習でもLoRAを使う


RLHF (Reinforcement Learning from Human Feedback) / DPO (Direct Preference Optimization)

Tomoki Yoshida (birder)🐦️ - DeNA
AI Talks #4 - LLMをコアに持つプロダクトのデータ活用とエージェント設計

プロンプト自動最適化

入出力データセットを与えるとプロンプトを調整してくれるもの:

やる意義

  • ユーザー提供して集まったデータをアノテーションし、更に良いプロダクトへ
  • プロンプトチューニング地獄からの解放
  • モデルリプレース時のチューニングの自動化

最近Gemini-2.5系の廃止計画が発表されたり、GPT-4o APIの廃止計画が発表されたり...
→ LLMをプロダクトに組み込んでいると、一斉にモデルリプレース作業に追われる

Tomoki Yoshida (birder)🐦️ - DeNA
AI Talks #4 - LLMをコアに持つプロダクトのデータ活用とエージェント設計

DSPyでプロンプト自動最適化

文章から趣味を抽出するtoy-problemで試してみた
モデル: gemma3、初期プロンプト: "趣味は?"(あえてテキトーなものに)
データセット (train: 56件, validation: 14件, test: 28件):

  {"sentence": "映画鑑賞が趣味で、毎週1本は必ず観ています", "hobby": "映画鑑賞"},
  {"sentence": "休日に散歩して鳥の写真を撮ります", "hobby": "バードウォッチング"}

【結果】 accuracy: 78.6% ← 手動チューニングだとなかなかここまでいけない

optimized prompt:

Given a sentence describing a person’s activity, 
identify and state the hobby being practiced. 
Output only the hobby.

selected few-shot examples:

{"sentence": "週末は公園でスケッチをして過ごします", "hobby": "スケッチ"},
{"sentence": "陶芸教室に通って、自分で器を作っています", "hobby": "陶芸"},
{"sentence": "旅行が好きで、日本全国を巡っています", "hobby": "旅行"}
Tomoki Yoshida (birder)🐦️ - DeNA
AI Talks #4 - LLMをコアに持つプロダクトのデータ活用とエージェント設計

プロンプト自動最適化の課題

API呼び出し回数が多いのでRateLimitに引っかかりやすい

評価指標を定めるのが難しい

  • 先程のtoy-problemのように完全一致や明確に答えがあるものは楽
  • でも、実際に最適化したい需要って「日本語の自然さ」や「カジュアルさ」「適切にアドバイスできているか」など言語化しにくい曖昧なケースも多い
    • 評価をLLM as a Judgeにするにしても、そもそも評価モデルを作るのが難しい
      推論モデルを作るために評価モデルをチューニングするという鶏卵感...
Tomoki Yoshida (birder)🐦️ - DeNA
AI Talks #4 - LLMをコアに持つプロダクトのデータ活用とエージェント設計

参考: Geminiのファインチューニングは簡単にできる


さらに、強化学習も簡単にできそう(Open AIも同様)

jsonl形式で
データセット作って
投げるだけ

最適化は
モデル側の損失関数
で決まっているため
利用者は決めない
(トークン単位の
最適化なので)

Tomoki Yoshida (birder)🐦️ - DeNA
AI Talks #4 - LLMをコアに持つプロダクトのデータ活用とエージェント設計

本当に重要なのはここからです!!

パーソナライズへ

Tomoki Yoshida (birder)🐦️ - DeNA
AI Talks #4 - LLMをコアに持つプロダクトのデータ活用とエージェント設計

コンテキストエンジニアリングの必要性

LLMの限界

LLMに与える情報を管理してあげる必要がある

コンテキストエンジニアリング

無数に増えていく(ユーザーの)情報を

  • どう保存するか(そのまま?ラベル付け?集計?圧縮?)
  • どう検索するか(最新N件?関連度?重要度?)
Tomoki Yoshida (birder)🐦️ - DeNA
AI Talks #4 - LLMをコアに持つプロダクトのデータ活用とエージェント設計

プロダクト作りで気にするところ

  • データ取得時の検索クエリ / データ保存時の加工処理が案件ごとの設計ポイント!

このあとコンテキストエンジニアリングの一種とみなせるRAGの説明をしますが、一般的なRAGは既にいろんなクラウドサービスが実装しています。

Tomoki Yoshida (birder)🐦️ - DeNA
AI Talks #4 - LLMをコアに持つプロダクトのデータ活用とエージェント設計

RAG(Retrieval-Augmented Generation)

  • 外部データを検索して応答する

典型的なRAGシステムの全体像:

  • RAGはコンテキストエンジニアリングの一種と言える
  • LLMは応答インターフェースでしかない(いかにうまく情報取ってこれるか勝負)
Tomoki Yoshida (birder)🐦️ - DeNA
AI Talks #4 - LLMをコアに持つプロダクトのデータ活用とエージェント設計

RAGの構成要素: 1. クエリ拡張

  • ユーザーの曖昧な入力を、LLM等を使って具体的かつ検索しやすい形に変換する
簡単な文脈補完
USER: 社内の経費精算の締め切りはいつ?
AI: 月末です
USER: それを過ぎたらどうなる?
  • それを過ぎたらどうなる?を検索しても関連ドキュメントを探せない
  • 経費精算の締め切りを過ぎた場合のペナルティや対応を検索する
言い換えや解答予測
USER: PCが重いときの対処法は?
  • PC 動作 遅い 対処システム パフォーマンス 低下 原因メモリ不足 解消方法CPU使用率 高いなどを並列で検索して結果を統合する
Tomoki Yoshida (birder)🐦️ - DeNA
AI Talks #4 - LLMをコアに持つプロダクトのデータ活用とエージェント設計

RAGの構成要素: 2. ハイブリッド検索

  • DBの情報すべてLLMに渡すのは無理なので、LLMに渡す情報の絞り込み

全文検索: 文字列完全一致で検索(インデックスで高速化)
ベクトル検索:

Embedding: 文字列からベクトル空間へ


モデル性能はembedding leaderboardで検索!

ベクトル検索: 大量のレコードから近い表現を高速に検索できる(近似最近傍探索)


PostgreSQLのpgvector拡張やFirestoreVertex AIなど

Tomoki Yoshida (birder)🐦️ - DeNA
AI Talks #4 - LLMをコアに持つプロダクトのデータ活用とエージェント設計

RAGの構成要素: 3. リランキング 4. グラウンディング

3. リランキング: さらなる絞り込み!

  • 検索でヒットした多数の候補から、本当に関連する文書を高精度なモデルで並び替え、上位のものだけを抽出
  • 高精度なモデル

4. 応答 + グラウンディング:

  • 抽出した情報をコンテキストに入れて、ユーザーの質問に応答
  • グラウンディング: 情報ソースとの紐づけ(回答の根拠
Tomoki Yoshida (birder)🐦️ - DeNA
AI Talks #4 - LLMをコアに持つプロダクトのデータ活用とエージェント設計

RAGの前処理: ドキュメント保存時の前処理

  • 必要な情報をうまく検索するためには、保存の仕方も重要になる

チャンキング:

  • ドキュメントをチャンクに分割してDBに格納
  • 切り方: ファイル単位、文書構造単位(章とか)、文字数、意味のまとまり
  • 切られて文脈が途切れる問題への対策例:
    • チャンクを階層的にして親チャンクをLLMに渡す
    • チャンクに「全体から見たそのチャンクの要約や文脈」を含める
    • Agenticに足りない情報を取りに行く

あらかじめ想定質問を生成しておくパターンもある(工夫はいろいろあるようだ)

Tomoki Yoshida (birder)🐦️ - DeNA
AI Talks #4 - LLMをコアに持つプロダクトのデータ活用とエージェント設計

エージェントについて知ろう

世の中のすごいプロダクトの中身を推測できるようになる

実はさっきのRAGはNotebookLMの中身の推測でした
(OSSでNotebookLMを目指しているレポジトリは先程のような構成)

ここからの話は非エンジニアの方は「へーそんなのもあるんだ」くらいで聞いてください。

Tomoki Yoshida (birder)🐦️ - DeNA
AI Talks #4 - LLMをコアに持つプロダクトのデータ活用とエージェント設計

ReAct(Reasoning + Acting) Agent

  • エージェントの基礎
  • ReAct: Thought (思考)→Action (行動)→Observation (観察)

ツール群: Web検索, コード実行, 画像生成, ファイル検索, コンテキスト取得
→ ツール群にコンテキスト取得が入るとAgentic RAGになる

Tomoki Yoshida (birder)🐦️ - DeNA
AI Talks #4 - LLMをコアに持つプロダクトのデータ活用とエージェント設計

Reflexion(内省)

  • Reflexion: 結果の振り返りを行い次の試行に活かす

  • 先程のReActと組み合わせることもできる
Tomoki Yoshida (birder)🐦️ - DeNA
AI Talks #4 - LLMをコアに持つプロダクトのデータ活用とエージェント設計

Adaptive Planning

  • AdaPlanner: プランを立てて結果に基づきプランを修正する

  • CursorやClaude Codeもプラン立てて修正しながら動きますよね

世の中の賢いエージェントはこうした工夫を取り入れて設計されている

Tomoki Yoshida (birder)🐦️ - DeNA
AI Talks #4 - LLMをコアに持つプロダクトのデータ活用とエージェント設計

LangChainのAgentの動きを見てみよう

@tool
def func_add(a: int, b: int) -> int:     # 自作関数
    """足し算をする"""                     # Agentは、docstringを読んで判定してくれる
    print("called func_add")
    return a + b
@tool
def func_mul(a: int, b: int) -> int:
    """掛け算をする"""
    print("called func_mul")
    return a * b
agent = create_agent( # 関数を渡す
    model=ChatVertexAI(model="gemini-2.5-flash-lite"), tools = [func_add, func_mul]
)
result = agent.invoke(
    {"messages": [("human", "3と4を足した値に1+3を足した値同士を掛け算するとどうなる?")]}
)

たとえばこんな例だと中身はどうなるでしょうか?

Tomoki Yoshida (birder)🐦️ - DeNA
AI Talks #4 - LLMをコアに持つプロダクトのデータ活用とエージェント設計

LangSmithでAgentをトレース

内部でループが回り、
3回LLMが呼ばれている
事がわかる

参考:ADKのLlmAgent
も同様に内部でReActの
ような構造を持っていた

Tomoki Yoshida (birder)🐦️ - DeNA
AI Talks #4 - LLMをコアに持つプロダクトのデータ活用とエージェント設計

LLM設計パターン

ワークフローかエージェントか

エージェント賢そうだし全部エージェントに全部任せればいいのか?

Tomoki Yoshida (birder)🐦️ - DeNA
AI Talks #4 - LLMをコアに持つプロダクトのデータ活用とエージェント設計

Deep Researchの設計(ワークフロー型)

自然に考えるとこう書けるでしょう:

オープンソースでもいくつか出ています

Tomoki Yoshida (birder)🐦️ - DeNA
AI Talks #4 - LLMをコアに持つプロダクトのデータ活用とエージェント設計

Deep Researchの設計(エージェント版)

  • エージェントがライブラリで提供される場合、
    実装箇所は「ツール群」と「システムプロンプト」だけで楽そう
Tomoki Yoshida (birder)🐦️ - DeNA
AI Talks #4 - LLMをコアに持つプロダクトのデータ活用とエージェント設計

ワークフロー型 vs エージェント

観点 ワークフロー型 エージェント
動作原理 事前定義されたフローに従う 自律的な推論と行動のループ
応答速度 速い(LLM呼び出し回数が予測可能) 遅い(より多くのLLM呼び出し)
柔軟性 低〜中(想定外のタスクに弱い) (新しいタスクにも適応)
制御性 (動作が予測しやすい) 低〜中予期しない動作の可能性
実装工数 中〜高(フロー設計とコーディング) 低〜中ツールとプロンプト設計のみ

プロダクト実装で特定のタスクを実装する場合、
応答速度や制御性の観点からワークフロー型になるケースが多い気がする

Tomoki Yoshida (birder)🐦️ - DeNA
AI Talks #4 - LLMをコアに持つプロダクトのデータ活用とエージェント設計

マルチエージェント設計パターン

  • Supervisor:タスク分解、計画
  • Worker:検索担当、テスト担当、修正担当など(as Tools)
  • より複雑なタスクで使われる(大規模タスクの分解
  • 本質はSupervisor型と同じ(多段にしただけ)
  • 上下関係がない
  • 例: ディベート・ブレスト(複数視点で議論・合意形成)
Tomoki Yoshida (birder)🐦️ - DeNA
AI Talks #4 - LLMをコアに持つプロダクトのデータ活用とエージェント設計

まとめ

  • モデル最適化: ファインチューニング・強化学習でプロダクト全体を改善
  • パーソナライズ: コンテキストエンジニアリングでユーザーごとに最適化
  • エージェント: ツールを使って複雑なタスクを自律的に解決するが速度は遅め
Tomoki Yoshida (birder)🐦️ - DeNA

時計/タイマー

タイトルのみページ番号スキップ

中央寄せ

タイトルのみページ番号スキップ

中央寄せ

タイトルのみページ番号スキップ

中央寄せ

タイトルのみページ番号スキップ

中央寄せ

中央寄せ

中央寄せ