書籍発売後に発表された各種変更点の対応について※お詫びと訂正はこちら

本ドキュメントは書籍発売後に発表された ChatGPT および Embeddings など、新モデルをはじめとした変更点に対応するための更新情報をまとめています。
併せて、お詫びと訂正の詳細についても掲載しております。

目次
JSON 形式データの仕様変更に伴う対応
ChatGPT の新モデル対応
Embedding の新モデル対応
GPT-4V のレスポンスフォーマット変更に伴う対応

更新情報
JSON 形式データの仕様変更に伴う対応
ChatGPT の API から変更される JSON 形式のレスポンスフォーマットで仕様変更がありました。仕様変更に伴うエラーを回避するためのコード変更点は以下の通りです。
●コードの変更点
・74 ページ サンプル 03-10.txt 96 行
［変更前］
str2 = Chr(34) & vbLf & "

},"

［変更後］
str2 = Chr(34) & "," & vbLf
・286 ページ サンプル 10-06.txt 11 行
［変更前］
str2 = Chr(34) & "},"
［変更後］
str2 = Chr(34) & "," & vbLf

ChatGPT の新モデル対応
P.65「ChatGPT のモデルとコスト」で解説している各モデルに加え、以下の 3 つのモデルが利用できるよ
うになっています。それぞれの特徴と入力コスト・出力コストは以下の通りです。本書で作成している
ChatGPT 関数は、モデル名に関するコードを変更するだけで、新たなモデルを使用することができます。
●GPT-4o mini
2024 年 7 月 18 日に OpenAI は、新しい GPT-4o mini モデルを発表しました。本書で作成している文章生
成の ChatGPT 関数と、画像認識の ChatGPTV 関数は、モデル名に関するコードを変更するだけで、新たなモデ1

ルを使用することができます。
GPT-4o mini は、高性能と低コストを両立させた最新のモデルで、GPT-4o 同様、128K トークンのコンテ
キストウィンドウを持っているにもかからず、コストは入力が GPT-4o の 3%、出力は 4%と、1/30 程度の価格設定となっています。
モデル名

入力コスト

出力コスト

gpt-4o-mini-2024-07-18$0.15 / 100 万 tokens$0.6 / 100 万 tokens●GPT-4o2024 年 5 月 13 日に OpenAI から発表されたのが GPT-4o（o=omni）モデルです。本書で作成している文章
生成の ChatGPT 関数と、画像認識の ChatGPTV 関数は、モデル名に関するコードを変更するだけで、新たなモデルを使用することができます。
GPT-4o は音声、画像、テキストをインプットすることができ、従来の GPT-4 に比べて高速かつ低コストとなっています。その応答速度の速さもさることながら、日本語のトークン数が少なく計算されるようになっており、さらに、画像認識の OCR 精度も大幅に向上するなど、良いことずくめのモデルと言えます。新モデルを使用するようにしましょう。
モデル名

入力コスト

出力コスト

（新）gpt-4o-2024-05-13$5 / 100 万 tokens$15 / 100 万 tokens●GPT-4 Turbo プレビュー
2024 年 1 月 26 日に OpenAI が発表した新しいモデルです。タスクを完了しない問題の改善が図られています。料金に変更はありません。プレビューでない正式版は、今後数か月以内にリリースされるようです。劣化する点はないため、新モデルを使用しましょう。
モデル名

入力コスト

出力コスト

（新）gpt-4-0125-preview$0.01 / 1K tokens$0.03 / 1K tokens

gpt-4-1106-preview$0.01 / 1K tokens$0.03 / 1K tokens●GPT-3.5 Turbo
2024 年 1 月 26 日に OpenAI が発表した新しいモデルです。応答速度が向上し、出力価格が引き下げられたモデルです。良いことずくめですので、新モデルを使用しましょう。
モデル名

入力コスト

出力コスト

（新）gpt-3.5-turbo-0125$0.0005 / 1K tokens$0.0015 / 1K tokens

gpt-3.5-turbo-1106$0.0010 / 1K tokens$0.0020 / 1K tokens●コードの変更点
GPT-4o mini の発表と同時に OpenAI のチャット AI「ChatGPT」では、GPT-4o mini が旧来の「GPT-3.5」と置き換わったことから、GPT-3.5 は、役目を終えたといってもよいでしょう。ここでは、gpt-4o-2024-05-13と gpt-4o-mini を選択できるように、そして gpt-4o-mini がデフォルトとなるよう、解説します。
・64 ページ サンプル 03-03.txt 内、18 行［変更前］
Model = "gpt-4-1106-preview"［変更後］
2Model = " gpt-4o-mini-2024-07-18"
・75 ページ サンプル 03-11.txt 内、04 行［変更前］"

1：gpt-4-1106-preview" & vbCrLf & " 2：gpt-3.5-turbo-1106", "OpenAI")"

1：g gpt-4o-mini-2024-07-18" & vbCrLf & " 2：gpt-4o-2024-05-13", "OpenAI")［変更後］
・75 ページ サンプル 03-11.txt 内、08 行［変更前］
GPTmodel = "gpt-4-1106-preview"［変更後］
GPTmodel = "gpt-4o-mini-2024-07-18"
・75 ページ サンプル 03-11.txt 内、10 行［変更前］
GPTmodel = " gpt-3.5-turbo-1106"［変更後］
GPTmodel = " gpt-4o-2024-05-13"・285 ページ サンプル 10-05.txt

25 行

［変更前］
"""model"": "" gpt-4-vision-preview""," & _［変更後］"""model"": ""gpt-4o-mini-2024-07-18""," & _・328 ページ ワンポイント「MyGPTs を作成する際にモデルを指定できる」
新しいモデルを指定する場合は、セル C8 に設定されている入力規則を以下のように変更してください。

Embeddings の新モデル対応
第 5 章で解説してる Embeddings に新しい 2 種類のモデルがリリースされました。1 つは前モデルと同様、
3

小型で効率的な「text-embedding-3-small」で、前モデル「text-embedding-ada-002」に比べて性能が向上しており、価格も 1/5 と大幅に下がっているため、このモデルを GetEmbeddings 関数で使用しましょう。もう 1 つの「text-embedding-3-large」は、より次元数の大きいベクトル値を生成し、最高の性能を発揮しま
すが、変換されるベクトル値データが、一つのセルに入力できる最大文字数である 32,767 文字を超えてしまうため、本書では扱いません。また、従来のモデルで固定だった次元数が API パラメータで調整できるようになり、これにより若干の性能低下と引き換えに処理の高速化が見込めますが、本書のレシピでは超大量のデータを一気にベクトル化するシーンは想定しておらず、大きなメリットがないため、GetEmbeddings 関数の引数は 変更せず、引き続き、 最大次元数であ る 1536 でベクトル化します 。本書で作成してい る
GetEmbeddings 関数は、モデル名に関するコードを変更するだけで、新たなモデルを使用することができます。
●2024 年 1 月から利用開始となった Embeddings のモデル
モデル名

MIRACL 平均

MTEB 平均

価格/1,000 トークン

次元数（新）text-embedding-3-small

44.0%

62.3%

$0.00002

最大 1536（新）text-embedding-3-large

54.9%

64.6%

$0.00013

最大 3072

text-embedding-ada-002

31.4%

61.0%

$0.00010

1536●コードの変更点
・107 ページ サンプル 05-01.txt 05 行
［変更前］
Const Model As String = "text-embedding-ada-002"［変更後］
Const Model As String = "text-embedding-3-small"

GPT-4V のレスポンスフォーマット変更に伴う対応
第 10 章「10-4 レシピ④ GPT-4V で画像を解析する」において、2024 年 4 月中旬に行われたと思われる GPT4V のレスポンスフォーマット変更でエラーが発生することがあります。エラーを回避するためのコード変更点は以下の通りです。
●コードの変更点
・286 ページ サンプル 10-06.txt 04 行
［変更前］
Dim str1 As String, str2 As String［変更後］
Dim str1 As String, str2 As String, str3 As String
・286 ページ サンプル 10-06.txt 11 行～12 行［変更前］
str2 = Chr(34) & Chr(10) & "},"End If［変更後］
str2 = Chr(34) & Chr(10) & "},"
4

str3 = Chr(34) & Chr(10) & "},"End If・286 ページ サンプル 10-06.txt 15～16 行［変更前］
p2 = InStr(p1 + 1, strJson, str2) - p1
getContent = UnescapeJSON(Mid(strJson, p1, p2))
［変更後］
p2 = InStr(p1 + 1, strJson, str2) - p1
If p2 < 0 Then p2 = InStr(p1 + 1, strJson, str3) - p1
getContent = UnescapeJSON(Mid(strJson, p1, p2))
※お詫びと訂正はこちら

5

お詫びと訂正■65 ページ サンプル 03-03.txt 内、22 行目[誤]Const url = https://api.openai.com/v1/chat/completions[正]Const url = "https://api.openai.com/v1/chat/completions"
備考：サンプルファイルには正しいコードが収録されております。
【 第 2 刷にて修正 】-----------------------------------------------------------■72 ページ サンプル 03-09.txt 内、84 行[誤]Debug.Print Rspns[正]
Debug.Print Rspns(Rspns, 400)
備考：サンプルファイルには正しいコードが収録されております。
【 第 2 刷にて修正 】-----------------------------------------------------------■86 ページ サンプル 04-02.txt 内、33 行[誤]Url = https://api.openai.com/v1/images/generations[正]
Url = "https://api.openai.com/v1/images/generations"
備考：※サンプルファイルには正しいコードが収録されております。
【 第 2 刷にて修正 】-----------------------------------------------------------■87 ページ サンプル 04-03.txt 内、38～41 行[誤]"""prompt"":""" & text & """," & _"""n"":" & n & "," & _"""size"":""" & Size & """," & _"""response_format"":""" & Frmt & """" & _[正]"""prompt"":""" & text & """," & _"""model"":""" & Model & """," & _"""n"":" & n & "," & _"""size"":""" & Size & """," & _6

"""quality"":""" & Quality & """," & _"""response_format"":""" & Frmt & """" & _備考：※サンプルファイルには正しいコードが収録されております。
【 第 2 刷にて修正 】-----------------------------------------------------------■94 ページ サンプル 04-09.txt 内、105 行以降[誤]Dalle = Temp
[正]Dalle = temp
End Function
備考：※サンプルファイルには正しいコードが収録されております。
【 第 2 刷にて修正 】-----------------------------------------------------------■99 ページ サンプル 04-13.txt 内、39 行目以降
[誤]End IfEnd IfEnd Sub[正]
上記コードは不要
備考：※サンプルファイルには正しいコードが収録されております。
【 第 2 刷にて修正 】-----------------------------------------------------------■100 ページ サンプル 04-14.txt 内、03 行[誤][C8] = ChatGPT([C10] & [C11])[正][C8] = ChatGPT([C11] & [C12])
備考：※サンプルファイルには正しいコードが収録されております。
【 第 2 刷にて修正 】-----------------------------------------------------------■124 ページ サンプル 06-01.txt 内、13 行[誤]Next i7

[正]Next i
InsertPic = tRng.Address & "セルに画像を生成"
備考：※サンプルファイルには正しいコードが収録されております。
【 第 2 刷にて修正 】-----------------------------------------------------------■125 ページ サンプル 07-02.txt 内、86 行[誤]PromptDallE = PromptGPT[正]PromptDallE = Text
備考：※サンプルファイルには正しいコードが収録されております。
【 第 2 刷にて修正 】-----------------------------------------------------------■146 ページ サンプル 06-02.txt 内、05 行[誤]"画像のスタイルは" & imgStyle & "です。" & _[正]
このコードは不要
備考：※サンプルファイルには正しいコードが収録されております。
【 第 2 刷にて修正 】-----------------------------------------------------------■180 ページ サンプル 07-13.txt 内、40～41 行[誤]Rsps = Replace(Rsps, vbLf, "")Rsps = Replace(Rsps, "キーワード：", "、")
[正]
Rsps = Replace(Rsps, vbLf, "")Rsps = Replace(Rsps, ",", "、")
Rsps = Replace(Rsps, "キーワード：", "、")
備考：※サンプルファイルには正しいコードが収録されております。
【 第 2 刷にて修正 】-----------------------------------------------------------■188 ページ サンプル 07-15.txt 内、80 行［誤］"##説明文##" & text8［正］"##説明文##"備考：※サンプルファイルには正しいコードが収録されております。
【 第 2 刷にて修正 】-----------------------------------------------------------■188 ページ サンプル 07-15.txt 内、114 行［誤］PromptGPT = ChatGPT(Prompt)［正］PromptGPT = ChatGPT(Prompt & text)
備考：※サンプルファイルには正しいコードが収録されております。
【 第 2 刷にて修正 】-----------------------------------------------------------■190 ページ サンプル 07-15.txt 内、148 行［誤］PromptGPT = ChatGPT(Prompt)［正］PromptGPT = ChatGPT(Prompt & arrStory(i))
備考：※サンプルファイルには正しいコードが収録されております。
【 第 2 刷にて修正 】-----------------------------------------------------------■190 ページ サンプル 07-15.txt 内、149～150 行[誤]Path = Dalle(PromptGPT, 1, "1024x1024", "b64_json", Environ("TEMP"))Set Shp = Slide.Shapes.AddPicture( _[正]Path = Dalle(PromptGPT, 1, "1024x1024", "b64_json", Environ("TEMP"))If InStr(Path, "error:") = 0 Then
Set Shp = Slide.Shapes.AddPicture( _備考：※サンプルファイルには正しいコードが収録されております。
【 第 2 刷にて修正 】-----------------------------------------------------------■190 ページ サンプル 07-15.txt 内、153～154 行[誤]left:=shpLeft, Top:=shpTop, Width:=shpH, Height:=shpH)
Next i9[正]left:=shpLeft, Top:=shpTop, Width:=shpH, Height:=shpH)
End IfNext i
備考：※サンプルファイルには正しいコードが収録されております。
【 第 2 刷にて修正 】-----------------------------------------------------------■218 ページ サンプル 08-03.txt 内、35 行[誤]"(文字数を指定する場合は、，の後に文字数を入力してください)" & vbCrLf & _[正]
このコードは不要
備考：※サンプルファイルには正しいコードが収録されております。
【 第 2 刷にて修正 】-----------------------------------------------------------■232 ページ サンプル 08-05.txt 内、58 行[誤]
doc.Activate[正]doc.Activate: Application.Activate
備考：※サンプルファイルには正しいコードが収録されております。
【 第 2 刷にて修正 】-----------------------------------------------------------■232 ページ サンプル 08-05.txt 内、59 行[誤]Application.Activate[正]
このコードは不要
備考：※サンプルファイルには正しいコードが収録されております。
【 第 2 刷にて修正 】-----------------------------------------------------------■247 ページ サンプル 09-01.txt 内、31 行[誤]"文字数指定がある場合は、引用されたメールよりメール本文を優先して要約してく
ださい。"
10

[正]
"文字数指定がある場合は、引用されたメールよりメール本文を優先して要約してください。"
strFront = "次のメール本文を" & strFront & "要約してください。前のメールが引用されている場合は、" & _"それもまとめて要約してください。"
備考：※サンプルファイルには正しいコードが収録されております。
【 第 2 刷にて修正 】-----------------------------------------------------------■260 ページ サンプル 09-03.txt 内、83 行後ナミナミ内[誤]画像生成プロシージャ 7 章 P.145 34 ～ 37 行参照[正]
画像生成プロシージャ 7 章 P.145 34 ～ 36 行参照
備考：※サンプルファイルには正しいコードが収録されております。
【 第 2 刷にて修正 】-----------------------------------------------------------■260 ページ サンプル 09-03.txt 内、87 行[誤]Dim imgStyle As String[正]
ElseIf MyRtn = vbNo Then
DallyF = True
End If
Dim imgStyle As String
備考：※サンプルファイルには正しいコードが収録されております。
【 第 2 刷にて修正 】-----------------------------------------------------------■260 ページ サンプル 09-03.txt 内、94 行後ナミナミ内[誤]画像生成プロシージャ 7 章 P.145 ～ P.146 60 ～ 87 行参照[正]
画像生成プロシージャ 7 章 P.145 ～ P.146 75 ～ 87 行参照
備考：※サンプルファイルには正しいコードが収録されております。
【 第 2 刷にて修正 】------------------------------------------------------------

11

■312 ページ サンプル 10-ex3-03.txt 内、14～15 行[誤]contentType = "application/pdf"
End Select[正]contentType = "application/pdf"
Case "csv"
contentType = "application/csv"
End Select
備考：※サンプルファイルには正しいコードが収録されております。
【 第 2 刷にて修正 】-----------------------------------------------------------■315 ページ サンプル 10-ex3-06.txt 内、3 行目と 4 行目
間に以下のコードを追加
If p1 = 0 Then
str1 = Replace(str1, " ", "")p1 = InStr(Str, str1)
End If
備考：※サンプルファイルには修正後のコードが収録されております。
【第 2 刷にて修正】-----------------------------------------------------------■317 ページ サンプル 10-ex3-07.txt 内、19 行[誤]CreateAssistant = httpRequest(url, "POST", Body, "id"": """, """,")[正]
Body = Body & "}"CreateAssistant = httpRequest(url, "POST", Body, "id"": """, """,")
備考：※サンプルファイルには正しいコードが収録されております。
【 第 2 刷にて修正 】-----------------------------------------------------------■322 ページ 「GPTs の作成と会話のコード解説」内、5 行目[誤]
ここでプロシージャは ExcelAI モジュールに記述します。
[正]
ここでプロシージャは AI モジュールに記述します。
【 第 2 刷にて修正 】-----------------------------------------------------------12

■326 ページ サンプル 10-ex3-17.txt 内、36 行目と 37 行目
間に以下のコードを追加
DoEvents
Sleep 2000
備考：※サンプルファイルには修正後のコードが収録されております。
【第 2 刷にて修正】-----------------------------------------------------------■326 ページ サンプル 10-ex3-17.txt 内、39 行[誤]Sleep 200
[正]Sleep 500
【 第 2 刷にて修正 】

13