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 офлайн-модели: когда что использовать
Контекст выполнения Онлайн‑модели работают в режиме реального времени, получают запросы через сеть и генерируют ответ за считанные миллисекунды. Офлайн‑модели загружаются в локальное окружение, работают без постоянного доступа к интернету и могут использовать более тяжёлые вычисления. Выбор зависит от требований к задержке, объёму данных, безопасности и стоимости.
Когда предпочтительнее онлайн‑модель
- Динамический контент – если ответы зависят от постоянно меняющихся источников (новости, цены, соц‑сети), онлайн‑модель гарантирует актуальность.
- Ограниченные ресурсы клиента – мобильные устройства, браузеры или IoT‑устройства часто не способны держать большие нейросети. Перенос вычислений на сервер освобождает память и процессор.
- Единый контроль версии – централизованное обновление модели устраняет необходимость в рассылке патчей пользователям.
- Сложные лицензии – если модель построена на коммерческих ядрах, их использование в облаке упрощает соблюдение условий.
- Масштабируемость – автоскейлинг в облаке позволяет обслуживать всплески нагрузки без деградации качества.
Когда выгоднее офлайн‑модель
- Низкая латентность – локальная конференция исключает сетевые задержки, что критично для игровых движков, систем рекомендаций в реальном времени и промышленных контроллеров.
- Ограниченный доступ к сети – в отдалённых регионах, на кораблях или в закрытых корпоративных сетях отсутствие интернета делает офлайн‑решение единственным вариантом.
- Конфиденциальность данных – если запросы содержат персональную или коммерческую информацию, хранить их локально снижает риск утечки.
- Стоимость запросов – при большом объёме запросов цена за токен в облаке может превысить затраты на собственный сервер.
- Регулятивные ограничения – некоторые отрасли (здравоохранение, финансы) требуют, чтобы данные не покидали границы страны; офлайн‑модель помогает соблюдать эти правила.
Гибридные подходы
Часто выгодно комбинировать оба типа. Пример: базовый классификатор работает офлайн, а для уточнения или получения контекста вызывается онлайн‑модель. Такой паттерн уменьшает количество сетевых запросов, сохраняет быстрый отклик и при этом использует актуальные знания.
Практический чек‑лист
| Критерий | Онлайн | Офлайн |
|---|---|---|
| Требуется актуальная информация? | ✅ | ❌ |
| Ограничения по задержке < 100 мс? | ❌ | ✅ |
| Есть стабильный интернет? | ✅ | ❌ |
| Нужно соблюдать строгие политики конфиденциальности? | ❌ | ✅ |
| Ожидается высокий объём запросов? | ❌ (может стать дорогим) | ✅ (единовременные затраты) |
Как внедрять
- Оцените нагрузку – смоделируйте количество запросов в секунду и средний размер входных данных.
- Подберите инфраструктуру – для онлайн‑модели выберите облачный провайдер с GPU/CPU‑инстансами, для офлайн‑модели подготовьте сервер или edge‑устройство с достаточным ОЗУ.
- Тестируйте латентность – измерьте время от отправки запроса до получения ответа в реальных условиях.
- Организуйте мониторинг – следите за ошибками, расходом токенов (для онлайн) и загрузкой процессора (для офлайн).
- Обновляйте модель – планируйте периодический релиз новых весов, учитывая, что в офлайн‑сценарии обновление требует доставки пакета клиенту.
Выбор между онлайн‑ и офлайн‑моделью – компромисс между актуальностью, скоростью, безопасностью и стоимостью. Тщательный анализ требований проекта позволяет подобрать оптимальное сочетание и избежать лишних расходов.
Цитирования в ответе 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 — каждое утверждение в ответе можно проверить, и это снижает риск галлюцинаций до приемлемого уровня.