Perplexity Provider
The Perplexity provider offers access to Sonar API - a language model that uniquely combines real-time web search with natural language processing. Each response is grounded in current web data and includes detailed citations, making it ideal for research, fact-checking, and obtaining up-to-date information.
API keys can be obtained from the Perplexity Platform.
Setup
The Perplexity provider is available via the @ai-sdk/perplexity module. You can install it with:
pnpm add @ai-sdk/perplexity
Provider Instance
You can import the default provider instance perplexity from @ai-sdk/perplexity:
import { perplexity } from '@ai-sdk/perplexity';For custom configuration, you can import createPerplexity and create a provider instance with your settings:
import { createPerplexity } from '@ai-sdk/perplexity';
const perplexity = createPerplexity({ apiKey: process.env.PERPLEXITY_API_KEY ?? '',});You can use the following optional settings to customize the Perplexity provider instance:
-
baseURL string
Use a different URL prefix for API calls. The default prefix is
https://api.perplexity.ai. -
apiKey string
API key that is being sent using the
Authorizationheader. It defaults to thePERPLEXITY_API_KEYenvironment variable. -
headers Record<string,string>
Custom headers to include in the requests.
-
fetch (input: RequestInfo, init?: RequestInit) => Promise<Response>
Custom fetch implementation.
Language Models
You can create Perplexity models using a provider instance:
import { perplexity } from '@ai-sdk/perplexity';import { generateText } from 'ai';
const { text } = await generateText({ model: perplexity('sonar-pro'), prompt: 'What are the latest developments in quantum computing?',});Sources
Websites that have been used to generate the response are included in the sources property of the result:
import { perplexity } from '@ai-sdk/perplexity';import { generateText } from 'ai';
const { text, sources } = await generateText({ model: perplexity('sonar-pro'), prompt: 'What are the latest developments in quantum computing?',});
console.log(sources);Provider Options & Metadata
The Perplexity provider includes additional metadata in the response through providerMetadata.
Additional configuration options are available through providerOptions.
const result = await generateText({ model: perplexity('sonar-pro'), prompt: 'What are the latest developments in quantum computing?', providerOptions: { perplexity: { return_images: true, // Enable image responses (Tier-2 Perplexity users only) search_recency_filter: 'week', // Filter search results by recency }, },});
console.log(result.providerMetadata);// Example output:// {// perplexity: {// usage: { citationTokens: 5286, numSearchQueries: 1 },// images: [// { imageUrl: "https://example.com/image1.jpg", originUrl: "https://elsewhere.com/page1", height: 1280, width: 720 },// { imageUrl: "https://example.com/image2.jpg", originUrl: "https://elsewhere.com/page2", height: 1280, width: 720 }// ]// },// }Provider Options
The following provider-specific options are available:
-
return_images boolean
Enable image responses. When set to
true, the response may include relevant images. This feature is only available to Perplexity Tier-2 users and above. -
search_recency_filter string
Filter search results by recency. Possible values:
'hour','day','week','month'. If not specified, defaults to all time.
Any other Perplexity API
parameters can
also be passed through providerOptions.perplexity.
Provider Metadata
The response metadata includes:
usage: Object containingcitationTokensandnumSearchQueriesmetricsimages: Array of image objects whenreturn_imagesis enabled (Tier-2 users only). Each image containsimageUrl,originUrl,height, andwidth.
PDF Support
The Perplexity provider supports reading PDF files.
You can pass PDF files as part of the message content using the file type:
const result = await generateText({ model: perplexity('sonar-pro'), messages: [ { role: 'user', content: [ { type: 'text', text: 'What is this document about?', }, { type: 'file', data: fs.readFileSync('./data/ai.pdf'), mediaType: 'application/pdf', filename: 'ai.pdf', // optional }, ], }, ],});You can also pass the URL of a PDF:
{ type: 'file', data: new URL('https://example.com/document.pdf'), mediaType: 'application/pdf', filename: 'document.pdf', // optional}The model will have access to the contents of the PDF file and respond to questions about it.
For more details about Perplexity's capabilities, see the Perplexity chat completion docs.
Model Capabilities
| Model | Image Input | Object Generation | Tool Usage | Tool Streaming |
|---|---|---|---|---|
sonar-deep-research | ||||
sonar-reasoning-pro | ||||
sonar-reasoning | ||||
sonar-pro | ||||
sonar |
Please see the Perplexity docs for detailed API documentation and the latest updates.