【生成AIの本質を探る】精度が上がるデータ形式JSONとは?生成AIを最大限に活用するための方法!

今回は「生成AIの本質を探る」シリーズ第9回目です。

テーマは「文章生成AIのテクニック」です。

これまでの記事で

プロンプトテクニック不要

【生成AIの本質を探る】プロンプトはテクニックじゃない!意識の問題だ!

と伝えましたが

基本的なテクニック以外にあたる
プログラミング思考を活かしたテクニックを紹介します

生成AIを効果的に活用データ形式 JSON を使いこなしましょう!

今回は、精度が上がるデータ形式について詳しく解説し、生成AIの応答速度を改善する方法を紹介します。

データ形式の違いがどのようにAIのパフォーマンスに影響するのかを理解し、実践に役立てましょう!

動画で見たい方はコチラ

JSONとは

結論から言いますと
JSONというデータの形式が
非常に 精度 高く 生成AI が理解してくれました

例えば ↓ こんな形式のデータです

{
    store: [
        {
            "name": "宮崎書店"
            "books": [
                {
                  "title": "星の彼方への旅路",
                  "genres": ["SF", "冒険"]
                },
                {
                    "title": "海と太陽のレシピ",
                    "genres": ["料理", "ライフスタイル"]
                  },
                  {
                    "title": "忘れられた庭の秘密",
                    "genres": ["ミステリー", "歴史"]
                  }
            ]
        },
        {
            "name": "渋谷書店"
            "books": [

データの形式には 表とかあると思うんですけど
比較してもやはりJSONのデータ形式にすると
全然 結果の精度が違って かなり高くなりました!

じゃあこのJSONと呼ばれる形
なんぞや?っていうとこなんですね

まずはJSONの中身を簡単に理解する所から始めます!

配列と辞書の組合せ

JSONとは
配列辞書組み合わせ

配列も辞書も何のこっちゃっていう方にとっては
混乱させてしまったかもしれないんですけど

今回のテクニックシリーズで話した
変数 という 仲間になります

変数というのは 情報を入れる箱
箱です 箱なんです

で 配列 も 辞書 も 箱なんですね

じゃあ こいつらどんな 箱 か?

配列と辞書は変数の仲間

配列

配列というのは
番号が付いたロッカーです

01234
ABCDE

01234と 番号が 書かれた ロッカーに
ABCDE という文字がそれぞれ入っている

こういった番号がついたロッカーだと思ってください

これを定義する記述はこんな感じ

array = ["A", "B", "C", "D", "E"]

例えば array という変数の箱、これが上の表全体だと思ってください

arrayという名前の箱(上の表全体)に対して = で
[ ]で囲んで、カンマ区切りで ABCDE と書きます
0番目がA、1番目がB、という事になります
ルール として 配列の番号は0から数えていきます

これで 配列を 表せているということになるんですね

じゃあこのロッカーから値を取り出すには
ロッカーの番号を指定します

>>array[3]

上記のように
arrayという箱の中にあるロッカーの
3番目と指定すれば

>>D

Dという結果が得られます

辞書

そして 辞書
名前がついたロッカーと思ってください

JanFebMarAprMay
1月2月3月4月5月

Jab ~ May と 名前が 書かれた ロッカーに
1月~5月 という文字がそれぞれ入っている

こういった名前がついたロッカーだと思ってください

これを定義する記述はこんな感じ

dictionary = 
{"Jan": "1月", "Feb": "2月", "Mar": "3月", "Apr": "4月", "May": "5月"}

dictionaryという名前の箱(上の表全体)に対して = で
{ }で囲んで、(名前) : (値) というセットで定義してます。
Jan(名前) : 1月(値)
Feb(名前): 2月(値)
Mar(名前): 3月(値)
・・・
本の辞書って 「言葉」と「意味」がセットになってますよね
これは「名前」と「値」がセットなっている辞書なのです

これで 辞書を 表せているということになるんですね

じゃあこのロッカーから値を取り出すには
ロッカーの名前を指定します

>>dictionary["Apr"]

上記のように
dictionaryという箱の中にあるロッカーの
Aprという名前を指定すれば

>>4月

4月という結果が得られます

かじむー

ここまでの知識でJSONの中身を少し読み解いてみよう!

JSONの構造を見てみよう

かじむー

それでは 配列 と 辞書 の組み合わせを見ていきたいと思います!

辞書

json = {
    "store": "東京書店"
}

早速 json という 箱の名前に = で
{ } とんがり括弧で
“store”: “東京書店”
と書かれてますね

これはstoreという名前のロッカーに
東京書店という文字が入っています

なのでこれは辞書ですね!

この場合「東京書店」という文字を
取り出したい時は、jsonという箱に対して
「store」という名前を指定すればいいので

>>json["store"]

でOKですね!

辞書 + 配列

json = {
    "store": ["東京書店", "大阪書店"]
}

次は何やら「大阪書店」も混ざっている

よく見ると
東京書店 と 大阪書店 を 囲んでいる 括弧 [ ]
つまり配列です

なので このstore という ロッカーの中に
さらに ロッカーができているんですね

json
┗ store:
 ┗ 0: 東京書店
 ┗ 1: 大阪書店

整理するとこのような階層です

JSON という 大きい箱の中に
store という 名前のロッカーがあります
なので辞書です

その辞書の中、ロッカーの中には
番号付きロッカー、つまり配列が存在します

0番目のロッカーに東京書店
1番目のロッカーに大阪書店
が入っていますね

これが辞書と配列の組合せ

JSON最小単位の形式ですね

じゃあこっから
東京書店を呼び出そうとすると

>>json["store"][0]

このような呼び出し方になります

jsonという箱に対して
sotreという名前のロッカーを指定し
さらにその中の0番目のロッカーと指定すればOKです!

かじむー

データをこのようにJSON形式に整理すれば生成AIへの理解度が上がります!だけどこれって結局何やってるの?
1 2