description: "ctx.web 的 Perplexity 搜索提供方:部署方如何挂载 OpenAI 兼容的 Perplexity 搜索,获得生成答案与引用。"
English | 中文
有了 dsh-web-search-perplexity,harness 可以通过 Perplexity 搜索 web,一次调用同时获得模型生成的答案与可引用来源。当部署持有 Perplexity API 密钥、并希望获得生成答案时选择它。Perplexity 没有结果数量控制,因此返回的来源会在事后被截断到请求的上限。Perplexity 省略结构化结果元数据时,来源回退为只含 URL 的引用。面向模型的 web_search 工具位于 dsh-tool-web。
在已加载 web 服务的组合中挂载本提供方;它以 perplexity 搜索提供方身份注册,因此当它是唯一可用的搜索后端时,ctx.web.search() 会自动解析到它——也可以用 searchProvider: perplexity 固定。
当部署持有 Perplexity API 密钥、并希望一次搜索同时获得模型生成的答案与可引用来源时选择此后端。密钥为空或端点基址无法解析时,提供方不可用——每次搜索调用都会以结构化错误失败。
加载 web 服务与本提供方;API 密钥回退到启动环境中的 $PERPLEXITY_API_KEY,其余设置都有安全默认值。
- name: '@deepseek-ai/dsh-web'
- name: '@deepseek-ai/dsh-web-search-perplexity'
config:
apiKey: !!js process.env.PERPLEXITY_API_KEY
| 字段 | 默认值 | 含义 |
|---|---|---|
apiKey |
$PERPLEXITY_API_KEY |
Perplexity API 密钥;为空或缺失时提供方不可用 |
baseURL |
https://api.perplexity.ai |
端点基址;追加 /chat/completions。无法解析时提供方不可用 |
model |
sonar |
搜索模型名称 |
maxTokens |
1024 |
生成答案 token 上限(max_tokens);必须是正整数 |
searchRecency |
(未设置) | 以 search_recency_filter 发送的新近程度窗口:day、week、month 或 year。未设置时不发送过滤条件 |
生成的配置目录是每个受支持字段及其 JSDoc 的穷尽式真源。
content 携带 Perplexity 的生成答案。sources[] 优先使用结构化 search_results[](url、title、snippet、publishedAt 取自 date),仅当 search_results 缺失时才回退到只含 URL 的 citations[] 数组——这正是服务上 title/snippet/publishedAt 为可选字段的原因。Perplexity 不公开结果数量控制,因此服务通过截断并标记来强制执行 maxResults。
提供方失败——HTTP 错误、网络失败、响应体无法解析或结构不符——以 WebError WEB_PROVIDER_ERROR 呈现;中止请求以 WEB_ABORTED 呈现。HTTP 重定向会在访问 Location 指向的目标之前被拒绝,并以 WEB_PROVIDER_ERROR 呈现。调用方根据错误码进行路由;面向模型的 web_search 工具会在自己的错误包装层内把失败呈现给模型。
当包级约定不够用时阅读以下页面。它们从共享词汇逐步进入服务、面向模型的工具与设计依据。
web_search 工具。独立的 Perplexity 模型通过 chat-completions 端点将 <query> 原样作为唯一用户消息接收。该请求不属于会话模型上下文。
每次搜索都会产生独立的提供方 token;maxTokens 限制生成答案。
与会话请求缓存相互独立。同一模型路由下的相同查询可能复用提供方缓存;查询或路由改变会建立不同前缀。
通过 dsh-tool-web,会话模型会看到生成答案及结构化结果元数据,或只含 URL 的引用。该提供方确切的错误消息为 Perplexity search aborted、Perplexity search request failed: <error> 和 Perplexity returned an unprocessable response body: <error>;HTTP 失败保留提供方消息。错误包装层属于消费方。
注册不会直接产生会话 token。答案与来源 token 取决于数据,来源数量受服务限制;保留的结果或错误会重复发送,直到发生压缩(compaction)。
仅追加;新可见内容位于可复用请求前缀之后,不会使现有 KV Cache 条目失效。
这些限制说明提供方在哪些情况下不合适。它们是当前包约束。
search_results[] 时,来源不含 title/snippet/publishedAt,因此工具只渲染纯主机名标签。maxResults 只能由服务在事后截断。model/maxTokens/searchRecency——Perplexity 的其他搜索控制项(域名过滤条件、web_search_options 上下文大小、图片)等待提供方无关的服务字段(见 seam Agent Note)。AbortError 的 DOMException 才映射为 WEB_ABORTED;携带自定义原因的中止(例如 dsh-timeout 的 TimeoutReason)呈现为 WEB_PROVIDER_ERROR。