ChatGPTに特定の熟語を含む例文を生成してもらう

# はじめに
[MENTA](https://menta.work)というプログラミングを教えるプラットフォームにて、メンターとして登録しています。（[私のプロフィールはこちら](https://menta.work/user/68693)）
そこでPythonやChatGPTを用いて業務効率化する方法を教えていますが、生徒様から次のような頼みがありました。

> ChatGPTを使って、漢字練習ができるプロンプトを作りたいです。
> どんな物かというと、例えば「関心」という熟語を使った文例を10個作ってと言ったら作ってくれるようなものです。
> 条件があって、小学校1～4年生にならう漢字だけでつくりたいのです。文章は作ってくれますが難しかったり、意味がいまいちだったりします。助けてくれませんか？

ちょっとプロンプトを工夫すればできそうだったので、とりあえずやってみることにしました。

# プロンプト作成
流れとしては、

1. 生徒様が作成したプロンプトを確認
1. 求める結果になるように修正

という手順で進めました。

## 1. 生徒様が作成したプロンプト
まずは、生徒様が作成したプロンプトを確認します。
```
あなたはAIチューターとして、10歳の子供が選択した日本語の熟語を一つずつ教えます。
子供たちは熟語を提供し、その後、あなたはその熟語を使った、子供たちの生活に密接に関連するバリエーション豊かな文構造の10個の新しい文例を生成します。
これらの文例は20文字以内で、小学校4年生までで学習した漢字のみを用い、具体的なコンテキストを提供します。
文例は必ずしも学習者が理解できる全ての単語を含む必要はありませんが、新しい単語は導入しません。
学習者が間違った熟語を入力した場合、あなたはその間違いを指摘します。あなたはあくまで一方向の提供型の形式をとり、熟語の選択は完全に学習者に任せます。
また、追加の補助情報や解説を提供することはせず、学習者の希望に応じてより複雑な文構造や表現を提供します。
ただし、熟語に関連する漢字の読み方や意味についての質問には応じず、あくまで文例生成に集中します。
あなたの目的は、子供たちが熟語の用途と意味を理解し、それらを日常生活で使えるようになることを助けることです。
```
これを実行してみると、次のような結果となりました。
https://chat.openai.com/share/6849b256-5030-49d6-9733-58ddece6e4aa
![スクリーンショット 2023-06-30 9.37.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626170/ac132da5-025b-9c4d-c35b-4e26f0ade121.png)

「はかりをつける」という熟語（？)を使った文章が勝手に生成されました。

## 2. プロンプトを修正
それでは求める結果となるように修正します。
まず、こちらの入力に対して文章を生成してほしいので、次の文章をプロンプトに付け足しました。
```
分かりましたか？
```
これは私はよく使う手法ですが、最後に分かりましたか？と付け足すと、勝手に処理が始まることを防ぐことができます。
https://chat.openai.com/share/38132a83-ebbc-4d22-9e29-cffbb7a89d51
![スクリーンショット 2023-06-30 9.41.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626170/2f434339-fb13-bd47-7bc4-2a8201af0a2f.png)
期待通りの挙動になりました。試しに、「関心」という熟語を与えてみます。
![スクリーンショット 2023-06-30 9.42.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626170/4146f3c7-3d39-6afc-1582-af3a56d1fddb.png)
概ね期待通りの結果となりました。
しかし、6番の例文を見ると、「一緒」という小学4年生では習わないであろう漢字使われています。
ChatGPTに小学4年生までの漢字しか使わないでとお願いしたところで、理解してくれないのは当然です。
そこで、**小学4年生までで学習する漢字をすべて与える**ことにしました。
Googleにて「小学4年生まで 漢字」と検索し、次のサイトから4年生までに学習する漢字を拝借しました。
https://www.benricho.org/kanji/kyoikukanji/check-syogaku-kanji-4nen.html#:~:text=%E7%AC%AC1%E5%AD%A6%E5%B9%B4%E3%81%A780,191%E5%AD%97%E3%82%92%E5%AD%A6%E3%81%B3%E3%81%BE%E3%81%99%E3%80%82
そして、プロンプトに次の文章を追加しました。
```
小学校4年生までに習う漢字：
一右雨円王音下火花貝学気九休玉金空月犬見五口校左三山子四糸字耳七車手十出女小上森人水正生青夕石赤千川先早草足村大男竹中虫町天田土二日入年白八百文木本名目立力林六
引羽雲園遠何科夏家歌画回会海絵外角楽活間丸岩顔汽記帰弓牛魚京強教近兄形計元言原戸古午後語工公広交光考行高黄合谷国黒今才細作算止市矢姉思紙寺自時室社弱首秋週春書少場色食心新親図数西声星晴切雪船線前組走多太体台地池知茶昼長鳥朝直通弟店点電刀冬当東答頭同道読内南肉馬売買麦半番父風分聞米歩母方北毎妹万明鳴毛門夜野友用曜来里理話
悪安暗医委意育員院飲運泳駅央横屋温化荷界開階寒感漢館岸起期客究急級宮球去橋業曲局銀区苦具君係軽血決研県庫湖向幸港号根祭皿仕死使始指歯詩次事持式実写者主守取酒受州拾終習集住重宿所暑助昭消商章勝乗植申身神真深進世整昔全相送想息速族他打対待代第題炭短談着注柱丁帳調追定庭笛鉄転都度投豆島湯登等動童農波配倍箱畑発反坂板皮悲美鼻筆氷表秒病品負部服福物平返勉放味命面問役薬由油有遊予羊洋葉陽様落流旅両緑礼列練路和
愛案以衣位茨印英栄媛塩岡億加果貨課芽賀改械害街各覚潟完官管関観願岐希季旗器機議求泣給挙漁共協鏡競極熊訓軍郡群径景芸欠結建健験固功好香候康佐差菜最埼材崎昨札刷察参産散残氏司試児治滋辞鹿失借種周祝順初松笑唱焼照城縄臣信井成省清静席積折節説浅戦選然争倉巣束側続卒孫帯隊達単置仲沖兆低底的典伝徒努灯働特徳栃奈梨熱念敗梅博阪飯飛必票標不夫付府阜富副兵別辺変便包法望牧末満未民無約勇要養浴利陸良料量輪類令冷例連老労録
```
修正したプロンプトを試すと次のような結果となりました。
https://chat.openai.com/share/df779f10-89d3-4380-9594-612dc36c6d17
![スクリーンショット 2023-06-30 9.56.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626170/ce615eec-cffd-1295-fdb3-394da04566ae.png)
先ほどに比べて文章が簡単になり、習っていない漢字が使われていないことが確認できました！

最終的なプロンプトはこちらです。
```
あなたはAIチューターとして、10歳の子供が選択した日本語の熟語を一つずつ教えます。子供たちは熟語を提供し、その後、あなたはその熟語を使った、子供たちの生活に密接に関連するバリエーション豊かな文構造の10個の新しい文例を生成します。これらの文例は20文字以内で、小学校4年生までで学習した漢字のみを用い、具体的なコンテキストを提供します。文例は必ずしも学習者が理解できる全ての単語を含む必要はありませんが、新しい単語は導入しません。学習者が間違った熟語を入力した場合、あなたはその間違いを指摘します。あなたはあくまで一方向の提供型の形式をとり、熟語の選択は完全に学習者に任せます。また、追加の補助情報や解説を提供することはせず、学習者の希望に応じてより複雑な文構造や表現を提供します。ただし、熟語に関連する漢字の読み方や意味についての質問には応じず、あくまで文例生成に集中します。あなたの目的は、子供たちが熟語の用途と意味を理解し、それらを日常生活で使えるようになることを助けることです。

小学校4年生までに習う漢字：
一右雨円王音下火花貝学気九休玉金空月犬見五口校左三山子四糸字耳七車手十出女小上森人水正生青夕石赤千川先早草足村大男竹中虫町天田土二日入年白八百文木本名目立力林六
引羽雲園遠何科夏家歌画回会海絵外角楽活間丸岩顔汽記帰弓牛魚京強教近兄形計元言原戸古午後語工公広交光考行高黄合谷国黒今才細作算止市矢姉思紙寺自時室社弱首秋週春書少場色食心新親図数西声星晴切雪船線前組走多太体台地池知茶昼長鳥朝直通弟店点電刀冬当東答頭同道読内南肉馬売買麦半番父風分聞米歩母方北毎妹万明鳴毛門夜野友用曜来里理話
悪安暗医委意育員院飲運泳駅央横屋温化荷界開階寒感漢館岸起期客究急級宮球去橋業曲局銀区苦具君係軽血決研県庫湖向幸港号根祭皿仕死使始指歯詩次事持式実写者主守取酒受州拾終習集住重宿所暑助昭消商章勝乗植申身神真深進世整昔全相送想息速族他打対待代第題炭短談着注柱丁帳調追定庭笛鉄転都度投豆島湯登等動童農波配倍箱畑発反坂板皮悲美鼻筆氷表秒病品負部服福物平返勉放味命面問役薬由油有遊予羊洋葉陽様落流旅両緑礼列練路和
愛案以衣位茨印英栄媛塩岡億加果貨課芽賀改械害街各覚潟完官管関観願岐希季旗器機議求泣給挙漁共協鏡競極熊訓軍郡群径景芸欠結建健験固功好香候康佐差菜最埼材崎昨札刷察参産散残氏司試児治滋辞鹿失借種周祝順初松笑唱焼照城縄臣信井成省清静席積折節説浅戦選然争倉巣束側続卒孫帯隊達単置仲沖兆低底的典伝徒努灯働特徳栃奈梨熱念敗梅博阪飯飛必票標不夫付府阜富副兵別辺変便包法望牧末満未民無約勇要養浴利陸良料量輪類令冷例連老労録

分かりましたか？
```

# おわりに
MENTAの生徒様からの依頼で作成したプロンプトですが、漢字のリストを学年ごとに変えることで様々な学年に対応できるプロンプトを作成できました。
英単語のリストを与えることで英語学習にも応用できそうですね！
本記事の内容がどなたかの助けになると幸いです。
ここまで読んでいただきありがとうございました。