![見出し画像](https://assets.st-note.com/production/uploads/images/100469722/rectangle_large_type_2_f028f7a15276256c7fa3cf44644ebae1.png?width=800)
【解説】GPT-4 APIの使い方
AIライティングツール「ブンゴウ」を運営している、あちょ(@otaka_ai)です。
GPT-4の招待メールを心待ちにしている人も多いのではないでしょうか?
この記事では、招待メールがきたらすぐにAPIを利用したい!という方のために使い方の解説をします。
※現在APIを利用するには、API waitlistに登録する必要があります。
まだの方は、コチラから登録してください。
GPT-4の使用方法
API waitlistに登録すると、数日で下記のような招待メールが届きます。
自分は登録してから2日ほどで招待がきました。
![](https://assets.st-note.com/img/1679016848931-l3hao3BC9M.png)
メールにも書いてある通り、現段階では、8Kコンテキストのモデルのみアクセスできます。
"Get started"をクリックすると、GPT-4 モデルの一覧ページに飛びます。
![](https://assets.st-note.com/img/1679017113326-oyNzd5YLaq.png?width=800)
MAX TOKENSが8Kで、Chat GPT APIの2倍なので、今までのモデル以上に情報量を与えることが出来るようになりましたね。
ただ、学習データは2021年9月時点までで今までのモデルと同じですね。
ではさっそく、本題の使い方の解説をします。
使い方は、PlaygroundとAPIをたたく2種類の方法があります。
Playgroundで利用する
PlaygroundでModeを”Chat”にして、Modelをクリックすると
gpt-4が選択できるようになります。
下記リンクをクリックすれば、すぐに利用することが出来ます。
Playground
![](https://assets.st-note.com/img/1679017574171-32yBYTLok8.png)
ただし、Playgroundの場合は、tokenの上限が以前のモデルと同じで
8Kではないですね。
![](https://assets.st-note.com/img/1679018010762-Z1dkeRI5XM.png)
APIで利用する
GPT-4 APIは、ChatGPT APIと同様にchat completionの形式で利用する必要があります。
なので、ChatGPT APIをたたいたことがある方は、モデルを変更するだけで利用可能です。
実際にAPIを使用してみる
google colabで試してみたいと思います。
セットアップ
pip install openai
最新バージョンは0.27.2ですね。
既にopenaiのパッケージをインストール済みの方は、以下のコマンドで最新バージョンにアップデートできます。
pip install -U openai
API KEYをセット
import openai
openai.api_key = = '<ここにAPI KEYを入力>'
これでセットアップは完了です。
GPT-4モデルが利用できるか確認
response = openai.Model.retrieve("gpt-4")
print(response)
#出力
{
"created": 1678604602,
"id": "gpt-4",
"object": "model",
"owned_by": "openai",
"parent": null,
"permission": [
{
"allow_create_engine": false,
"allow_fine_tuning": false,
"allow_logprobs": false,
"allow_sampling": false,
"allow_search_indices": false,
"allow_view": false,
"created": 1678818558,
"group": null,
"id": "modelperm-xexawMadpQbnG8Z5csrwaTx3",
"is_blocking": false,
"object": "model_permission",
"organization": "*"
}
],
"root": "gpt-4"
}
ちゃんとGPT-4のモデルが利用できることが確認できました。
APIをたたいてみる
modelを"gpt-4"に変更するだけでOKです。
入力
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Who won the world series in 2020?"},
{"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."},
{"role": "user", "content": "Where was it played?"}
]
)
print(response)
出力
{
"choices": [
{
"finish_reason": "stop",
"index": 0,
"message": {
"content": "The 2020 World Series was played at the Globe Life Field in Arlington, Texas. Due to the COVID-19 pandemic, Major League Baseball selected a neutral site for the games to be held in order to limit travel and potential virus exposure.",
"role": "assistant"
}
}
],
"created": 1679023923,
"id": "chatcmpl-6uv6xBUA6AEcpYxuvgr7A9qSTQQ09",
"model": "gpt-4-0314",
"object": "chat.completion",
"usage": {
"completion_tokens": 50,
"prompt_tokens": 52,
"total_tokens": 102
}
}
生成したテキスト部分だけを取得したい場合は、以下のようにすればOKです。
print(response["choices"][0]["message"]["content"])
【おまけ】試したこと
Playgroundを使って、GPT-4と GPT-3.5-turbo(ChatGPTと同じモデル)で生成される結果を比較してみました。今回はゼロショットで結果を比較します。
論理パズルを解かせてみた
プロンプト
[SYSTEM]
あなたは、論理的に物事を考えることが得意な数学者です。
[USER]
論理パズルの問題に対して、回答をして下さい。さらに、回答に至った経緯も説明して下さい。
#問題
<ここに問題文>
問題:天使と悪魔
【問題】
3人の女性がいます。
外見からはわかりませんが、一人は天使、一人は悪魔、一人は人間です。
天使は真実しか言わず、悪魔は嘘しかつきません。そして人間は真実と嘘を使いわけます。
3人は次のように言っていますが、それぞれの正体を教えて下さい。
A「私は天使ではありません。」
B「私は人間ではありません。」
C「私は悪魔ではありません。」
GPT-3.5-turbo
Aが天使であると仮定すると、彼女の発言は嘘になります。つまり、彼女は天使であると言っていますが、これは矛盾しています。したがって、Aが天使であることは不可能です。
Bが人間であると仮定すると、彼女の発言は嘘になります。つまり、彼女は人間であると言っていますが、これは矛盾しています。したがって、Bが人間であることも不可能です。
したがって、Cが人間であると推測できます。Cが人間である場合、彼女の発言は真実になります。つまり、彼女は悪魔ではないと言っています。これは、彼女が人間である場合にのみ真実であり、矛盾していません。
Aが嘘を言っているので、彼女は悪魔または人間である可能性があります。しかし、Bが嘘を言っているため、彼女は人間であることはあり得ません。従って、Aは悪魔であることがわかります。
最後に、Bは天使であることがわかります。彼女が人間である場合、彼女の発言は嘘になります。つまり、彼女は人間であると言っていますが、これは矛盾しています。したがって、Bは天使であることがわかります。
従って、Aは悪魔、Bは天使、Cは人間であることがわかります。
GPT-4
まず、Aが天使だと仮定してみましょう。しかし、天使は真実しか言わないため、「私は天使ではありません。」と言うことはできません。従って、Aは天使ではありません。
次に、Aが悪魔だと仮定してみましょう。悪魔は嘘しかつかないため、「私は天使ではありません。」と言うことができます。この仮定のもとでは、Bは人間で、Cは天使になります。しかし、Bが人間だとすると、「私は人間ではありません。」という嘘がつけなくなります。
以上から、Aが人間であることがわかります。
次に、Bが天使だと仮定してみましょう。天使は真実しか言わないため、「私は人間ではありません。」と言うことができます。この仮定のもとでは、Cは悪魔になります。Cが悪魔だとすると、「私は悪魔ではありません。」という嘘をつくことができます。従って、この仮定は成立します。
以上から、Aは人間、Bは天使、Cは悪魔です。
正解
正解は、A:人間 / B:天使 / C:悪魔でGPT-4だけ正解に辿り着きました。
URLから情報を取得できるか
GPT-4のプロダクトページに以下のようにURLの情報を元に回答を生成するデモがあったので、試してみました。
![](https://assets.st-note.com/img/1679022329847-ljAuJc02YG.png?width=800)
プロンプト
[SYSTEM]
あるウェブサイトのURLを伝えるので、あなたはURLの情報を根拠に私の質問に回答してください。
[USER]
[Text from: https://ja.wikipedia.org/wiki/BUMP_OF_CHICKEN]
#質問
<ここに質問>
質問:バンド結成までの経緯を教えてください。
GPT-3.5-turbo
町中華として活動していた藤原基央(Vo/G)と直井由文(G)が、高校時代に同級生だった升秀夫(B)を誘い、バンドを結成しました。その後、高校の後輩である芦田愛菜(Dr)が加入し、BUMP OF CHICKENが誕生しました。
Drは芦田愛菜さんらしいです。
GPT-4
BUMP OF CHICKENは、日本のロックバンドで、1994年に千葉県で結成されました。メンバーは4人で、藤原基央(ボーカル・ギター)、増川義浩(ギター・コーラス)、直井由文(ベース・コーラス)、そして桜井秀俊(ドラム・コーラス)です。彼らは小学校の頃から友人で、中学時代に藤原がバンドを結成することを提案しました。その後、彼らは高校時代に「バンプ・オブ・チキン」というバンド名を決め、1996年にインディーズデビューを果たしました。その後、1999年にメジャーデビューを果たし、以降、数々のヒット曲やアルバムをリリースしています。
GPT-4でも内容が合ってないので、まだURLから情報を取得することはできないようです。
最後に
GPT-4 API利用方法について解説しました。
この記事が参考になった方は、スキやTwitterでのシェアをお願いします!!
この記事が気に入ったらサポートをしてみませんか?