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を型安全に使うTips
Search
NakamuraTakumi
May 17, 2024
Programming
0
130
LLMを型安全に使うTips
#TSKaigi_学生LT
TypeScriptでOpenAIのGPTなどのLLMを、型安全に扱うための手法を紹介します
NakamuraTakumi
May 17, 2024
Tweet
Share
More Decks by NakamuraTakumi
See All by NakamuraTakumi
MCPで実現するAIエージェント駆動のNext.jsアプリデバッグ手法
nyatinte
8
1.3k
Other Decks in Programming
See All in Programming
2年のAppleウォレットパス開発の振り返り
muno92
PRO
0
180
Giselleで作るAI QAアシスタント 〜 Pull Requestレビューに継続的QAを
codenote
0
340
Vibe codingでおすすめの言語と開発手法
uyuki234
0
160
脳の「省エネモード」をデバッグする ~System 1(直感)と System 2(論理)の切り替え~
panda728
PRO
0
130
フルサイクルエンジニアリングをAI Agentで全自動化したい 〜構想と現在地〜
kamina_zzz
0
350
Flutter On-device AI로 완성하는 오프라인 앱, 박제창 @DevFest INCHEON 2025
itsmedreamwalker
1
190
大規模Cloud Native環境におけるFalcoの運用
owlinux1000
0
250
Spinner 軸ズレ現象を調べたらレンダリング深淵に飲まれた #レバテックMeetup
bengo4com
1
210
メルカリのリーダビリティチームが取り組む、AI時代のスケーラブルな品質文化
cloverrose
2
460
TerraformとStrands AgentsでAmazon Bedrock AgentCoreのSSO認証付きエージェントを量産しよう!
neruneruo
4
2.4k
[AtCoder Conference 2025] LLMを使った業務AHCの上⼿な解き⽅
terryu16
6
1k
生成AIを利用するだけでなく、投資できる組織へ
pospome
2
440
Featured
See All Featured
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
0
3.4k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
54
49k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
120
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
Code Reviewing Like a Champion
maltzj
527
40k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.1k
How to Talk to Developers About Accessibility
jct
1
95
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
74
Designing Powerful Visuals for Engaging Learning
tmiket
0
200
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Transcript
Takumi Nakamura (@nyatinte) 2024/5/17 #TSKaigi_学生LT LLMを型安全に使う Tips
About Me GitHub: nyatinte X: nyatinte にゃちんてと読みます Takumi Nakamura (@nyatinte)
(にゃちんて) 横浜市立大学データサイエンス学部4年 フリーランスでWebエンジニアをやっています 最近は生成AIのスタートアップで働いています TypeScript歴3年目突入 TSKaigiにも参加していました!
LLM + TypeScriptで アプリを作りたい
TypeScriptについて 教えて TypeScriptは JavaScriptの… かしこまりました。 TypeScriptは… 出力の不安定さ ユーザー LLM
私5月11日にTSKaigiというTypeScriptのカン ファレンスに参加しました。 TypeScriptに関するノウハウを得ることが でき、とても有意義な時間を過ごすできまし た。 また、参加者の人々と交流することで、モ チベーションが高めることができました。 LLMを使った擬似アプリをTSで実装したい 「LLMを利用した日本語添削ツール」 添削
型変換 誤字を含む日本語文章
Level1 工夫なしで実装する
None
型と出力フォーマットの差が 生じた時に気付けない 型アサーション(as)
Level2 TypeChat
None
Zodスキーマでレスポンスを定義 ↑を解析し、型の文字列に レスポンスのバリデーション失敗 時に、自動でリトライ
Zod スキーマ宣言とバリデーション
送信されるプロンプト
送信されるプロンプト Zodスキーマの 情報が含まれる
TypeChatの限界 変換タスクに特化している 型に変換はできるが、文章の校閲までは行えない OpenAIとAzure OpenAIのサポートはあるが、他のLLMのサポートは微妙 createFetchLanguageModelを使えば実現はできるが、型付きSDKの恩恵 を受けられない AnthropicのClaude3 Opusなどの強力なモデルが登場しているので痛い
出典: Chatbot Arena Leaderboard(2024/05/14) https://chat.lmsys.org/
Level3
求められる機能 型と出力フォーマットは常に一致する LLMの出力はバリデーションされ、安全に扱える リトライ機能 特定のLLMに依存しない 変換タスク以外もこなすことができる
型と出力フォーマットを一致させる
zod-to-ts Zodスキーマでレスポンスを定義 スキーマが文字列に変換される
None
型と出力フォーマットの 一致 リトライ機構 レスポンスの バリデーション
求められる機能 型と出力フォーマットは常に一致する → zod-to-ts LLMの出力はバリデーションされ、安全に扱える → zod リトライ機能 → ts-retryなど
特定のLLMに依存しない → OK 変換タスク以外もこなすことができる → OK
Thank you for listening!