0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ゼロから始めるOpenAI

Last updated at Posted at 2024-04-02

対象読者

  • とりあえずOpenAIのAPIを呼び出して簡単なChatBot作りたい方向け

1.環境構築

2.APIキーの取得

下記記事を参考にアカウント作成とAPIキーを発行します。
https://nicecamera.kidsplates.jp/help/feature/ai-kata/openapi_apikey/

すでにアカウントを作成している場合、3ヶ月以上経っているとAPIキーの無料期間が過ぎているため、クレジットを購入しないとコードを実行しても429エラーになるので注意です。

エラー例
RateLimitError: Error code: 429 - {'error': {'message': 'You exceeded your current quota, please check your plan and billing details. For more information on this error, read the docs: <https://platform.openai.com/docs/guides/error-codes/api-errors.'>, 'type': 'insufficient_quota', 'param': None, 'code': 'insufficient_quota'}}

3.動くChatbot

環境構築とAPIキーを取得できましたら、下記サンプルコードを実行してみてください。
恐らく問題なければ対話形式で簡単なChatbotが動くはずです。

chatbot.py
from openai import OpenAI

client = OpenAI(api_key="OPENAI_API_KEY")

messages = []

while True:
    try:
        user_input = input("You: ")
        messages.append({"role": "user", "content": user_input})
        res = client.chat.completions.create(
            model="gpt-3.5-turbo",
            messages=messages,
        )
        messages.append(res.choices[0].message)
        print("Assistant", res.choices[0].message.content)
    except KeyboardInterrupt:
        print("Exiting...")
        break

結果

image.png

4. APIのパラメーターについて

OpenAIモデルのAPIドキュメントは以下になります。
https://platform.openai.com/docs/api-reference/embeddings/create

パラメータを使って色々試してみると面白いかもしれません。

chatbot.py
        res = client.chat.completions.create(
            model="gpt-3.5-turbo",
            messages=messages,
            n=3,
            stop= ...
            // 
        )
  • model: AIのエンジンを指定する
  • max_tokens: 生成するトークンの最大数 (デフォルト:16, 最大:2048)
  • temperature: ランダムさ
  • n: 生成する結果数
  • stop: どんな単語が出現したら文章生成を打ち切るかを指定

5. Chatbotの性格を変えてみる

コードを少し変更してみて、Chatbotに性格を与えてみることにします。

chatbot.py
from openai import OpenAI
import argparse


client = OpenAI(api_key="OPENAI_API_KEY")

def main():
    parser = argparse.ArgumentParser(description="Chatbot")
    parser.add_argument("--personality", type=str, default="親切で優しい", help="Personality of the chatbot")
    personality = parser.parse_args()

    messages = [{"role": "system", "content": f"あなたは会話型チャットbotです。性格は、{personality}です。"}]

    while True:
        try:
            user_input = input("You: ")
            messages.append({"role": "user", "content": user_input})
            res = client.chat.completions.create(
                model="gpt-3.5-turbo",
                messages=messages,
            )
            messages.append(res.choices[0].message)
            print("Assistant", res.choices[0].message.content)
        except KeyboardInterrupt:
            print("Exiting...")
            break

if __name__ == "__main__":
    main()

ここで大事なポイントはmessagesに与えているroleです。

roleには3種類あり,

  1. system
  2. user(入力側)
  3. assistant(チャットモデル)
    を各メッセージに付与することで会話の流れを表現しています
  • system は、AIアシスタントの設定を記述でき、AIに人格を与えるようなことができます。
  • assistant はAIからの回答(出力)、 user はユーザーからの発信(入力)です。基本的には user として聞きたいことを送る形になります。

試しに、性格を与えたChatbotに挨拶してみましょう。
デフォルトの性格は、「親切で優しい」みたいです。

python chatbot.py 
You: こんにちは!
Assistant こんにちは!いかがしましたか?お話しましょう!

次に、引数として性格を指定して実行してみます。

python chatbot.py --personality="卑屈"
You: こんにちわ!
Assistant あ、こんにちは...。どうも、ごきげんよう。
You: 

ぼっちちゃんみたいですね。

image.png

おわりに

簡単に調べた程度の知識ですが
色々なモデルを試したり、roleの与え方次第でAIの口調を変えたり色々できそうですね♪

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?