Google Gen AI SDK for TypeScript and JavaScript

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.
Prerequisites
- Node.js version 18 or later
pnpm or npm
Installation
To install the SDK, run the following command:
npm install @google/genai
Quickstart
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();
Web quickstart
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>
Initialization
The Google Gen AI SDK provides support for both the
Google AI Studio and
Vertex AI
implementations of the Gemini API.
Gemini Developer 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'});
Browser
[!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'});
Vertex AI
Sample code for VertexAI initialization:
import { GoogleGenAI } from '@google/genai';
const ai = new GoogleGenAI({
vertexai: true,
project: 'your_project',
location: 'your_location',
});
GoogleGenAI overview
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.
Samples
More samples can be found in the
github samples directory.
Streaming
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();
Function Calling
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
- Declare the function name, description, and parameters
- Call
generateContent with function calling enabled
- Use the returned
FunctionCall parameters to call your actual function
- 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: {
mode: FunctionCallingConfigMode.ANY,
allowedFunctionNames: ['controlLight'],
}
},
tools: [{functionDeclarations: [controlLightDeclaration]}]
}
});
console.log(response.functionCalls);
}
main();