以编程方式使用文档

>Perplexity Search 是一个网络搜索 API,返回排名靠前、有来源标注的结果,专为 LLM 和代理设计。其 Search API 端点 返回支持 Perplexity 答案引擎的底层网络结果。

我们可以将其用作 检索器。它将展示此集成特有的功能。阅读完本文档后,查看 相关的用例页面 来了解如何将此检索器作为更大链的一部分使用可能很有帮助。

设置

安装

该集成位于 langchain-perplexity package:

pip install -qU langchain-perplexity

凭证

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

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 — 所有结果的最大总 token 数。
  • - max_tokens_per_page — 每个结果页面的最大 token 数。
  • - country — ISO 国家代码以偏置结果(例如 "US").
  • - search_domain_filter — 要包含或排除的域名列表(最多 20 个)。在域名前面加 - 以排除它。参见 域名过滤文档.
  • - search_recency_filter — 之一 "day", "week", "month", "year"。参见 日期和时间过滤文档.
  • - search_after_date / search_before_date — 日期字符串格式为 MM/DD/YYYY format.
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,以及 title, url, date,和 last_updated in metadata.

过滤后的用法

您可以使用 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

# Restrict results to a specific date range
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 文档.