返回文章列表
Hypereal AI Team
AIAPISearchTutorial
如何使用 Perplexity AI API (2026)
将 Perplexity 的搜索增强型 AI 集成到应用程序的开发者指南
10 min read
100+ AI 模型,一个 API
开始使用 Hypereal 构建
通过单个 API 访问 Kling、Flux、Sora、Veo 等。免费积分开始,扩展到数百万。
无需信用卡 • 10万+ 开发者 • 企业级服务
如何使用 Perplexity AI API (2026)
Perplexity AI 提供的 API 将大型语言模型与实时网络搜索相结合。与依赖静态训练数据的标准 LLM API 不同,Perplexity 的 API 会从网络检索当前信息,并将其整合为准确且附带引用的回答。这使其成为需要最新信息应用的理想选择:如研究工具、新闻聚合器、竞品分析、客户支持机器人以及任何对信息时效性有要求的落地产品。
本指南涵盖了完整的 API 设置、所有可用模型、多语言代码示例以及实用的集成模式。
为什么选择 Perplexity API?
| 特性 | Perplexity API | 标准 LLM API |
|---|---|---|
| 实时网络搜索 | 是,内置 | 否(静态训练数据) |
| 来源引用 | 是,包含 URL | 否 |
| 知识截止日期 | 无(即时搜索) | 数月至数年前 |
| 幻觉率 | 较低(基于搜索依据) | 较高 |
| 结构化输出 | 支持 JSON 模式 | 视供应商而定 |
| OpenAI 兼容 | 是 | 取决于供应商 |
前提条件
- 拥有 API 访问权限的 Perplexity 账号。
- 从 Perplexity 开发者仪表板获取 API Key。
- Python 3.9+ 或 Node.js 18+(用于运行以下示例)。
第一步:获取 API Key
- 访问 perplexity.ai/settings/api。
- 点击 Generate API Key。
- 复制该 Key 并妥善保存。
- 为账户充值(该 API 采用预付费模式,非后付费)。
设置环境变量:
export PERPLEXITY_API_KEY="pplx-your-api-key-here"
第二步:发起首次请求
Perplexity API 兼容 OpenAI,因此你可以使用 OpenAI SDK:
pip install openai
from openai import OpenAI
client = OpenAI(
api_key="pplx-your-api-key-here",
base_url="https://api.perplexity.ai"
)
response = client.chat.completions.create(
model="sonar-pro",
messages=[
{
"role": "system",
"content": "你是一个得力的研究助手。请提供准确且附带引用来源的回答。"
},
{
"role": "user",
"content": "2026年核聚变能源的最新进展有哪些?"
}
]
)
print(response.choices[0].message.content)
# 访问引用来源 (Citations)
if hasattr(response, 'citations'):
print("\n来源:")
for citation in response.citations:
print(f" - {citation}")
可用模型
Perplexity 提供了针对不同用例优化的多种模型:
| 模型 | 最佳用途 | 上下文窗口 | 搜索功能 | 价格 (输入) | 价格 (输出) |
|---|---|---|---|---|---|
sonar-pro |
复杂研究、详细回答 | 200K | 是 | $3/M tokens | $15/M tokens |
sonar |
通用问题、快速响应 | 128K | 是 | $1/M tokens | $1/M tokens |
sonar-reasoning-pro |
多步分析、深度对比 | 128K | 是 | $2/M tokens | $8/M tokens |
sonar-reasoning |
带搜索的轻量推理 | 128K | 是 | $1/M tokens | $5/M tokens |
sonar-deep-research |
综合报告、长文本 | 128K | 是 (深度) | $2/M tokens | $8/M tokens |
模型选择指南:
- 使用
sonar处理快速的事实性问题和轻量级查询。 - 使用
sonar-pro进行详细研究和处理复杂问题。 - 使用
sonar-reasoning-pro处理需要分析和对比的任务。 - 使用
sonar-deep-research生成需要多次搜索迭代的综合报告。
第三步:使用 cURL
curl -X POST https://api.perplexity.ai/chat/completions \
-H "Authorization: Bearer pplx-your-api-key-here" \
-H "Content-Type: application/json" \
-d '{
"model": "sonar-pro",
"messages": [
{
"role": "user",
"content": "对比 2026 年排名前 3 的 JavaScript 框架的流行度和性能"
}
],
"temperature": 0.2,
"max_tokens": 2000
}'
第四步:Node.js / TypeScript
import OpenAI from 'openai';
const client = new OpenAI({
apiKey: process.env.PERPLEXITY_API_KEY,
baseURL: 'https://api.perplexity.ai',
});
async function search(query: string): Promise<string> {
const response = await client.chat.completions.create({
model: 'sonar-pro',
messages: [
{
role: 'system',
content: '提供简明扼要、基于事实且附带引用来源的回答。',
},
{
role: 'user',
content: query,
},
],
temperature: 0.2,
max_tokens: 1500,
});
return response.choices[0].message.content ?? '';
}
// 使用示例
const result = await search('比特币当前的价格是多少?');
console.log(result);
第五步:流式响应 (Streaming)
用于实时向用户展示回答:
from openai import OpenAI
client = OpenAI(
api_key="pplx-your-api-key-here",
base_url="https://api.perplexity.ai"
)
stream = client.chat.completions.create(
model="sonar",
messages=[
{
"role": "user",
"content": "今天的科技新闻发生了什么?"
}
],
stream=True
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
print() # 最后换行
第六步:搜索上下文控制
你可以控制 Perplexity 如何搜索网页:
response = client.chat.completions.create(
model="sonar-pro",
messages=[
{
"role": "user",
"content": "Python 3.14 的最新特性和发布日期"
}
],
# 控制搜索行为
search_domain_filter=["python.org", "docs.python.org", "peps.python.org"],
search_recency_filter="week", # 选项: "hour", "day", "week", "month"
return_citations=True,
return_related_questions=True
)
print(response.choices[0].message.content)
# 获取用户可能想追问的相关问题
if hasattr(response, 'related_questions'):
print("\n相关问题:")
for q in response.related_questions:
print(f" - {q}")
实际应用用例
1. 研究助手
def research_topic(topic: str, depth: str = "standard") -> dict:
model = "sonar-deep-research" if depth == "deep" else "sonar-pro"
response = client.chat.completions.create(
model=model,
messages=[
{
"role": "system",
"content": """你是一名研究分析师。请提供:
1. 关键结论(要点形式)
2. 最近进展(过去 30 天)
3. 专家观点
4. 数据与统计图表
所有结论均需附带引用。"""
},
{
"role": "user",
"content": f"研究课题: {topic}"
}
],
return_citations=True,
max_tokens=3000
)
return {
"content": response.choices[0].message.content,
"citations": getattr(response, 'citations', []),
"model": model
}
result = research_topic("2026年欧洲 AI 监管现状", depth="deep")
print(result["content"])
2. 竞品情报分析
def analyze_competitor(company: str) -> str:
response = client.chat.completions.create(
model="sonar-reasoning-pro",
messages=[
{
"role": "user",
"content": f"""分析竞品 {company}:
- 最近发布的产品
- 定价变化
- 关键合作伙伴关系
- 市场地位
- 优势与劣势
请基于可获取的最实时信息进行分析。"""
}
],
search_recency_filter="month",
return_citations=True,
max_tokens=2500
)
return response.choices[0].message.content
print(analyze_competitor("Vercel"))
3. 新闻聚合
def get_news_summary(topic: str) -> str:
response = client.chat.completions.create(
model="sonar",
messages=[
{
"role": "user",
"content": f"总结今天关于 {topic} 的 5 条重点新闻。提供来源。"
}
],
search_recency_filter="day",
return_citations=True,
max_tokens=1500
)
return response.choices[0].message.content
print(get_news_summary("人工智能"))
4. 事实核查 API
def fact_check(claim: str) -> str:
response = client.chat.completions.create(
model="sonar-reasoning-pro",
messages=[
{
"role": "system",
"content": """你是一名事实核查员。对于每个声明:
1. 说明其为:真实、虚假、部分真实或无法验证
2. 提供来自可靠来源的证据
3. 引用你的来源
请保持客观和严谨。"""
},
{
"role": "user",
"content": f"核查此声明: {claim}"
}
],
return_citations=True,
max_tokens=2000
)
return response.choices[0].message.content
print(fact_check("2025年的全球平均气温是有记录以来最高的一年"))
速率限制与定价
| 层级 | 请求数/分钟 | Tokens/分钟 | 每月支出 |
|---|---|---|---|
| 免费试用 | 5 | 20,000 | $0 (额度有限) |
| 标准版 | 50 | 100,000 | 按量计费 |
| Pro 版 | 500 | 1,000,000 | $50+ |
| 企业版 | 自定义 | 自定义 | 联系销售 |
成本估算示例:
| 用例 | 模型 | 每日请求数 | 估算每月成本 |
|---|---|---|---|
| 个人研究 | sonar | 50 | 约 $5 |
| 新闻聚合 | sonar | 500 | 约 $30 |
| 竞品情报 | sonar-pro | 100 | 约 $50 |
| 生产级搜索应用 | sonar-pro | 5,000 | 约 $500 |
错误处理
from openai import OpenAI, APIError, RateLimitError, APIConnectionError
import time
client = OpenAI(
api_key="pplx-your-api-key-here",
base_url="https://api.perplexity.ai"
)
def query_with_retry(query: str, max_retries: int = 3) -> str:
for attempt in range(max_retries):
try:
response = client.chat.completions.create(
model="sonar",
messages=[{"role": "user", "content": query}],
max_tokens=1500
)
return response.choices[0].message.content
except RateLimitError:
wait_time = 2 ** attempt
print(f"触发速率限制。等待 {wait_time} 秒...")
time.sleep(wait_time)
except APIConnectionError:
print("连接错误。正在重试...")
time.sleep(1)
except APIError as e:
print(f"API 错误: {e}")
raise
raise Exception("超过最大重试次数")
故障排除
| 问题 | 解决方案 |
|---|---|
| 401 Unauthorized | 检查 API Key 是否正确且账户是否有余额 |
| 429 Rate Limited | 实施退避重试机制;升级层级 |
| 引用为空 | 并非所有回答都包含引用;确保使用 return_citations=True |
| 信息过时 | 使用 search_recency_filter 限制搜索为近期结果 |
| 响应慢 | 对于追求速度的场景,请使用 sonar 而非 sonar-pro |
| 找不到模型 | 检查模型名称;Perplexity 会定期更新模型命名 |
结语
Perplexity AI API 是构建需要基于实时网页数据的 LLM 应用的最佳选择。其兼容 OpenAI 的接口使集成变得简单,而内置的搜索和引用功能消了为网页内容构建独立 RAG 管道的必要性。
如果你正在构建的应用还需要 AI 生成的媒体——如图片、视频、数字人或语音合成——请关注 Hypereal AI。Hypereal 为生成式媒体提供统一的 REST API 且支持按量计费,让你能够轻松地将 Perplexity 的搜索智能与 Hypereal 的媒体生成能力集成到同一个应用中。
