> ## Documentation Index
> Fetch the complete documentation index at: https://cndoc-langchain.site/llms.txt
> Use this file to discover all available pages before exploring further.

# PerplexitySearch 集成

> 使用 LangChain Python 与 PerplexitySearchRetriever 进行集成。

> [Perplexity Search](https://docs.perplexity.ai/docs/search/quickstart) 是一个网络搜索 API，它返回为 LLM 和智能体设计的、带排名和来源归属的结果。[Search API 端点](https://docs.perplexity.ai/api-reference/search-post)返回支撑 Perplexity 答案引擎的底层网络结果。

我们可以将其用作[检索器](/oss/python/langchain/retrieval)。本文将展示此集成特有的功能。阅读后，探索[相关用例页面](/oss/python/langchain/rag)以了解如何将此检索器用作更大链的一部分可能会很有用。

## 设置

### 安装

此集成位于 `langchain-perplexity` 包中：

```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
pip install -qU langchain-perplexity
```

### 凭证

您需要一个 Perplexity API 密钥才能使用此集成。在 [Perplexity API 密钥仪表板](https://www.perplexity.ai/account/api/keys)中创建一个，然后将其设置为 `PPLX_API_KEY` 环境变量（此集成也接受 `PERPLEXITY_API_KEY`）。

```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
import getpass
import os

if not os.environ.get("PPLX_API_KEY"):
    os.environ["PPLX_API_KEY"] = getpass.getpass("Perplexity API key:\n")
```

如果您想从单个查询中获得自动跟踪，也可以通过取消注释以下内容来设置您的 [LangSmith](/langsmith/home) API 密钥：

```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
# os.environ["LANGSMITH_API_KEY"] = getpass.getpass("Enter your LangSmith API key: ")
# os.environ["LANGSMITH_TRACING"] = "true"
```

## 实例化

`PerplexitySearchRetriever` 接受以下构造函数参数：

* `k` — 最大结果数（1–20）。默认为 `10`。
* `max_tokens` — 所有结果的最大总令牌数。
* `max_tokens_per_page` — 每个结果页面返回的最大令牌数。
* `country` — 用于偏向结果的 ISO 国家代码（例如 `"US"`）。
* `search_domain_filter` — 要包含或排除的域名列表（最多 20 个）。在域名前加上 `-` 以排除它。参见[域名过滤器文档](https://docs.perplexity.ai/docs/search/filters/domain-filter)。
* `search_recency_filter` — `"day"`、`"week"`、`"month"`、`"year"` 之一。参见[日期和时间过滤器文档](https://docs.perplexity.ai/docs/search/filters/date-time-filters)。
* `search_after_date` / `search_before_date` — `MM/DD/YYYY` 格式的日期字符串。

```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
from langchain_perplexity import PerplexitySearchRetriever

retriever = PerplexitySearchRetriever(k=3)
```

## 用法

```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
query = "what year was breath of the wild released?"

retriever.invoke(query)
```

每个返回的 [`Document`](https://reference.langchain.com/python/langchain-core/documents/base/Document) 都有结果 `snippet` 作为其 `page_content`，以及 `metadata` 中的 `title`、`url`、`date` 和 `last_updated`。

### 带过滤器的用法

您可以使用 Perplexity Search API 支持的相同过滤器来约束搜索：

```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
from langchain_perplexity import PerplexitySearchRetriever

retriever = PerplexitySearchRetriever(
    k=5,
    country="US",
    search_recency_filter="week",
    search_domain_filter=["nytimes.com", "reuters.com", "-pinterest.com"],
)

retriever.invoke("US Federal Reserve interest rate decisions")
```

```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
from langchain_perplexity import PerplexitySearchRetriever

# 将结果限制在特定日期范围内
retriever = PerplexitySearchRetriever(
    k=5,
    search_after_date="01/01/2025",
    search_before_date="06/30/2025",
)

retriever.invoke("US Federal Reserve interest rate decisions")
```

## 在链中使用

我们可以轻松地将此检索器组合到链中，以构建一个简单的 RAG 管道。

```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnablePassthrough
from langchain_openai import ChatOpenAI

prompt = ChatPromptTemplate.from_template(
    """Answer the question based only on the context provided.

Context: {context}

Question: {question}"""
)

llm = ChatOpenAI(model="gpt-5.5")


def format_docs(docs):
    return "\n\n".join(doc.page_content for doc in docs)


chain = (
    {"context": retriever | format_docs, "question": RunnablePassthrough()}
    | prompt
    | llm
    | StrOutputParser()
)

chain.invoke("What were the major outcomes of the most recent Federal Reserve meeting?")
```

***

## API 参考

有关 Perplexity Search API 及其所有选项的详细文档，请参阅 [Search API 参考](https://docs.perplexity.ai/api-reference/search-post)和 [Perplexity API 文档](https://docs.perplexity.ai)。

***

<div className="source-links">
  <Callout icon="terminal-2">
    [将这些文档](/use-these-docs)通过 MCP 连接到 Claude、VSCode 等，以获取实时答案。
  </Callout>

  <Callout icon="edit">
    [在 GitHub 上编辑此页面](https://github.com/langchain-ai/docs/edit/main/src/oss/python/integrations/retrievers/perplexity_search.mdx)或[提交问题](https://github.com/langchain-ai/docs/issues/new/choose)。
  </Callout>
</div>
