Skip to main content
Perplexity Search 是一个网络搜索 API,它返回为 LLM 和智能体设计的、带排名和来源归属的结果。Search API 端点返回支撑 Perplexity 答案引擎的底层网络结果。
我们可以将其用作检索器。本文将展示此集成特有的功能。阅读后,探索相关用例页面以了解如何将此检索器用作更大链的一部分可能会很有用。

设置

安装

此集成位于 langchain-perplexity 包中:
pip install -qU langchain-perplexity

凭证

您需要一个 Perplexity API 密钥才能使用此集成。在 Perplexity API 密钥仪表板中创建一个,然后将其设置为 PPLX_API_KEY 环境变量(此集成也接受 PERPLEXITY_API_KEY)。
import getpass
import os

if not os.environ.get("PPLX_API_KEY"):
    os.environ["PPLX_API_KEY"] = getpass.getpass("Perplexity API key:\n")
如果您想从单个查询中获得自动跟踪,也可以通过取消注释以下内容来设置您的 LangSmith API 密钥:
# 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 个)。在域名前加上 - 以排除它。参见域名过滤器文档
  • search_recency_filter"day""week""month""year" 之一。参见日期和时间过滤器文档
  • search_after_date / search_before_dateMM/DD/YYYY 格式的日期字符串。
from langchain_perplexity import PerplexitySearchRetriever

retriever = PerplexitySearchRetriever(k=3)

用法

query = "what year was breath of the wild released?"

retriever.invoke(query)
每个返回的 Document 都有结果 snippet 作为其 page_content,以及 metadata 中的 titleurldatelast_updated

带过滤器的用法

您可以使用 Perplexity Search API 支持的相同过滤器来约束搜索:
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")
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 管道。
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 参考Perplexity API 文档