Skip to main content

Perplexity LLM plugin guide

How to use Perplexity LLM with LiveKit Agents.

Available inPython
|
Node.js

Overview

This plugin allows you to use Perplexity  as an LLM provider for your voice agents. Python uses a dedicated livekit-plugins-perplexity package, and Node.js uses Perplexity through the OpenAI plugin.

The Python package provides two LLM surfaces: chat completions (perplexity.LLM()) for search-augmented chat, and the Agent API (perplexity.responses.LLM()) for tool-calling agents. Node.js supports chat completions only.

Installation

Install the plugin:

uv add "livekit-agents[perplexity]~=1.5"
pnpm add @livekit/agents-plugin-openai@1.x

Set the following environment variable in your .env.local file:

PERPLEXITY_API_KEY=<your-perplexity-api-key>

Chat completions

Use perplexity.LLM() for Perplexity's search-augmented chat completions. This is the simpler choice when your agent doesn't need to call tools.

from livekit.plugins import perplexity
session = AgentSession(
llm=perplexity.LLM(
model="sonar-pro",
),
# ... tts, stt, vad, turn_handling, etc.
)
import * as openai from '@livekit/agents-plugin-openai';
const session = new voice.AgentSession({
llm: openai.LLM.withPerplexity({
model: "sonar-pro",
}),
// ... tts, stt, vad, turnHandling, etc.
});
OpenAI plugin alternative (Python)

If you already have the OpenAI plugin installed, you can use openai.LLM.with_perplexity() as an alternative. It remains supported, but the dedicated perplexity.LLM() is the recommended path for new code.

Parameters

This section describes some of the available parameters. For a complete reference of all available parameters, see the plugin reference links in the Additional resources section.

modelstr | PerplexityChatModelsDefault: sonar-pro

Model to use for inference. To learn more, see supported models .

temperaturefloatDefault: 1.0

Sampling temperature that controls the randomness of the model's output. Higher values make the output more random, while lower values make it more focused and deterministic. Range of valid values can vary by model.

Valid values are between 0 and 2.

parallel_tool_callsbool

Controls whether the model can make multiple tool calls in parallel. When enabled, the model can make multiple tool calls simultaneously, which can improve performance for complex tasks.

tool_choiceToolChoice | Literal['auto', 'required', 'none']Default: auto

Controls how the model uses tools. String options are as follows:

  • 'auto': Let the model decide.
  • 'required': Force tool usage.
  • 'none': Disable tool usage.

Agent API

ONLY Available inPython

perplexity.responses.LLM() targets Perplexity's Agent API . It supports custom function tools along with Perplexity's built-in tools, presets, and reasoning controls.

from livekit.plugins import perplexity
session = AgentSession(
llm=perplexity.responses.LLM(
model="perplexity/sonar",
),
# ... tts, stt, vad, turn_handling, etc.
)

Parameters

This section describes some of the available parameters. For a complete reference of all available parameters, see the plugin reference links in the Additional resources section.

modelstr | PerplexityResponsesModelsDefault: perplexity/sonar

Model to use for inference. To learn more, see the Agent API models  page.

temperaturefloatDefault: 1.0

Sampling temperature that controls the randomness of the model's output. Higher values make the output more random, while lower values make it more focused and deterministic. Range of valid values can vary by model.

Valid values are between 0 and 2.

parallel_tool_callsbool

Controls whether the model can make multiple tool calls in parallel. When enabled, the model can make multiple tool calls simultaneously, which can improve performance for complex tasks.

tool_choiceToolChoice | Literal['auto', 'required', 'none']Default: auto

Controls how the model uses tools. String options are as follows:

  • 'auto': Let the model decide.
  • 'required': Force tool usage.
  • 'none': Disable tool usage.

Additional resources

The following links provide more information about the Perplexity LLM integration.