🔍

Perplexity и Deep Research: AI-поиск нового поколения

Как AI-поисковики меняют работу с информацией. Perplexity с источниками, Deep Research для аналитики, ChatGPT Search против Google. Настройка, API, сравнение точности.

Средний ⏱ 20 мин
Пользователь Perplexity API pPLX + Sonar Models Deep Research Gemini 2.5 Pro ChatGPT Search GPT-5 + Bing Index RAG Pipeline Embed → Retrieve → Rank → Synthesize Источники Web + Academic + News Финальный ответ С цитатами Индексация Real-time + Crawl

Архитектура: поток запроса от пользователя через AI-модели, RAG-пайплайн и источники до финального ответа с цитатами

# 1. Установка и настройка Perplexity API

Perplexity предоставляет OpenAI-совместимое API, что делает интеграцию тривиальной. Вам понадобится API-ключ из личного кабинета Perplexity (раздел Settings → API). Базовая стоимость — $5 кредита при регистрации, затем pay-as-you-go. Модели: sonar (быстрый поиск), sonar-pro (глубокий анализ с большим количеством источников), sonar-reasoning (пошаговые рассуждения). Для начала установим Python SDK и проверим соединение простым запросом с указанием поискового домена.

# Установка официального Python SDK Perplexity
pip install openai python-dotenv

# Создаём .env файл с API-ключом
echo 'PERPLEXITY_API_KEY=pplx-xxxxxxxxxxxxxxxx' > .env

# Базовый тестовый запрос
import os, openai
from dotenv import load_dotenv
load_dotenv()

client = openai.OpenAI(
    api_key=os.getenv("PERPLEXITY_API_KEY"),
    base_url="https://api.perplexity.ai"
)

response = client.chat.completions.create(
    model="sonar-pro",
    messages=[{"role": "user", "content": "Какие последние новости о квантовых вычислениях?"}]
)
print(response.choices[0].message.content)
# Вывод: структурированный ответ со ссылками на источники

# 2. Продвинутые параметры: домены, рекапси и фокус поиска

Главное преимущество Perplexity — тонкая настройка поиска через параметры search_domain_filter, search_recency_filter и return_related_questions. Вы можете ограничить поиск академическими источниками, новостями за последнюю неделю или конкретными доменами. Параметр temperature управляет креативностью: 0 для точных фактов, 0.7 для генерации идей. Ниже пример с фильтрацией только по научным публикациям за последний месяц — идеально для исследовательских задач и написания обзоров литературы.

# Продвинутый запрос с фильтрацией источников
response = client.chat.completions.create(
    model="sonar-pro",
    messages=[
        {"role": "system", "content": "Ты — научный ассистент. Отвечай строго по academic источникам."},
        {"role": "user", "content": "Сравнение transformer-архитектур и Mamba: преимущества и недостатки"}
    ],
    temperature=0.1,
    top_p=0.9,
    search_domain_filter=["scholar.google.com", "arxiv.org", "semanticscholar.org"],
    search_recency_filter="month",
    return_related_questions=True,
    max_tokens=2048
)

# Извлекаем источники из ответа
content = response.choices[0].message.content
citations = response.citations  # список URL использованных источников
for i, url in enumerate(citations, 1):
    print(f"Источник {i}: {url}")

# Вывод: ответ с цитатами из arxiv.org и scholar.google.com за последний месяц

# 3. Google Deep Research: многошаговый анализ через Gemini API

Google Deep Research кардинально отличается от простого поиска: модель выполняет многошаговый анализ — формулирует подвопросы, ищет информацию по каждому, синтезирует результаты и создаёт структурированный отчёт. Доступ через Gemini API (модель gemini-2.5-pro) с включённым режимом thinking. Процесс занимает 2–5 минут, но результат сравним с работой junior-аналитика. Идеально для due diligence, анализа рынков и конкурентов, составления обзоров. В коде ниже показан полный цикл с разбиением задачи на подзадачи.

# Установка Google Generative AI SDK
pip install google-generativeai

import google.generativeai as genai

genai.configure(api_key="YOUR_GEMINI_API_KEY")

# Deep Research: многошаговый анализ
model = genai.GenerativeModel(
    model_name="gemini-2.5-pro-exp-03-25",
    generation_config={
        "temperature": 0.1,
        "top_p": 0.95,
        "max_output_tokens": 8192,
    }
)

# Системный промпт для режима Deep Research
research_prompt = """Проведи глубокий анализ рынка AI-чипов в 2026 году.
Выполни следующие шаги:
1. Определи ключевых игроков (NVIDIA, AMD, Intel, Groq, Cerebras)
2. Сравни их флагманские продукты по производительности
3. Оцени рыночные доли и тренды
4. Дай прогноз на 2027 год
Для каждого утверждения укажи источник."""

response = model.generate_content(
    research_prompt,
    safety_settings=[
        {"category": "HARM_CATEGORY_DANGEROUS_CONTENT", "threshold": "BLOCK_NONE"}
    ]
)

print(response.text)
# Вывод: структурированный отчёт на 2000+ слов с источниками

# Сохраняем отчёт в Markdown
with open("market_report.md", "w") as f:
    f.write(response.text)
# Файл market_report.md сохранён — готов к использованию

# 4. ChatGPT Search API: сравнение с Google Custom Search

ChatGPT Search использует индекс Bing и модель GPT-5 для синтеза ответов с учётом контекста. В отличие от Google Custom Search API, который возвращает только ссылки, ChatGPT Search сразу даёт осмысленный ответ. Но у Google есть преимущество в скорости и индексации свежего контента. Практическое сравнение: один и тот же запрос через оба API, замеряем latency и оцениваем качество. Google лучше для оперативного мониторинга новостей, ChatGPT Search — для аналитических запросов, требующих синтеза информации из множества источников.

# Сравнение ChatGPT Search и Google Custom Search
pip install google-api-python-client requests

import time, requests
from googleapiclient.discovery import build

# === Google Custom Search API ===
def google_search(query, api_key, cse_id):
    service = build("customsearch", "v1", developerKey=api_key)
    start = time.time()
    result = service.cse().list(q=query, cx=cse_id, num=5).execute()
    latency = time.time() - start
    items = result.get("items", [])
    return [
        {"title": item["title"], "link": item["link"], "snippet": item["snippet"]}
        for item in items
    ], latency

# === ChatGPT Search через OpenAI API ===
def chatgpt_search(query, api_key):
    start = time.time()
    resp = requests.post(
        "https://api.openai.com/v1/chat/completions",
        headers={"Authorization": f"Bearer {api_key}"},
        json={
            "model": "gpt-5",
            "messages": [{"role": "user", "content": query}],
            "web_search": True  # включение поиска
        }
    )
    latency = time.time() - start
    data = resp.json()
    return data["choices"][0]["message"]["content"], latency

# Сравнительный тест
query = "Индексация сайтов в 2026: что изменилось"
g_results, g_time = google_search(query, "G_API_KEY", "CSE_ID")
c_results, c_time = chatgpt_search(query, "OPENAI_KEY")

print(f"Google: {g_time:.2f}s | ChatGPT Search: {c_time:.2f}s")
# Типичный результат: Google 0.8-1.2s, ChatGPT Search 3-8s

# 5. You.com API: альтернативный AI-поиск с режимами

You.com предлагает уникальную фичу — режимы поиска: Research (академический), Code (поиск по коду), Creative (генерация идей) и стандартный Smart. API поддерживает流овую передачу (streaming) и возвращает не только ответ, но и найденные сниппеты. В бесплатном тарифе 100 запросов в день, что достаточно для тестирования. You.com хорош для задач, где нужен не просто факт, а креативная переработка информации — генерация идей, поиск аналогий, написание черновиков с опорой на свежие данные из сети.

# You.com API с выбором режима поиска
pip install requests sseclient-py

import requests, json

def you_search(query, mode="research"):
    # mode: "smart", "research", "code", "creative"
    headers = {
        "X-API-Key": "YOUR_YOUCOM_API_KEY",
        "Content-Type": "application/json"
    }
    payload = {
        "query": query,
        "search_mode": mode,
        "num_results": 10,
        "stream": False
    }

    resp = requests.post(
        "https://api.you.com/search",
        headers=headers,
        json=payload,
        timeout=30
    )
    data = resp.json()
    return {
        "answer": data["answer"],
        "snippets": [s["content"] for s in data.get("results", [])],
        "urls": [s["url"] for s in data.get("results", [])]
    }

result = you_search("Лучшие архитектуры RAG для enterprise в 2026", mode="research")
print(f"Источников: {len(result['urls'])}")
print(result["answer"][:500])
# Вывод: синтезированный ответ + 10 сниппетов из academic источников

# 6. Свой AI-поисковый агент: Perplexity + LangChain

Соберём полноценного AI-поискового агента, который комбинирует несколько источников. Агент сначала ищет через Perplexity, затем для технических вопросов добавляет поиск по коду через You.com, и финально синтезирует ответ через LangChain. Такой подход даёт более полную картину, чем любой отдельный сервис. Агент может использоваться для daily research, конкурентного анализа или подготовки материалов. Ключевой паттерн — fallback между провайдерами: если один не дал качественного ответа, подключается второй.

# Мульти-провайдерный AI-поисковый агент
pip install langchain langchain-openai

from langchain_openai import ChatOpenAI
from langchain.agents import Tool, initialize_agent, AgentType

# Инициализация LLM для синтеза
llm = ChatOpenAI(
    model="gpt-5",
    temperature=0.1,
    api_key="YOUR_OPENAI_KEY"
)

# Инструменты агента
def perplexity_tool(query: str) -> str:
    client = openai.OpenAI(api_key=os.getenv("PERPLEXITY_KEY"), base_url="https://api.perplexity.ai")
    r = client.chat.completions.create(model="sonar-pro", messages=[{"role": "user", "content": query}])
    return r.choices[0].message.content

def code_search_tool(query: str) -> str:
    resp = requests.post("https://api.you.com/search",
        headers={"X-API-Key": os.getenv("YOU_KEY")},
        json={"query": query, "search_mode": "code"})
    return resp.json()["answer"]

tools = [
    Tool(name="WebSearch", func=perplexity_tool, description="Общий поиск с источниками"),
    Tool(name="CodeSearch", func=code_search_tool, description="Поиск кода и технической документации"),
]

agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)

response = agent.invoke("Сравни производительность llama.cpp и vLLM для инференса Llama 3.3")
print(response["output"])
# Агент использует оба инструмента и синтезирует сводный ответ
✅ Итог

Мы разобрали полный стек AI-поисковых инструментов: от базового подключения Perplexity API до построения собственного мульти-провайдерного агента. Вы научились настраивать фильтры поиска по доменам и свежести, использовать Google Deep Research для многошагового анализа, сравнивать ChatGPT Search с Google Custom Search по скорости и качеству, подключать You.com API для специализированных режимов поиска и комбинировать всё это в LangChain-агенте. Следующий шаг — встроить AI-поиск в ваш daily workflow: замените ручной гуглинг на программные запросы с авто-синтезом, и вы сэкономите часы каждую неделю. Для продакшена рассмотрите кэширование ответов через Redis и мониторинг затрат на API-ключи.