Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
LLMで構造化出力の成功率をグンと上げる方法
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Keisuke Takiguchi
August 05, 2025
Technology
2.7k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
LLMで構造化出力の成功率をグンと上げる方法
DeNA x AI Talks #1 登壇資料
Keisuke Takiguchi
August 05, 2025
Other Decks in Technology
See All in Technology
OTel × Datadog で 「AI活用」を計測し、改善に繋げる
shihochan
1
290
手塩にかけりゃいいってもんじゃない
ming_ayami
0
600
When Platform Engineering Meets GenAI
sucitw
0
120
MCP Appsを作ってみよう
iwamot
PRO
4
690
【2026年版】 ベクトル検索とEmbedding最前線
mocobeta
14
3.8k
SONiCの統計情報を取得したい
sonic
0
220
フィジカル版Github Onshapeの紹介
shiba_8ro
0
290
Oracle AI Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
6
1.5k
ぼっちではじめた登壇が「51名」「241件」の発信に化けた
subroh0508
0
170
SONiCで構築・運用する生成AI向けパブリッククラウドネットワーク ~実装編~
sonic
0
270
2026TECHFRESH畢業分享會 - Lightning Talk - 打造精準高效的 MCP 設計模式與測試實務
line_developers_tw
PRO
0
1.2k
生成 AI 実践ガイド (概略版) AIガバナンス編
asei
0
100
Featured
See All Featured
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
210
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.7k
Git: the NoSQL Database
bkeepers
PRO
432
67k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
240
YesSQL, Process and Tooling at Scale
rocio
174
15k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
150
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
250
New Earth Scene 8
popppiees
3
2.3k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.1k
WCS-LA-2024
lcolladotor
0
640
Context Engineering - Making Every Token Count
addyosmani
9
970
Transcript
© DeNA Co., Ltd. 1 LLMで構造化出力の成功率を グンと上げる方法 IT本部AI・データ戦略統括部AI技術開発部AIイノベーショングループ 滝口 啓介
2025年 8月 5日
© DeNA Co., Ltd. 2 自己紹介 2020:DeNA 新卒入社 → 音声チームで研究開発
• 音声合成 / 音声変換の研究開発 • 七声ニーナPJ 2022:エアフレンド株式会社 • LINEのチャットアプリ → iOS / Android向けアプリへ移行 • 音声AI開発エンジニアとして、 TTS / 音声認識モデルの学習、 データ収集、インフラ(AWS)運用、バックエンド保守など 2024/2:DeNA 中途 • アニメ×AI PJ 、エンタメ系 PJに参画 • 現在はイノベーション事業本部にて新規プロダクト開発中 大学 • 学士:慶應義塾大学 理工学部 情報工学科 ◦ 粒子系リアルタイムシミュレーション / CGとか色々 • 修士:慶應義塾大学院 理工学研究科 開放環境科学科 ◦ 深層(階層)強化学習 / HAI 趣味 • ギター / シーシャ / VR / VTuber 滝口 啓介 IT本部AI・データ戦略統括部 AI技術開発部 AIイノベーショングループ
© DeNA Co., Ltd. 3 構造化出力、使ってますか...? 失敗しやすい構造化出力、成功率をあげるには? 実際に試してみた 目次
© DeNA Co., Ltd. 4 構造化出力、使ってますか...? LLM(大規模言語モデル)を活用したプロダクト開発の需要が高まっていますね!! LLMをプロダクトへ組み込む際、その出力を「構造化出力」として扱うことが多いかと思います なぜ構造化出力が重要か? •
出力の一貫性 : 出力要素を定義することで、生成される値の一貫性を担保 • 型安全性 : 期待するデータ型(数値、文字列、ブーリアンなど)を保証 • データ処理のしやすさ : 抽出した情報を容易に解析・処理が行いやすい 構造化出力で直面しがちな課題 一方で構造化出力は生成に失敗することも多く、以下のような課題も存在します。 • 複雑な構造 : データモデルが入れ子構造だったりで複雑化すると、出力が崩れやすくなる • 温度設定 : 出力の多様性を高めるため温度パラメータを高く設定する場合、同様に崩れやすい
© DeNA Co., Ltd. 5 失敗しやすい構造化出力、成功率をあげるには? 1. 明確で具体的なプロンプト設計 2. 少数例(
Few-shot prompting)の提供 3. モデルの選択と設定 4. 構造化出力に特化した LLM推論ライブラリを使用( 今日一番伝えたいところ! )
© DeNA Co., Ltd. 6 明確で具体的なプロンプト設計 LLMはプロンプトの内容に厳密に従おうとするため、これが最も重要。 • 出力形式を明示 ◦
JSON、XML、YAML、CSVなど、どのような形式で出力してほしいかを明確に指定 ◦ 可能であれば、具体的なスキーマや例も記載 • データ型の指定 ◦ 数値、文字列、booleanなど、各フィールドのデータ型を明確に指定 • 列挙型の指定 ◦ 特定の値のセットから選択させる場合は、そのセットを明示 ◦ 例: "status"は'pending', 'approved', 'rejected'のいずれかにしてください。 • 禁止事項を明記 ◦ 余計な説明や前置き、後書きを含めないよう指示します。 ◦ 例: JSONオブジェクトのみを出力し、それ以外のテキストは一切含めないでください。
© DeNA Co., Ltd. 7 少数例の提供(Few-shot prompting) プロンプトだけでは伝わりにくいニュアンスや複雑な構造がある場合、具体的な入出力例をいくつか示すことで 生成の品質や構造化出力の成功率が上がる可能性がある
© DeNA Co., Ltd. 8 モデルの選択と設定 構造化出力に強いモデルの利用 • モデルごとに構造化出力に対して強い /
弱いモデルがあり、適切なモデルを選択すると良い • 例: gemini-2.0-flash は比較的構造化出力に強いが、 gemini-flash-2.5-lite は成功率が落ちる、など 温度(Temperature)の設定 : • 低い温度(例 : 0.0〜0.3): 出力の多様性を抑え、より決定論的で予測可能な出力を生成させる際には温 度を低く設定、構造化出力時は温度を低く設定する方が良い • 高い温度 : 出力の多様性が上がるため、よりランダムな生成結果が欲しい場合に向いていますが、構造 化出力には不向きです max_tokensの設定 • 想定する構造定義のサイズに対して、適切な max_tokensを設定 構造化出力を途中で切れないように、十分な長さを確保
© DeNA Co., Ltd. 9 構造化出力に特化したLLM推論ライブラリ とはいえ、 ・温度パラメータ高い状態でも構造化出力使いたい! ・軽量なモデル(gemini-2.5-flash-liteやOllamaで動かす軽量ローカルモデル)でも構造化出力したい! と思うこともあると思います(僕は思いました
😌) そこで、Outlines [https://github.com/dottxt-ai/outlines] の出番です! 構造化出力の「確実性」を追求するライブラリ • LLMからの出力を、特定のフォーマット( JSON, XML, YAMLなど)やスキーマに厳密に従わせるための Pythonライブラリ • LLMで普通に構造化出力を行う場合、前述の通り、指定したフォーマットから逸脱したり、無関係なテキス トが混入したりするという課題があったが • Outlinesは、「構造化出力の失敗」という共通の課題 を解決するために設計された
© DeNA Co., Ltd. 10 Outlinesの仕組み 文法誘導型生成 (Grammar-Guided Generation): LLMがトークンを生成する際に、事前に定義された文法(正規表現、
JSON Schemaなど)に合致するトークン のみを選択肢として提示することで、 LLMが常に指定された形式に沿った出力を生成 主要な特徴 : • 高精度: 期待通りの構造化出力を(ほぼ) 100%の精度で実現 • シンプルさ : 非常にシンプルな実装で、既存の LLMコードに容易に統合可能 • 多様なモデル対応 : OpenAI、Hugging Face、Local LLMなど、様々なLLMバックエンドをサポート • 文法定義 : ◦ 正規表現 (Regex): 特定のパターンにマッチする文字列を生成 ◦ JSON Schema: JSON構造、データ型、制約を厳密に定義、それに従った JSONを生成 ◦ Pydanticモデルによる型定義 : PythonのPydanticモデルを直接スキーマとして利用可能
© DeNA Co., Ltd. 11 Outlines 実装例
© DeNA Co., Ltd. 12 ということで 実際にOutlinesを使ってみたので、その実験内容と結果をまとめました
© DeNA Co., Ltd. 13 概要 タスク例:天気情報集約 ・入力プロンプト "東京の明日の詳細な天気分析を作成してください。気温は 25度、湿度は60%、風速は3m/s、曇りのち晴れの予想で、
大気圧1013hPa、紫外線指数中程度、花粉情報も含めてく ださい。" ・出力の失敗例 中身が空のjsonが吐き出される ・期待する出力の成功例
© DeNA Co., Ltd. 14 全体の結果 出力が None になったり、 定義した構造化出力に
合わない出力が生成される エラーが発生 構造化出力は成功するが、 中身のデータが空になる ようなエラーが発生(↓)
© DeNA Co., Ltd. 15 個々のタスクの結果 ・入力プロンプト "ユーザー田中太郎( 30歳、エンジニア)の詳細プロフィールを作成してください。好みはプ ログラミング、読書、旅行で、設定はダークモード有効、通知
ON、言語設定は日本語、メ タデータにはアカウント作成日 2023-01-15、最終ログイン2024-01-20、アクティビティス コア85.5、タグは['技術者', '読書家', '旅行者']を含めてください。", ・出力の成功例 ・出力の失敗例 中身が空のjsonが吐き出される
© DeNA Co., Ltd. 16 (再掲)天気情報集約タスクの結果 タスク例:天気情報集約 ・入力プロンプト "東京の明日の詳細な天気分析を作成してください。気温は 25度、湿度は60%、風速は3m/s、曇りのち晴れの予想で、
大気圧1013hPa、紫外線指数中程度、花粉情報も含めてく ださい。" ・出力の失敗例 中身が空のjsonが吐き出される ・出力の成功例
© DeNA Co., Ltd. 17 サマリー