Portkey provides a robust and secure gateway to facilitate the integration of various Large Language Models (LLMs) into your applications, including Perplexity AI APIs.
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 LLM API keys through a virtual key system.
Provider Slug. perplexity-ai
Portkey SDK Integration with Perplexity AI Models
Portkey provides a consistent API to interact with models from various providers. To integrate Perplexity AI with Portkey:
1. Install the Portkey SDK
Add the Portkey SDK to your application to interact with Perplexity AI’s API through Portkey’s gateway.
npm install --save portkey-ai
npm install --save portkey-ai
2. Initialize Portkey with the Virtual Key
To use Perplexity AI with Portkey, get your API key from here, then add it to Portkey to create the virtual key.
import Portkey from 'portkey-ai'
const portkey = new Portkey({
apiKey: "PORTKEY_API_KEY", // defaults to process.env["PORTKEY_API_KEY"]
virtualKey: "VIRTUAL_KEY" // Your Perplexity AI Virtual Key
})
import Portkey from 'portkey-ai'
const portkey = new Portkey({
apiKey: "PORTKEY_API_KEY", // defaults to process.env["PORTKEY_API_KEY"]
virtualKey: "VIRTUAL_KEY" // Your Perplexity AI Virtual Key
})
from portkey_ai import Portkey
portkey = Portkey(
api_key="PORTKEY_API_KEY", # Replace with your Portkey API key
virtual_key="VIRTUAL_KEY" # Replace with your virtual key for Perplexity AI
)
3. Invoke Chat Completions with Perplexity AI
Use the Portkey instance to send requests to Perplexity AI. You can also override the virtual key directly in the API call if needed.
const chatCompletion = await portkey.chat.completions.create({
messages: [{ role: 'user', content: 'Say this is a test' }],
model: 'pplx-70b-chat',
});
console.log(chatCompletion.choices);
const chatCompletion = await portkey.chat.completions.create({
messages: [{ role: 'user', content: 'Say this is a test' }],
model: 'pplx-70b-chat',
});
console.log(chatCompletion.choices);
completion = portkey.chat.completions.create(
messages= [{ "role": 'user', "content": 'Say this is a test' }],
model= 'pplx-70b-chat'
)
print(completion)
Fetching citations
If you need to obtain citations in the response, you can disable strict open ai compliance
Perplexity-Specific Features
Perplexity AI offers several unique features that can be accessed through additional parameters in your requests:
Search Domain Filter (Beta)
You can limit citations to specific domains using the search_domain_filter
parameter. This feature is currently in closed beta and limited to 3 domains for whitelisting or blacklisting.
completion = portkey.chat.completions.create(
messages=[{"role": "user", "content": "Tell me about electric cars"}],
model="pplx-70b-chat",
search_domain_filter=["tesla.com", "ford.com", "-competitors.com"] # Use '-' prefix for blacklisting
)
completion = portkey.chat.completions.create(
messages=[{"role": "user", "content": "Tell me about electric cars"}],
model="pplx-70b-chat",
search_domain_filter=["tesla.com", "ford.com", "-competitors.com"] # Use '-' prefix for blacklisting
)
const completion = await portkey.chat.completions.create({
messages: [{ role: "user", content: "Tell me about electric cars" }],
model: "pplx-70b-chat",
search_domain_filter: ["tesla.com", "ford.com", "-competitors.com"] // Use '-' prefix for blacklisting
});
Image Results (Beta)
Enable image results in responses from online models using the return_images
parameter:
completion = portkey.chat.completions.create(
messages=[{"role": "user", "content": "Show me pictures of electric cars"}],
model="pplx-70b-chat",
return_images=True # Feature in closed beta
)
completion = portkey.chat.completions.create(
messages=[{"role": "user", "content": "Show me pictures of electric cars"}],
model="pplx-70b-chat",
return_images=True # Feature in closed beta
)
const completion = await portkey.chat.completions.create({
messages: [{ role: "user", content: "Show me pictures of electric cars" }],
model: "pplx-70b-chat",
return_images: true // Feature in closed beta
});
Get related questions in the response using the return_related_questions
parameter:
completion = portkey.chat.completions.create(
messages=[{"role": "user", "content": "Tell me about electric cars"}],
model="pplx-70b-chat",
return_related_questions=True # Feature in closed beta
)
completion = portkey.chat.completions.create(
messages=[{"role": "user", "content": "Tell me about electric cars"}],
model="pplx-70b-chat",
return_related_questions=True # Feature in closed beta
)
const completion = await portkey.chat.completions.create({
messages: [{ role: "user", content: "Tell me about electric cars" }],
model: "pplx-70b-chat",
return_related_questions: true // Feature in closed beta
});
Search Recency Filter
Filter search results based on time intervals using the search_recency_filter
parameter:
completion = portkey.chat.completions.create(
messages=[{"role": "user", "content": "What are the latest developments in electric cars?"}],
model="pplx-70b-chat",
search_recency_filter="week" # Options: month, week, day, hour
)
completion = portkey.chat.completions.create(
messages=[{"role": "user", "content": "What are the latest developments in electric cars?"}],
model="pplx-70b-chat",
search_recency_filter="week" # Options: month, week, day, hour
)
const completion = await portkey.chat.completions.create({
messages: [{ role: "user", content: "What are the latest developments in electric cars?" }],
model: "pplx-70b-chat",
search_recency_filter: "week" // Options: month, week, day, hour
});
Web Search Options
Determines how much search context is retrieved for the model.
Options are:
low
: minimizes context for cost savings but less comprehensive answers.
medium
: balanced approach suitable for most queries.
high
: maximizes context for comprehensive answers but at higher cost.
completion = portkey.chat.completions.create(
messages=[{"role": "user", "content": "What are the latest developments in electric cars?"}],
model="sonar",
web_search_options={
"search_context_size": "high"
}
)
completion = portkey.chat.completions.create(
messages=[{"role": "user", "content": "What are the latest developments in electric cars?"}],
model="sonar",
web_search_options={
"search_context_size": "high"
}
)
const completion = await portkey.chat.completions.create({
messages: [{ role: "user", content: "What are the latest developments in electric cars?" }],
model: "sonar",
web_search_options: {
"search_context_size": "high"
}
});
Search Recency Filter
Filters search results based on time (e.g., ‘week’, ‘day’).
completion = portkey.chat.completions.create(
messages=[{"role": "user", "content": "What are the latest developments in electric cars?"}],
model="sonar",
"search_recency_filter": "<string>",
)
completion = portkey.chat.completions.create(
messages=[{"role": "user", "content": "What are the latest developments in electric cars?"}],
model="sonar",
"search_recency_filter": "<string>",
)
const completion = await portkey.chat.completions.create({
messages: [{ role: "user", content: "What are the latest developments in electric cars?" }],
model: "sonar",
search_recency_filter: "<string>",
});
Managing Perplexity AI Prompts
You can manage all prompts to Perplexity AI in the Prompt Library. All the current models of Perplexity AI 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.
Next Steps
The complete list of features supported in the SDK are available on the link below.
You’ll find more information in the relevant sections:
- Add metadata to your requests
- Add gateway configs to your Perplexity AI requests
- Tracing Perplexity AI requests
- Setup a fallback from OpenAI to Perplexity AI APIs