[初心者向け]OpenAI API始めよう!

2023.03.15

データアナリティクス事業本部の荒木です。

今月3月1日にOpenAIが開発者向けにAIチャットボットサービスの「ChatGPT」と音声認識サービスの「Whisper」のAPIを公開しましたね!
GPT-4が公開されるなどどんどん進化していく技術にエンジニアとして触れなければ!と思ったのでいろいろ試していきたいと思います!

今回は導入部分をやっていきます。

環境

  • Windows
  • WSL2(Ubuntu 20.04.4 LTS)
  • Python(3.8.10)

本題

実際にAPIを使う前に準備が必要になるので、公式が準備しているデモ用のコードを使って準備とAPIを試してみたいと思います。

今回私はPythonを使いますが、NODE.JSのコードも準備されていますのでご自身の環境に合わせて利用できます。

API Keyの取得

OpenAIのAPIを使うためにまずAPI keyを取得する必要があります。
以下の公式ページから取得することができますので取得したらコピーして保存しておきます。
OpenAI API Key

デモ用コードの取得

デモ用コードがあるGitリポジトリを任意の場所にクローンします。

git clone https://github.com/openai/openai-quickstart-python.git

リポジトリopenai-quickstart-pythonにある.env.exampleをコピーして.envを作成し、先ほど取得したAPI Keyを入力します。

FLASK_APP=app
FLASK_ENV=development

# Once you add your API key below, make sure to not share it with anyone! The API key should remain private.
OPENAI_API_KEY={取得したAPI Key}

アプリケーションが起動できて以下のようなログがでたら`http://localhost:5000`にブラウザでアクセスします。

 * Serving Flask app 'app' (lazy loading)
 * Environment: development
 * Debug mode: on
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 103-900-103

こんなページが見れればOKです。

リポジトリの中にあるapp.pyを確認してみると、動物の名前を入力して処理を実行するとChatGPTでスーパーヒーローのような動物の名前を考えてくれるみたいです。笑

generate_prompt関数の中の文字列をChatGPTに渡しているみたいなので、Python初心者の方はこのコードを使いまわして、違う提案を渡してみたり、処理を少しいじってみたりするのがいいかもしれませんね!

import os

import openai
from flask import Flask, redirect, render_template, request, url_for

app = Flask(__name__)
openai.api_key = os.getenv("OPENAI_API_KEY")


@app.route("/", methods=("GET", "POST"))
def index():
    if request.method == "POST":
        animal = request.form["animal"]
        response = openai.Completion.create(
            model="text-davinci-003",
            prompt=generate_prompt(animal),
            temperature=0.6,
        )
        return redirect(url_for("index", result=response.choices[0].text))

    result = request.args.get("result")
    return render_template("index.html", result=result)


def generate_prompt(animal):
    return """Suggest three names for an animal that is a superhero.

Animal: Cat
Names: Captain Sharpclaw, Agent Fluffball, The Incredible Feline
Animal: Dog
Names: Ruff the Protector, Wonder Canine, Sir Barks-a-Lot
Animal: {}
Names:""".format(
        animal.capitalize()
    )

試しにrhinoceros(サイ)を入力してみました。
お気に入りはShield of the Savannahです。笑

まとめ

以上がChatGPTの導入部分になります。
導入部分で一番大切なのは、自分でコードを書くときに、今回取得したAPI Keyを指定して処理を実行する必要がありますので、これを忘れないようにしましょう!

今後もOpenAI APIを使っていろいろ試していきたいと思います!

参考

OpenAI API 公式ドキュメント