💻
【Gemini Nano】Chromeブラウザで動作するAIを使ってみる。
Chromeブラウザには「Gemini Nano」が組み込まれており、外部APIなどを使わずにLLMを扱うことができます。
今回は、"Next.js"からGemini Nanoを使ってみました。
事前準備
- Chromeのダウンロード
-
chrome://flags
の設定-
Enables optimization guide on device
→ 「Enabled BypassPerfRequestment」にする -
Prompt API for Gemini Nano
→ 「Enabled」にする
-
-
chrome://components
の設定-
Optimization Guide On Device Model
の「アップデートを確認」
-
Gemini Nano の主な機能
セッションを作成する
const session = await window.ai.assistant.create();
session
console.log(session);
// AITextSession {
// maxTokens: 4096,
// tokensSoFar: 0,
// tokensLeft: 4096,
// topK: 3,
// temperature: 0.800000011920929
// }
回答を生成する
const result = await session.prompt("こんにちは!");
result
console.log(result);
// こんにちは、
回答をストリーミング生成する
const result = await session.promptStreaming("こんにちは!あなたの名前は?");
result
for await (const chunk of result) {
console.log(chunk);
}
// こんにちは、
// こんにちは、私の
// こんにちは、私の名前
// こんにちは、私の名前は
// こんにちは、私の名前はChat
// こんにちは、私の名前はChatGPT
// こんにちは、私の名前はChatGPTです
Gemini Nanoの利用状態を取得する
const capabilities = await window.ai.assistant.capabilities();
capabilities
console.log(capabilities);
// AIAssistantCapabilities {
// available: 'readily',
// defaultTopK: 3,
// maxTopK: 128,
// defaultTemperature: 0.800000011920929
// }
available
-
readily
→ 利用できる -
after-download
→ 利用前にダウンロードが必要 -
no
→ 利用不可
システムプロンプトを追加する
const session = await window.ai.assistant.create({
systemPrompt: "あなたはアシスタントAIです。",
});
システムプロンプト + 応答例を追加する
const session = await window.ai.assistant.create({
initialPrompts: [
{ role: "system", content: "コメントに対して最大5つの絵文字を予測し、出力してください。絵文字はカンマ区切りで出力します。" },
{ role: "user", content: "これはすごい!" },
{ role: "assistant", content: "❤️, ➕" },
{ role: "user", content: "LGTM" },
{ role: "assistant", content: "👍, 🚢" }
]
});
まとめ
Gemini Nanoは小さいモデルなので、もちろん通常のAPIで呼び出すようなモデルよりは精度が劣ります。
ただ今後ブラウザやデバイスに標準搭載されることで、より高速で使えたり、料金を気にせずに使えたり、できることが結構増えそうですね。楽しみ。
Discussion