用途
perplexity-api 技能用于接入 Perplexity 的 Sonar API,实现实时网络搜索、带引用的答案以及搜索增强型大语言模型响应,从而增强 AI 驱动的应用。
何时使用
适用于需要当前网络数据的任务,例如用可验证来源回答用户查询、为 LLM 输出补充实时信息,或进行需要引用的研究。对于静态数据或不需要实时访问的场景应避免使用,以防止不必要的 API 调用。
主要能力
- 执行实时网络搜索,支持查询参数过滤(例如按日期或域名)。
- 以 JSON 对象形式返回答案,包含文本响应和引用 URL。
- 与 LLM 集成,生成搜索增强型响应,将 API 结果与模型推理结合。
- 支持多种查询类型:标准搜索、聚焦查询和引用提取。
- 具备速率限制意识,每个 API 密钥每分钟最多 100 次请求。
使用方式
调用前始终通过环境变量设置 API 密钥。使用 HTTP GET 或 POST 请求进行查询,解析 JSON 响应,必要时处理异步结果。对于 AI 智能体,可作为子程序集成:先检查本地知识,再调用此 API 获取网络更新。模式:认证 -> 发送查询 -> 处理响应 -> 记录或缓存结果。
常用命令/API
- 端点:https://api.perplexity.ai/search(简单查询用 GET,复杂查询用 POST 并携带 JSON 请求体)。
- 认证:必需;通过 $PERPLEXITY_API_KEY 设置(例如 export PERPLEXITY_API_KEY=your_api_key)。
- CLI 示例:
curl -H "Authorization: Bearer $PERPLEXITY_API_KEY" -G https://api.perplexity.ai/search --data-urlencode "q=latest AI news"
-
API 参数:
- q:必需字符串,用于查询(例如 "climate change effects")。
- limit:整数,结果数量(例如 5)。
- format:字符串,响应格式(例如 "json" 或 "text")。
-
Python 代码片段:
import requests; os.environ['PERPLEXITY_API_KEY'] = 'your_key'
response = requests.get('https://api.perplexity.ai/search', params={'q': 'query'}, headers={'Authorization': f'Bearer {os.environ["PERPLEXITY_API_KEY"]}'}).json()
print(response['answers'][0]['text']) # Access first answer
- 配置格式:存储在 .env 文件中为 PERPLEXITY_API_KEY=your_key,然后使用 python-dotenv 加载。
集成说明
通过将 API 调用包装在 try-except 块中以提高可靠性。对于 OpenClaw 智能体,在需要网络数据的工作流中使用此技能:例如将 API 结果前置到 LLM 提示中。如果使用异步框架,确保兼容性;Perplexity API 支持最长 30 秒的超时。先用模拟响应进行测试。模式:导入必要库(例如 requests),设置环境变量,并使用结构化查询调用端点。避免在代码中直接暴露 API 密钥;仅使用安全保险库或环境变量。
错误处理
检查 HTTP 状态码:401 表示认证失败(验证 $PERPLEXITY_API_KEY 后重试);429 表示速率限制(实现指数退避,例如等待 5-10 秒);404 表示无效端点(记录并回退到替代技能)。解析 JSON 错误以获取详细信息,如 "error": "Invalid query"。在代码中使用:
try:
response = requests.get(...)
response.raise_for_status() # Raises HTTPError for 4xx/5xx
except requests.exceptions.HTTPError as e:
print(f"Error: {e.response.status_code} - {e.response.text}") # Log and handle
始终包含带限制的重试逻辑(例如最多 3 次重试),并在失败持续时告知用户。
具体使用示例
示例:实时新闻搜索
获取最新 AI 动态:设置 $PERPLEXITY_API_KEY,然后运行 curl -H "Authorization: Bearer $PERPLEXITY_API_KEY" -G https://api.perplexity.ai/search --data-urlencode "q=latest OpenAI updates&limit=3"。在代码中:导入 requests,查询端点,并提取引用如 response['answers'][0]['source_url'] 展示给用户。这对于响应新闻查询的智能体很有用。
示例:增强 LLM 响应
增强 LLM 答案:首先获取 LLM 输出(例如 "Summarize climate change"),然后将其作为查询调用 API:requests.get('https://api.perplexity.ai/search', params={'q': 'climate change summary'})。使用 API 的响应添加引用,例如将 "Source: [URL from response]" 追加到 LLM 文本。在工作流中:如果智能体的响应需要验证,调用此技能并在最终输出前合并结果。
图关系
- 相关集群:ai-apis(例如与其他 AI API 技能如 openai-api 共享依赖)。
- 标签:ai-apis(表示 AI 相关端点的分组)、api(通用 API 集成)。
- 连接:可与 llm-tools 链式组合以实现搜索与生成结合;由于实时依赖,与离线数据技能冲突。