Учебник

Perplexity API: подключаем поиск с источниками к своим приложениям

Как использовать Perplexity API для создания приложений с реальным поиском: аутентификация, модели, стоимость и примеры кода.

Макс Космов··10 мин чтения

Perplexity API позволяет интегрировать в ваше приложение мощный поиск с автоматическим предоставлением проверенных источников, используя модель LLM от Perplexity. Вы получаете ответы, обогащённые ссылками на оригинальные документы, что повышает доверие пользователей и упрощает проверку информации. Благодаря простому REST‑интерфейсу и гибкой настройке запросов, подключить такой поиск к веб‑сайту, мобильному клиенту или боту можно за несколько минут.

до про · Perplexity

Perplexity API: что доступно и какие модели

Perplexity AI предлагает два основных типа моделей через свой API: search‑augmented generation (SAG) и pure LLM. Оба работают в режиме «text‑completion», но различаются по способу получения контекста и по стоимости запросов.

1. Search‑augmented generation (SAG)

SAG‑модель сочетает генеративный LLM с внешним веб‑поиском. При запросе она автоматически формирует поисковый запрос, получает релевантные фрагменты из интернета (включая новости, научные статьи, официальные документы) и использует их как «контекст» для генерации ответа. Это дает два главных преимущества:

  • Актуальность. Ответы отражают информацию, появившуюся после последнего крупного обновления LLM.
  • Прозрачность. В каждом ответе возвращается массив sources – ссылки, заголовки и короткие выдержки, из которых модель черпала данные.

Доступные эндпоинты

Эндпоинт Описание Параметры
/v1/search Классический поиск с генерацией ответа. query (строка), max_results (int, по умолчанию 5), include_sources (bool).
/v1/answer Только генерация без поиска (получает уже подготовленный контекст). prompt (строка), context (массив строк).

Тарифы и лимиты

  • Free tier: 5 000 токенов в месяц, 1 запрос в секунду, ограничение 2 KB на размер контента источника. Подходит для прототипов и небольших ботов.
  • Pro tier: 250 000 токенов, 10 RQPS, расширенный размер источников (до 10 KB). Включает приоритетный доступ к поисковому индексу.
  • Enterprise: индивидуальные лимиты, SLA 99.9 %, возможность локального индекса.

2. Pure LLM (без поиска)

Для задач, где важна скорость и предсказуемость, Perplexity предоставляет чистый LLM без обращения к внешнему поиску. Это обычный «text‑completion»‑модель, обученная на большом корпусе публичных данных до 2023 года.

Доступные модели

Модель Размер Токен‑лимит Стоимость (USD/1 K токенов)
pplx-7b 7 B параметров 8 192 $0.015
pplx-13b 13 B параметров 8 192 $0.025
pplx-70b 70 B параметров 16 384 $0.12

Все модели поддерживают system‑prompt (для задания стиля) и temperature (0‑2). При необходимости можно включить logprobs для получения вероятностных распределений.

Эндпоинт

  • /v1/completions – стандартный запрос к LLM. Принимает model, prompt, max_tokens, temperature, top_p, stop.

3. Выбор модели в зависимости от задачи

Сценарий Рекомендованная модель Почему
Ответы на актуальные новости, юридические запросы, техническая справка search (SAG) Автоматический поиск гарантирует свежие данные и ссылки.
Чат‑бот с фиксированным набором правил, быстрый отклик pplx-13b Хороший компромисс между качеством и скоростью.
Генерация кода, сложные математические рассуждения pplx-70b Большой контекст и более глубокие цепочки рассуждений.
Прототип в ограниченном бюджете Free tier + search 5 000 токенов достаточно для небольших запросов, а поиск обеспечивает актуальность.

4. Формат ответа и работа с источниками

Ответ от SAG‑модели выглядит так:

{
 "answer": "Текущий курс доллара США к рублю - 93,12 ₽.",
 "sources": [
 {
 "title": "Курс валют на сегодня",
 "url": "https://www.cbr.ru/...",
 "snippet": "На 3 июня 2026 года доллар стоит 93,12 рубля."
 },
 {
 "title": "Финансовый дайджест",
 "url": "https://finance.example.com/...",
 "snippet": "Курс доллара вырос на 0,4 % за последние 24 часа."
 }
 ]
}

snippet ограничен 300 символами, но достаточно для проверки достоверности. При необходимости можно запросить полные HTML‑страницы через параметр include_raw.

5. Интеграция в приложение

import requests

API_KEY = "YOUR_PERPLEXITY_KEY"
HEADERS = {"Authorization": f"Bearer {API_KEY}"}

def ask_perplexity(query):
 payload = {
 "query": query,
 "max_results": 3,
 "include_sources": True
 }
 r = requests.post("https://api.perplexity.ai/v1/search", json=payload, headers=HEADERS)
 r.raise_for_status()
 data = r.json()
 return data["answer"], data["sources"]

Код выше демонстрирует минимальный запрос к SAG‑модели. Для чистого LLM замените URL на /v1/completions и укажите model.

6. Ограничения и рекомендации

  • Контент‑политика: запрещено использовать API для генерации дезинформации, вредоносного кода и контента для взрослых. Нарушения приводят к мгновенной блокировке ключа.
  • Кеширование: если ваш сервис часто задаёт одинаковые вопросы, кешируйте ответы и их источники. Это экономит токены и ускоряет отклик.
  • Токен‑лимит: при работе с длинными запросами (более 4 KB) разбивайте их на части и отправляйте последовательно, иначе запрос будет отклонён.

Perplexity API предоставляет гибкое сочетание актуального поиска и мощных LLM. Выбор модели зависит от требуемой свежести данных, скорости отклика и бюджета проекта. Правильная настройка параметров и соблюдение лимитов позволяют интегрировать поиск с источниками в любые веб‑ и мобильные приложения без лишних сложностей.

Получение API-ключа и аутентификация

Интеграция поиска с источниками начинается с получения учетных данных. Перейдите на официальный сайт Perplexity и выполните вход в личный кабинет. В правом верхнем углу интерфейса расположена кнопка профиля. Нажмите на нее и в выпадающем списке выберите раздел "Settings" (Настройки). В боковом меню открывшейся страницы перейдите во вкладку "API & Auth". Здесь отображается список существующих ключей и кнопка управления ими. Нажмите "Create New Key" для генерации нового токена. Система предложит ввести произвольное имя, например, "My First App", чтобы упростить идентификацию ключа в будущем. После подтверждения ключ появится на экране. Скопируйте его и сохраните в защищенном месте. Perplexity не показывает полный ключ повторно, поэтому при потере придется создавать новый.

Важно соблюдать меры безопасности. Никогда не кормитесь API-ключ в системы контроля версий вроде GitHub. Для локальной разработки используйте файл переменных окружения .env. Добавьте туда строку PERPLEXITY_API_KEY=ваш_ключ. Для работы с этим файлом в Python установите библиотеку python-dotenv и загрузите переменные при запуске скрипта. Это предотвратит случайную утечку данных.

Процесс аутентификации в API Perplexity использует заголовок HTTP. Каждый запрос к сервису должен включать заголовок Authorization. Значение этого заголовка формируется по схеме: слово Bearer, затем пробел и ваш ключ. Также обязательно укажите заголовок Content-Type: application/json, так как сервер принимает данные только в этом формате.

Рассмотрим практический пример отправки запроса на Python. Сначала импортируйте необходимые библиотеки и получите ключ из переменных окружения. Сформируйте словарь заголовков:

headers = {
 "Authorization": f"Bearer {os.getenv('PERPLEXITY_API_KEY')}",
 "Content-Type": "application/json"
}

При отправке POST-запроса на адрес https://api.perplexity.ai/chat/completions передайте этот словарь в параметр headers. Если аутентификация прошла успешно, сервер вернет ответ с кодом 200 и данными. В случае ошибки 401 проверьте правильность ключа и наличие пробелов в строке авторизации. Корректная настройка заголовков - фундамент для работы с поиском.

Первый запрос: Python и curl примеры

Для взаимодействия с API используется эндпоинт https://api.perplexity.ai/chat/completions. Ключевое отличие от стандартных моделей LLM заключается в выборе модели с суффиксом online. Такие модели имеют доступ к поисковому индексу в реальном времени. Если выбрать модель без этого суффикса, поиск работать не будет.

Начнем с утилиты curl. Этот метод идеален для быстрой отладки прямо из терминала. В заголовке Authorization передается ключ API. В теле запроса обязательно указывается модель и массив сообщений. Структура сообщений соответствует стандарту OpenAI, что упрощает миграцию.

Пример запроса в терминале:

curl -X POST https://api.perplexity.ai/chat/completions \
 -H 'Authorization: Bearer pplx-ваш_ключ_здесь' \
 -H 'Content-Type: application/json' \
 -d '{
 "model": "llama-3.1-sonar-small-128k-online",
 "messages": [
 {"role": "system", "content": "Ты точный помощник, который всегда ссылается на источники."},
 {"role": "user", "content": "Какова текущая цена биткоина и как она изменилась за неделю?"}
 ]
 }'

В ответе сервер возвращает JSON объект. Главное поле choices содержит текстовый ответ. Поле citations представляет собой массив ссылок на сайты, использованные при формировании ответа. Ссылки в тексте ответа обычно обозначаются числами в квадратных скобках, например [1], которые соответствуют индексам в массиве citations.

Для интеграции в программные продукты чаще используют Python. Библиотека requests является стандартом де-факто для таких задач. Код ниже демонстрирует базовую настройку клиента.

Пример кода на Python:

import requests
import json

url = "https://api.perplexity.ai/chat/completions"
headers = {
 "Authorization": "Bearer pplx-ваш_ключ_здесь",
 "Content-Type": "application/json"
}
payload = {
 "model": "llama-3.1-sonar-small-128k-online",
 "messages": [
 {"role": "system", "content": "Отвечай на русском языке."},
 {"role": "user", "content": "Последние достижения в квантовых вычислениях."}
 ]
}

response = requests.post(url, headers=headers, json=payload)

if response.status_code == 200:
 data = response.json()
 answer = data['choices'][0]['message']['content']
 citations = data.get('citations', [])

 print("Ответ модели:", answer)
 print("Список источников:")
 for link in citations:
 print(link)
else:
 print("Ошибка:", response.status_code, response.text)

В этом примере добавлена проверка статус-кода. Успешный запрос возвращает код 200. Параметр json в методе requests.post автоматически преобразует словарь в формат JSON. Извлечение списка citations позволяет создать интерфейс, где пользователь может кликнуть по ссылке и проверить первоисточник информации. Это критически важно для приложений, требующих высокой достоверности данных, таких как финансовые аналитические инструменты или образовательные платформы.

Онлайн-модели vs офлайн-модели: когда что использовать

Контекст выполнения Онлайн‑модели работают в режиме реального времени, получают запросы через сеть и генерируют ответ за считанные миллисекунды. Офлайн‑модели загружаются в локальное окружение, работают без постоянного доступа к интернету и могут использовать более тяжёлые вычисления. Выбор зависит от требований к задержке, объёму данных, безопасности и стоимости.

Когда предпочтительнее онлайн‑модель

  1. Динамический контент – если ответы зависят от постоянно меняющихся источников (новости, цены, соц‑сети), онлайн‑модель гарантирует актуальность.
  2. Ограниченные ресурсы клиента – мобильные устройства, браузеры или IoT‑устройства часто не способны держать большие нейросети. Перенос вычислений на сервер освобождает память и процессор.
  3. Единый контроль версии – централизованное обновление модели устраняет необходимость в рассылке патчей пользователям.
  4. Сложные лицензии – если модель построена на коммерческих ядрах, их использование в облаке упрощает соблюдение условий.
  5. Масштабируемость – автоскейлинг в облаке позволяет обслуживать всплески нагрузки без деградации качества.

Когда выгоднее офлайн‑модель

  1. Низкая латентность – локальная конференция исключает сетевые задержки, что критично для игровых движков, систем рекомендаций в реальном времени и промышленных контроллеров.
  2. Ограниченный доступ к сети – в отдалённых регионах, на кораблях или в закрытых корпоративных сетях отсутствие интернета делает офлайн‑решение единственным вариантом.
  3. Конфиденциальность данных – если запросы содержат персональную или коммерческую информацию, хранить их локально снижает риск утечки.
  4. Стоимость запросов – при большом объёме запросов цена за токен в облаке может превысить затраты на собственный сервер.
  5. Регулятивные ограничения – некоторые отрасли (здравоохранение, финансы) требуют, чтобы данные не покидали границы страны; офлайн‑модель помогает соблюдать эти правила.

Гибридные подходы

Часто выгодно комбинировать оба типа. Пример: базовый классификатор работает офлайн, а для уточнения или получения контекста вызывается онлайн‑модель. Такой паттерн уменьшает количество сетевых запросов, сохраняет быстрый отклик и при этом использует актуальные знания.

Практический чек‑лист

Критерий Онлайн Офлайн
Требуется актуальная информация?
Ограничения по задержке < 100 мс?
Есть стабильный интернет?
Нужно соблюдать строгие политики конфиденциальности?
Ожидается высокий объём запросов? ❌ (может стать дорогим) ✅ (единовременные затраты)

Как внедрять

  1. Оцените нагрузку – смоделируйте количество запросов в секунду и средний размер входных данных.
  2. Подберите инфраструктуру – для онлайн‑модели выберите облачный провайдер с GPU/CPU‑инстансами, для офлайн‑модели подготовьте сервер или edge‑устройство с достаточным ОЗУ.
  3. Тестируйте латентность – измерьте время от отправки запроса до получения ответа в реальных условиях.
  4. Организуйте мониторинг – следите за ошибками, расходом токенов (для онлайн) и загрузкой процессора (для офлайн).
  5. Обновляйте модель – планируйте периодический релиз новых весов, учитывая, что в офлайн‑сценарии обновление требует доставки пакета клиенту.

Выбор между онлайн‑ и офлайн‑моделью – компромисс между актуальностью, скоростью, безопасностью и стоимостью. Тщательный анализ требований проекта позволяет подобрать оптимальное сочетание и избежать лишних расходов.

Цитирования в ответе API: как их получить и использовать

Ответ API Perplexity содержит не только сгенерированный текст, но и структурированный список источников, критически важный для верификации данных. Основной массив ссылок находится в поле citations внутри объекта сообщения. Это массив строк, где каждая строка представляет собой полный URL ресурса, использованного нейросетью. Внутри самого текста ответа (content) источники обозначены числовыми маркерами в квадратных скобках, например [1] или [2].

Для получения этих данных необходимо использовать модели с поддержкой онлайн-поиска, такие как sonar или llama-3.1-sonar-small-online. Если запрос не требует поиска или модель работает оффлайн, поле citations будет пустым или отсутствовать.

Интеграция цитирований в приложение строится в три шага. Сначала вы парсите citations как список URL и собираете их в отдельный блок ответа — это даёт пользователю прозрачный реестр источников. Затем заменяете в тексте content маркеры [1], [2] на кликабельные ссылки или сноски — большинство фронтенд‑фреймворков справляются с этим через регулярное выражение и компонент типа Link. И наконец, валидируете доступность URL фоном: если ссылка ведёт на 404 или paywall, помечайте её отдельной иконкой, чтобы не подрывать доверие пользователя.

Для backend‑сервисов разумно кешировать результат запроса вместе с массивом citations, чтобы при повторных запросах не тратить токены и не получать разный набор источников. Кеш‑ключом обычно берут хеш от исходного промта плюс параметры модели, время жизни — от часов до суток в зависимости от того, насколько свежей должна быть выдача.

Вывод

Perplexity API — это поиск с источниками, который интегрируется в приложение через один HTTP‑запрос. Минимальная конфигурация: выбор модели sonar, настройка цитирований и кеширование. Дальше всё зависит от нагрузки: для прототипа достаточно бесплатного лимита, для прод‑интеграции имеет смысл подключить мониторинг расходов и фильтрацию источников по доменам, чтобы не отдавать пользователю ссылки на сомнительные ресурсы. Главное преимущество перед классическим LLM — каждое утверждение в ответе можно проверить, и это снижает риск галлюцинаций до приемлемого уровня.