Install the Portkey SDK

Add the Portkey SDK to your application to interact with Portkey’s gateway.

npm install --save portkey-ai

Export Portkey API Key

export PORTKEY_API_KEY=""

Basic Client Setup

The basic Portkey SDK client needs 2 required parameters

  1. The Portkey Account’s API key to authenticate all your requests
  2. The virtual key of the AI provider you want to use OR The config being used

This is achieved through headers when you’re using the REST API.

For example,

import Portkey from 'portkey-ai';

// Construct a client with a virtual key
const portkey = new Portkey({
    apiKey: "PORTKEY_API_KEY",
    virtualKey: "VIRTUAL_KEY"
})

// Construct a client with a config id
const portkey = new Portkey({
    apiKey: "PORTKEY_API_KEY",
    config: "cf-***" // Supports a string config slug or a config object
})

Find more info on what’s available through configs here.

Making a Request

You can then use the client to make completion and other calls like this

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

console.log(chatCompletion.choices);

Passing Trace ID or Metadata

You can choose to override the configuration in individual requests as well and send trace id or metadata along with each request.

const chatCompletion = await portkey.chat.completions.create({
    messages: [{ role: 'user', content: 'Say this is a test' }],
    model: 'gpt-4o',
}, {
    traceId: "39e2a60c-b47c-45d8",
    metadata: {"_user": "432erf6"}
});

console.log(chatCompletion.choices);

Async Usage

Portkey’s Python SDK supports Async usage - just use AsyncPortkey instead of Portkey with await:

Python
import asyncio
from portkey_ai import AsyncPortkey

portkey = AsyncPortkey(
    api_key="PORTKEY_API_KEY",
    virtual_key="VIRTUAL_KEY"
)

async def main():
    chat_completion = await portkey.chat.completions.create(
        messages=[{'role': 'user', 'content': 'Say this is a test'}],
        model='gpt-4'
    )

    print(chat_completion)

asyncio.run(main())

Parameters

Following are the parameter keys that you can add while creating the Portkey client.

Keeping in tune with the most popular language conventions, we use:

  • camelCase for Javascript keys

  • snake_case for Python keys

  • hyphenated-keys for the headers

ParameterTypeKey
API Key Your Portkey account’s API Key.stringrequiredapiKey
Virtual Key The virtual key created from Portkey’s vault for a specific providerstringvirtualKey
Config The slug or config object to usestringobjectconfig
Provider The AI provider to use for your calls. (supported providers).stringprovider
Base URL You can edit the URL of the gateway to use. Needed if you’re self-hosting the AI gatewaystringbaseURL
Trace ID An ID you can pass to refer to 1 or more requests later on. Generated automatically for every request, if not sent.stringtraceID
Metadata Any metadata to attach to the requests. These can be filtered later on in the analytics and log dashboards Can contain _prompt, _user, _organisation, or _environment that are special metadata types in Portkey. You can also send any other keys as part of this object.objectmetadata
Cache Force Refresh Force refresh the cache for your request by making a new call and storing that value.booleancacheForceRefresh
Cache Namespace Partition your cache based on custom strings, ignoring metadata and other headers.stringcacheNamespace
Custom Host Route to locally or privately hosted model by configuring the API URL with custom hoststringcustomHost
Forward Headers Forward sensitive headers directly to your model’s API without any processing from Portkey.array of stringforwardHeaders
Azure OpenAI Headers Configuration headers for Azure OpenAI that you can send separatelystringazureResourceName azureDeploymentId azureApiVersion azureModelName
Google Vertex AI Headers Configuration headers for Vertex AI that you can send separatelystringvertexProjectId vertexRegion
AWS Bedrock Headers Configuration headers for Bedrock that you can send separatelystringawsAccessKeyId awsSecretAccessKey awsRegion awsSessionToken