【VBA-API】OpenAIのGPT-3を使ってブログ記事を作成する(ChatGPT API2023年導入予定)

VBAスクレイピング

こんにちは、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 addressPasswordを記載する。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を利用する場合、このクレジットの範囲内で収まれば、無料利用可能です。

使用料金は以下の様になっています。

「ブログアイデア」「ブログ記事」生成の料金

クリックすると拡大します

Pricing – OpenAI

今回のコードでは一番高性能なDavinciモデルを使っているので1000トークンあたり0.02ドルとなります。
今回の記事作成についてはmax2000トークンまでとしていますので1記事で0.04ドルとなります。結果として400回以上できるのでトライアルには十分です。
トークンに関しては英語では1単語=1トークンですが、日本語の場合は多くなるようです。
入力テキストがどれぐらいのトークンか知りたい場合は、OpenAIのPlaygroundで確認できます。

「ブログ画像」生成の料金

クリックすると拡大します

Pricing – OpenAI

画像の場合はシンプルで解像度によって値段が決まっています。
今回のコードは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)

コメント

タイトルとURLをコピーしました