はじめに
AIエージェントを構築する際、複数のLLMプロバイダーを使い分けるケースが増えている。タスクの性質に応じてGPT-5.4の高速推論を使い、別の処理ではClaude Opus 4.6の長文理解を活用する、といった構成だ。しかし、プロバイダーごとにSDK・認証・レスポンス形式が異なるため、統合コードの保守コストが膨らみやすい。
Perplexity Agent APIは、この課題に対する解の一つとして2026年2月に一般提供(GA)を開始した。OpenAI、Anthropic、Google、xAI、NVIDIAの主要モデルを単一エンドポイント POST /v1/agent で呼び出せる。OpenAI SDK互換のインターフェースを採用しており、既存コードからの移行は最小限で済む。
この記事では、Perplexity Agent APIの全体像、対応モデルと料金体系、Pythonでの実装方法、そしてMCPとの棲み分けについて解説する。
この記事で学べること
- Perplexity Agent APIのアーキテクチャと対応モデル
- Python SDKを使った基本的なAPI呼び出しとWeb検索統合
- Sonarモデルファミリーの料金体系と使い分け
- MCPとAPI/CLIアプローチの比較と選定基準
対象読者
- 複数のLLMプロバイダーを使い分けているバックエンド開発者
- AIエージェントのツール統合を検討しているエンジニア
- LLM APIのコスト最適化に関心がある方
TL;DR
- Perplexity Agent APIは
POST /v1/agentの単一エンドポイントで、GPT-5.4・Claude Opus 4.6・Gemini 3.1 Pro・Grok 4.1 Fast等を呼び出せるマルチプロバイダーAPI - OpenAI SDK互換のため、
base_urlとapi_keyの2行変更で既存コードから移行可能 - Web検索($0.005/回)とURL取得($0.0005/回)をビルトインツールとして提供し、モデルのトークン料金はプロバイダー直接価格と同額(マークアップなし)
- Perplexity独自のSonarモデルファミリー(Sonar / Sonar Pro / Sonar Reasoning Pro / Sonar Deep Research)も同一インターフェースで利用可能
Perplexity Agent APIの全体像
なぜ「統一エンドポイント」なのか
LLMアプリケーションの開発では、モデル選択が固定されることは少ない。コスト・レイテンシ・精度のバランスに応じてモデルを切り替えるニーズがある。従来のアプローチでは、プロバイダーごとにSDKをインストールし、認証情報を管理し、レスポンスのパース処理を個別に実装する必要があった。
Perplexity Agent APIは、この統合レイヤーをAPI側で吸収する。開発者は model パラメータに "openai/gpt-5.4" や "anthropic/claude-opus-4-6" を指定するだけでプロバイダーを切り替えられる。
基本仕様
| 項目 | 内容 |
|---|---|
| エンドポイント | POST https://api.perplexity.ai/v1/agent |
| 互換エイリアス |
POST /v1/responses(OpenAI SDK互換) |
| 認証 | Bearer トークン(PERPLEXITY_API_KEY) |
| 公式SDK | Python(perplexityai)、TypeScript(@perplexity-ai/perplexity_ai) |
| ストリーミング | 対応 |
| 構造化出力 | JSON Schema指定に対応 |
対応モデル
2026年3月時点で公式ドキュメントに記載されている主要モデルは以下の通り。
| プロバイダー | モデル名 | 用途 |
|---|---|---|
| OpenAI | openai/gpt-5.4 |
汎用推論・コード生成 |
| Anthropic | anthropic/claude-opus-4-6 |
長文理解・複雑な推論 |
google/gemini-3.1-pro |
マルチモーダル推論 | |
| xAI | xai/grok-4.1-fast |
高速推論 |
| NVIDIA | nvidia/nemotron-3-super |
エージェント特化 |
| Perplexity |
sonar / sonar-pro
|
Web検索統合 |
モデル指定は "プロバイダー名/モデル名" のフォーマットに従う。Perplexity独自のSonarモデルはプロバイダー名なしで指定できる。
Pythonでの基本実装
セットアップ
pip install perplexityai
環境変数にAPIキーを設定する。
export PERPLEXITY_API_KEY="pplx-xxxxxxxxxxxxxxxx"
APIキーはPerplexityのAPI管理画面(https://www.perplexity.ai/api-platform)から発行できる。
基本的なAPI呼び出し
from perplexity import Perplexity
client = Perplexity()
response = client.responses.create(
model="sonar-pro",
input="Pythonの非同期処理でasyncioとtrioの違いを説明してください",
max_output_tokens=1024,
temperature=0.7,
)
print(response.output_text)
print(f"コスト: ${response.usage.total_cost:.6f}")
レスポンスの usage フィールドに入力トークン数・出力トークン数・ツール呼び出し回数と、それぞれのコストがUSD単位で含まれる。リクエストごとのコストが透明化されている点が特徴だ。
OpenAI SDK互換での呼び出し
既存のOpenAI SDKを使用しているプロジェクトでは、2行の変更で移行できる。
from openai import OpenAI
client = OpenAI(
base_url="https://api.perplexity.ai/v1",
api_key="pplx-xxxxxxxxxxxxxxxx", # Perplexity APIキー
)
# /v1/responses エンドポイントを使用
response = client.responses.create(
model="openai/gpt-5.4",
input="Kubernetesのポッドスケジューリングアルゴリズムを説明してください",
)
print(response.output_text)
base_url をPerplexityのエンドポイントに、api_key をPerplexityのAPIキーに変更するだけで動作する。レスポンス形式もOpenAI互換のため、後続の処理コードを変更する必要はない。
ビルトインツール: Web検索とURL取得
Web検索の統合
Agent APIの差別化ポイントの一つが、ビルトインのWeb検索ツールだ。モデルが回答生成時にリアルタイムのWeb情報を参照できる。
from perplexity import Perplexity
client = Perplexity()
response = client.responses.create(
model="sonar-pro",
input="2026年3月時点のPython 3.14の主な新機能は何ですか?",
tools=[{"type": "web_search"}],
tool_choice="auto",
)
print(response.output_text)
tools パラメータに {"type": "web_search"} を含めると、モデルが必要に応じてWeb検索を実行する。tool_choice を "auto" に設定すると、モデルが検索の要否を自律的に判断する。
Web検索の料金は1回あたり $0.005 で、トークン料金とは別に usage フィールドに計上される。
URL取得ツール
特定のWebページの内容を取得・解析するURL取得ツールも利用できる。
response = client.responses.create(
model="sonar-pro",
input="このページの主要な変更点を要約してください",
tools=[
{"type": "web_search"},
{"type": "fetch_url"},
],
instructions="公式ドキュメントの情報を優先して回答してください",
)
URL取得の料金は1回あたり $0.0005 だ。
プリセットによる簡略化
頻出パターンにはプリセットが用意されている。"pro-search" プリセットを指定すると、Web検索ツールが自動的に有効化され、多段検索による深い情報収集が行われる。
response = client.responses.create(
model="sonar-pro",
preset="pro-search",
input="LangChainとLlamaIndexの最新バージョンにおけるRAG実装の違い",
)
カスタム関数呼び出し
ビルトインツールに加えて、独自の関数定義もサポートされている。
response = client.responses.create(
model="openai/gpt-5.4",
input="東京の現在の天気を教えてください",
tools=[
{
"type": "function",
"function": {
"name": "get_weather",
"description": "指定された都市の現在の天気を取得する",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "都市名",
}
},
"required": ["city"],
},
},
}
],
)
レスポンスにツール呼び出しが含まれる場合、関数を実行して結果を返す標準的なツールループを実装する。
料金体系
サードパーティモデル
サードパーティモデル(OpenAI、Anthropic、Google、xAI、NVIDIA)のトークン料金は、各プロバイダーの直接価格と同額でマークアップなしと公式ドキュメントに記載されている。Perplexityが課金するのはツール利用料のみだ。
| ツール | 料金(1回あたり) |
|---|---|
| Web検索 | $0.005 |
| URL取得 | $0.0005 |
Sonarモデルファミリー
Perplexity独自のSonarモデルには、トークン料金とリクエスト料金の2層構造がある。
| モデル | 入力(/1Mトークン) | 出力(/1Mトークン) | リクエスト料金(/1K件) |
|---|---|---|---|
| Sonar | $1 | $1 | $5〜$12 |
| Sonar Pro | $3 | $15 | $6〜$14 |
| Sonar Reasoning Pro | $2 | $8 | $6〜$14 |
| Sonar Deep Research | $2 | $8 | — |
Sonar Deep Researchには追加で引用トークン($2/1M)、推論トークン($3/1M)、検索クエリ($5/1K件)の料金が発生する。
リクエスト料金は検索コンテキストのサイズ(Low / Medium / High)によって変動する。検索量が多いほどリクエスト単価が上がる仕組みだ。
コスト確認
レスポンスの usage フィールドで、リクエストごとの詳細なコスト内訳を確認できる。
response = client.responses.create(
model="sonar-pro",
preset="pro-search",
input="Next.js 15のServer Actionsの変更点",
)
usage = response.usage
print(f"入力トークン: {usage.input_tokens}")
print(f"出力トークン: {usage.output_tokens}")
print(f"合計コスト: ${usage.total_cost:.6f}")
MCPとの棲み分け — 「プロトコル」か「API」か
Perplexity CTOの問題提起
2026年3月11日のAsk 2026カンファレンスで、Perplexity CTOのDenis Yarats氏はMCP(Model Context Protocol)からAPI/CLIへのシフトを表明した。その技術的根拠として、以下の2点を挙げている。
1. コンテキストウィンドウの消費
MCPのツール定義(スキーマ、パラメータ記述、レスポンス形式)はモデルの作業メモリ内に展開される。複数ツールを接続するエージェントでは、ツール定義だけでトークンの相当数を消費する。本番環境でマルチツール・マルチターンの会話を処理する場合、このオーバーヘッドが無視できなくなる。
2. 認証フローの分散
MCPでは各MCPサーバーが独自に認証フローを管理する設計になっている。複数のサービス(Slack、GitHub、Notion等)を接続する場合、認証の管理ポイントが分散し、運用の複雑性が増す。
Y Combinator CEOのGarry Tan氏もMCPの代わりにCLIベースの統合を選択したことが報じられており、本番環境での信頼性と速度を優先する開発者の間で、同様の判断が広がっている。
MCPが適するケース
一方で、MCPが適する場面も明確に存在する。
| 観点 | MCP | Agent API |
|---|---|---|
| ツール発見 | 動的(サーバーが利用可能なツールを公開) | 静的(事前定義されたツールセット) |
| 拡張性 | コミュニティ主導で新ツール追加が容易 | Perplexity側の対応待ち |
| ローカル統合 | ローカルファイル・アプリとの直接接続 | クラウドAPI経由のみ |
| 認証 | 各サーバー個別(OAuth 2.1対応予定) | 単一APIキー |
| トークン効率 | ツール定義がコンテキストを消費 | API側で吸収 |
MCPはローカル環境との深い統合やサードパーティツールの動的な発見が必要な場合に強みを発揮する。Agent APIは、クラウド上でのLLMアクセス統一とWeb検索統合に特化している。
選定基準
以下の基準で使い分けを判断できる。
- 「複数LLMを統一的に呼び出し、Web検索も統合したい」 → Agent API
- 「ローカルファイル・IDE・社内ツールとAIを接続したい」 → MCP
- 「両方必要」 → Agent APIでLLMアクセスを統一し、MCPでローカルツール連携を補完する併用構成
エージェントワークフローへの組み込み
マルチモデル・パイプラインの例
Agent APIの model パラメータを切り替えるだけで、タスクに応じたモデル選択を実装できる。
from perplexity import Perplexity
client = Perplexity()
def research_and_summarize(query: str) -> dict:
"""Web検索で情報収集し、要約を生成するパイプライン"""
# ステップ1: Sonar ProでWeb検索付き情報収集
research = client.responses.create(
model="sonar-pro",
preset="pro-search",
input=f"以下のトピックについて最新情報を網羅的に収集してください: {query}",
max_output_tokens=2048,
)
# ステップ2: Claude Opus 4.6で構造化要約
summary = client.responses.create(
model="anthropic/claude-opus-4-6",
input=f"以下の調査結果を構造化して要約してください:\n\n{research.output_text}",
instructions="技術者向けに、要点を箇条書きで整理してください",
max_output_tokens=1024,
)
return {
"research": research.output_text,
"summary": summary.output_text,
"total_cost": research.usage.total_cost + summary.usage.total_cost,
}
このパターンでは、情報収集にはWeb検索が統合されたSonar Proを、要約生成にはClaude Opus 4.6を使用している。APIキーもエンドポイントも1つで完結する。
トークンバジェットの制御
max_output_tokens に加えて、ツールの並列実行やトークン消費の上限を細かく制御できる。
response = client.responses.create(
model="sonar-pro",
input="React 19のServer Componentsの実装パターンを3つ挙げてください",
max_output_tokens=512,
temperature=0.3,
tools=[{"type": "web_search"}],
parallel_tool_calls=True, # ツールの並列実行を許可
)
構造化出力
JSON Schemaを指定して、レスポンスの形式を強制できる。エージェントの出力を後続処理にパイプする場合に有用だ。
response = client.responses.create(
model="openai/gpt-5.4",
input="Python, TypeScript, Rustの3言語でHTTPクライアントライブラリを比較してください",
response_format={
"type": "json_schema",
"json_schema": {
"name": "library_comparison",
"schema": {
"type": "object",
"properties": {
"comparisons": {
"type": "array",
"items": {
"type": "object",
"properties": {
"language": {"type": "string"},
"library": {"type": "string"},
"async_support": {"type": "boolean"},
"recommendation": {"type": "string"},
},
},
}
},
},
},
},
)
注意点と制約
レート制限
公式ドキュメントではレート制限の具体的な数値は公開されていないが、サードパーティモデルへのリクエストは各プロバイダーのレート制限に準拠する。高頻度の呼び出しが必要な場合は、リトライ処理とバックオフ戦略の実装が推奨される。
モデルの可用性
サードパーティモデルの可用性はPerplexityのルーティング基盤に依存する。特定のモデルが一時的に利用不可になる可能性がある点は考慮が必要だ。ミッションクリティカルな用途では、フォールバックモデルの設定を検討するとよい。
データプライバシー
Agent APIを経由するリクエストはPerplexityのインフラを通過する。機密性の高いデータを扱う場合は、各プロバイダーのAPIを直接呼び出す構成が適切なケースもある。
まとめ
Perplexity Agent APIは、複数のLLMプロバイダーを単一エンドポイントで統一するAPIレイヤーとして設計されている。OpenAI SDK互換のインターフェース、ビルトインのWeb検索/URL取得ツール、リクエストごとの透明なコスト表示が主な特徴だ。
Sonarモデルファミリーを含めると、Web検索統合から深層リサーチまで幅広いユースケースをカバーする。MCPとは競合するというよりも、クラウドLLMアクセスの統一(Agent API)とローカルツール連携(MCP)という異なるレイヤーを担う関係にある。
複数のLLMプロバイダーを使い分けるエージェントシステムを構築する際の選択肢として、検討する価値がある。



