Promptfoo
Portkey brings advanced AI gateway capabilities, full-stack observability, and prompt management + versioning to your Promptfoo projects. This document provides an overview of how to leverage the strengths of both the platforms to streamline your AI development workflow.
promptfoo is an open source library (and CLI) for evaluating LLM output quality.
By using Portkey with Promptfoo you can:
- Manage, version, and collaborate on various prompts with Portkey and easily call them in Promptfoo
- Run Promptfoo on 200+ LLMs, including locally or privately hosted LLMs
- Log all requests, segment them as needed with custom metadata, and get granular cost, performance metrics for all Promptfoo runs
- Avoid Promptfoo rate limits & leverage cache
Let’s see how these work!
1. Reference Prompts from Portkey in Promptfoo
- Set the
PORTKEY_API_KEY
environment variable in your Promptfoo project - In your configuration YAML, use the
portkey://
prefix for your prompts, followed by your Portkey prompt ID.
For example:
Variables from your Promptfoo test cases will be automatically plugged into the Portkey prompt as variables. The resulting prompt will be rendered and returned to promptfoo, and used as the prompt for the test case.
Note that promptfoo does not follow the temperature, model, and other parameters set in Portkey. You must set them in the providers configuration yourself.
2. Route to Anthropic, Google, Groq, and More
- Set the
PORTKEY_API_KEY
environment variable - While adding the provider in your config YAML, set the model name with
portkey
prefix (likeportkey:gpt-4o
) - And in the
config
param, set the relevant provider for the above chosen model withportkeyProvider
(likeportkeyProvider:openai
)
For Example, to Call OpenAI
That’s it! With this, all your Promptfoo calls will now start showing up on your Portkey dashboard.
Let’s now call Anthropic
, Google
, Groq
, Ollama
Examples for Azure OpenAI
, AWS Bedrock
, Google Vertex AI
Using Virtual Keys
Without Using Virtual Keys
First, set the AZURE_OPENAI_API_KEY
environment variable.
Using Client Credentials (JSON Web Token)
You can generate a JSON web token for your client creds, and add it to the AZURE_OPENAI_API_KEY
environment variable.
3. Segment Requests, View Cost & Performance Metrics
Portkey automatically logs all the key details about your requests, including cost, tokens used, response time, request and response bodies, and more.
Using Portkey, you can also send custom metadata with each of your requests to further segment your logs for better analytics. Similarly, you can also trace multiple requests to a single trace ID and filter or view them separately in Portkey logs.
You can filter or group data by these metadata keys on Portkey dashboards.
4. Avoid Promptfoo Rate Limits & Leverage Cache
Since promptfoo can make a lot of calls very quickly, you can use a loadbalanced config in Portkey with cache enabled. You can pass the config header similar to virtual keys in promptfoo.
Here’s a sample Config that you can save in the Portkey UI and get a respective config slug:
And then we can just add the saved Config’s slug in the YAML:
[Roadmap] View the Results of Promptfoo Evals in Portkey
We’re building support to view the eval results of promptfoo in Portkey that will let you view the results of promptfoo evals within the feedback section of Portkey.
Was this page helpful?