【超初心者向け】OpenAI API の QuickStart turorial をなぞってみた

2023.03.09

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

猫とアポロチョコと Systems Manager が好きなテクニカルサポートの m.hayakawa です。

OpenAI/ChatGPT に関する記事をたくさん書くぞ!という雰囲気もあり、元々 AI 関係には興味があったので、まずは始めてみよう!と思い、OpenAI の Quickstart tutorialをなぞってみました。

動作環境

  • Windows 10 Professional
  • WSL 2(Ubuntu 20.04 LTS)
  • python 3
  • git

はじめに

Windows 10 Professional に WSL 2 をインストールし、python 環境を構築する作業については、他の記事[1][2]に任せ、本記事では省略します。

pythonコマンドで、python3を実行するために、~/.bashrc に以下のコードを追加します。

alias python="python3" 
alias pip="pip3"

その後、sourceコマンドで bash に反映させます。

source ~/.bashrc

チュートリアル開始

導入

こちらのチュートリアルを元に進めていきます。

Quickstart tutorial - OpenAI API

Introduction, Switch with an instruction, Add some examples, Adjust yout settings は一通り読んでおきましょう。

プロンプトから得られる結果の例、temperature の設定によって得られる結果が異なること、与えるプロンプトによって適した temperature の値があることが分かりました。

git でリポジトリのコピーをする

さあ、Build your application の項目へと進んでいきましょう。

まずは、ホームディレクトリに任意の名前でディレクトリを作成して、カレントディレクトリを移動しておきましょう。

$ cd ~
$ mkdir OpenAI
$ cd OpenAI

git でチュートリアル用のリポジトリをクローンします。

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

API キーの取得

OpenAIのAPIページにアクセスし、画面右上のPersonalを選択、[View API keys]をクリックしAPI keys画面を表示します。

Create new secret key ボタンを押して、API キーを取得します。

API キーは一度しか表示されないので、必ず控えておきます。また、API キーは他者に共有したり、github のパブリックリポジトリに公開しないようにしてください。

API キーを環境にセットする

.env.example という環境ファイルを .env ファイルとしてコピーします。

cd openai-quickstart-python
cp .env.example .env

.env ファイルを下記に変更してください。

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キー>

本来はハードコードをしたくないところですが、ここではそのまま進んでいきます。

python でアプリケーションを実行

仮想環境を作成し、依存関係をインストールして、flask アプリケーションを実行します。

python -m venv venv
. venv/bin/activate
pip install -r requirements.txt
flask run

http://127.0.0.1:5000/ にアプリケーションが立ち上がるので、アクセスします。

ペットの名前を生成してくれる Web アプリケーションのようです。早速 dog や cat と入力してみました。

dog では「Super Paws, Mighty Mutt, The Mighty Hound」という名前、catでは「Super Whiskers, Furry Fury, The Mighty Purr-fect」という名前を提案してくれました。

アプリケーションの仕組みをざっくり見てみる。

app.py ファイルは以下になっていました。

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()
    )

generate_prompt 関数に、プロンプトがすでに書き込まれています。

スーパーヒーローのような動物の名前を提案すること、猫の場合の例、犬の場合の例が書かれています。

それとなく、提案された名前がヒーローっぽいなと思ったら、プロンプトで指定されていたんですね。

ここを変えてみることで、いろいろと結果が変わりそうです。いじってみると楽しそうです。

まとめ

ざっくりとですが、python 環境で OpenAI API の Quickstart tutorial をなぞってみました。

料金[3]がかかることもあるので、計画的に使用しましょう。

参考資料

[1] Windows 10 WSL 2(Linux 用 Windows サブシステム) + LinuxでのPython環境作成手順 - Qiita

[2] Ubuntu初心者がPython開発環境構築の初歩で詰まった2つのこと | DevelopersIO

[3] Pricing