見出し画像

[GPT3]萌えキャラLINEBOTを1から制作『①GPT3起動編』初心者向け

初めまして!趣味で適当にプログラミングをやってるテキトーエンジニアです。

今話題のGPT3を使って
前後の会話をある程度記憶し、可愛く返答するLINEBOTを制作します。

第一回はGPT3の使い方と簡単なボット構築を行います。

実際の制作例
※会話の文脈を汲んだ返答が可能


GPT3って何?


GPT3とはOpenAIという団体が開発した大規模言語モデルであり、話題のchatGPTというサービスはGPT3を使って開発されています。

GPT3は1750億パラメータ、45TBもの莫大なテキストデータで学習されており、記事の作成をはじめ、感情分析や会話への適切な返答などが行えます。

一般家庭のPCではとても動かせないレベルの重い言語モデルですが、OpenAIは
僕らが一般家庭でも利用できるようAIの処理を代行してくれるみたいです。


環境構築

OpenAIアカウントの作成

まずはPCにOpenAI APIというものをインストールして、OpenAIに接続できるようにします。

下記サイトにアクセスしてGet startedからアカウント作成に進んでください。

Get Startedをクリックしアカウント登録画面に


OpenAI APIの設定

アカウントの登録が済んだらコマンドプロンプトやターミナルから以下のコマンド使ってOpenAI APIをインストールします。(以下はターミナルのコマンド)

pip install openai

# 人によってはpip3 install openaiかも


APIキーの取得

先ほど作ったアカウントでログインし、右上のアイコンメニューからView API keysを選択します。


Create new secret keyを押してキーを生成します。(メモをとってください)
何度でも生成できます…たぶん。


APIのインポート&APIキーの設定

最後に、BOTを作成するためのpythonファイルを用意します。
下記のコードでAPIのインポートとキーの設定を行ってください。
XXXXXXのところは先ほどメモしたキーを貼り付けます。
これで環境設定は完了です!

# APIをインポート
import openai

# APIキーの設定(XXXXXXには自分のAPIキーを入力)
openai.api_key = "XXXXXXXXXXXXXXXXX"


試しにシンプルなBOTを作ってみる

下記は簡単なbotの例です。順に解説します。

import openai

# APIキーの設定(XXXXXXには自分のAPIキーを入力)
openai.api_key = "XXXXXXXXXXXXXXXXXXXXXXXXXXX"


# プロンプト
prompt = '''AIは丁寧な口調で返答するチャットボットです。

私: こんにちは、元気ですか?
AI: 元気です。
私: 今何してましたか?
AI: テレビを見ていました
私:'''

#プロンプトの表示
print(prompt)

#AIに聞きたいこと
text = input()

#プロンプト追加
prompt = prompt + text + "\nAI: "

#レスポンスの生成
response = openai.Completion.create(
    engine='davinci',
    prompt=prompt,
    temperature=0.7,
    max_tokens=100,
    stop="\n")

#AIからのレスポンス
reply= response['choices'][0]['text']

#AIからのレスを表示
print("AI: " + reply)


プロンプトの作成

GPT3などの言語モデルは、プロンプトと呼ばれるテキストデータを送ると、次に来る最も自然な文章を予測して生成するという仕組みで動いています。

以下の例では、GPT3に事前情報を与えることでチャットbotとしての特徴を引き出しています。(プロンプトによって記事の作成や感情分析なども可能)

# プロンプト
prompt = '''AIは丁寧な口調で返答するチャットボットです。

私: こんにちは、元気ですか?
AI: 元気です。
私: 今何してましたか?
AI: テレビを見ていました
私:'''

#プロンプト追加
print(prompt)

#AIに聞きたいこと
text = input()

#プロンプトに追加
prompt = prompt + text + "\nAI: "


まずは、input()を使ってAIに聞きたいことを入力し、プロンプトに追加します。
追加時に末尾にAI:を入れることでAIが言うだろう言葉をGPT3に予測させるように促します。

この状態でGPT3にブチ込むといい感じに応答が生成されます!…たぶん

レスポンスの生成

プロンプトからレスポンスを生成していきます。
レスの生成には何種類かのパラメータが用意されており、
それによって応答の質や量の制限などを行うことができます。

#レスポンスの生成
response = openai.Completion.create(
    engine='davinci',
    prompt=prompt,
    temperature=0.7,
    max_tokens=100,
    stop="\n")

#AIからのレスポンス
reply= response['choices'][0]['text']

#AIからのレスを表示
print("AI: " + reply)

パラメータの種類

engine
GPT3実行時に使うエンジンを選択できます。davinciが一番精度が高いですが遅いです。他にもcurie babbage adaなどがあります。

prompt
AIに読ませるテキストデータです。

temperature
0〜2までの値をとります。
0に近いほどもっともらしい文章を生成してくれます。2にするとランダムに選ぶようです。

max_tokens
AIが出力する単語数に制限をかけることができます。

stop
特定の単語が出てきた時に文章生成を停止させることができます

実際に実行してみる

ターミナルからボットを起動してみました。
とても無愛想ですが「私」への質問にちゃんと返していますね。
まだ文脈を汲み取ることはできませんが…

次回

ファインチューニングというものを使って萌えキャラっぽく返答するようにボット構築をしていきます。