Skip to main content


Portkey is a platform designed to streamline the deployment and management of Generative AI applications. It provides comprehensive features for monitoring, managing models, and improving the performance of your AI applications.

LLMOps for Langchain​

Portkey brings production readiness to Langchain. With Portkey, you can

  • view detailed metrics & logs for all requests,
  • enable semantic cache to reduce latency & costs,
  • implement automatic retries & fallbacks for failed requests,
  • add custom tags to requests for better tracking and analysis and more.

Using Portkey with Langchain​

Using Portkey is as simple as just choosing which Portkey features you want, enabling them via headers=Portkey.Config and passing it in your LLM calls.

To start, get your Portkey API key by signing up here. (Click the profile icon on the top left, then click on "Copy API Key")

For OpenAI, a simple integration with logging feature would look like this:

from langchain_openai import OpenAI
from langchain_community.utilities import Portkey

# Add the Portkey API Key from your account
headers = Portkey.Config(
api_key = "<PORTKEY_API_KEY>"

llm = OpenAI(temperature=0.9, headers=headers)
llm.predict("What would be a good company name for a company that makes colorful socks?")

Your logs will be captured on your Portkey dashboard.

A common Portkey X Langchain use case is to trace a chain or an agent and view all the LLM calls originating from that request.

Tracing Chains & Agents​

from langchain.agents import AgentType, initialize_agent, load_tools  
from langchain_openai import OpenAI
from langchain_community.utilities import Portkey

# Add the Portkey API Key from your account
headers = Portkey.Config(
api_key = "<PORTKEY_API_KEY>",
trace_id = "fef659"

llm = OpenAI(temperature=0, headers=headers)
tools = load_tools(["serpapi", "llm-math"], llm=llm)
agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)

# Let's test it out!"What was the high temperature in SF yesterday in Fahrenheit? What is that number raised to the .023 power?")

You can see the requests' logs along with the trace id on Portkey dashboard:

Advanced Features​

  1. Logging: Log all your LLM requests automatically by sending them through Portkey. Each request log contains timestamp, model name, total cost, request time, request json, response json, and additional Portkey features.
  2. Tracing: Trace id can be passed along with each request and is visibe on the logs on Portkey dashboard. You can also set a distinct trace id for each request. You can append user feedback to a trace id as well.
  3. Caching: Respond to previously served customers queries from cache instead of sending them again to OpenAI. Match exact strings OR semantically similar strings. Cache can save costs and reduce latencies by 20x.
  4. Retries: Automatically reprocess any unsuccessful API requests upto 5 times. Uses an exponential backoff strategy, which spaces out retry attempts to prevent network overload.
  5. Tagging: Track and audit each user interaction in high detail with predefined tags.
FeatureConfig KeyValue (Type)Required/Optional
API Keyapi_keyAPI Key (string)βœ… Required
Tracing Requeststrace_idCustom string❔ Optional
Automatic Retriesretry_countinteger [1,2,3,4,5]❔ Optional
Enabling Cachecachesimple OR semantic❔ Optional
Cache Force Refreshcache_force_refreshTrue❔ Optional
Set Cache Expirycache_ageinteger (in seconds)❔ Optional
Add Useruserstring❔ Optional
Add Organisationorganisationstring❔ Optional
Add Environmentenvironmentstring❔ Optional
Add Prompt (version/id/string)promptstring❔ Optional

Enabling all Portkey Features:​

headers = Portkey.Config(

# Mandatory

# Cache Options

# Advanced

# Metadata


For detailed information on each feature and how to use it, please refer to the Portkey docs. If you have any questions or need further assistance, reach out to us on Twitter..