ChatVertexAI
Google Vertex is a service that
exposes all foundation models available in Google Cloud, like
gemini-1.5-pro
, gemini-2.0-flash-exp
, etc. It also provides some
non-Google models such as Anthropicβs
Claude.
This will help you getting started with ChatVertexAI
chat
models. For detailed documentation of all
ChatVertexAI
features and configurations head to the API
reference.
Overviewβ
Integration detailsβ
Class | Package | Local | Serializable | PY support | Package downloads | Package latest |
---|---|---|---|---|---|---|
ChatVertexAI | @langchain/google-vertexai | β | β | β |
Model featuresβ
See the links in the table headers below for guides on how to use specific features.
Tool calling | Structured output | JSON mode | Image input | Audio input | Video input | Token-level streaming | Token usage | Logprobs |
---|---|---|---|---|---|---|---|---|
β | β | β | β | β | β | β | β | β |
Setupβ
LangChain.js supports two different authentication methods based on whether youβre running in a Node.js environment or a web environment.
To access ChatVertexAI
models youβll need to setup Google VertexAI in
your Google Cloud Platform (GCP) account, save the credentials file, and
install the @langchain/google-vertexai
integration package.
Credentialsβ
Head to your GCP account and
generate a credentials file. Once youβve done this set the
GOOGLE_APPLICATION_CREDENTIALS
environment variable:
export GOOGLE_APPLICATION_CREDENTIALS="path/to/your/credentials.json"
If running in a web environment, you should set the
GOOGLE_VERTEX_AI_WEB_CREDENTIALS
environment variable as a JSON
stringified object, and install the @langchain/google-vertexai-web
package:
GOOGLE_VERTEX_AI_WEB_CREDENTIALS={"type":"service_account","project_id":"YOUR_PROJECT-12345",...}
If you want to get automated tracing of your model calls you can also set your LangSmith API key by uncommenting below:
# export LANGCHAIN_TRACING_V2="true"
# export LANGCHAIN_API_KEY="your-api-key"
Installationβ
The LangChain ChatVertexAI
integration lives in the
@langchain/google-vertexai
package:
- npm
- yarn
- pnpm
npm i @langchain/google-vertexai @langchain/core
yarn add @langchain/google-vertexai @langchain/core
pnpm add @langchain/google-vertexai @langchain/core
Or if using in a web environment like a Vercel Edge function:
- npm
- yarn
- pnpm
npm i @langchain/google-vertexai-web @langchain/core
yarn add @langchain/google-vertexai-web @langchain/core
pnpm add @langchain/google-vertexai-web @langchain/core
Instantiationβ
Now we can instantiate our model object and generate chat completions:
import { ChatVertexAI } from "@langchain/google-vertexai";
// Uncomment the following line if you're running in a web environment:
// import { ChatVertexAI } from "@langchain/google-vertexai-web"
const llm = new ChatVertexAI({
model: "gemini-2.0-flash-exp",
temperature: 0,
maxRetries: 2,
// For web, authOptions.credentials
// authOptions: { ... }
// other params...
});
Invocationβ
const aiMsg = await llm.invoke([
[
"system",
"You are a helpful assistant that translates English to French. Translate the user sentence.",
],
["human", "I love programming."],
]);
aiMsg;
AIMessageChunk {
"content": "J'adore programmer. \n",
"additional_kwargs": {},
"response_metadata": {},
"tool_calls": [],
"tool_call_chunks": [],
"invalid_tool_calls": [],
"usage_metadata": {
"input_tokens": 20,
"output_tokens": 7,
"total_tokens": 27
}
}
console.log(aiMsg.content);
J'adore programmer.
Tool Calling with Google Search Retrievalβ
It is possible to call the model with a Google search tool which you can use to ground content generation with real-world information and reduce hallucinations.
Grounding is currently not supported by gemini-2.0-flash-exp
.
You can choose to either ground using Google Search or by using a custom data store. Here are examples of both:
Google Search Retrievalβ
Grounding example that uses Google Search:
import { ChatVertexAI } from "@langchain/google-vertexai";
const searchRetrievalTool = {
googleSearchRetrieval: {
dynamicRetrievalConfig: {
mode: "MODE_DYNAMIC", // Use Dynamic Retrieval
dynamicThreshold: 0.7, // Default for Dynamic Retrieval threshold
},
},
};
const searchRetrievalModel = new ChatVertexAI({
model: "gemini-1.5-pro",
temperature: 0,
maxRetries: 0,
}).bindTools([searchRetrievalTool]);
const searchRetrievalResult = await searchRetrievalModel.invoke(
"Who won the 2024 NBA Finals?"
);
console.log(searchRetrievalResult.content);
The Boston Celtics won the 2024 NBA Finals, defeating the Dallas Mavericks 4-1 in the series to claim their 18th NBA championship. This victory marked their first title since 2008 and established them as the team with the most NBA championships, surpassing the Los Angeles Lakers' 17 titles.
Google Search Retrieval with Data Storeβ
First, set up your data store (this is a schema of an example data store):
ID | Date | Team 1 | Score | Team 2 |
---|---|---|---|---|
3001 | 2023-09-07 | Argentina | 1 - 0 | Ecuador |
3002 | 2023-09-12 | Venezuela | 1 - 0 | Paraguay |
3003 | 2023-09-12 | Chile | 0 - 0 | Colombia |
3004 | 2023-09-12 | Peru | 0 - 1 | Brazil |
3005 | 2024-10-15 | Argentina | 6 - 0 | Bolivia |
Then, use this data store in the example provided below:
(Note that you have to use your own variables for projectId
and
datastoreId
)
import { ChatVertexAI } from "@langchain/google-vertexai";
const projectId = "YOUR_PROJECT_ID";
const datastoreId = "YOUR_DATASTORE_ID";
const searchRetrievalToolWithDataset = {
retrieval: {
vertexAiSearch: {
datastore: `projects/${projectId}/locations/global/collections/default_collection/dataStores/${datastoreId}`,
},
disableAttribution: false,
},
};
const searchRetrievalModelWithDataset = new ChatVertexAI({
model: "gemini-1.5-pro",
temperature: 0,
maxRetries: 0,
}).bindTools([searchRetrievalToolWithDataset]);
const searchRetrievalModelResult = await searchRetrievalModelWithDataset.invoke(
"What is the score of Argentina vs Bolivia football game?"
);
console.log(searchRetrievalModelResult.content);
Argentina won against Bolivia with a score of 6-0 on October 15, 2024.
You should now get results that are grounded in the data from your provided data store.
Chainingβ
We can chain our model with a prompt template like so:
import { ChatPromptTemplate } from "@langchain/core/prompts";
const prompt = ChatPromptTemplate.fromMessages([
[
"system",
"You are a helpful assistant that translates {input_language} to {output_language}.",
],
["human", "{input}"],
]);
const chain = prompt.pipe(llm);
await chain.invoke({
input_language: "English",
output_language: "German",
input: "I love programming.",
});
AIMessageChunk {
"content": "Ich liebe das Programmieren. \n",
"additional_kwargs": {},
"response_metadata": {},
"tool_calls": [],
"tool_call_chunks": [],
"invalid_tool_calls": [],
"usage_metadata": {
"input_tokens": 15,
"output_tokens": 9,
"total_tokens": 24
}
}
API referenceβ
For detailed documentation of all ChatVertexAI features and configurations head to the API reference: https://api.js.langchain.com/classes/langchain_google_vertexai.ChatVertexAI.html
Relatedβ
- Chat model conceptual guide
- Chat model how-to guides