PR

PerplexityのAPI key モデルと料金 Pythonサンプル

スポンサーリンク

PerplexityのAPI

生成AIで世界はこう変わる

Perplexityはネット検索しながら、Claude3などの日本語得意なAIと連携できるので、とても自然なテキストを生成できる。ブログ作成にうってつけじゃん!

と思って、PerplexityのAPIを調べている人も多いことでしょう。

ただ、PerplexityのAPIは、連携できるLLMがオープンソース系に限定されてる、という致命的な制約があるのでした。

制約があるものの、PerplexityのAPIは、プログラムからPerplexityの一部の機能を呼び出せます。

自動処理に組み込むのに使えるんですね。

  • Perplexity AIは、OpenAI互換のエンドポイントとしてAPIを提供している。APIキーを使用してAPIにアクセスし、対話の補完などを行うことができる。
  • APIを使うことで、Perplexityが公開するLLMモデルを使った推論が可能。Lama 2モデルやPerplexity独自の7億パラメータオンラインモデルなどがある。
  • APIを使ってPerplexityの機能を自分のアプリケーションに組み込むことができる。例えば、Perplexity APIとElevenLabsを組み合わせて、質問に対する回答を文字と音声で返すシステムを作ることができる。
  • APIを使うには、Perplexityのアカウントを作成してAPIキーを取得する必要がある。一部の機能は課金が必要な場合もある。

ただし、Perplexityのサービス全部を使えるわけじゃなく、利用範囲はかなり限定されてます。

使えるLLMは、オープンソースモデル(llama3とMixtral)のみです。

オープンソースモデルも、けっこうなスピードで進化しているのですが、日本語を扱うとなると、まだまだだね…というレベル。学習データに日本語が含まれていないんだろうな…と考えられます。

※利用可能モデルは、↓の料金のところで紹介。

「online」と名前のついたモデルを使うとネット検索も合わせてやってくれますが、あまり的確な答えは返ってきません。英語ならもっといい性能がでるみたいなのですが、使いたいのは日本語なんだよね…。

今後、改善されてくことを期待したいです。

 PerplexityのAPI KEYの取得方法

PerplexityのAPI KEYを取得する方法は以下の通りです。

まずは、Perplexityのウェブサイトにアクセスし、右上の「Sign Up」ボタンをクリックしてアカウントを作成します。

Perplexityの公式サイト

1.アカウント作成後、右上のアカウントアイコンをクリック

2.「API」をクリック

3.「API キー」の生成ボタンをクリック

生成されたAPIキーをコピーし、安全な場所に保管します。APIキーは機密情報なので、他人に教えたり公開したりしないよう注意が必要です。

APIキーを使用するアプリケーションやスクリプトの設定に貼り付けます。例えば、環境変数に設定したり、コードに直接記述したりします。

APIキーを取得したら、Perplexity AIのAPIを使ってさまざまな機能を活用できます。APIを使うことで、Perplexityの検索機能や言語モデルを自分のアプリケーションに組み込むことができます。

PerplexityのAPIは、有料プランのユーザーには毎月5ドル分の利用権が付属しているので、気軽に試すことができます。APIを使いこなすことで、効率的な情報検索や自然言語処理を実現できるでしょう。

APIを使ったサンプル(Python)

from openai import OpenAI
[% module(置き換え) %]
YOUR_API_KEY = "INSERT API KEY HERE"

messages = [
    {
        "role": "system",
        "content": (
            "You are an artificial intelligence assistant and you need to "
            "engage in a helpful, detailed, polite conversation with a user."
        ),
    },
    {
        "role": "user",
        "content": (
            "How many stars are in the universe?"
        ),
    },
]

client = OpenAI(api_key=YOUR_API_KEY, base_url="https://api.perplexity.ai")

# chat completion without streaming
response = client.chat.completions.create(
    model="llama-3-sonar-large-32k-online",
    messages=messages,
)
print(response)

# chat completion with streaming
response_stream = client.chat.completions.create(
    model="llama-3-sonar-large-32k-online",
    messages=messages,
    stream=True,
)
for response in response_stream:
    print(response)

perplexityのAPIを利用したサンプル

このPythonスクリプトは、OpenAIのAPIを使用してチャットボットを作成するためのものです。以下で詳しく解説します。

1. OpenAIライブラリのインポート

from openai import OpenAI

OpenAIライブラリをインポートしています。これにより、OpenAIのAPIを使用してチャットボットを作成することができます。

2. API keyの設定

YOUR_API_KEY = "INSERT API KEY HERE"

OpenAIのAPIを使用するためには、APIキーが必要です。ここでは、APIキーを変数YOUR_API_KEYに設定しています。実際のAPIキーに置き換える必要があります。

3. メッセージの定義

messages = [
    {
        "role": "system",
        "content": (
            "You are an artificial intelligence assistant and you need to "
            "engage in a helpful, detailed, polite conversation with a user."
        ),
    },
    {
        "role": "user",
        "content": (
            "How many stars are in the universe?"
        ),
    },
]

チャットボットの会話の流れを定義しています。messagesリストには、辞書形式のメッセージが含まれています。

  • roleキーは、メッセージの送信者を示します。"system"は、システムからのメッセージを表し、"user"はユーザーからのメッセージを表します。
  • contentキーは、メッセージの内容を示します。

ここでは、システムからのメッセージとして、チャットボットがユーザーとの会話を行うように指示しています。ユーザーからのメッセージとして、「宇宙にある星の数はどれくらいですか?」という質問を設定しています。

4. OpenAIクライアントの作成

client = OpenAI(api_key=YOUR_API_KEY, base_url="https://api.perplexity.ai")

OpenAIクライアントを作成しています。api_keyパラメータには、先ほど設定したYOUR_API_KEYを渡しています。base_urlパラメータには、OpenAIのAPIエンドポイントのURLを指定しています。

5. チャット完了のリクエスト(ストリーミングなし)

response = client.chat.completions.create(
    model="llama-3-sonar-large-32k-online",
    messages=messages,
)
print(response)

OpenAIのチャット完了APIにリクエストを送信しています。

  • modelパラメータには、使用するモデルの名前を指定しています。ここでは、"llama-3-sonar-large-32k-online"を使用しています。
  • messagesパラメータには、先ほど定義したmessagesリストを渡しています。

APIからの応答はresponse変数に格納され、最後にprint(response)によって出力されます。

6. チャット完了のリクエスト(ストリーミングあり)

response_stream = client.chat.completions.create(
    model="llama-3-sonar-large-32k-online",
    messages=messages,
    stream=True,
)
for response in response_stream
    print(response)

ストリーミングを有効にしてOpenAIのチャット完了APIにリクエストを送信しています。
[% module(置き換え) %]

  • streamパラメータをTrueに設定することで、ストリーミングを有効にしています。
  • APIからの応答はresponse_stream変数に格納され、forループによって逐次処理されます。各応答はprint(response)によって出力されます。

    PerplexityのAPIの使い方と料金

    プログラムに組み込んで、完全放置の自動処理をするのに欠かせないAPIも用意されています。

    しかし、ウェブサービスそのままの機能を使えるわけではなく、ちょっと残念な感じになっています。

    AIは、llama-3-sonar(オンラインまたはオフライン)、Mixtral(オフライン)の2択。

    2024年7月、llama-3.1が利用可能になりました。

    モデル名にonlineと名前がついたものを選択するとネット検索もしてくれるのですが、Webサービスのように複数のサイトをガーッと検索してくれるわけではなく、せいぜい1つか2つのサイトを検索。

    関連 llama-cpp-pythonの使い方

    関連 Mixtal 8x22B(オープンソースAI)発表

    テキスト生成の精度が低いのもあって、出てくる出力は、初期のテキスト生成AIが出したような不自然なものになってしまいます。

    PRO契約をすると、毎月5ドル分のAPIクレジットがゲットできます。

    プロンプトの長さにもよりますが、1回で0.01ドル消費し、だいたい5ドルで500回のAPIコールが可能。

    API経由でPROモードの結果を呼び出せるのかと思えば、そうではなく、かなり劣化した出力となっています。

    使い方によっては、パソコンのローカルでLLMを動作させたほうが目的に合うかも知れません。テキスト生成を無制限におこなったり、バッチファイルなどとLLMを連携させて仕事をさせるなど、工夫次第で夢は広がりますね。

    以下のツールを使えば、オープンソースのLLMがサクッと動かせます。

    関連)LM Studioの使い方

    Perplexity
    スポンサーリンク
    フォローする