概要
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."}, ],
メッセージ作成者の役割。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キーを作成します。
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に問い合わせるとほとんど解決するとおもいます。