@google/genai

Google Gen AI SDK for TypeScript and JavaScript

NPM Downloads Node Current


Documentation: https://googleapis.github.io/js-genai/


The Google Gen AI JavaScript SDK is an experimental SDK designed for TypeScript and JavaScript developers to build applications powered by Gemini. The SDK supports both the Gemini Developer API and Vertex AI.

The Google Gen AI SDK is designed to work with Gemini 2.0 features.

Caution

Experimental SDK: This SDK is under active development and may experience breaking changes.

Caution

API Key Security: Avoid exposing API keys in client-side code. Use server-side implementations in production environments.

  • Node.js version 18 or later
  • pnpm or npm

To install the SDK, run the following command:

npm install @google/genai

The simplest way to get started is to using an API key from Google AI Studio:

import {GoogleGenAI} from '@google/genai';
const GEMINI_API_KEY = process.env.GEMINI_API_KEY;

const ai = new GoogleGenAI({apiKey: GEMINI_API_KEY});

async function main() {
const response = await ai.models.generateContent({
model: 'gemini-2.0-flash-001',
contents: 'Why is the sky blue?',
});
console.log(response.text);
}

main();

The package contents are also available unzipped in the package/ directory of the bucket, so an equivalent web example is:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Using My Package</title>
</head>
<body>
<script type="module">
import {GoogleGenAI, Type} from 'dist/web/index.mjs';
const ai = new GoogleGenAI({apiKey:"YOUR_API_KEY"});

async function main() {
const response = await ai.models.generateContent({
model: 'gemini-2.0-flash-001',
contents: 'Why is the sky blue?',
});
console.log(response.text());
}

main();
</script>
</body>
</html>

The Google Gen AI SDK provides support for both the Google AI Studio and Vertex AI implementations of the Gemini API.

For server-side applications, initialize using an API key, which can be acquired from Google AI Studio:

import { GoogleGenAI } from '@google/genai';
const ai = new GoogleGenAI({apiKey: 'GEMINI_API_KEY'});
Caution

API Key Security: Avoid exposing API keys in client-side code. Use server-side implementations in production environments.

In the browser the initialization code is identical:

import { GoogleGenAI } from '@google/genai';
const ai = new GoogleGenAI({apiKey: 'GEMINI_API_KEY'});

Sample code for VertexAI initialization:

import { GoogleGenAI } from '@google/genai';

const ai = new GoogleGenAI({
vertexai: true,
project: 'your_project',
location: 'your_location',
});

All API features are accessed through an instance of the GoogleGenAI classes. The submodules bundle together related API methods:

  • client.models: Use models to query models (generateContent, generateImages, ...), or examine their metadata.
  • client.caches: Create and manage caches to reduce costs when repeatedly using the same large prompt prefix.
  • client.chats: Create local stateful chat objects to simplify multi turn interactions.
  • client.files: Upload files to the API and reference them in your prompts. This reduces bandwidth if you use a file many times, and handles files too large to fit inline with your prompt.
  • client.live: Start a live session for real time interaction, allows text + audio + video input, and text or audio output.

More samples can be found in the github samples directory.

For quicker, more responsive API interactions use the generateContentStream method which yields chunks as they're generated:

import {GoogleGenAI} from '@google/genai';
const GEMINI_API_KEY = process.env.GEMINI_API_KEY;

const ai = new GoogleGenAI({apiKey: GEMINI_API_KEY});

async function main() {
const response = await ai.models.generateContentStream({
model: 'gemini-2.0-flash-001',
contents: 'Write a 100-word poem.',
});
for await (const chunk of response) {
console.log(chunk.text);
}
}

main();

To let Gemini to interact with external systems, you can provide provide functionDeclaration objects as tools. To use these tools it's a 4 step

  1. Declare the function name, description, and parameters
  2. Call generateContent with function calling enabled
  3. Use the returned FunctionCall parameters to call your actual function
  4. Send the result back to the model (with history, easier in ai.chat) as a FunctionResponse
import {GoogleGenAI, FunctionCallingConfigMode, FunctionDeclaration, Type} from '@google/genai';
const GEMINI_API_KEY = process.env.GEMINI_API_KEY;

async function main() {
const controlLightDeclaration: FunctionDeclaration = {
name: 'controlLight',
parameters: {
type: Type.OBJECT,
description: 'Set the brightness and color temperature of a room light.',
properties: {
brightness: {
type: Type.NUMBER,
description:
'Light level from 0 to 100. Zero is off and 100 is full brightness.',
},
colorTemperature: {
type: Type.STRING,
description:
'Color temperature of the light fixture which can be `daylight`, `cool`, or `warm`.',
},
},
required: ['brightness', 'colorTemperature'],
},
};

const ai = new GoogleGenAI({apiKey: GEMINI_API_KEY});
const response = await ai.models.generateContent({
model: 'gemini-2.0-flash-001',
contents: 'Dim the lights so the room feels cozy and warm.',
config: {
toolConfig: {
functionCallingConfig: {
// Force it to call any function
mode: FunctionCallingConfigMode.ANY,
allowedFunctionNames: ['controlLight'],
}
},
tools: [{functionDeclarations: [controlLightDeclaration]}]
}
});

console.log(response.functionCalls);
}

main();
MMNEPVFCICPMFPCPTTAAATR