PFNが開発した国産LLM PLaMo Primeを使ってみる
先日、Preferred Networksグループで開発されたPLaMo PrimeというLLMのAPI提供が開始されました。
このPLaMo PrimeはChatのWeb UIもありますが、APIを利用してプログラムから簡単に利用することができるようになっています。Pythonの場合はOpenAIのChatGPTと同じ`openai`というPythonパッケージをほぼ同じように使えば利用することができるので、ChatGPTをAPIで叩いたことがある人はすぐに使えると思っています。
そんなわけで、今回の記事では試しにAPI keyを取得して、PLaMoを使ってみたので、使い方を記事にまとめました。
ちなみに私自身はPFNでPLaMoの開発をしているメンバーなので、感想などについてはある程度バイアスが入った意見を書いているんだろうなーと思いつつ読んでいただければ幸いです。
アカウント作成
まず以下のサイトにアクセスしてアカウントを作ります
https://plamo.preferredai.jp/api
アクセスしたら下で赤で示した「今すぐ登録」のボタンをクリックします。
すると以下のように「同意事項確認」というページに移動します。ここで日本国内の居住者かどうかなどの確認事項にチェックや利用規約等に問題がないかなどをチェックします。利用規約とプライバシーポリシーはリンクを開かないとチェックできないしようになっています。
チェックが終わると次はクレジットカード登録になります。
クレジットカードの登録が終わればアカウントの作成完了です。アカウントができて、ログインすると以下のようなプロジェクト管理ページに飛びます。
利用上限設定
この手のLLMのAPIは気を抜くとすごいリクエストを送りまくって、とんでもない額になるということが時々あります。これを防ぐためにPLaMo APIでも利用上限設定が設定できるようになっています。少なくとも個人で使う場合は意図せず高額請求が来ないように自分に合った額に設定しておくことがおすすめです。
設定する際は以下の①のところの「利用上限設定」をクリックして、②の「…」をクリックして「設定」をクリックします。自分の経験上、使うときは本当に一気に使われるのでアラームではなくハードリミットを1000円に設定しておくということをしておいています。この部分は使いながら調節して無理のない額に調整していく感じになるかと思います。
API key取得
次にAPI Keyを取得します。API Keyを取得する際は以下のように①の「プロジェクト管理」をクリックし、デフォルトで設定されているプロジェクトの「Default」をクリックしてDefaultのAPI Keyを取得します。
プロジェクトを開くと以下のような画面になります。今すでにAPI Keyが一つ入っていますが、最初は何もないと思います。新しくAPI Keyを追加する場合は右の赤枠の「API キーを追加する」をクリックし、APIキー名を適当につけて「作成」を押すと新しいAPI keyが作成されます。
API Keyが作成がされると以下のようにAPI Keyのシークレットが表示されるので、メモしておきます。
これでAPI Keyの取得までできたので、次は実際にPLaMoの出力を取得する流れを説明します。
PLaMo Primeの出力をPythonで取得する
PLaMo Primeを使う方法はいくつかありますが、今回は openai
というパッケージを使ってPLaMo Primeを使います。
他の利用方法も含め、使い方はこちらにまとまっています。
https://docs.plamo.preferredai.jp/ja/getting-started
また、今回紹介するコードは手軽に試せるようにGoogle Colabで動作させることを前提に説明していきます。コード全体はこちらにありますので参考にしてください。
https://github.com/shu65/plamo_api_examples/blob/main/plamo_api_example.ipynb
環境セットアップ
Google ColabでPLaMo Primeを使うにあたり、環境をセットアップします。必要なパッケージとしてはPLaMo Primeを使うのに必要なopenai
とAPI Keyの読み込みにpython-dotenv
を利用します。
インストールするには以下のようにします。
!pip install openai python-dotenv
次にdotenv
を利用してAPI Keyを環境変数にセットします。dotenv
で読み込むファイルは予めGoogle Driveに置いておきます。今回はcolab_env/plamo_api_env
に以下の内容のファイルを置いてある前提で説明します。
OPENAI_API_KEY="取得したAPI Key"
上のファイルの「取得したAPI Key」の部分は先ほど取得したAPI Keyをコピペしてください。
Googel Driveにこのファイルを設置できたら、以下のコードをGoogle Colab上で実行します。
from google.colab import drive
from dotenv import load_dotenv
drive.mount('/content/drive')
load_dotenv(dotenv_path="/content/drive/MyDrive/colab_env/plamo_api_env")
drive.mount()
を実行するとGoogle Driveに接続していいかの確認メッセージがでますので、許可してください。
許可されるとplamo_api_env
が読み込まれ、OPENAI_API_KEY
という環境変数にAPI Keyがセットされます。
これであとは以下のようにリクエストを送るとPLaMo Primeから回答が返ってきます。
import os
from openai import OpenAI
client = OpenAI(
base_url="https://platform.preferredai.jp/api/completion/v1",
# other params...,
)
completion = client.chat.completions.create(
model="plamo-1.0-prime",
messages=[
{"role": "system", "content": "あなたは旅行アドバイザーです"},
{"role": "user", "content": "金沢で朝から夕方まで1日のおすすめの観光ルートを教えて下さい"},
],
)
OpenAIのモデルを使うときとPLaMo Primeを使うときで明確に違う点としてbase_url
の指定があります。これが適切なものを指定されていないとPLaMo Primeにリクエストが飛ばないので注意してください。
今回はリファレンスのexampleにある「金沢で朝から夕方まで1日のおすすめの観光ルートを教えて下さい」というリクエストに対する回答をPLaMo Primeに返してもらうコードになっています。
回答結果は以下のように出力することができます。
print(completion.choices[0].message.content)
私が実行したときは以下のように返ってきました。
金沢で朝から夕方までのおすすめの観光ルートを以下にご紹介いたします。
【午前】
金沢駅からスタートし、金沢の台所と呼ばれる近江町市場で朝食をとります。海鮮丼やお寿司などの金沢グルメをお楽しみください。
近江町市場(お食事)
↓(徒歩5分)
金沢の城下町を再現した長町武家屋敷跡を散策します。土塀の続く街並みを眺めながら、のんびりとお散歩をお楽しみください。
長町武家屋敷跡(散策)
↓(徒歩10分)
金沢市民の台所として親しまれている、金沢の三大市場のひとつ、「金沢市民の台所」として親しまれている、金沢の三大市場のひとつ、「金沢エムザ」でお土産を購入します。
金沢エムザ(お土産購入)
【午後】
兼六園周辺へ移動し、金沢で最も古い神社である石浦神社を参拝します。
石浦神社(参拝)
↓(徒歩5分)
日本三名園のひとつである兼六園を見学します。
兼六園(見学)
↓(徒歩5分)
金沢城公園を散策します。
金沢城公園(散策)
↓(徒歩10分)
尾山神社を参拝します。
尾山神社(参拝)
以上、朝から夕方までのおすすめの観光ルートをご紹介いたしました。
なお、各スポットの営業時間や、その他のご希望などございましたら、お知らせください。お客様のご希望に沿ったプランをご提案いたします。
一応、提案されている場所が本当に金沢にあるかは調べて、確かにあることまでは確認しました。プランとしても一度金沢に行ったとき確か提案された場所を友達と回った記憶があるので、素人目からするとそこまで変なプランを提案されているわけではない印象を持っています。
終わりに
今回はPLaMo Primeがリリースされたということで使い方のまとめの記事を書きました。仕事ではPLaMoを結構叩いているので、他にもいつくか便利な使い方の記事は書いていこうかと思っています。
また、PLaMoに関して技術的な紹介の記事がいくつかすでに公開されているので、興味がある方はそちらもご覧ください。メインの3本は参考に下に示しておきます。