こんにちは。AIツールの情報を集めているときに、大量のツール名リストからツールの詳細を取得するためにPerplexity APIを使ってみました。
APIキーの取得
参照:公式ドキュメント
まず普通にPerplexityにログインしたら、歯車のアイコンを押して設定を開くとAPIのリンクがヘッダーに表示されます。
そこからクレジットを追加するとAPIキーが発行できるようになります。クレジットの追加が最低3ドルからだったので3ドル追加しました。
APIを叩いてみる
コードの書き方はOpenAIのAPIとかなり似ていました。実際openAIクライアントをインポートしています。互換性があるみたいです。
The API is conveniently OpenAI client-compatible for easy integration with existing applications. -Perplexity API Document
from openai import OpenAI
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.1-sonar-large-128k-online",
messages=messages,
)
print(response)
# chat completion with streaming
response_stream = client.chat.completions.create(
model="llama-3.1-sonar-large-128k-online",
messages=messages,
stream=True,
)
for response in response_stream:
print(response)
リアルタイムでレスポンスが欲しい場合はstreamingの書き方でできるみたいです。私はwithout streamingで使いました。
レスポンスの構造はこうなっています。
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"model": "llama-3.1-sonar-small-128k-online",
"object": "chat.completion",
"created": 1724369245,
"choices": [
{
"index": 0,
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": "The number of stars in the Milky Way galaxy is estimated to be between 100 billion and 400 billion stars. The most recent estimates from the Gaia mission suggest that there are approximately 100 to 400 billion stars in the Milky Way, with significant uncertainties remaining due to the difficulty in detecting faint red dwarfs and brown dwarfs."
},
"delta": {
"role": "assistant",
"content": ""
}
}
],
"usage": {
"prompt_tokens": 14,
"completion_tokens": 70,
"total_tokens": 84
}
}
回答のみを取得したい場合はこれで取得できました。
response = client.chat.completions.create(
model=MODEL_NAME,
messages=messages,
)
# レスポンスから回答を抽出
answer = response.choices[0].message.content
return answer
モデルの種類
現在7つのモデルがあり、それぞれの用途についてPerplexity本人に聞いてみました。
Perplexity AIの各モデルの主な用途は以下のとおりです:
利用料金についてはここから確認できます。Pricing
使ってみた感想
今回はなるべく新鮮な情報が欲しかったのでPerplexityのAPIを使いました。モデルはllama-3.1-sonar-huge-128k-onlineを使ったからか、情報精度は高かったですが、プロンプトを理解する能力はChatGPTにはかなり劣ります。的外れな回答をすることも多々あったので、ところどころ回答を自分で修正する必要がありました。私は『マークダウン形式で返さないで』などをプロンプトに加えていたのですが、その辺りの処理はうまくできませんでした。あくまで、情報の精度を求めて、短く検索エンジンのようなプロンプトにするのがいいと思います。