Vercel AI SDK を使って Next.js で AIアプリケーションを 作成する方法のご紹介
by
sutetotanuki
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
Vercel AI SDK を使って Next.js で AIアプリケーションを 作成する⽅法のご紹介 1
Slide 2
Slide 2 text
2 今⽇喋ること ● AIをWEBに組み込むモチベーション ● Vercel の AI SDKとは? ● 組み込みの例 ● もっと知りたい⽅へ ● まとめ
Slide 3
Slide 3 text
3 今⽇喋ること ● AIをWEBに組み込むモチベーション ● Vercel の AI SDKとは? ● 組み込みの例 ● もっと知りたい⽅へ ● まとめ
Slide 4
Slide 4 text
4 AIをWEBアプリに組み込むよくある活⽤例 ● RAGで⾃社特有の情報をチャットで検索 ● 公開する⽂章をAIを使って添削 ● デザインシステムで拡張したAIでUI⽣成
Slide 5
Slide 5 text
5 AIを組み込む時のよくある実装 ● AIとのAPI通信 ○ AIとはAPIで通信する ● チャットの履歴の保持 ○ コンテキストを履歴からAIに与える ● ストリーミング機能 ○ AIは処理が完了するまで時間がかかる ● RAG ○ LLM(AI)に外部情報を組み合わせる
Slide 6
Slide 6 text
6 AIの組み込みをサポートするライブラリ ● LangChain ● LlmaxIndex ● HeyStack ● AI SDK
Slide 7
Slide 7 text
7 今⽇喋ること ● AIをWEBに組み込むモチベーション ● Vercel の AI SDKとは? ● 組み込みの例 ● もっと知りたい⽅へ ● まとめ
Slide 8
Slide 8 text
8 Vercel の AI SDKとは? フロントエンドフレームワークを使って 作成したWEBアプリケーションに AIを活⽤した機能を組み込むためのSDK
Slide 9
Slide 9 text
9 AI SDKの対応フレームワーク ● React ● Next.js(RSCも experimental だけど対応) ● Svelte ● Nuxt ● Node.js
Slide 10
Slide 10 text
10 AI SDKの主要な機能 ● Provider and Models ● Prompts ● Tools ● Streaming
Slide 11
Slide 11 text
11 Provider and Models 複数のAI提供元やモデルをコードの 変更なしに⼊れ替えることができる AI SDK
Slide 12
Slide 12 text
12 Provider and Models - 対応 Provider ● OpenAI ● Azure ● Anthropic ● Amazon Bedrock ● Google Vertex ● Cohere ● LLmaCPP ● …etc
Slide 13
Slide 13 text
13 Provider and Models - 注意点 ただし、全てのAI SDKの機能を全てのモデルで 使えるわけでない点に注意が必要 例えばgpt-4は画像⼊⼒機能は使えない
Slide 14
Slide 14 text
14 Prompts AI SDKは複数種類のプロンプトを提供してる ● テキストプロンプト ● 画像プロンプト ● システムプロンプト ● メッセージプロンプト
Slide 15
Slide 15 text
15 Prompts - システムプロンプト システムに制約を加えたい時に 設定するプロンプト あなたは⼦供向け教育AIです。 ⼩学3年⽣でも理解できる⾔葉を使い、100語以内で回答してください。 専⾨⽤語は簡単に説明し、回答の最後に関連した⾯⽩い雑学か質問を加えてくだ さい 例)
Slide 16
Slide 16 text
16 Prompts - メッセージプロンプト AIにメッセージを配列で指定することができる 会話の履歴をAIに渡しコンテキストを⾼めれる messages: [ { role: 'user', content: '質問していいですか?' }, { role: 'assistant', content: '⼤丈夫です。何が聞きたいですか?' }, { role: 'user', content: '⽣成AIについて概要を教えてください' }, ],
Slide 17
Slide 17 text
17 Tools AIはAIの外側の世界に⼲渉することができない そのため、APIを呼び出し等を⾏えなかったり 学習されていないリアルタイムの情報を取得で きない。これらを解決するのが Tools
Slide 18
Slide 18 text
18 Tools AIから呼び出される関数をあらかじめ⽤意して おき。AIが与えられたコンテキストから、 関数を選んで呼び出す function getWeather... function doSomething... 現在の天気を教えて ユーザーの⼊⼒からAIが判断し呼び出し
Slide 19
Slide 19 text
19 Tools AIに外界との接点となるToolsを使うことで 以下のようなことが可能になる ● リアルタイム情報の取得 ● 外部APIの呼び出し(例: 予約API、購⼊API)
Slide 20
Slide 20 text
20 Streaming ⽣成AIは返答を返すのに時間がかかる。 その間ローディングを表⽰することになる 少しずつ回答を表⽰することで ユーザー体験を向上できる
Slide 21
Slide 21 text
21 今⽇喋ること ● AIをWEBに組み込むモチベーション ● Vercel の AI SDKとは? ● 組み込みの例 ● もっと知りたい⽅へ ● まとめ
Slide 22
Slide 22 text
22 組み込みの例 AI SDKを使って作った2つのサンプルアプリを 例に組み込みの実例を紹介 1. チャットアプリ 2. 添削アプリ
Slide 23
Slide 23 text
23 1. チャットアプリ ⽣成AIを使ったシンプルなチャットをNext.jsで 作成したWEBアプリケーションに組み込みます 徐々に回答が表⽰ (ストリーミング)
Slide 24
Slide 24 text
24 チャットアプリ - 使⽤してるAI SDKの機能 以下のAI SDKの機能を使⽤ ● Provider ○ Amazon Bedrock Provider ● Message Prompts ○ 会話履歴のやり取り ● Streaming ○ 徐々にレスポンスを表⽰する
Slide 25
Slide 25 text
25 チャットアプリ - 全体構成 Next.jsのAPI Routeでエンドポイントを作成し そこからAIと通信 Amazon Bedrock Component GET /api/chat API Route Provider
Slide 26
Slide 26 text
26 チャットアプリ - API通信 APIとコンポーネントはMessage Promptで 会話履歴を全てペイロードに載せて通信 APIからのレスポンスはStreamingで返却 Streaming GET /api/chat Message Prompt
Slide 27
Slide 27 text
27 チャットアプリ - Providerの設定 Amazon Bedrockを使う場合それ⽤の Providerをインストールし、 Bedrockに渡すパラメーターを設定する $ pnpm add @ai-sdk/amazon-bedrock
Slide 28
Slide 28 text
28 チャットアプリ - Providerの設定 Modelを指定
Slide 29
Slide 29 text
29 チャットアプリ - API Streamでレスポンスを返したいので AI SDKが提供してるstreamText関数を使⽤ これだけでストリームでレスポンスできる
Slide 30
Slide 30 text
30 チャットアプリ - UI AI SDKが提供してる useChat カスタム フックをつかつ Messages Prompts で会話履歴のデータ がストリームで受信 される
Slide 31
Slide 31 text
31 2. 添削アプリ 映画レビューのサイトの 添削機能をイメージ 以下をチェック ● Typo ● ネタバレの有無 ● 不適切な表現の有無 ● 全体的な添削
Slide 32
Slide 32 text
32 2. 添削アプリ ネタバレの有無を表⽰ 誤字をエディタ上で 添削
Slide 33
Slide 33 text
33 添削アプリ - 使⽤してるAI SDKの機能 以下の機能を使⽤ ● Provider ○ Amazon Bedrock Provider ● Generate Object ○ AIのレスポンスがオブジェクトになる
Slide 34
Slide 34 text
34 添削アプリ - 全体像 AIにレビュー内容をテキストで送信 レスポンスはUIで扱いやすい構造化データ Generate Object Prompt 猫好きなので... { “containsSpoiler”: false, }
Slide 35
Slide 35 text
35 添削アプリ - API AI SDKが提供する generateObject関数を 使い以下を指定 ● システムプロンプト ● zodでレスポンスの スキーマ
Slide 36
Slide 36 text
36 添削アプリ - システムプロンプト 役割を与え、レスポンスのオブジェクトに 設定する内容を⾃然⾔語で指⽰してます あなたは、映画のレビューサイトに投稿されるレビューを添削するAIです。 ユーザーから与えられた情報を添削してください 添削する内容は以下の通りです 1. 誤字、脱字、⽂章の誤り 2. ネタバレの有無 3. 社会良俗に反する表現の有無 4. 全体を通しての添削 1の指摘は誤ってる⽂字をハイライトさせるため、JSON形式で誤ってる⽂字の開 始、終了位置、⼊れ替えると正しくなる⽂字を配列で返してください
Slide 37
Slide 37 text
37 添削アプリ - オブジェクト { // typoの位置情報 “typo”: { “start”: 0, “end”: 3, “text”: “ます” } // 文章中にネタバレがあるかどうか “containsSpoiler”: true, // 公序良俗に反する記述があるかどうか “containsInappropriateExpression”: false }
Slide 38
Slide 38 text
38 添削アプリ - レスポンスの定義 AIからのレスポンスをZodで定義する
Slide 39
Slide 39 text
39 添削アプリ - UI AI SDKのuseObject カスタムフックを使い AIからのデータを取得 (AIからのデータを オブジェクトに変換す る処理はAI-SDKのなか に隠蔽されてる)
Slide 40
Slide 40 text
40 添削アプリ - UI - ネタバレの有無 AIからのレスポンスを元にDOMを更新 { // 文章中にネタバレがあるかどうか “containsSpoiler”: true, }
Slide 41
Slide 41 text
41 添削アプリ - UI - Typo添削 AIからのレスポンスを元にDOMを更新 楽しめまあた “typo”: { “start”: 10, “end”: 12, “text”: “ました” } 楽しめ
まあた
ました 誤字の箇所に取り消し線をつけ 後ろに正しい⽂字列を付与
Slide 42
Slide 42 text
42 組み込みの例 AI SDKを使うと⽇頃書いてる React のコードに 簡単にAIの機能を組み込むことができる
Slide 43
Slide 43 text
43 今⽇喋ること ● AIをWEBに組み込むモチベーション ● Vercel の AI SDKとは? ● 組み込みの例 ● もっと知りたい⽅へ ● まとめ
Slide 44
Slide 44 text
44 もっと知りたい⽅へ ● 公式ドキュメントをみる ○ https://sdk.vercel.ai/ ● AI SDKを利⽤しているオープンソースを読む ○ https://github.com/supabase-community/postgres-new
Slide 45
Slide 45 text
45 まとめ ● AIをWEBアプリに組み込むと今までは難し かったことが簡単にできる ● AIをフロントエンドに簡単に組み込むSDKが VercelのAI SDK ● AI SDKの主要機能 ○ Provider, Prompts, Tools, Streaming ● ⼯夫次第でいろんなユースケースで使える
Slide 46
Slide 46 text
46