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
Naoki Yoshitake
July 11, 2024
Technology
990
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ロングコンテキストLLMにリポジトリを読み込ませてみる
『LLM Tech Night #3 by LayerX』のLT資料です
Naoki Yoshitake
July 11, 2024
More Decks by Naoki Yoshitake
See All by Naoki Yoshitake
AWS×金融×コンテナを6年やってきた所感
ny7760
0
110
TechPM ってどんな仕事?
ny7760
0
280
開発者から見たLLMの進化 202511
ny7760
1
330
Bedrock で検索エージェントを再現しようとした話
ny7760
3
760
開発者から見たLLMの進化
ny7760
2
110
re:Invent 2024 Keynoteに対する所感と考察 | My Take on the Keynote
ny7760
0
140
来年もre:Invent2024 に行きたいあなたへ - “集中”と“つながり”で楽しむ -
ny7760
1
1.3k
The Twelve-Factor App とクラウドアプリケーションのコスト
ny7760
4
790
re:Invent期間に発表されたCloudWatch Logsのアップデートを金融エンジニアの目線で試してみる
ny7760
1
1.1k
Other Decks in Technology
See All in Technology
【CEDEC2026】コードレビュー支援ツール開発から学ぶ:LLMを用いた業務システムの実践的な運用設計と誤出力対策
cygames
PRO
0
850
Software Supply Chain Attackからクラウド環境を守るためにできること
lhazy
2
280
Eight Engineering Unit 紹介資料
sansan33
PRO
3
8.2k
強化学習「理論」入門
enakai00
3
3.6k
メルカリのグローバルアプリで挑んだ AlloyDB 運用と課題解決の実践記
hatappi
0
250
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
4.9k
Go 1.27 の標準パッケージに uuid が入った!のでいろいろ喋る / go_127_std_go_uuid
convto
1
250
ハーレムエンジニアリング
kazuma777777
0
180
Digitization部 紹介資料
sansan33
PRO
2
7.7k
DatadogのBits Chatが開発組織にもたらしたもの / What Bits Chat Has Brought Us
sms_tech
1
280
Webアクセシビリティ入門 2026
recruitengineers
PRO
3
640
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
19k
Featured
See All Featured
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
410
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
470
The Spectacular Lies of Maps
axbom
PRO
1
920
AI: The stuff that nobody shows you
jnunemaker
PRO
9
920
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
620
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
700
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
390
How to build a perfect <img>
jonoalderson
1
5.9k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
2.4k
Transcript
CONFIDENTIAL 1 © 2024 Japan Digital Design, Inc. ロングコンテキストLLMに リポジトリを読み込ませてみる
Japan Digital Design Technology & Development Div Naoki Yoshitake 2024.07.11
2 CONFIDENTIAL © 2024 Japan Digital Design, Inc. 吉竹 直樹
Technical Project Manager Japan Digital Design • 2022 APN AWS Top Engineer • 『AWS認定資格試験テキスト AWS認定SysOpsアドミニス トレーター – アソシエイト』 • 『AWS vs Google Cloud アプリ開発七番勝負』 ※同人誌 プロフィール 資格/出版 • 2023/11 JDDにJOIN • プロジェクトマネジメント/アーキテクチャ設計/技術検証 等 # 音楽 # 旅行 # なんでも屋 # Drum # お酒
3 CONFIDENTIAL © 2024 Japan Digital Design, Inc. Japan Digital
Design株式会社 2017年10月2日 代表取締役 CEO 浜根 吉男 85名(2023年9月末時点) 株式会社三菱UFJフィナンシャル・グループ 株式会社三菱総合研究所 三菱UFJリサーチ&コンサルティング株式会社 社名 設立 代表者 従業員数 株主構成 会社概要
4 CONFIDENTIAL © 2024 Japan Digital Design, Inc. 本日のLTテーマ •
コンテキストウィンドウが大きいLLMのこと • Claude 3/3.5 : 20 万 • Gemini 1.5 Flash : 100 万 • Gemini 1.5 Pro : 200 万 • より多くの情報をLLMへ入力できるようになった ロングコンテキストLLMとは? ロングコンテキストLLM
5 CONFIDENTIAL © 2024 Japan Digital Design, Inc. • 新規サービス検討チームで技術/アーキテクチャ担当
• サービスはLLMを活用 • 『LLMをどのようにサービスに組み込むのか』考えたい • RAG? • Agent? 新規サービスのアーキテクト とあるプロダクトのTech PM • 開発チームのプロジェクトマネジメント • 日々、チームやプロセスの改善を検討 • 『LLMサービスを積極的にトライ&活用したい』 • GitHub Copilot Enterprise • Copilot for Microsoft 365 背景:自身のロール
6 CONFIDENTIAL © 2024 Japan Digital Design, Inc. 背景:課題感 •
現時点の GitHub Copilot の限界 • とても有用だが、コンテキストに含まれるコードは多くない • Enterprise で自動PR作成機能が無くなっていた… • さらなる進化には期待している • RAGの難しさ • 回答の正しさは検索精度に依存する • ドキュメントの形式はいろいろ LLMを使う中で感じていたこと
7 CONFIDENTIAL © 2024 Japan Digital Design, Inc. • リポジトリ全体を読み込ませてQAできるかも
• RAGの代替になり得るのか • 精度や速度はどんなものか 考えたこと 6/27 Gemini 1.5 Pro の2M コンテキストウィンドウがGA Gemini の追加機能がGAに https://developers.googleblog.com/en/new-features-for-the-gemini-api-and-google-ai-studio/
8 CONFIDENTIAL © 2024 Japan Digital Design, Inc. 実際にやってみた
9 CONFIDENTIAL © 2024 Japan Digital Design, Inc. リポジトリのコードをGeminiへのクエリの コンテキストに含める
全体感 Gemini GitHub User Code 1. 入力データの整備 リポジトリからcloneしてきたコードを、 Geminiの入力に使えるように整備 2. Geminiへのリクエスト ユーザーからGeminiにクエリを投げる際に、 加工したコードをコンテキスト含める
10 CONFIDENTIAL © 2024 Japan Digital Design, Inc. 試す際のポイント •
「リポジトリ丸ごと」入力にするのは簡単じゃない • 大抵のAPIでは、入力として扱えるファイルは1つのみ • 複数フォルダ&ファイルを同時にLLMの入力にするための工夫が要る • そもそもコンテキストウィンドウの上限に達しないか • LLMの課金額は必ず試算する • これだけ大量のデータを同時に入力するのは初めて • リポジトリのコードがどれくらいのトークン量か想像もつかない 試す際のポイント
11 CONFIDENTIAL © 2024 Japan Digital Design, Inc. コードを一つのファイルに集約する •
LLMの入力に出来るように、リポジトリのコードを集約する スクリプトを作成 • 作成には Anthropic の Claude 3.5 Sonnetを利用 • Claudeにした理由は、普段使いしているから • リポジトリ全体ではなく、Frontend / Backend / Infra の フォルダごとに集約 • モノレポ全体を一つのファイルにするとコンテキストウィン ドウの上限を超えた • 集約されたファイルには集約したファイルのパスも記載 • どのフォルダのコードかわかるようにするため 1. 入力データの整備
12 CONFIDENTIAL © 2024 Japan Digital Design, Inc. 集約対象から不要なファイルは除外 •
.gitignoreを考慮して集約するようにスクリプトを作成 • secret や node_modulesが集約対象にならないように • その他、指定したパターンに該当するファイルを除外して 集約できるようにした • ファイルごとの文字数をCSVファイルに出力したところ、 一部のJSONファイルの文字数が非常に多かった • 確認したら Google Analytics のコンテナファイルだった • リポジトリ内容としては不要なので除外 • その他、テストコードも今回は除外 1. 入力データの整備 frontend │ ├ー src/pages/home │ ├ー Home.tsx │ └ー Home.stories.tsx │ ├ー src/share/components │ ├ー ComponentA.tsx │ └ー ComponentA.stories.tsx │ ├ー src/share/components/sub-components │ ├ー SubComponentB.tsx │ └ー SubComponentB.stories.tsx │ ├ー router.tsx │ ├ー .secret │ └ー key.json │ └ー google-analytics └ー container.json .gitignore や任意のファイルを 集約対象から除外 ※フォルダ構成はイメージです
13 CONFIDENTIAL © 2024 Japan Digital Design, Inc. count_tokens のAPIを使い試算する
• Vertex AI のGemini は「文字数」により課金される • 入力、出力ともに1,000字あたり • 合計のトークン数と、課金対象の文字数を確認できる count_tokens API が用意されている • total_tokens • total_billable_characters 2. Geminiへのリクエスト 1.5 Flash入力 1.5 Pro入力 1.5 Flash出力 1.5 Pro出力 https://cloud.google.com/vertex-ai/generative-ai/pricing?hl=ja
14 CONFIDENTIAL © 2024 Japan Digital Design, Inc. 2. Geminiへのリクエスト:試算結果
種類 トークン数 文字数 モデル 試算結果(USD) Frontend 965,305 2,290,364 Gemini 1.5 Flash 0.573 Gemini 1.5 Pro 5.726 Backend 201,300 635,909 Gemini 1.5 Flash 0.159 Gemini 1.5 Pro 1.590 Infra 227,835 477,072 Gemini 1.5 Flash 0.119 Gemini 1.5 Pro 1.193 • Gemini 1.5 Pro でFrontendのコード全体を入力にすると1リクエストで約922円飛ぶ • Gemini 1.5 Flash で検証することに(小規模に試すなら許容できるコスト) • アプリケーションの特性的に Frontend >>> Backend > Infra なので想定通り
15 CONFIDENTIAL © 2024 Japan Digital Design, Inc. 試してみる 2.
Geminiへのリクエスト まとめたコードファイルから 入力 ユーザーからの質問内容 詳細は書けませんが、 全体を踏まえた回答をしてました
16 CONFIDENTIAL © 2024 Japan Digital Design, Inc. Webアプリ化してみた •
Streamlit でWebアプリ化して Identity-Aware Proxy + Cloud Runで認証機能有りの 社内向けアプリにした • 実際のエンジニアメンバーに 使ったフィードバックをもら いたかった Webアプリ化
17 CONFIDENTIAL © 2024 Japan Digital Design, Inc. 所感 •
肝心の正確さはこれから… • デプロイしたが2日前… • 少し試したメンバーからのフィードバック • 全体感を掴むの良い • 改善点が良い線いってるかも • 嘘つかれた(ハルシネーション) • 応答時間が長い • コードをファイルから読み込んでメモリに乗せる時間が長い • Gemini 1.5 Flash自体は高速だが、コード量が多い場合は回答も遅い 試してみての所感
18 CONFIDENTIAL © 2024 Japan Digital Design, Inc. ロングコンテキストLLMとRAG等の比較 •
DeepMindの研究チームが2024/6に発表した 『Can Long-Context Language Models Subsume Retrieval, RAG, SQL, and More?』 (*1) • ロングコンテキストなLLM(Long-context language models (LCLMs))を評価するための ベンチマークとしてLOFTが開発された • RAGとの比較も行われている ロングコンテキストLLMの未来 • 利点 • テキストや音声検索のタスクで、専門システムと同等の性能 • 多段階の推論を必要とするタスク • プロンプトエンジニアリングが容易 • 課題 • コンテキストウィンドウが増加するにつれて性能が低下する 可能性 • 複雑な構造化タスク(SQLタスク)は不得意 • リアルタイムの応答に時間がかかる 要約による利点と課題(by Claude 3) (*1) https://arxiv.org/html/2406.13121v1
19 CONFIDENTIAL © 2024 Japan Digital Design, Inc. LTのサマリ •
ロングコンテキストLLMの可能性を感じる • 「リポジトリ丸ごと入力」は難しい… • ロングコンテキストであってもデータ整備は大切 • コストは要注意 • 高性能モデルでコンテキスト丸ごと使うと大変なことに サマリ
20 CONFIDENTIAL © 2024 Japan Digital Design, Inc. さいごに •
コンテキストキャッシュや根拠づけ機能 • コンテキストキャッシュの試算とかもした • Google Cloud で生成AI使う上での利用規約上の注意点 • プレビューは注意 • 社内向けWebアプリを作った詳細 • Identity-Aware Proxy 便利 本日話さなかったこと(興味があれば聞いて下さい)
Thank you. 21 CONFIDENTIAL © 2024 Japan Digital Design, Inc.