Perplexity Pro User は API も活用しよう

Perplexity AI の Pro ユーザーには、**毎月 5ドル分の API 呼び出し枠が特典として提供されています** 本記事では、Perplexity API の料金体系と iOS ショートカットとの組み合わせについて解説します。

## Perplexity API の料金体系
初めに、念の為 Perplexity の API 料金体系を掲載します。以下の表で、モデルごとの料金を確認できます。一番小さなモデルならほぼ無料枠内で収まりそうです。

https://docs.perplexity.ai/guides/pricing

| モデル名                                   | 1,000 リクエストごとの料金 | 1M トークンごとの料金 |  
|--------------------------------------------|----------------------------|-----------------------|  
| llama-3.1-sonar-small-128k-online          | $5                         | $0.2                 |  
| llama-3.1-sonar-large-128k-online          | $5                         | $1                   |  
| llama-3.1-sonar-huge-128k-online           | $5                         | $5                   |  

Pro ユーザーは、月額料金に含まれる 5ドル分の API 使用枠を活用することで、追加コストをかけずにこれらのモデルを利用可能です。

## Perplexity API KEY の発行方法

私の画面はすでに API KEY 発行済の画面で少し違うと思いますが、Perplexity Web にログインして設定を開き、上部のタブから `API` を選択します。次に `API キー` のセクションに行って `+ 生成` を押下するだけで簡単に `pplx-xxxxxxxxxxxxxxxxxxx` といった形式に API KEY を発行できます。

![スクリーンショット 0007-01-01 12.42.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/633687/20867165-c17c-567d-c099-896bc9b84219.png)

## 活用例：iOS ショートカットで音声入出力と連携
Perplexity の日本語音声入力・出力のサポートは比較的弱いかなと思っています。特に読み上げは漢字やアルファベットを含んだ読み上げになると変な読み上げになることが多いですね。ということで iOS ショートカットを活用して音声入出力と連携させることでこの弱みをカバーします。以下では、具体的な方法とその利点をご紹介します。

### 全体フローの概要
以下の画像は、私が作成した iOS ショートカットのフローを示したものです。

1. **音声入力**: iOS 音声入力でプロンプトを入力します
2. **API 呼び出し**: 次に、`https://api.perplexity.ai/chat/completions` に対してリクエストを送信します。この際、入力されたテキストを送信し、結果を JSON 形式で受け取ります
3. **レスポンスの解析**: API のレスポンスから必要なデータ（`choices.content`）を抽出します
4. **音声出力**: 最終的に、解析された結果を iOS の「読み上げ」機能を使って出力します

![スクリーンショット 0007-01-01 12.37.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/633687/f073e29f-8277-3c88-ec47-93298d0439f5.png)

### iOS ショートカットサンプル

以下に作成した iOS ショートカットのリンクを掲載します。コピーして Perplexity API キーを登録すればすぐ利用できるようにしておきました。

https://www.icloud.com/shortcuts/cac5ff9c4e864514a4b489f9692a2690

## Perplexity 活用ワンポイント

簡単な質問文でクイックにディスカッションでも良いですが、こういった Agent 機能付きの AI サービスはプロンプトで自然言語プログラミングみたいなことも出来ます。例えば次のようなプロンプトを書いてみましょう。

```markdown
Perplexity のユースケースを調査したいです。次のステップに従って調査結果を私に提供しなさい。

1. Perplexity のユースケースを Web からのみ調査し、複数のユースケースを取得します。あなたが考えたユースケースは使用できません。
2. ほぼ同一のユースケースは回答から除外します。
3. 同一ではない全く異なるユースケースを30件見つけたら、調査を終了して回答を作成します。30件に満たない場合、`1` に戻って再実行します。
4. 回答を作成します。
```

これは内部的に次にように何度も Web 検索が行われ、条件を満たすまで推論が再帰的に実行されます。

```mermaid
graph TD
    A[開始] --> B[ユースケースを調査]
    B --> C[ユースケースを取得]
    C --> D[同一ユースケースを除外]
    D --> E[30件以上か確認]
    E -- はい --> F[回答を作成]
    E -- いいえ --> B
```

::: note
llm に単一の推論を要求するようなケースではこのような要求をしてもあまり意味はありません。
:::

今回の prompt の調査結果は 20 件の Web サイトが調査されました。プロンプトを変えて `Perplexity のユースケースを30件、Web の調査結果のみを用いて回答しなさい。` とだけ実行すると 10件程度の調査に留まりました。極端な例ですが、ステップを定義し条件を定義することで何度も推論している様を見ることが出来るでしょう。場合によっては Perplexity 上部の進捗バーが行ったり来たりしているような動きも観測できます。

### 注意

あまりに膨大な調査を要求するとフリーズするケースがあります。システムへの負荷が高くなりすぎないように現実的な調査を依頼しましょう。また、もし非現実的な調査を依頼してアカウント削除等の損害が発生したとしても当方は責任を持ちません。自己責任で実施ください。

## まとめ
Perplexity Pro ユーザーであれば、無料利用枠を最大限に活用することで、コストを抑えながら高性能な AI を活用することが可能です。また、iOS ショートカットとの組み合わせにより、日本語音声対応を手軽に強化できます。他にも特定のタスクに特化するようにシステムプロンプトを都度仕込んでも良いですね。是非ご活用ください。