本页面将帮助您开始使用 Perplexity 聊天模型。有关所有 ChatPerplexity 功能和配置的详细文档,请前往 API 参考.
概述
集成详情
| 类 | 包 | 可序列化 | JS 支持 | 下载量 | 版本 |
|---|---|---|---|---|---|
ChatPerplexity | langchain-perplexity | beta | ✅ | !PyPI - 下载量 | !PyPI - 版本 |
模型特性
| 工具调用 | 结构化输出 | 图像输入 | 音频输入 | 视频输入 | Token 级流式输出 | 原生异步 | Token 使用量 | 对数概率 |
|---|---|---|---|---|---|---|---|---|
| ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ | ✅ | ❌ |
设置
要访问 Perplexity 模型,您需要创建一个 Perplexity 账户,获取 API 密钥,并安装 langchain-perplexity 集成包。
凭证
前往 此页面 注册 Perplexity 并生成 API 密钥。完成此操作后,设置 PPLX_API_KEY 环境变量:
if "PPLX_API_KEY" not in os.environ:
os.environ["PPLX_API_KEY"] = getpass.getpass("Enter your Perplexity API key: ")
要启用模型调用的自动追踪,请设置您的 LangSmith API 密钥:
os.environ["LANGSMITH_API_KEY"] = getpass.getpass("Enter your LangSmith API key: ")
os.environ["LANGSMITH_TRACING"] = "true"
from langchain_core.prompts import ChatPromptTemplate
from langchain_perplexity import ChatPerplexity
提供的代码假设您的 PPLX_API_密钥已设置在您的环境变量中。如果您想手动指定 API 密钥并选择不同的模型,可以使用以下代码:
chat = ChatPerplexity(temperature=0, pplx_api_key="YOUR_API_KEY", model="sonar")
您可以查看 可用的 Perplexity 模型列表。为确保可重复性,我们可以在此笔记本中通过输入来动态设置 API 密钥。
chat = ChatPerplexity(temperature=0, model="sonar")
system = "You are a helpful assistant."
human = "{input}"
prompt = ChatPromptTemplate.from_messages([("system", system), ("human", human)])
chain = prompt | chat
response = chain.invoke({"input": "Why is the Higgs Boson important?"})
response.content
'The Higgs Boson is an elementary subatomic particle that plays a crucial role in the Standard Model of particle physics, which accounts for three of the four fundamental forces governing the behavior of our universe: the strong and weak nuclear forces, electromagnetism, and gravity. The Higgs Boson is important for several reasons:\n\n1. **Final Elementary Particle**: The Higgs Boson is the last elementary particle waiting to be discovered under the Standard Model. Its detection helps complete the Standard Model and further our understanding of the fundamental forces in the universe.\n\n2. **Mass Generation**: The Higgs Boson is responsible for giving mass to other particles, a process that occurs through its interaction with the Higgs field. This mass generation is essential for the formation of atoms, molecules, and the visible matter we observe in the universe.\n\n3. **Implications for New Physics**: While the detection of the Higgs Boson has confirmed many aspects of the Standard Model, it also opens up new possibilities for discoveries beyond the Standard Model. Further research on the Higgs Boson could reveal insights into the nature of dark matter, supersymmetry, and other exotic phenomena.\n\n4. **Advancements in Technology**: The search for the Higgs Boson has led to significant advancements in technology, such as the development of artificial intelligence and machine learning algorithms used in particle accelerators like the Large Hadron Collider (LHC). These advancements have not only contributed to the discovery of the Higgs Boson but also have potential applications in various other fields.\n\nIn summary, the Higgs Boson is important because it completes the Standard Model, plays a crucial role in mass generation, hints at new physics phenomena beyond the Standard Model, and drives advancements in technology.\n'
您可以按照通常的方式格式化和构建提示。在以下示例中,我们让模型讲一个关于猫的笑话。
chat = ChatPerplexity(temperature=0, model="sonar")
prompt = ChatPromptTemplate.from_messages([("human", "Tell me a joke about {topic}")])
chain = prompt | chat
response = chain.invoke({"topic": "cats"})
response.content
'Here\'s a joke about cats:\n\nWhy did the cat want math lessons from a mermaid?\n\nBecause it couldn\'t find its "core purpose" in life!\n\nRemember, cats are unique and fascinating creatures, and each one has its own special traits and abilities. While some may see them as mysterious or even a bit aloof, they are still beloved pets that bring joy and companionship to their owners. So, if your cat ever seeks guidance from a mermaid, just remember that they are on their own journey to self-discovery!\n'
Agent API 支持(use_responses_api)
ChatPerplexity (也可以通过 Perplexity 的 Agent API (Perplexity 风格的 Responses API)路由请求,设置为 use_responses_api。这与 ChatOpenAI.use_responses_api:一个类,两个端点,由单个标志控制。
| 值 | 端点 | 备注 |
|---|---|---|
None (默认) | 自动检测 | 当请求使用内置的 Perplexity 工具时路由到 Agent API(web_search, fetch_url, finance_search, people_search)或包含仅 Responses 字段时(previous_response_id, instructions, input, include)否则路由到 Chat Completions。 |
True | Agent API | 始终使用 client.responses.create(). |
False | Chat Completions | 始终使用 client.chat.completions.create(). |
Agent API 提供 ChatPerplexity 对 Perplexity 内置工具(实时网络搜索、URL 获取、金融和人物搜索)和有状态代理字段(previous_response_id, instructions, include)的访问权限,这些在 Chat Completions 中不可用。现有 ChatPerplexity(model="sonar") 调用方不会看到行为变化——Chat Completions 路径仍是纯文本请求的默认选项。
from langchain_perplexity import ChatPerplexity
chat = ChatPerplexity(
model="openai/gpt-5.5",
use_responses_api=True,
)
response = chat.invoke("What did Apple announce at WWDC this week?")
response.content
您还可以传入一个内置工具,让自动检测路由该请求——无需标志:
chat = ChatPerplexity(model="openai/gpt-5.5")
response = chat.invoke(
"Summarize the latest LangChain release notes.",
tools=[{"type": "web_search"}],
)
response.content
通过 Agent API 路由时,响应对象携带更丰富的元数据:
- -
usage_metadata从 Responses 形状的usage负载(input_tokens,output_tokens,total_tokens). - -
response_metadata包含传输级字段:id,model,status,以及object. - -
additional_kwargs在存在时显示 Perplexity 特定输出:citations,images,related_questions,search_results,videos,以及reasoning_steps. - - 模型返回的工具调用出现在
response.tool_calls中,与ChatOpenAI.
请参阅 Perplexity Agent API 模型列表 以获取通过此端点可用的完整模型集合(例如 openai/gpt-5.5, anthropic/claude-sonnet-4-6, google/gemini-3-1-pro).
通过 ChatPerplexity
您还可以通过 ChatPerplexity 类使用 Perplexity 特有参数。例如,search 等参数_域_过滤器,return_图像,return_相关_问题或搜索_时效性_使用 extra 进行筛选_body 参数,如下所示:
chat = ChatPerplexity(temperature=0.7, model="sonar")
response = chat.invoke(
"Tell me a joke about cats", extra_body={"search_recency_filter": "week"}
)
response.content
"Sure, here's a cat joke for you:\n\nWhy are cats bad storytellers?\n\nBecause they only have one tale. (Pun alert!)\n\nSource: OneLineFun.com [4]"
访问搜索结果元数据
Perplexity 通常会提供其参考的网页列表("搜索_结果")。 您无需传递任何特殊参数——列表被放在 response.additional_kwargs["search_results"].
chat = ChatPerplexity(temperature=0, model="sonar")
response = chat.invoke(
"What is the tallest mountain in South America?",
)
# Main answer
print(response.content)
# First two supporting search results
response.additional_kwargs["search_results"][:2]
The tallest mountain in South America is Aconcagua. It has a summit elevation of approximately 6,961 meters (22,838 feet), making it not only the highest peak in South America but also the highest mountain in the Americas, the Western Hemisphere, and the Southern Hemisphere[1]\[2]\[4].
Aconcagua is located in the Principal Cordillera of the Andes mountain range, in Mendoza Province, Argentina, near the border with Chile[1]\[2]\[4]. It is of volcanic origin but is not an active volcano[4]. The mountain is part of Aconcagua Provincial Park and features several glaciers, including the large Ventisquero Horcones Inferior glacier[1].
In summary, Aconcagua stands as the tallest mountain in South America at about 6,961 meters (22,838 feet) in height.
[{'title': 'Aconcagua - Wikipedia',
'url': 'https://en.wikipedia.org/wiki/Aconcagua',
'date': None},
{'title': 'The 10 Highest Mountains in South America - Much Better Adventures',
'url': 'https://www.muchbetteradventures.com/magazine/highest-mountains-south-america/',
'date': '2023-07-05'}]
ChatPerplexity 还支持流式功能
chat = ChatPerplexity(temperature=0.7, model="sonar")
stream = chat.stream_events("Give me a list of famous tourist attractions in Pakistan", version="v3")
for token in stream.text:
print(token, end="", flush=True)
Here is a list of some famous tourist attractions in Pakistan:
1. **Minar-e-Pakistan**: A 62-meter high minaret in Lahore that represents the history of Pakistan.
2. **Badshahi Mosque**: A historic mosque in Lahore with a capacity of 10,000 worshippers.
3. **Shalimar Gardens**: A beautiful garden in Lahore with landscaped grounds and a series of cascading pools.
4. **Pakistan Monument**: A national monument in Islamabad representing the four provinces and three districts of Pakistan.
5. **National Museum of Pakistan**: A museum in Karachi showcasing the country's cultural history.
6. **Faisal Mosque**: A large mosque in Islamabad that can accommodate up to 300,000 worshippers.
7. **Clifton Beach**: A popular beach in Karachi offering water activities and recreational facilities.
8. **Kartarpur Corridor**: A visa-free border crossing and religious corridor connecting Gurdwara Darbar Sahib in Pakistan to Gurudwara Sri Kartarpur Sahib in India.
9. **Mohenjo-daro**: An ancient Indus Valley civilization site in Sindh, Pakistan, dating back to around 2500 BCE.
10. **Hunza Valley**: A picturesque valley in Gilgit-Baltistan known for its stunning mountain scenery and unique culture.
These attractions showcase the rich history, diverse culture, and natural beauty of Pakistan, making them popular destinations for both local and international tourists.
ChatPerplexity 支持结构化输出,面向 3 级及以上用户
from pydantic import BaseModel
class AnswerFormat(BaseModel):
first_name: str
last_name: str
year_of_birth: int
num_seasons_in_nba: int
chat = ChatPerplexity(temperature=0.7, model="sonar-pro")
structured_chat = chat.with_structured_output(AnswerFormat)
response = structured_chat.invoke(
"Tell me about Michael Jordan. Return your answer "
"as JSON with keys first_name (str), last_name (str), "
"year_of_birth (int), and num_seasons_in_nba (int)."
)
response
AnswerFormat(first_name='Michael', last_name='Jordan', year_of_birth=1963, num_seasons_in_nba=15)