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
Keisuke Takiguchi
August 05, 2025
Technology
2.9k
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
【GCC2026】大規模言語モデルを活用した内製検索サービスの社内展開や業務活用
bandainamcostudios
PRO
0
500
同じWAFが、攻撃の“形”は弾く── 正当な“形”の不正は通す
kuroneko13
0
270
【Aiming】共通基盤なのに「共通化しない」課金・認証基盤「LINK」が選び取ったシングルテナント戦略と運用の秘訣
saikeda
0
150
Model Studio CLI × Token Plan
maigo999
0
210
Genie Codeハンズオン応用編
taka_aki
0
140
LanceDB入門
mocobeta
9
670
AI for Science時代を切り開く、政府の次世代HPC戦略の展望
gpuunite_official
0
210
巨大気象データと戦う ― サロゲートモデル学習を高速化する圧縮技術
gpuunite_official
0
250
Kiro Crew入門 - 常駐エージェントの仕組みと使いどころ / Intro to Kiro Crew
k_adachi_01
1
790
Head First モブプログラミング / Head First Mobprogramming
takaking22
10
12k
[potatotips #96] Give Your AI Agent the Flutter Playbook
korodroid
0
140
ハッカソンで入賞した話 @ Findy LT
asari194617
0
1.5k
Featured
See All Featured
KATA
mclloyd
PRO
35
15k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
640
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Producing Creativity
orderedlist
PRO
348
40k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
300
Designing for humans not robots
tammielis
254
26k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.5k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
660
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Typedesign – Prime Four
hannesfritz
42
3.1k
SEO for Brand Visibility & Recognition
aleyda
0
4.7k
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 サマリー