概要

GPTをプログラムするとは

OpenAIのGPTモデルは、自然言語とプログラムコードを理解するようにすでにトレーニングされています。
GPTのAIは、ユーザーの入力に応じてテキストの出力を提供します。GPT への入力は、”プロンプト” と呼ばれます。
つまりプロンプトの設計は、基本的にGPTモデルを「プログラム」する方法であり、適切なプロンプトを設計することで、GPTはタスクを正常に完了することができます。

ChatGPTでできるサービス例

  • 文章のドラフト作成
  • プログラミングサポート
  • ナレッジベースに関する質問に回答
  • テキストの分析
  • 会話チャットボットの作成
  • 様々な分野の家庭教師
  • 言語の翻訳

ChatGPTにリクエストをしてみる

ChatGPTのAPIに対して簡単なリクエストをしてみます。リクエストのクエリの内容を見てみます。

Pythonで簡単なプログラムを作成し、ANACONDAの「CMD.exe Prompt」で実行してみます。

準備

コマンドでライブラリをインポートしておきます。

pip install openai
pip install requests

簡単なクエリプログラム

APIキーの部分は自身のAPI keysからコピーして貼り付けてください。

import requests

url = "https://api.openai.com/v1/chat/completions"
headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer APIキー"
}
data = {
    "model": "gpt-3.5-turbo",
    "messages": [{"role": "user", "content": "Say this is a test!"}],
    "temperature": 0.7
}

response = requests.post(url, headers=headers, json=data)
print(response.json())

上記のコードをパイソンのファイルでsaytest.pyと保存し、コマンドプロンプトから「USER>python saytest.py」で実行します。

以下の応答が返されてきました。

{
  'id': 'chatcmpl-7TJqIoA39ERySW2TmtiiDkK5wQKjl', 
  'object': 'chat.completion', 
  'created': 1687222142, 
  'model': 'gpt-3.5-turbo-0301', 
  'usage': {
    'prompt_tokens': 14, 
    'completion_tokens': 5, 
    'total_tokens': 19
  },
   'choices': [
    {
      'message': {
        'role': 'assistant', 
        'content': 'This is a test!'
      }, 
    'finish_reason': 'stop',
    'index': 0
    }
  ]
}

finish_reasonがstopであることから、APIはモデルによって生成された完全な完了を返したことがわかります。

ヘッダーにはAPIキーが必要です。

上記のリクエストでは、1つのメッセージしか生成していませんが、nパラメータを設定することで、複数のメッセージの選択肢を生成することができます。

モデルの取得

https://api.openai.com/v1/models/{model}

Chatモデル

会話を構成するメッセージのリストが与えられると、このモデルは応答を返します。

Request body

代表的なリクエストのパラメータを調べました。

model string Required

使用するモデルのID。

messages array Required

これまでの会話を構成するメッセージのリスト。例はこんな感じ。

    model=MODEL,
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Knock knock."},
        {"role": "assistant", "content": "Who's there?"},
        {"role": "user", "content": "Orange."},
    ],
role string Required
メッセージ作成者の役割。system, user, assistant, functionなど

content string Optional
メッセージの内容。関数呼び出しのあるアシスタント・メッセージを除くすべてのメッセージで、contentが必要。

name string Optional
このメッセージの作成者の名前。nameはroleがfunctionの場合は必須で、コンテンツにあるレスポンスの関数の名前であるべきです。a-z、A-Z、0-9、およびアンダースコアを含むことができ、最大長は64文字。

function_call object Optional
モデルによって生成された、呼び出すべき関数の名前と引数です。

temperature number Optional Defaults to 1

0~2の間で指定します。0.8のような高い値は出力をよりランダムにし、0.2のような低い値は出力をより集中させ決定論的にします。

n integer Optional Defaults to 1

各入力メッセージに対して、チャット補完の選択肢をいくつ生成するか。

サンプルプログラムを動かしてみる

OpenAIが提供しているサンプルプログラム

ChatGPTのアプリを作成する前にOpenAIが提供しているサンプルプログラムをローカル(Windows)上で動かしてみます。
サンプルプログラムは、「ペットの名前生成アプリ」です。いくつかのキーワードを入力し、ボタンを押すと候補が表示されるという簡単なもの。

プログラムは「Node.js」と「Python」があり、今回は「Python」を使ってみます。

準備

Python がインストールされていない場合は、ここからインストールしてください。次に、このリポジトリのクローンを作成してコードをダウンロードします。又は、OpenAIが提供しているzip ファイルをダウンロードします。

ダウンロードしたzipファイルを解凍すると「openai-quickstart-python-master」というフォルダができるので、こちらをpython環境のルートフォルダ(通常はC:Users/user/)に移動します。

API キーを追加します

OpenAIにログインし、APIキーを作成します。

OpenAIのAPIキー作成

Anacondaがインストールしているとして、「ANACONDA.NAVIGATOR」から「CMD.exe Prompt」を起動します。

APIキーを設定します。

set OPENAI_API_KEY=APIキ

アプリを実行する

先ほど移動したディレクトリへ移動し、いかのコマンドを実行します。

python -m venv venv
venvScriptsactivate
pip install -r requirements.txt
flask run

ブラウザでhttp://localhost:5000 を開くと、ペット名ジェネレーターが表示されるはずです。

ChatGPTサンプルプログラム

エラーが発生したときは、エラー内容をコピーし、その都度ChatGPTに問い合わせるとほとんど解決するとおもいます。