Portkey provides a robust and secure gateway to facilitate the integration of various Large Language Models (LLMs), and embedding models into your apps, including Google Vertex AI.

With Portkey, you can take advantage of features like fast AI gateway access, observability, prompt management, and more, all while ensuring the secure management of your Vertex auth through a virtual key system.s

Provider Slug. vertex-ai

Portkey SDK Integration with Google Vertex AI

Portkey provides a consistent API to interact with models from various providers. To integrate Google Vertex AI with Portkey:

1. Install the Portkey SDK

Add the Portkey SDK to your application to interact with Google Vertex AI API through Portkey’s gateway.

npm install --save portkey-ai

2. Initialize Portkey with the Virtual Key

To integrate Vertex AI with Portkey, you’ll need your **Vertex Project Id** & **Vertex Region**, with which you can set up the Virtual key.

Here’s a guide on how to find your Vertex Project details.

If you are integrating through Service Account File, refer to this guide.

import Portkey from 'portkey-ai'

const portkey = new Portkey({
    apiKey: "PORTKEY_API_KEY", // defaults to process.env["PORTKEY_API_KEY"]
    virtualKey: "VERTEX_VIRTUAL_KEY", // Your Vertex AI Virtual Key
})

If you do not want to add your Vertex AI details to Portkey vault, you can directly pass them while instantiating the Portkey client. More on that here.

3. Invoke Chat Completions with Vertex AI and Gemini

Use the Portkey instance to send requests to Gemini models hosted on Vertex AI. You can also override the virtual key directly in the API call if needed.

Vertex AI uses OAuth2 to authenticate its requests, so you need to send the access token additionally along with the request.

const chatCompletion = await portkey.chat.completions.create({
    messages: [{ role: 'user', content: 'Say this is a test' }],
    model: 'gemini-pro',
}, {authorization: "vertex ai access token here"});

console.log(chatCompletion.choices);

To use an anthopic model, you need to prepend anthropic. to the model name. example: anthropic.claude-3-5-sonnet@20240620 similarly for meta models, you need to prepend meta. to the model name. example: meta.llama-3-8b-8192

Text Embedding Models

You can use any of Vertex AI’s English and Multilingual models through Portkey, in the familar OpenAI-schema.

The Gemini-specific parameter task_type is also supported on Portkey.

import Portkey from 'portkey-ai';

const portkey = new Portkey({
    apiKey: "PORTKEY_API_KEY",
    virtualKey: "VERTEX_VIRTUAL_KEY"
});

// Generate embeddings
async function getEmbeddings() {
    const embeddings = await portkey.embeddings.create({
        input: "embed this",
        model: "text-multilingual-embedding-002",
        // @ts-ignore (if using typescript)
        task_type: "CLASSIFICATION", // Optional
    }, {authorization: "vertex ai access token here"});

    console.log(embeddings);
}
await getEmbeddings();

Function Calling

Portkey supports function calling mode on Google’s Gemini Models. Explore this

Cookbook for a deep dive and examples:

Managing Vertex AI Prompts

You can manage all prompts to Google Gemini in the Prompt Library. All the models in the model garden are supported and you can easily start testing different prompts.

Once you’re ready with your prompt, you can use the portkey.prompts.completions.create interface to use the prompt in your application.

Making Requests Without Virtual Keys

You can also pass your Vertex AI details & secrets directly without using the Virtual Keys in Portkey.

Vertex AI expects a **region**, a **project ID** and the **access token** in the request for a successful completion request. This is how you can specify these fields directly in your requests:

import Portkey from 'portkey-ai'

const portkey = new Portkey({
    apiKey: "PORTKEY_API_KEY",
    vertexProjectId: "sample-55646",
    vertexRegion: "us-central1",
    provider:"vertex_ai",
    Authorization: "$GCLOUD AUTH PRINT-ACCESS-TOKEN"
})

const chatCompletion = await portkey.chat.completions.create({
    messages: [{ role: 'user', content: 'Say this is a test' }],
    model: 'gemini-pro',
});

console.log(chatCompletion.choices);

Other Vertex AI Endpoints

Embeddings

Gemini models hosted on Vertex AI support embeddings natively (refer here for more details). You can use Portkey to send embeddings requests to these models.

Portkey additionaly supports the task_type optional parameter for Gemini models.

import { Portkey } from "portkey-ai";

const portkey = new Portkey({
    apiKey: `${PORTKEY_API_KEY}`,
    provider: "vertex-ai",
    Authorization: `Bearer ${VERTEX_AI_ACCESS_TOKEN}`,
    vertexProjectId: `${VERTEX_PROJECT_ID}`,
    vertexRegion: `${VERTEX_REGION}`,
})

const embeddings = portkey.embeddings.create({
    model: "textembedding-gecko@003",
    input: "A HTTP 246 code is used to signify an AI response containing hallucinations or other inaccuracies",
    // @ts-ignore (if using typescript)
    task_type: "CLASSIFICATION", // Optional
})

embeddings.then((res) => {
    console.log(res.data)
})

For further questions on custom Vertex AI deployments or fine-grained access tokens, reach out to us on [email protected]


How to Find Your Google Vertex Project Details

To obtain your Vertex Project ID and Region, navigate to Google Vertex Dashboard.

  • You can copy the Project ID located at the top left corner of your screen.
  • Find the Region dropdown on the same page to get your Vertex Region.

Get Your Vertex Service Account JSON


Next Steps

The complete list of features supported in the SDK are available on the link below.

SDK

You’ll find more information in the relevant sections:

  1. Add metadata to your requests
  2. Add gateway configs to your Vertex AI requests
  3. Tracing Vertex AI requests
  4. Setup a fallback from OpenAI to Vertex AI APIs