LLM
- class pipecat.services.perplexity.llm.PerplexityLLMService(*, api_key, base_url='https://api.perplexity.ai', model='sonar', **kwargs)[source]
Bases:
OpenAILLMService
A service for interacting with Perplexity’s API.
This service extends OpenAILLMService to work with Perplexity’s API while maintaining compatibility with the OpenAI-style interface. It specifically handles the difference in token usage reporting between Perplexity (incremental) and OpenAI (final summary).
- Parameters:
api_key (str) – The API key for accessing Perplexity’s API
base_url (str, optional) – The base URL for Perplexity’s API. Defaults to “https://api.perplexity.ai”
model (str, optional) – The model identifier to use. Defaults to “sonar”
**kwargs – Additional keyword arguments passed to OpenAILLMService
- async get_chat_completions(context, messages)[source]
Get chat completions from Perplexity API using OpenAI-compatible parameters.
- Parameters:
context (OpenAILLMContext) – The context containing conversation history and settings
messages (List[ChatCompletionDeveloperMessageParam | ChatCompletionSystemMessageParam | ChatCompletionUserMessageParam | ChatCompletionAssistantMessageParam | ChatCompletionToolMessageParam | ChatCompletionFunctionMessageParam]) – The messages to send to the API
- Returns:
A stream of chat completion chunks
- Return type:
AsyncStream[ChatCompletionChunk]
- async start_llm_usage_metrics(tokens)[source]
Accumulate token usage metrics during processing.
Perplexity reports token usage incrementally during streaming, unlike OpenAI which provides a final summary. We accumulate the counts and report the total at the end of processing.
- Parameters:
tokens (LLMTokenUsage)