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) }, },});
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 }// ]// },// }The metadata includes:
usage: Object containingcitationTokensandnumSearchQueriesmetricsimages: Array of image URLs whenreturn_imagesis enabled (Tier-2 users only)
You can enable image responses by setting return_images: true in the provider options. This feature is only available to Perplexity Tier-2 users and above.
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.