Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

TypeScript/JavaScript SDK for Gemini and Vertex AI.

License

NotificationsYou must be signed in to change notification settings

googleapis/js-genai

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

887 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

NPM DownloadsNode Current


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


The Google Gen AI JavaScript SDK is designed forTypeScript and JavaScript developers to build applications powered by Gemini. The SDKsupports both theGemini Developer APIandVertex AI.

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

Caution

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

Code Generation

Generative models are often unaware of recent API and SDK updates and may suggest outdated or legacy code.

We recommend using our Code Generation instructionscodegen_instructions.md when generating Google Gen AI SDK code to guide your model towards using the more recent SDK features. Copy and paste the instructions into your development environment to provide the model with the necessary context.

Prerequisites

  1. Node.js version 20 or later

The following are required for Vertex AI users (excluding Vertex AI Studio)

  1. Select orcreate a Google Cloud project.

  2. Enable billing for your project.

  3. Enable the Vertex AI API.

  4. Configure authentication for your project.

    gcloud auth application-default login

A list of accepted authentication options are listed inGoogleAuthOptions interface of google-auth-library-node.js GitHub repo.

Installation

To install the SDK, run the following command:

npm install @google/genai

Quickstart

The simplest way to get started is to use an API key fromGoogle AI Studio:

import{GoogleGenAI}from'@google/genai';constGEMINI_API_KEY=process.env.GEMINI_API_KEY;constai=newGoogleGenAI({apiKey:GEMINI_API_KEY});asyncfunctionmain(){constresponse=awaitai.models.generateContent({model:'gemini-2.5-flash',contents:'Why is the sky blue?',});console.log(response.text);}main();

Initialization

The Google Gen AI SDK provides support for both theGoogle AI Studio andVertex AIimplementations of the Gemini API.

Gemini Developer API

For server-side applications, initialize using an API key, which canbe acquired fromGoogle AI Studio:

import{GoogleGenAI}from'@google/genai';constai=newGoogleGenAI({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';constai=newGoogleGenAI({apiKey:'GEMINI_API_KEY'});

Vertex AI

Sample code for VertexAI initialization:

import{GoogleGenAI}from'@google/genai';constai=newGoogleGenAI({vertexai:true,project:'your_project',location:'your_location',});

(Optional) (NodeJS only) Using environment variables:

For NodeJS environments, you can create a client by configuring the necessaryenvironment variables. Configuration setup instructions depends on whetheryou're using the Gemini Developer API or the Gemini API in Vertex AI.

Gemini Developer API: SetGOOGLE_API_KEY as shown below:

export GOOGLE_API_KEY='your-api-key'

Gemini API on Vertex AI: SetGOOGLE_GENAI_USE_VERTEXAI,GOOGLE_CLOUD_PROJECT andGOOGLE_CLOUD_LOCATION, as shown below:

export GOOGLE_GENAI_USE_VERTEXAI=trueexport GOOGLE_CLOUD_PROJECT='your-project-id'export GOOGLE_CLOUD_LOCATION='us-central1'
import{GoogleGenAI}from'@google/genai';constai=newGoogleGenAI();

API Selection

By default, the SDK uses the beta API endpoints provided by Google to supportpreview features in the APIs. The stable API endpoints can be selected bysetting the API version tov1.

To set the API version useapiVersion. For example, to set the API version tov1 for Vertex AI:

constai=newGoogleGenAI({vertexai:true,project:'your_project',location:'your_location',apiVersion:'v1'});

To set the API version tov1alpha for the Gemini Developer API:

constai=newGoogleGenAI({apiKey:'GEMINI_API_KEY',apiVersion:'v1alpha'});

GoogleGenAI overview

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

  • ai.models:Usemodels to query models (generateContent,generateImages, ...), orexamine their metadata.
  • ai.caches:Create and managecaches to reduce costs when repeatedly using the samelarge prompt prefix.
  • ai.chats:Create local statefulchat objects to simplify multi turn interactions.
  • ai.files:Uploadfiles to the API and reference them in your prompts.This reduces bandwidth if you use a file many times, and handles files toolarge to fit inline with your prompt.
  • ai.live:Start alive session for real time interaction, allows text + audio + videoinput, and text or audio output.

Samples

More samples can be found in thegithub samples directory.

Streaming

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

import{GoogleGenAI}from'@google/genai';constGEMINI_API_KEY=process.env.GEMINI_API_KEY;constai=newGoogleGenAI({apiKey:GEMINI_API_KEY});asyncfunctionmain(){constresponse=awaitai.models.generateContentStream({model:'gemini-2.5-flash',contents:'Write a 100-word poem.',});forawait(constchunkofresponse){console.log(chunk.text);}}main();

Function Calling

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

  1. Declare the function name, description, and parametersJsonSchema
  2. CallgenerateContent with function calling enabled
  3. Use the returnedFunctionCall parameters to call your actual function
  4. Send the result back to the model (with history, easier inai.chat)as aFunctionResponse
import{GoogleGenAI,FunctionCallingConfigMode,FunctionDeclaration,Type}from'@google/genai';constGEMINI_API_KEY=process.env.GEMINI_API_KEY;asyncfunctionmain(){constcontrolLightDeclaration:FunctionDeclaration={name:'controlLight',parametersJsonSchema:{type:'object',properties:{brightness:{type:'number',},colorTemperature:{type:'string',},},required:['brightness','colorTemperature'],},};constai=newGoogleGenAI({apiKey:GEMINI_API_KEY});constresponse=awaitai.models.generateContent({model:'gemini-2.5-flash',contents:'Dim the lights so the room feels cozy and warm.',config:{toolConfig:{functionCallingConfig:{// Force it to call any functionmode:FunctionCallingConfigMode.ANY,allowedFunctionNames:['controlLight'],}},tools:[{functionDeclarations:[controlLightDeclaration]}]}});console.log(response.functionCalls);}main();

Model Context Protocol (MCP) support (experimental)

Built-inMCP support is anexperimental feature. You can pass a local MCP server as a tool directly.

import{GoogleGenAI,FunctionCallingConfigMode,mcpToTool}from'@google/genai';import{Client}from"@modelcontextprotocol/sdk/client/index.js";import{StdioClientTransport}from"@modelcontextprotocol/sdk/client/stdio.js";// Create server parameters for stdio connectionconstserverParams=newStdioClientTransport({command:"npx",// Executableargs:["-y","@philschmid/weather-mcp"]// MCP Server});constclient=newClient({name:"example-client",version:"1.0.0"});// Configure the clientconstai=newGoogleGenAI({});// Initialize the connection between client and serverawaitclient.connect(serverParams);// Send request to the model with MCP toolsconstresponse=awaitai.models.generateContent({model:"gemini-2.5-flash",contents:`What is the weather in London in${newDate().toLocaleDateString()}?`,config:{tools:[mcpToTool(client)],// uses the session, will automatically call the tool using automatic function calling},});console.log(response.text);// Close the connectionawaitclient.close();

Generate Content

How to structurecontents argument forgenerateContent

The SDK allows you to specify the following types in thecontents parameter:

Content

  • Content: The SDK will wrap the singularContent instance in an array whichcontains only the given content instance
  • Content[]: No transformation happens

Part

Parts will be aggregated on a singular Content, with role 'user'.

  • Part | string: The SDK will wrap thestring orPart in aContentinstance with role 'user'.
  • Part[] | string[]: The SDK will wrap the full provided list into a singleContent with role 'user'.

NOTE: This doesn't apply toFunctionCall andFunctionResponse parts,if you are specifying those, you need to explicitly provide the fullContent[] structure making it explicit which Parts are 'spoken' by the model,or the user. The SDK will throw an exception if you try this.

Error Handling

To handle errors raised by the API, the SDK provides thisApiError class.

import{GoogleGenAI}from'@google/genai';constGEMINI_API_KEY=process.env.GEMINI_API_KEY;constai=newGoogleGenAI({apiKey:GEMINI_API_KEY});asyncfunctionmain(){awaitai.models.generateContent({model:'non-existent-model',contents:'Write a 100-word poem.',}).catch((e)=>{console.error('error name: ',e.name);console.error('error message: ',e.message);console.error('error status: ',e.status);});}main();

Interactions (Preview)

Warning: The Interactions API is inBeta. This is a preview of anexperimental feature. Features and schemas are subject tobreaking changes.

The Interactions API is a unified interface for interacting with Gemini modelsand agents. It simplifies state management, tool orchestration, and long-runningtasks.

See thedocumentation sitefor more details.

Basic Interaction

constinteraction=awaitai.interactions.create({model:'gemini-2.5-flash',input:'Hello, how are you?',});console.debug(interaction);

Stateful Conversation

The Interactions API supports server-side state management. You can continue aconversation by referencing theprevious_interaction_id.

// 1. First turnconstinteraction1=awaitai.interactions.create({model:'gemini-2.5-flash',input:'Hi, my name is Amir.',});console.debug(interaction1);// 2. Second turn (passing previous_interaction_id)constinteraction2=awaitai.interactions.create({model:'gemini-2.5-flash',input:'What is my name?',previous_interaction_id:interaction1.id,});console.debug(interaction2);

Agents (Deep Research)

You can use specialized agents likedeep-research-pro-preview-12-2025 forcomplex tasks.

functionsleep(ms:number):Promise<void>{returnnewPromise(resolve=>setTimeout(resolve,ms));}// 1. Start the Deep Research AgentconstinitialInteraction=awaitai.interactions.create({input:'Research the history of the Google TPUs with a focus on 2025 and 2026.',agent:'deep-research-pro-preview-12-2025',background:true,});console.log(`Research started. Interaction ID:${initialInteraction.id}`);// 2. Poll for resultswhile(true){constinteraction=awaitai.interactions.get(initialInteraction.id);console.log(`Status:${interaction.status}`);if(interaction.status==='completed'){console.debug('\nFinal Report:\n',interaction.outputs);break;}elseif(['failed','cancelled'].includes(interaction.status)){console.log(`Failed with status:${interaction.status}`);break;}awaitsleep(10000);// Sleep for 10 seconds}

Multimodal Input

You can provide multimodal data (text, images, audio, etc.) in the input list.

importbase64// Assuming you have a base64 string// const base64Image = ...;constinteraction=awaitai.interactions.create({model:'gemini-2.5-flash',input:[{type:'text',text:'Describe the image.'},{type:'image',data:base64Image,mime_type:'image/png'},],});console.debug(interaction);

Function Calling

You can define custom functions for the model to use. The Interactions APIhandles the tool selection, and you provide the execution result back to themodel.

// 1. Define the toolconstgetWeather=(location:string)=>{/* Gets the weather for a given location. */return`The weather in${location} is sunny.`;};// 2. Send the request with toolsletinteraction=awaitai.interactions.create({model:'gemini-2.5-flash',input:'What is the weather in Mountain View, CA?',tools:[{type:'function',name:'get_weather',description:'Gets the weather for a given location.',parameters:{type:'object',properties:{location:{type:'string',description:'The city and state, e.g. San Francisco, CA',},},required:['location'],},},],});// 3. Handle the tool callfor(constoutputofinteraction.outputs!){if(output.type==='function_call'){console.log(`Tool Call:${output.name}(${JSON.stringify(output.arguments)})`);// Execute your actual function here// Note: ensure arguments match your function signatureconstresult=getWeather(JSON.stringify(output.arguments.location));// Send result back to the modelinteraction=awaitai.interactions.create({model:'gemini-2.5-flash',previous_interaction_id:interaction.id,input:[{type:'function_result',name:output.name,call_id:output.id,result:result,},],});console.debug(`Response:${JSON.stringify(interaction)}`);}}

Built-in Tools

You can also use Google's built-in tools, such asGoogle Search orCodeExecution.

Grounding with Google Search

constinteraction=awaitai.interactions.create({model:'gemini-2.5-flash',input:'Who won the last Super Bowl',tools:[{type:'google_search'}],});console.debug(interaction);

Code Execution

constinteraction=awaitai.interactions.create({model:'gemini-2.5-flash',input:'Calculate the 50th Fibonacci number.',tools:[{type:'code_execution'}],});console.debug(interaction);

Multimodal Output

The Interactions API can generate multimodal outputs, such as images. You mustspecify theresponse_modalities.

import*asfsfrom'fs';constinteraction=awaitai.interactions.create({model:'gemini-3-pro-image-preview',input:'Generate an image of a futuristic city.',response_modalities:['image'],});for(constoutputofinteraction.outputs!){if(output.type==='image'){console.log(`Generated image with mime_type:${output.mime_type}`);// Save the imagefs.writeFileSync('generated_city.png',Buffer.from(output.data!,'base64'));}}

How is this different from the other Google AI SDKs

This SDK (@google/genai) is Google Deepmind’s "vanilla" SDK for its generativeAI offerings, and is where Google Deepmind adds new AI features.

Models hosted either on theVertex AI platform or theGemini Developer platform are accessible through this SDK.

Other SDKs may be offering additional AI frameworks on top of this SDK, or maybe targeting specific project environments (like Firebase).

The@google/generative_language and@google-cloud/vertexai SDKs are previousiterations of this SDK and are no longer receiving new Gemini 2.0+ features.


[8]ページ先頭

©2009-2026 Movatter.jp