💻

【Gemini Nano】Chromeブラウザで動作するAIを使ってみる。

2024/10/18に公開

Chromeブラウザには「Gemini Nano」が組み込まれており、外部APIなどを使わずにLLMを扱うことができます。

今回は、"Next.js"からGemini Nanoを使ってみました。

https://developer.chrome.com/docs/ai?hl=ja

事前準備

  1. Chromeのダウンロード
  2. chrome://flagsの設定
    • Enables optimization guide on device → 「Enabled BypassPerfRequestment」にする
    • Prompt API for Gemini Nano → 「Enabled」にする
  3. 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