Perplexity Search API

OpenClaw は Perplexity Search API を web_search プロバイダーとしてサポートしています。 titleurlsnippet フィールドを含む構造化された結果を返します。

互換性のため、レガシーの Perplexity Sonar/OpenRouter 構成もサポートしています。 OPENROUTER_API_KEY を使用する場合、tools.web.search.perplexity.apiKeysk-or-... キーを設定する場合、または tools.web.search.perplexity.baseUrl / model を設定する場合は、チャット補完パスに切り替わり、構造化された Search API の結果ではなく、引用付きの AI 生成回答が返されます。

Perplexity API キーの取得

  1. https://www.perplexity.ai/settings/api で Perplexity アカウントを作成します。
  2. ダッシュボードで API キーを生成します。
  3. 設定ファイルにキーを保存するか、Gateway の環境変数に PERPLEXITY_API_KEY を設定します。

OpenRouter 互換性

すでに OpenRouter 経由で Perplexity Sonar を使用している場合は、provider: "perplexity" のまま、Gateway の環境変数に OPENROUTER_API_KEY を設定するか、tools.web.search.perplexity.apiKeysk-or-... キーを保存してください。

レガシー向けのオプション設定:

  • tools.web.search.perplexity.baseUrl
  • tools.web.search.perplexity.model

設定例

ネイティブ Perplexity Search API

{
  tools: {
    web: {
      search: {
        provider: "perplexity",
        perplexity: {
          apiKey: "pplx-...",
        },
      },
    },
  },
}

OpenRouter / Sonar 互換モード

{
  tools: {
    web: {
      search: {
        provider: "perplexity",
        perplexity: {
          apiKey: "<openrouter-api-key>",
          baseUrl: "https://openrouter.ai/api/v1",
          model: "perplexity/sonar-pro",
        },
      },
    },
  },
}

キーの設定場所

設定ファイル経由: openclaw configure --section web を実行します。キーは ~/.openclaw/openclaw.jsontools.web.search.perplexity.apiKey に保存されます。 このフィールドは SecretRef オブジェクトも受け付けます。

環境変数経由: Gateway プロセスの環境に PERPLEXITY_API_KEY または OPENROUTER_API_KEY を設定します。Gateway インストールの場合は ~/.openclaw/.env(またはサービスの環境)に記述します。詳細は Env vars を参照してください。

provider: "perplexity" が設定されていて、Perplexity キーの SecretRef が未解決かつ環境変数のフォールバックもない場合、起動/リロード時にすぐ失敗します。

ツールパラメータ

以下のパラメータはネイティブ Perplexity Search API パスに適用されます。

パラメータ説明
query検索クエリ(必須)
count返却する結果数(1-10、デフォルト: 5)
country2文字の ISO 国コード(例: “US”, “DE”)
languageISO 639-1 言語コード(例: “en”, “de”, “fr”)
freshness時間フィルター: day(24時間)、weekmonthyear
date_afterこの日付以降に公開された結果のみ(YYYY-MM-DD)
date_beforeこの日付以前に公開された結果のみ(YYYY-MM-DD)
domain_filterドメインの許可/拒否リスト配列(最大20件)
max_tokens全体のコンテンツ予算(デフォルト: 25000、最大: 1000000)
max_tokens_per_pageページあたりのトークン制限(デフォルト: 2048)

レガシーの Sonar/OpenRouter 互換パスでは、queryfreshness のみサポートされます。 Search API 専用のフィルター(countrylanguagedate_afterdate_beforedomain_filtermax_tokensmax_tokens_per_page)を使用すると明示的なエラーが返されます。

使用例:

// 国と言語を指定した検索
await web_search({
  query: "renewable energy",
  country: "DE",
  language: "de",
});

// 最新の結果(直近1週間)
await web_search({
  query: "AI news",
  freshness: "week",
});

// 日付範囲指定の検索
await web_search({
  query: "AI developments",
  date_after: "2024-01-01",
  date_before: "2024-06-30",
});

// ドメインフィルタリング(許可リスト)
await web_search({
  query: "climate research",
  domain_filter: ["nature.com", "science.org", ".edu"],
});

// ドメインフィルタリング(拒否リスト — 先頭に - を付与)
await web_search({
  query: "product reviews",
  domain_filter: ["-reddit.com", "-pinterest.com"],
});

// より多くのコンテンツを抽出
await web_search({
  query: "detailed AI research",
  max_tokens: 50000,
  max_tokens_per_page: 4096,
});

ドメインフィルターのルール

  • フィルターあたり最大20ドメイン
  • 同一リクエストで許可リストと拒否リストを混在させることはできない
  • 拒否リストのエントリには - プレフィックスを使用(例: ["-reddit.com"]

補足

  • Perplexity Search API は構造化されたウェブ検索結果(titleurlsnippet)を返します
  • OpenRouter または明示的な baseUrl / model 指定により、互換性のため Sonar のチャット補完に切り替わります
  • 結果はデフォルトで15分間キャッシュされます(cacheTtlMinutes で変更可能)

web_search の完全な設定については Web tools を参照してください。 詳細は Perplexity Search API ドキュメントを参照してください。