Skip to content

ClasCat® AI Research

クラスキャット – 生成 AI, AI エージェント, MCP

Menu
  • ホーム
    • ClassCat® AI Research ホーム
    • クラスキャット・ホーム
  • OpenAI API
    • OpenAI Python ライブラリ 1.x : 概要
    • OpenAI ブログ
      • GPT の紹介
      • GPT ストアの紹介
      • ChatGPT Team の紹介
    • OpenAI platform 1.x
      • Get Started : イントロダクション
      • Get Started : クイックスタート (Python)
      • Get Started : クイックスタート (Node.js)
      • Get Started : モデル
      • 機能 : 埋め込み
      • 機能 : 埋め込み (ユースケース)
      • ChatGPT : アクション – イントロダクション
      • ChatGPT : アクション – Getting started
      • ChatGPT : アクション – アクション認証
    • OpenAI ヘルプ : ChatGPT
      • ChatGPTとは何ですか?
      • ChatGPT は真実を語っていますか?
      • GPT の作成
      • GPT FAQ
      • GPT vs アシスタント
      • GPT ビルダー
    • OpenAI ヘルプ : ChatGPT > メモリ
      • FAQ
    • OpenAI ヘルプ : GPT ストア
      • 貴方の GPT をフィーチャーする
    • OpenAI Python ライブラリ 0.27 : 概要
    • OpenAI platform
      • Get Started : イントロダクション
      • Get Started : クイックスタート
      • Get Started : モデル
      • ガイド : GPT モデル
      • ガイド : 画像生成 (DALL·E)
      • ガイド : GPT-3.5 Turbo 対応 微調整
      • ガイド : 微調整 1.イントロダクション
      • ガイド : 微調整 2. データセットの準備 / ケーススタディ
      • ガイド : 埋め込み
      • ガイド : 音声テキスト変換
      • ガイド : モデレーション
      • ChatGPT プラグイン : イントロダクション
    • OpenAI Cookbook
      • 概要
      • API 使用方法 : レート制限の操作
      • API 使用方法 : tiktoken でトークンを数える方法
      • GPT : ChatGPT モデルへの入力をフォーマットする方法
      • GPT : 補完をストリームする方法
      • GPT : 大規模言語モデルを扱う方法
      • 埋め込み : 埋め込みの取得
      • GPT-3 の微調整 : 分類サンプルの微調整
      • DALL-E : DALL·E で 画像を生成して編集する方法
      • DALL·E と Segment Anything で動的マスクを作成する方法
      • Whisper プロンプティング・ガイド
  • Gemini API
    • Tutorials : クイックスタート with Python (1) テキスト-to-テキスト生成
    • (2) マルチモーダル入力 / 日本語チャット
    • (3) 埋め込みの使用
    • (4) 高度なユースケース
    • クイックスタート with Node.js
    • クイックスタート with Dart or Flutter (1) 日本語動作確認
    • Gemma
      • 概要 (README)
      • Tutorials : サンプリング
      • Tutorials : KerasNLP による Getting Started
  • Keras 3
    • 新しいマルチバックエンド Keras
    • Keras 3 について
    • Getting Started : エンジニアのための Keras 入門
    • Google Colab 上のインストールと Stable Diffusion デモ
    • コンピュータビジョン – ゼロからの画像分類
    • コンピュータビジョン – 単純な MNIST convnet
    • コンピュータビジョン – EfficientNet を使用した微調整による画像分類
    • コンピュータビジョン – Vision Transformer による画像分類
    • コンピュータビジョン – 最新の MLPモデルによる画像分類
    • コンピュータビジョン – コンパクトな畳込み Transformer
    • Keras Core
      • Keras Core 0.1
        • 新しいマルチバックエンド Keras (README)
        • Keras for TensorFlow, JAX, & PyTorch
        • 開発者ガイド : Getting started with Keras Core
        • 開発者ガイド : 関数型 API
        • 開発者ガイド : シーケンシャル・モデル
        • 開発者ガイド : サブクラス化で新しい層とモデルを作成する
        • 開発者ガイド : 独自のコールバックを書く
      • Keras Core 0.1.1 & 0.1.2 : リリースノート
      • 開発者ガイド
      • Code examples
      • Keras Stable Diffusion
        • 概要
        • 基本的な使い方 (テキスト-to-画像 / 画像-to-画像変換)
        • 混合精度のパフォーマンス
        • インペインティングの簡易アプリケーション
        • (参考) KerasCV – Stable Diffusion を使用した高性能画像生成
  • TensorFlow
    • TF 2 : 初級チュートリアル
    • TF 2 : 上級チュートリアル
    • TF 2 : ガイド
    • TF 1 : チュートリアル
    • TF 1 : ガイド
  • その他
    • 🦜️🔗 LangChain ドキュメント / ユースケース
    • Stable Diffusion WebUI
      • Google Colab で Stable Diffusion WebUI 入門
      • HuggingFace モデル / VAE の導入
      • LoRA の利用
    • Diffusion Models / 拡散モデル
  • クラスキャット
    • 会社案内
    • お問合せ
    • Facebook
    • ClassCat® Blog
Menu

Gemini API : Tutorials : クイックスタート with Node.js

Posted on 03/17/2024 by Sales Information

Gemini API : Tutorials : クイックスタート with Node.js

翻訳 : クラスキャット セールスインフォメーション
作成日時 : 03/17/2024

* 本ページは、ai.google.dev の以下のページを参考にしてまとめ直し、適宜、補足説明したものです :

  • Gemini API: Quickstart: Get started with the Gemini API in Node.js applications

* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。

 

クラスキャット 人工知能 研究開発支援サービス

◆ クラスキャット は人工知能・テレワークに関する各種サービスを提供しています。お気軽にご相談ください :

ClassCat Chatbot

  • 人工知能研究開発支援
    1. 人工知能研修サービス(経営者層向けオンサイト研修)
    2. テクニカルコンサルティングサービス
    3. 実証実験(プロトタイプ構築)
    4. アプリケーションへの実装

  • 人工知能研修サービス

  • PoC(概念実証)を失敗させないための支援
◆ 人工知能とビジネスをテーマに WEB セミナーを定期的に開催しています。スケジュール。
  • お住まいの地域に関係なく Web ブラウザからご参加頂けます。事前登録 が必要ですのでご注意ください。

◆ お問合せ : 本件に関するお問い合わせ先は下記までお願いいたします。

  • クラスキャット セールス・マーケティング本部 セールス・インフォメーション
  • sales-info@classcat.com  ;  Website: www.classcat.com  ;   ClassCatJP

 

Gemini API : Tutorials : クイックスタート with Node.js

クイックスタート : Node.js アプリケーションで Gemini API を始めましょう

 

要件

このクイックスタートは貴方が Node.js を使用したアプリケーションを構築することに馴染みがあることを想定しています。

このクイックスタートを完了するため、開発環境が以下の要件を満たしていることを確認してください :

  • Node.js v18+
  • npm

 

プロジェクトのセットアップ

Gemini API を呼び出す前に、プロジェクトのセットアップが必要です、それは API キーのセットアップ、SDK パッケージのインストール、そしてモデルの初期化を含みます。

 

API キーのセットアップ

Gemini API を使用するには、API キーが必要です。まだ持っていない場合、Google AI Studio でキーを作成します。

  • API キーの取得

 

API キーを保護する

API キーをバージョン管理システムにチェックインしないことが強く推奨されます。代わりに API キー用にシークレット・ストアを使用する必要があります。

このクイックスタートのすべてのスニペットは、API キーに環境変数としてアクセスしていることを仮定しています。

 

SDK パッケージのインストール

独自のアプリケーションで Gemini API を使用するには、Node.js 用の GoogleGenerativeAI パッケージをインストールする必要があります :

npm install @google/generative-ai

 

生成モデルの初期化

API 呼び出しをする前に、生成モデルを初期化してインポートする必要があります。

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

// Access your API key as an environment variable (see "Set up your API key" above)
const genAI = new GoogleGenerativeAI(process.env.API_KEY);

// ...

const model = genAI.getGenerativeModel({ model: "MODEL_NAME"});

// ...

モデルを指定するとき、以下に注意してください :

  • 貴方のユースケースに特定のモデルを使用してください (例えば、gemini-pro-vision はマルチモーダル入力用です)。このガイド内には、各実装用の指示に各ユースケース用の推奨モデルをリストアップしています。

⭐️ Note : 利用可能なモデルの詳細情報については、それらの機能やレート制限も含めて、Gemini モデル をご覧ください。Gemini-Pro モデルのレート制限は毎分 60 リクエスト (RPM) で、レート制限の引き上げ をリクエストするオプションがあります。

 

一般的なユースケースの実装

テキスト-only 入力からテキストを生成する

プロンプト入力がテキストだけを含む場合、generateContent メソッドで gemini-pro モデルを使用してテキスト出力を生成します :

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

// Access your API key as an environment variable (see "Set up your API key" above)
const genAI = new GoogleGenerativeAI(process.env.API_KEY);

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

  const prompt = "Write a story about a magic backpack."

  const result = await model.generateContent(prompt);
  const response = await result.response;
  const text = response.text();
  console.log(text);
}

run();

⭐️ Gemini API はまたストリーミングをサポートします ; 詳細は、(このガイドの) Use streaming for faster interactions をご覧ください。

 

テキストと画像入力 (マルチモーダル) からテキストを生成する

Gemini はマルチモーダル・モデル (gemini-pro-vision) を提供していますので、テキストと画像の両方を入力できます。プロンプト用の画像の要件 を必ずレビューしてください。

プロンプト入力がテキストと画像の両方を含む場合、generateContent メソッドで gemini-pro-vision モデルを使用してテキスト出力を生成します :

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

// Access your API key as an environment variable (see "Set up your API key" above)
const genAI = new GoogleGenerativeAI(process.env.API_KEY);

// Converts local file information to a GoogleGenerativeAI.Part object.
function fileToGenerativePart(path, mimeType) {
  return {
    inlineData: {
      data: Buffer.from(fs.readFileSync(path)).toString("base64"),
      mimeType
    },
  };
}

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

  const prompt = "What's different between these pictures?";

  const imageParts = [
    fileToGenerativePart("image1.png", "image/png"),
    fileToGenerativePart("image2.jpeg", "image/jpeg"),
  ];

  const result = await model.generateContent([prompt, ...imageParts]);
  const response = await result.response;
  const text = response.text();
  console.log(text);
}

run();

 

マルチターン会話 (チャット) の構築

Gemini を使用して、複数ターンに渡る自由形式の会話を構築することができます。SDK は会話の状態を管理することでプロセスを単純化しますので、generateContent とは異なり、会話履歴を貴方自身でストアする必要がありません。

(チャットのような) マルチターン会話を構築するには、gemini-pro モデルを使用して、startChat() を呼び出してチャットを初期化します。それから sendMessage() を使用して新しいユーザメッセージを送信します、これはまたメッセージと応答をチャット履歴に追加します。

会話のコンテンツに関連する role のために 2 つの可能なオプションがあります :

  • user: プロンプトを提供する role です。この値は sendMessage 呼び出しのためのデフォルトです。

  • model: 応答を提供する role です。このロールは既存の history を使用して startChat() を呼び出すときに使用できます。
const { GoogleGenerativeAI } = require("@google/generative-ai");

// Access your API key as an environment variable (see "Set up your API key" above)
const genAI = new GoogleGenerativeAI(process.env.API_KEY);

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

  const chat = model.startChat({
    history: [
      {
        role: "user",
        parts: "Hello, I have 2 dogs in my house.",
      },
      {
        role: "model",
        parts: "Great to meet you. What would you like to know?",
      },
    ],
    generationConfig: {
      maxOutputTokens: 100,
    },
  });

  const msg = "How many paws are in my house?";

  const result = await chat.sendMessage(msg);
  const response = await result.response;
  const text = response.text();
  console.log(text);
}

run();

 

より高速な相互作用のためにストリーミングを使用する

デフォルトでは、モデルは生成プロセス全体を完了した後に応答を返します。全体の結果を待つ代わりにストリーミングを使用して部分的な結果を処理することで、より高速な相互作用を実現できます。

以下の例は、テキストと画像の入力プロンプトからテキストを生成するために generateContentStream メソッドでストリーミングを実装する方法を示します。

//...

const result = await model.generateContentStream([prompt, ...imageParts]);

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

//...

テキスト-only 入力とチャットのユースケースのために同様のアプローチを使用することができます。

// Use streaming with text-only input
const result = await model.generateContentStream(prompt);
// Use streaming with multi-turn conversations (like chat)
const result = await model.sendMessageStream(msg);

 

高度なユースケースの実装

このクイックスタートの前のセクションで説明された一般的なユースケースは Gemini API の使用に慣れるのに役立ちます。このセクションはより高度と考えても良い幾つかのユースケースを説明します。

 

埋め込みの使用

埋め込み は、情報を配列内の浮動小数点数のリストとして表現するために使用されるテクニックです。Gemini では、テキスト (単語、センテンス、そしてテキストブロック) をベクトル化形式で表現できて、埋め込みを比較して対比することを簡単にします。例えば、類似の主題や感情を共有する 2 つのテキストは類似の埋め込みを持つはずで、コサイン類似度のような数学的比較テクニックで識別できます。

embedding-001 モデルを embedContent メソッド (or batchEmbedContent メソッド) を使用して埋め込みを生成します。以下の例は単一文字列の埋め込みを生成します :

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

// Access your API key as an environment variable (see "Set up your API key" above)
const genAI = new GoogleGenerativeAI(process.env.API_KEY);

async function run() {
  // For embeddings, use the embedding-001 model
  const model = genAI.getGenerativeModel({ model: "embedding-001"});

  const text = "The quick brown fox jumps over the lazy dog."

  const result = await model.embedContent(text);
  const embedding = result.embedding;
  console.log(embedding.values);
}

run();

 

トークンをカウントする

長いプロンプトを使用する場合、コンテンツをモデルに送信する前にトークンをカウントすることは有用かもしれません。以下の例は様々なユースケースのために countTokens() を使用する方法を示します :

// For text-only input
const { totalTokens } = await model.countTokens(prompt);
// For text-and-image input (multimodal)
const { totalTokens } = await model.countTokens([prompt, ...imageParts]);
// For multi-turn conversations (like chat)
const history = await chat.getHistory();
const msgContent = { role: "user", parts: [{ text: msg }] };
const contents = [...history, msgContent];
const { totalTokens } = await model.countTokens({ contents });

 

コンテンツ生成を制御するオプション

モデルパラメータを configure してセーフティ設定を使用することでコンテンツ生成を制御できます。

generationConfig や safetySettings を (generateContent のような) モデル・リクエスト・メソッドに渡すことは、getGenerativeModel で渡された同じ名前を持つ configuration オブジェクトを完全にオーバーライドすることに注意してください。

 

モデルパラメータの構成設定

モデルに送信するすべてのプロンプトは、モデルが応答を生成する方法を制御するパラメータ値を含みます。モデルは異なるパラメータ値に対して異なる結果を生成できます。Model パラメータ について更に学習してください。

const generationConfig = {
  stopSequences: ["red"],
  maxOutputTokens: 200,
  temperature: 0.9,
  topP: 0.1,
  topK: 16,
};

const model = genAI.getGenerativeModel({ model: "MODEL_NAME",  generationConfig });

 

セーフティ設定の使用

セーフティ設定を使用して、有害であると考えられる応答を得る尤度を調整することができます。デフォルトでは、セーフティ設定はすべての次元に渡り安全でないコンテンツである確率が中程度 and/or 高いコンテンツをブロックします。セーフティ設定 について更に学習してください。

ここに一つのセーフティ設定を設定する方法があります :

import { HarmBlockThreshold, HarmCategory } from "@google/generative-ai";

// ...

const safetySettings = [
  {
    category: HarmCategory.HARM_CATEGORY_HARASSMENT,
    threshold: HarmBlockThreshold.BLOCK_ONLY_HIGH,
  },
];

const model = genAI.getGenerativeModel({ model: "MODEL_NAME", safetySettings });

You can also set more than one safety setting:

const safetySettings = [
  {
    category: HarmCategory.HARM_CATEGORY_HARASSMENT,
    threshold: HarmBlockThreshold.BLOCK_ONLY_HIGH,
  },
  {
    category: HarmCategory.HARM_CATEGORY_HATE_SPEECH,
    threshold: HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE,
  },
];

 

以上



クラスキャット

最近の投稿

  • LangGraph on Colab : マルチエージェント・スーパーバイザー
  • LangGraph on Colab : エージェント型 RAG
  • LangGraph : 例題 : エージェント型 RAG
  • LangGraph Platform : Get started : クイックスタート
  • LangGraph Platform : 概要

タグ

AutoGen (13) ClassCat Press Release (20) ClassCat TF/ONNX Hub (11) DGL 0.5 (14) Eager Execution (7) Edward (17) FLUX.1 (16) Gemini (20) HuggingFace Transformers 4.5 (10) HuggingFace Transformers 4.6 (7) HuggingFace Transformers 4.29 (9) Keras 2 Examples (98) Keras 2 Guide (16) Keras 3 (10) Keras Release Note (17) Kubeflow 1.0 (10) LangChain (45) LangGraph (23) MediaPipe 0.8 (11) Model Context Protocol (16) NNI 1.5 (16) OpenAI Agents SDK (8) OpenAI Cookbook (13) OpenAI platform (10) OpenAI platform 1.x (10) OpenAI ヘルプ (8) TensorFlow 2.0 Advanced Tutorials (33) TensorFlow 2.0 Advanced Tutorials (Alpha) (15) TensorFlow 2.0 Advanced Tutorials (Beta) (16) TensorFlow 2.0 Guide (10) TensorFlow 2.0 Guide (Alpha) (16) TensorFlow 2.0 Guide (Beta) (9) TensorFlow 2.0 Release Note (12) TensorFlow 2.0 Tutorials (20) TensorFlow 2.0 Tutorials (Alpha) (14) TensorFlow 2.0 Tutorials (Beta) (12) TensorFlow 2.4 Guide (24) TensorFlow Deploy (8) TensorFlow Get Started (7) TensorFlow Graphics (7) TensorFlow Probability (9) TensorFlow Programmer's Guide (22) TensorFlow Release Note (18) TensorFlow Tutorials (33) TF-Agents 0.4 (11)
2024年3月
月 火 水 木 金 土 日
 123
45678910
11121314151617
18192021222324
25262728293031
« 2月   4月 »
© 2025 ClasCat® AI Research | Powered by Minimalist Blog WordPress Theme