今回は「生成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とは
配列 と 辞書 の 組み合わせ
配列も辞書も何のこっちゃっていう方にとっては
混乱させてしまったかもしれないんですけど
今回のテクニックシリーズで話した
変数 という 仲間になります
変数というのは 情報を入れる箱
箱です 箱なんです
で 配列 も 辞書 も 箱なんですね
じゃあ こいつらどんな 箱 か?
配列と辞書は変数の仲間
配列
配列というのは
番号が付いたロッカーです
0 | 1 | 2 | 3 | 4 |
A | B | C | D | E |
01234と 番号が 書かれた ロッカーに
ABCDE という文字がそれぞれ入っている
こういった番号がついたロッカーだと思ってください
これを定義する記述はこんな感じ
array = ["A", "B", "C", "D", "E"]
例えば array という変数の箱、これが上の表全体だと思ってください
arrayという名前の箱(上の表全体)に対して = で
[ ]で囲んで、カンマ区切りで ABCDE と書きます
0番目がA、1番目がB、という事になります
ルール として 配列の番号は0から数えていきます
これで 配列を 表せているということになるんですね
じゃあこのロッカーから値を取り出すには
ロッカーの番号を指定します
>>array[3]
上記のように
arrayという箱の中にあるロッカーの
3番目と指定すれば
>>D
Dという結果が得られます
辞書
そして 辞書 は
名前がついたロッカーと思ってください
Jan | Feb | Mar | Apr | May |
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 = {
"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です!
かじむー