NodeからGemini APIを使ってみる

2023.12.14

Introduction

以前から予告されていたとおり、Gemini Pro APIが使えるようになりました。
Geminiとは、2023年12月6日にGoogleから発表されたマルチモーダル大規模言語モデルです。
LaMDA/PaLM2の後継と位置づけられており、テキスト、画像、音声などのデータを
同時に認識して処理が可能とされています。

今回はこのGemoniシリーズのGemini Pro(テキスト・コード生成/チャットなどを想定)をNodeから使ってみます。
なお、他にもGemini Pro Visionと呼ばれる、テキスト・画像・動画を扱えるモデルもあります。

現時点では、Gemini Pro/Gemini Pro Visionは60req/分が無料で使えます。
GAまでは無料で使えるので、心置きなく試せます。

Environment

  • MacBook Pro (13-inch, M1, 2020)
  • OS : MacOS 13.5.2
  • node : v20.8.1

Setup

Gemini APIを使うための最も簡単な方法は、Google AI StudioでAPI Keyを取得することです。
※ Generative AI Studioではない
Google AI Studioにアクセスし、「Get API key」をおせば取得できます。

あとは環境変数に設定。

% export GEMINI_API_KEY=xxxxxxxxxx

Node用SDKをインストールしましょう。

% npm install @google/generative-ai --save

あとはこのあたりにひととおりドキュメントがあるので、それを見ればだいたい動かせるかと思います。
↓みたいな感じで、gemini-proモデルを指定してstreamingで表示させてみます。

const { GoogleGenerativeAI } = require("@google/generative-ai");

const genAI = new GoogleGenerativeAI(process.env.GEMINI_API_KEY);

async function run() {
  // For text-only input, use the gemini-pro model
  const model = genAI.getGenerativeModel({ model: "gemini-pro"});

  const prompt = "こんにちわ。あなたは誰?";

  const result = await model.generateContentStream(prompt);

  let text = '';
  for await (const chunk of result.stream) {
    //const chunkText = chunk.text();
    const chunkText = chunk.text();
    console.log(chunkText);
    text += chunkText;
  }
}

run();

実行してみます。
streamingで返事をかえしてくれました。

% node main.js
私はGoogleアシスタントです。私は会話型AIであり、情報を提供し
、タスクを実行し、質問に答えます。私は、Google検索、ニュース、天気、翻訳、アラーム、リマインダー、ナビゲ
ーション、音楽、ビデオの再生、テキストメッセージの送信、電話をかける、電子メールの送信、レストランの予約、アラームを設定するなど、さまざまなタスクを実行するように設計されています。

※何度か試してみたところ、たまに�����みたいに文字化けっぽいのが出た

Summary

とりあえずGemini ProをNodeから試してみました。
Gemini Pro Visionのほうもやってみたいところです。

現時点では入出力データがモデルの学習に使用されるらしいので注意してください。

References