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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
NakamuraTakumi
May 17, 2024
Programming
150
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
LLMを型安全に使うTips
#TSKaigi_学生LT
TypeScriptでOpenAIのGPTなどのLLMを、型安全に扱うための手法を紹介します
NakamuraTakumi
May 17, 2024
More Decks by NakamuraTakumi
See All by NakamuraTakumi
MCPで実現するAIエージェント駆動のNext.jsアプリデバッグ手法
nyatinte
8
1.5k
Other Decks in Programming
See All in Programming
スマートグラスで並列バイブコーディング
hyshu
0
270
20260623_Loop Engineeringで自分の分身の問い合わせBotを作る
ryugen04
0
110
Honoでのサプライチェーン侵害対策 〜 3つのライブラリに学ぶ
yusukebe
7
1.7k
LLMによるContent Moderationの本番運用の裏側と品質担保への挑戦
suikabar
3
820
気圧・高度・GPSを記録&可視化するアプリ「Koudo」を作った話
hjmkth
1
340
symfony/aiとlaravel/boost
77web
0
110
AI時代のUIはどこへ行く?その2!
yusukebe
22
7.7k
The NotImplementedError Problem in Ruby
koic
1
1.1k
エンジニアにデザインハーネスを 〜デザインプロセスを規定するためのハーネス〜 / Design harness from an engineer's perspective
rkaga
2
590
SLOをサービス品質の共通言語にするために 取り組んできたこと
wakana0222
0
280
コンテキストの使い捨てをやめる — ビジネスルール駆動開発と miko —
ioki
0
260
決定論的オーケストレーションの設計と実装 / Design and Implementation of Deterministic Orchestration
nrslib
4
1.6k
Featured
See All Featured
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
640
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Test your architecture with Archunit
thirion
1
2.3k
Docker and Python
trallard
47
3.9k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.3k
The Curse of the Amulet
leimatthew05
2
13k
30 Presentation Tips
portentint
PRO
1
340
A better future with KSS
kneath
240
18k
Done Done
chrislema
186
16k
How GitHub (no longer) Works
holman
316
150k
Crafting Experiences
bethany
1
200
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
120k
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!