こんにちは、blueです。
AIを使ってブログ記事を書きたいです。OpenAIのAPIの使い方を教えてください
以上のようなOpenAIのAPIについての要望にお答えします。
✓この記事の内容
- OpenAIのAPIの種類と使用方法
- VBAを使ったブログ記事の作成方法
- OpenAI使用時の注意事項
今回の記事では記事作成として、
- 「ブログのアイデア」
- 「ブログ記事」
- 「ブログ画像」
を取得することにします。最終的には以下の様な資料がボタン一つで作成できるようになります。一部は有料ですが、無料部分だけでも出力は可能ですので是非読んでいってください。
OpenAI、GPT-3とは
OpenAIは人工知能の研究・開発を行う企業です。
開発した技術はオープンソースとして公開しています。
OpenAIは複数のAPIを提供しています。例えば以下の様なものがあります。
- GPT-3: 2020年に登場した文章の生成を行うAPI(ChatGPTの前身)。
機能と価格が異なる複数のモデルがある。テキストから文章を生成することができる
- DALL·E(ダリ) 2: 2022年に登場した画像生成を行うAPI。
テキストから画像を生成することができる
今回は文章生成と画像生成のAPIを使ってブログ記事を作成します。
OpenAIを使ってブログ記事を作成する方法
GPT-3, DALL-E2でVBAを用いて一連のブログ記事を作成する方法は以下になります。
- OpenAIでAPIキーを取得する
- VBAでHTTPリクエストの準備をする
- GPT-3を用いて「ブログのアイデア」を取得する
- GPT-3を用いて「ブログ記事」を取得する
- DALL-E2を用いて「ブログ画像」を取得する
以下で詳しく説明します。
OpenAIでAPIキーを取得する
OpenAIでAPIキーを取得する手順は以下の通りです。
1 https://openai.com/api/にアクセスする
2 右上の「SIGN UP」をクリックする
3 「Create your account」でEmail address、Passwordを記載する。GoogleやMicrosoft Acountの認証を用いてもよい
4 受け取ったメールに記載されているリンクをクリックし、OpenAIのサイトを開く。
5 表示されたアカウントをクリックし、「View API keys」をクリックする
5 表示された「API key」をメモしておく
これでAPIを使用できる環境ができます。
VBAでHTTPリクエストできる環境を整える
VBAでHTTPリクエストをする為に、「Microsoft XML, v6.0」の参照設定をしておきます。
Microsoft XMLとはMicrosoftでXMLベースのアプリケーションを構築するためのライブラリです。
簡単に言うとMicrosoftでXMLファイルを操作するためのソフトです。
以下参照
MSXML(Wikipedia(英語))
MSXMLとは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典
なお、VBAで扱う場合の参照設定の方法は以下です。
- VBEメニューバーの「ツール」-「参照設定」から「Microsoft XML, v6.0」にチェックを入れる
これだけです。
GPT-3を用いて「ブログのアイデア」を取得する
「ブログのアイデア」をイミディエイトウィンドウに表示させるサンプルコードは以下になります。
なお「あなたのAPIキー」に関してはOpenAIで取得したキー、「KeyWord」の**に関しては任意の文字列を入れてください。
■ブログのアイデアを取得するコード
Sub CreateBlogIdea()
Dim url As String
Dim APIkey As String
Dim KeyWord As String
url = "https://api.openai.com/v1/completions "
APIkey = "あなたのAPIキー"
KeyWord = "**に関するブログのアイデアを生成してください"
Dim http As MSXML2.XMLHTTP60
Set http = New MSXML2.XMLHTTP60
Dim requestBody As String
requestBody = "{""model"":""text-davinci-003"",""prompt"":""" & KeyWord & """,""max_tokens"":2000,""temperature"":0}"
With http
Call .Open("POST", url, False)
Call .setRequestHeader("Content-Type", "application/json")
Call .setRequestHeader("Authorization", "Bearer " & APIkey)
Call .send(requestBody)
Do
If .readyState = 4 Then Exit Do
DoEvents
Loop
'情報を出力(イミディエイトウィンドウ)
Debug.Print .Status
Debug.Print .responseText
End With
End Sub
GPT-3を用いて「ブログ記事」を取得する
「ブログ記事」をイミディエイトウィンドウに表示させるサンプルコードは以下になります。
同様に「あなたのAPIキー」に関してはOpenAIで取得したキー、「KeyWord」の**に関しては任意の文字列を入れてください。
■ブログ記事を取得するコード
Sub CreateBlog()
Dim url As String
Dim APIkey As String
Dim KeyWord As String
url = "https://api.openai.com/v1/completions "
APIkey = "あなたのAPIキー"
KeyWord = "**に関する詳細なブログ記事を書いてください"
Dim http As MSXML2.XMLHTTP60
Set http = New MSXML2.XMLHTTP60
Dim requestBody As String
requestBody = "{""model"":""text-davinci-003"",""prompt"":""" & KeyWord & """,""max_tokens"":2000,""temperature"":0}"
With http
Call .Open("POST", url, False)
Call .setRequestHeader("Content-Type", "application/json")
Call .setRequestHeader("Authorization", "Bearer " & APIkey)
Call .send(requestBody)
Do
If .readyState = 4 Then Exit Do
DoEvents
Loop
'情報を出力(イミディエイトウィンドウ)
Debug.Print .Status
Debug.Print .responseText
End With
End Sub
「猫に関するブログのアイデア」「猫の最新トレンドに関するブログ記事」について取得した結果は以下になります。
(ここではイミディエイトウィンドウに表示された結果の一部分をWordに貼り付けて適宜改行しています)
これだけでも十分に利用することはできますが、実際は1行で表示されること、不要な情報が入っているという問題もありますので以下の記事ではExcelに出力する為のコードも含めて記載しています。
以下は有料記事とはなりますがExcelに転記するコードを追加しています。期間限定で低く設定していますのでぜひ見てみてください。
【VBA-API】OpenAIのGPT-3を使ってブログのアイデアを作成する
【VBA-API】OpenAIのGPT-3を使ってブログ記事を作成する
DALL-E2を用いて「ブログ画像」を取得する
「ブログ画像」のURLをイミディエイトウィンドウに表示させるサンプルコードは以下になります。
同様に「あなたのAPIキー」に関してはOpenAIで取得したキー、
「KeyWord」の**に関しては任意の文字列を入れてください。
■ブログ画像を取得するコード
Sub GenerateImage()
Dim url As String
Dim APIkey As String
Dim KeyWord As String
url = "https://api.openai.com/v1/images/generations"
APIkey = "あなたのAPIキー"
KeyWord = "**のイラスト"
Dim http As MSXML2.XMLHTTP60
Set http = New MSXML2.XMLHTTP60
Dim requestBody As String
requestBody = "{""prompt"":""" & KeyWord & """,""num_images"":1,""size"":""512x512""}"
With http
Call .Open("POST", url, False)
Call .setRequestHeader("Content-Type", "application/json")
Call .setRequestHeader("Authorization", "Bearer " & APIkey)
Call .send(requestBody)
Do
If .readyState = 4 Then Exit Do
DoEvents
Loop
'情報を出力(イミディエイトウィンドウ)
Debug.Print .Status
Debug.Print .responseText
End With
End Sub
なお、今回取得できるものはURLになります。
このURLをWebのアドレスバーにコピーすると・・・
上記のような画像が表示されます。
以下も有料記事ですが画像をフォルダにダウンロードするコードを追加しています。こちらも期間限定で低く設定していますのでぜひ見てみてください。
URLをコピーして保存する手間が省けるのでぜひ使ってください。
【VBA-API】OpenAIのDALL-E2を使って画像を生成させる
OpenAI APIを使う際の注意点
OpenAIが提供しているAPIの利用は無料ではありません。
ただOpenAIの会員登録を行うと、その際に18ドル相当のクレジットが付与されます。
このクレジットは3ヶ月間有効となっており、新規登録から3ヶ月すぎるまでは、OpenAIのAPI利用時に18ドル分のクレジットが充当されます。
そのため、トライアルでOpenAIのAPIを利用する場合、このクレジットの範囲内で収まれば、無料利用可能です。
使用料金は以下の様になっています。
「ブログアイデア」「ブログ記事」生成の料金
今回のコードでは一番高性能なDavinciモデルを使っているので1000トークンあたり0.02ドルとなります。
今回の記事作成についてはmax2000トークンまでとしていますので1記事で0.04ドルとなります。結果として400回以上できるのでトライアルには十分です。
トークンに関しては英語では1単語=1トークンですが、日本語の場合は多くなるようです。
入力テキストがどれぐらいのトークンか知りたい場合は、OpenAIのPlaygroundで確認できます。
「ブログ画像」生成の料金
画像の場合はシンプルで解像度によって値段が決まっています。
今回のコードは1024*1024としているので1枚当たり0.02ドルかかることになります。結果として約900回はできるのでトライアルには十分です。
使用料金の確認方法
OpenAIの使用料金確認はOpenAIのページの右上のマイアカウントから「Manage Account」をクリックすることで確認することができます。
ちなみに私の場合は6日間で0.58ドルでした。この記事作成の為何度も使用していますがまだまだ使えそうです。
今回のまとめ
本記事ではOpenAIのAPIを用いたブログ記事作成方法を解説しました。
詳しいAPIの書き方については有料記事で記載していますので参考にしていただければ幸いです。
以下は有料記事とはなりますがExcelに転記するコードを追加していますので十分な価値はあります。
【VBA-API】OpenAIのGPT-3を使ってブログのアイデアを作成する
【VBA-API】OpenAIのGPT-3を使ってブログ記事を作成する
【VBA-API】OpenAIのDALL-E2を使って画像を生成させる
Web APIに関する記事はこちら
【VBA-API】Web APIを使ってデータを取得する(OpenWeatherMap)1
【VBA-API】Web APIを使って時間別天気予報を取得する(気象庁API)
【VBA-API】Web APIを使ってLINE通知を行う(LINE Notify)1
【VBA-API】Web APIを使って翻訳をする(DeepL API)
【VBA-API】Web APIを使ってNHK番組表を取得する(NHK番組表API)
コメント