💬

OpenAIのAPIを試してみた

2023/02/16に公開

ChatGPTで話題のOpenAIとは?

OpenAIは、人工知能の研究・開発を行う企業です。2015年に設立され、イーロン・マスク氏やサム・アルトマン氏らが共同創設者として参加しています。

OpenAIは、自然言語処理、コンピュータビジョン、強化学習など、さまざまな分野において最先端の人工知能技術の研究・開発を行っています。また、自社製品の開発だけでなく、人工知能の研究・開発に関心を持つ人々が参加できるオープンソースのプロジェクトや、AIに関する教育・普及活動なども行っています。

OpenAIは、人工知能がもたらす可能性について議論し、将来の社会において人間とAIが共存する方法を模索することも目的としています。

提供されているサービス

代表的なものとしては以下があります

  1. GPT(Generative Pre-trained Transformer)シリーズ:大量のテキストデータを学習して自然言語生成や文章要約などを行うモデルです。OpenAIが開発したものであり、GPT-3は2020年にリリースされ、世界最大級の言語モデルとして注目されています。
  2. DALL-E:自動生成された画像をもとに、与えられた文章に応じた画像を生成する技術です。例えば、「バナナに手がついた象の画像」など、非常に細かい指示にも応えられるとされています。
  3. Codex:自然言語でのプログラミング支援を目的としたモデルです。英語で説明したプログラムのコードを自動生成することができます。

これらのサービスや製品は、AIの技術の最先端を示すものとして注目されています。

利用用金

OpenAIは、いくつかのAPIを提供しており、それぞれ異なる利用料金が設定されています。以下は一般的な料金の概要です。

  1. GPT API:OpenAIは、APIを無料で提供していますが、制限付きの開発者プランと、より大きなリソースを利用できる有料のプランを提供しています。有料プランには、APIの使用に基づく料金が発生します。
  2. Codex API:2022年2月現在、Codex APIはベータ版であり、無料で利用することができますが、将来的に有料プランが提供される可能性があります。
  3. DALL-E API:DALL-E APIは現在プレビュー版であり、無料で利用することができますが、将来的に有料プランが提供される可能性があります。

OpenAIの料金は、APIを使用する方法や回数、使用するリソースの量によって異なります。より詳細な情報は、OpenAIの公式ウェブサイトで確認することができます。

OpenAI GPT APIの開発者プランの制限

OpenAI GPT APIの開発者プランには、以下のような制限があります。

  1. 月間APIコール数の制限:開発者プランでは、月間APIコール数が最大50,000に制限されています。これを超えた場合、APIの使用が制限される可能性があります。
  2. コールあたりの応答の制限:APIコールごとに返される最大トークン数は2048トークンに制限されています。これを超えた場合、APIはエラーを返すことがあります。
  3. 言語モデルのサイズの制限:開発者プランでは、最大モデルサイズが760Mに制限されています。これは、最大でGPT-3の中間サイズのモデルに相当します。
  4. コミュニティサポートのみ:開発者プランには、コミュニティサポートのみが提供されています。プランに含まれるサポートには、テクニカルサポートや優先アクセスが含まれていません。

これらの制限は、APIの無料版である開発者プランに適用されるものであり、より大きなAPIリソースを必要とする場合は、有料プランにアップグレードする必要があります。

と、こんな感じでChatGPTが記事を書いてくれました。ここからは実際にAPIを触りながら、自分の言葉で説明します。

Chromeの拡張機能として無料で試せるTalend API Testerで、OpenAI GPT APIを叩いて見ました。
https://chrome.google.com/webstore/detail/talend-api-tester-free-ed/aejoelaoggembcahagimdiliamlcdmfm?hl=ja

curlだとこんな感じです。

curl https://api.openai.com/v1/completions \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -d '{
  "model": "text-davinci-003",
  "prompt": "世界を平和にするにはどうしたらいいの?",
  "temperature": 0
  "max_tokens": 1000,
}'

主なリクエストパラメータ

  • model : 自然言語処理タスクを実行するニューラルネットワークアーキテクチャのモデル
    • text-davinci-003 : GPT-3のモデルの中で最も、高い品質、長い出力でタスクを実行
    • text-curie-001 : Davinciよりも高速で低コスト
    • text-babbage-001 : 品質は落ちるが、非常に高速、低コスト
    • text-ada-001 : 単純なタスクしか実行できないが、GPT-3のモデルの中で最速、低コスト
  • prompt : ChatGPTに投げるテキスト
  • temperature : 多様性を調整するためのパラメータ。値が低いほど、より一貫性のあるテキストを生成、値が高いほど、より多様なテキストを生成する
  • max_tokens : 出力するテキストの最大トークン数を指定、生成されたテキストの長さを制御するのに役立つ

レスポンス

20秒ほどで、JSON形式のレスポンスが返却されました。

{
"text": "\n\n平和を実現するためには、まずは国際関係を改善し、国家間の対話を深めることが重要です。また、国際社会が協力して、人権や民主主義、経済発展などの共通の利益を守ることが重要です。さらに、国際社会が協力して、戦争やテロ行為などの危険な行動を排除することも重要です。また、国際社会が協力して、環境保護や貧困の撲滅などの社会問題を解決することも重要です。",
"index": 0,
"logprobs": null,
"finish_reason": "stop"
}

無料枠の状況は?

これを見る限り、2023年5月1日まで、$18、無料で付与されているようです。
色々遊んでたので35リクエストで$0.35使っていたようです。
2月16日現在、1ドル=133.86円でしたので、1リクエスト=1.36円になります。
結構なコストですね。これを無料で公開しているとは。。。

サイトの方に値段が公開されているようです。最初の3ヶ月間で、$18まで無料で使えるようです。どのモデルを使うかで大分値段が違うようです。

  • Ada : $0.0004 /  1K tokens
  • Babbage : $0.0005 /  1K tokens
  • Curie : $0.002 /  1K tokens
  • Davinci : $0.02 /  1K tokens

AdaとDavinciだと50倍違う感じです。
https://openai.com/api/pricing/
これはモデルごとに試して見ると面白そうですね。

モデルごとに比べてみました。

「世界を平和にするにはどうしたらいいの?」

Ada(text-ada-001) :

「平和にするには平和のためにしていきたいと考えていたら、平和のためにしている人がいるだけで平和にするのはできるだけ助かりやすいと考えていたら、助かりやすくなるだけで平和にするのはできるだけ助かりやすくなるという事です
平和にするには平和のためにしている人がいるだけで平和にするのはできるだけ助かりやすいと考えていたら、助かりやすくなるだけで平和にするのはできるだけ助かりやすくなるという事です
平和にするには平和のためにしている人がいるだけで平和にするのはできるだけ助かりやすいと考えていたら、助かりやすくなるだけで平和にするのはできるだけ助かりやすくなるという事です
平和にするには平和のためにしている人がいるだけで平和にするのはできるだけ助かりやすいと考えていたら、助かりやすくなるだけで平和にするのはできるだけ助かりやすくなるという事です
平和にするには平和のためにしている人がいるだけで平和にするのはできるだけ助かりやすいと考えていたら、助かりやすくなるだけで平和にするのはできるだけ助かりやすくなるという事です
平和にするには平和のためにしている人がいるだけで平和にするのはできるだけ助かりやすいと考えていたら、助かりやすくなるだけで平和にするのはできるだけ助かりやすくなるという事です
平和にするには平和のためにしている人がいるだけで平和にするのはできるだけ助かりやすいと考えていたら、助かりやすくなるだけで平和にするのはできるだけ助かりやすくなるという事です
平和にするには平和のためにしている人がいるだけで平和にするのはできるだけ助かりやすいと考えていたら、助かりやすくなるだけで平和にするのはできるだけ助かりやすくなるという事です
平和にするには平和のためにしている人がいるだけで平和にするのはできるだけ助かり」

時間 : 7.11秒
これは厳しいですね。会話になっていません。もっと単純な質問じゃないと使い物にならないですね。

Babbage(text-babbage-001) :

「平和にするには、世界を超えてもらうための教育を行うことが必要です。世界を超えてもらうための教育を行うことにより、世界の平和を実現することができるでしょう。」

時間 : 1.65秒
Adaにくらべたら、会話にはなっていますが、いまいち意味はわからないですね。とても抽象的です。

Curie(text-curie-001) :

「世界を平和にするには、世界中の国々と協力して、核兵器を使用しないことが必要です。また、国際組織による平和の実現にも努めてください。」

時間 : 1.69秒
Babbageと比べると、会話になるのはもちろん、意味が通じますね。ただ内容がざっくりしてる感じでしょうか。

Davinci(text-davinci-003) :

「平和を実現するためには、まずは国際関係を改善し、国家間の対話を深めることが重要です。また、国際社会が協力して、人権や民主主義、経済発展などの共通の利益を守ることが重要です。さらに、国際社会が協力して、戦争やテロ行為などの危険な行動を排除することも重要です。また、国際社会が協力して、環境保護や貧困の撲滅などの社会問題を解決することも重要です。」

時間 : 21.98秒
さすがです。Curieはまだ、人間のほうが賢い感じでしたが、Davinciでは、人間と会話しているみたいです。もしかして、ここがシンギュラリティな気がします。

まとめ

軽く触って見ただけですが、改めてAIの進化の凄さを感じますね。近年だと、AIによる画像自動生成が話題でしたが、クオリティは、まだ正直微妙なところはあったかと思います。WebをAIのデータセットとしたら、やはりHTMLを始めとする文書は、他のソースに比べて膨大で、可能性が大きいものなのでしょうね。私の浅い知識からの見解ですが。

面白いものを思いついたので、次はこのAPIを利用したサービスを作って見ます。

Discussion