個別学習のための採点と評価と学習者ごとの教材作成に、Promptだけでやってみた

# 背景

生成AI自身の教育現場での活用シナリオとして、学習者の習熟度や興味などにリアルタイムに適合しての教材などの作成があります。
そもそもは、一律の知識を提示し、演習を通じての授業があり、その補完としての個別対応は先生方が行っていると思います。先生に尋ねるのを躊躇う学習者もいるでしょうし、物理的に時間が取れない事もあると思います。

話はいいのですが。実装するにはまずPromptが動くかどうか。

という事でやってみました。

# 準備

何でもいいので生成AI環境。

できればCode Interpreterが動く環境。なぜなら、ファイルの作成をやってもらいますので。

- Microsoft 365 Copilot
    - https://m365.cloud.microsoft/chat


# Prompt

フルバージョンはこちら。
逐次**更新**します。

https://github.com/dahatake/GenerativeAI-Prompt-Sample-Japanese/blob/main/%E6%95%99%E8%82%B2/%E5%80%8B%E5%88%A5%E5%AD%A6%E7%BF%92.md



各ステップ毎のPromptと、出力結果をお見せしますね。
Microsoft 365 Copilot の [Web]使っています。

## Step 1. 小テスト作成

一斉テスト問題を作成します。あれば、それでいいです。

- 学習範囲を文字として指定しています。ここでは
    - 高等学校の
        - 統計・データ分析の
            - 統計・データ分析のデータ活用

です。つまり、シラバス的なものがあれば、そこから持ってくるだけですね

- 文部科学省の学習指導要領のサマリーも指定しています。ルールとしてですね。全文だと長すぎるのでポイントだけ。


```cmd
# Step 1. 小テスト作成
高等学校の{統計・データ分析のデータ活用}について、学生向けの個別学習のサポートを行います。
以下の{統計・データ分析のデータ活用の単元}を参考にして、選択式の小テストの問題と、その回答と丁寧な回答の解説文を5問作成してください。テストの作成や回答の解説文の作成にあたっては、{学習指導要領の位置づけ}を必ず考慮してください。

深呼吸をして、一歩ずつ進めてください。

### 統計・データ分析のデータ活用
- 四分位偏差、分散、標準偏差:
	- これらの統計量の意味を理解し、それらを用いてデータの傾向を把握し、説明すること。
	- 四分位数、四分位範囲、四分位偏差、分散、標準偏差などの用語を知り、意味を理解させる。
	- 具体的な事象と関連付けて扱うことが大切であり、例えば、充電式機器の使用可能時間について、平均値や分散、標準偏差を求めて、その意味を理解させることが考えられる。

### 学習指導要領の位置づけ
学習指導要領とは、日本の文部科学省が定める、初等教育および中等教育における教育課程の基準です。具体的には、各学校で教育課程（カリキュラム）を編成する際の基準となるもので、教科ごとの目標や大まかな教育内容が定められています21。

主なポイント
- 目的: 全国どの地域でも一定の水準の教育を受けられるようにするため。
- 内容: 小学校、中学校、高等学校などの各教科の目標や教育内容。
- 改訂: ほぼ10年ごとに改訂され、時代の変化に対応しています。
- 法的拘束力: 学校教育法施行規則に基づいて定められており、法的拘束力があります。
```

出力結果です。
大事な点は**読む事**です😎

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/b451f882-16d3-441a-930c-5da5b1fd27e8.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/f664432f-a496-47b1-98ae-8eb0bc9e71e4.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/9071778e-a3de-4c50-b882-527da3f34586.png)

## Step 2. サンプルデータ作成

ここは実際には答案のExcel君などがあると思うんです😊
私は持っていないので、サンプルとして作成しますね。

可能であれば、**サンプルデータの作成**に長けたAgent君にお願いしたいところ。

```cmd
# Step 2. サンプルデータ作成
50人分の学生の{テスト結果}のサンプルデータを作成してください。1人の学生が全てのテスト問題に回答しています。
回答結果はランダムにしてください。

データには以下を含めてください。
- 日付: 全て同じ日付にします。
- 学生ID
- テスト問題の番号
- テスト問題の種類: 例 - 統計量の知識。四分位数の知識。具体的な事象との関連付け
- 学生の回答

最初の2名の学生の分を表形式で表示してください。
全ての採点結果をダウンロードできるようにしてください。

深呼吸をして、一歩ずつ進めてください。
```

出力結果です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/e2fee997-7086-4f17-a448-9ecb79dfe73a.png)


ダウンロード出来る状態で、テキストのファイルが出来ています!50人分。
こんな感じです😊


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/56b7f72d-23d9-4e82-ac9e-2bfde36c49ec.png)

## Step 3. 採点

答案の採点をさせます。


```cmd
# Step 3. 採点
作成した学生のテスト結果のサンプルデータ全て読み込んでください。
そして、{小テストの正解}を参照して、全ての学生の1問ずつ回答が、{小テストの回答]と同じかどうかの判定をしてください。
学生のテスト結果に、正解と、正誤判定の列が追加されたものが、採点となります。

採点結果のうち最初の2名の学生の分を表形式で表示してください。
全ての採点結果をダウンロードできるようにしてください。

深呼吸をして、一歩ずつ進めてください。
```

出力結果です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/d34237f7-bdb3-4704-b824-a9876ddc6192.png)

## Step 4. テスト結果の分析

クラス全体の答案の分析を行います。
全体の傾向など把握した上だと、個々の学習者が、全体の中でどういう位置づけなのかも理解できるでしょうし。

可能であれば、**データアナリスト**に長けたAgent君にお願いしたいところ。

```cmd
# Step 4. テスト結果の分析
{採点結果}のデータを分析思考を用いて、{統計・データ分析のデータ活用}にある{目的}が達成できているかどうかの詳細な分析を行ってください。
適切なグラフを作成して、分析レポートを**日本語**で作成してください。
```

出力結果。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/a6ceaff8-0047-474f-8126-36524563427f.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/e4b98f98-d1f7-42d7-874b-08b43007a89b.png)

グラフの日本語文字化けは、そのうち直るでしょう😎
Code Interpreterの環境に日本語フォントが入ればいいだけ。

- **考察**と**改善点**を熟読してみてください。グラフ作成の後で、打ち合わせなどで議論する内容コトが多いと思います。その**ドラフト**が出来ています。ドラフトがあって議論すると全然ためになると思います。何もないと。そこ考えるのマジで大変ですから...


## Step 5. 学生個別の分析

さ。ここです!!!!


```cmd
# Step 5. 学生個別の分析
学生ごとに{学習指導要領}の{データの散らばり}に説明されている{目的}が達成できているかの解析を行います。
学生ごとに明確かつ具体的な学習目標を設定し、個別のニーズを把握することで、効果的な個別学習を実現させます。そのために以下の{評価の観点}を用いて、全ての学生1人ずつの詳細かつ明瞭かつ具体的な日本語の分析のレポートを{分析レポートに含めるべき項目}を考慮して作成してください。

### 評価の観点
- 学生ごとに達成すべき目標を明確に設定します。例えば、特定の統計手法の理解やデータ分析のスキル向上など。
- 目標はSMART(Specific, Measurable, Achievable, Relevant, Time-bound)原則に基づいて設定します。
- 学生の現在の理解度やスキルレベルを評価します。
- 学生ごとに生成AIを活用して、学生ごとにカスタマイズされた教材を作成します。例えば、個別の小テストや解説資料など。
- 学生の興味や関心を把握し、学習内容に反映させます。
- フィードバックは、学習者のモチベーションを高めるためにポジティブな内容を含めます。

### 分析レポートに含めるべき項目
- 単元毎の点数の推移
- 推奨する目標
- 理解度の説明
- {学習指導要領}と{統計・データ分析のデータ活用}を参考にして、この学生の能力を伸ばすための小テストと、その解説と回答
- フィードバック

最初の2人を表示してください。
全てのデータをダウンロードできるようにしてください。

深呼吸をして、一歩ずつ進めてください。
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/5196e581-6814-43a5-a2f8-2b34162f4c75.png)


動きました!😍

作成された学生個別の教材としての、学生毎の小テストの文字列も貼っておきますね!!!

```cmd
学生ID,正解数,正解率,目標,カスタマイズされた問題,フィードバック
1,2,0.4,統計量の基本的な概念を理解し、データ分析の基礎を学ぶ。,"{'question': '次のデータセットの平均値を求めなさい。データセット: 3, 5, 7, 9, 11, 13, 15', 'choices': ['a) 7', 'b) 8', 'c) 9', 'd) 10'], 'correct_answer': 'c', 'explanation': '平均値は、データの合計をデータの個数で割ったものです。'}",よく頑張りました！引き続き学習を続けてください。
2,2,0.4,統計量の基本的な概念を理解し、データ分析の基礎を学ぶ。,"{'question': '次のデータセットの平均値を求めなさい。データセット: 3, 5, 7, 9, 11, 13, 15', 'choices': ['a) 7', 'b) 8', 'c) 9', 'd) 10'], 'correct_answer': 'c', 'explanation': '平均値は、データの合計をデータの個数で割ったものです。'}",よく頑張りました！引き続き学習を続けてください。
3,3,0.6,統計量の基本的な概念を理解し、データ分析の基礎を学ぶ。,"{'question': '次のデータセットの平均値を求めなさい。データセット: 3, 5, 7, 9, 11, 13, 15', 'choices': ['a) 7', 'b) 8', 'c) 9', 'd) 10'], 'correct_answer': 'c', 'explanation': '平均値は、データの合計をデータの個数で割ったものです。'}",よく頑張りました！引き続き学習を続けてください。
4,2,0.4,統計量の基本的な概念を理解し、データ分析の基礎を学ぶ。,"{'question': '次のデータセットの四分位範囲を求めなさい。データセット: 2, 4, 6, 8, 10, 12, 14, 16, 18, 20', 'choices': ['a) 8', 'b) 10', 'c) 12', 'd) 14'], 'correct_answer': 'b', 'explanation': '四分位範囲は、第3四分位数（Q3）と第1四分位数（Q1）の差です。'}",よく頑張りました！引き続き学習を続けてください。
5,2,0.4,統計量の基本的な概念を理解し、データ分析の基礎を学ぶ。,"{'question': '次のデータセットの四分位範囲を求めなさい。データセット: 2, 4, 6, 8, 10, 12, 14, 16, 18, 20', 'choices': ['a) 8', 'b) 10', 'c) 12', 'd) 14'], 'correct_answer': 'b', 'explanation': '四分位範囲は、第3四分位数（Q3）と第1四分位数（Q1）の差です。'}",よく頑張りました！引き続き学習を続けてください。
6,2,0.4,統計量の基本的な概念を理解し、データ分析の基礎を学ぶ。,"{'question': '次のデータセットの四分位偏差を求めなさい。データセット: 3, 6, 9, 12, 15, 18, 21, 24, 27, 30', 'choices': ['a) 6', 'b) 7.5', 'c) 9', 'd) 10.5'], 'correct_answer': 'b', 'explanation': '四分位偏差は、データの第3四分位数（Q3）と第1四分位数（Q1）の差を2で割ったものです。'}",よく頑張りました！引き続き学習を続けてください。
7,2,0.4,統計量の基本的な概念を理解し、データ分析の基礎を学ぶ。,"{'question': '次のデータセットの分散を求めなさい。データセット: 4, 8, 6, 5, 3, 7, 9', 'choices': ['a) 4', 'b) 5', 'c) 6', 'd) 7'], 'correct_answer': 'b', 'explanation': '分散は、データの各値と平均値との差の二乗の平均です。'}",よく頑張りました！引き続き学習を続けてください。
8,0,0.0,統計量の基本的な概念を理解し、データ分析の基礎を学ぶ。,"{'question': '次のデータセットの四分位偏差を求めなさい。データセット: 3, 6, 9, 12, 15, 18, 21, 24, 27, 30', 'choices': ['a) 6', 'b) 7.5', 'c) 9', 'd) 10.5'], 'correct_answer': 'b', 'explanation': '四分位偏差は、データの第3四分位数（Q3）と第1四分位数（Q1）の差を2で割ったものです。'}",よく頑張りました！引き続き学習を続けてください。
9,1,0.2,統計量の基本的な概念を理解し、データ分析の基礎を学ぶ。,"{'question': '次のデータセットの四分位偏差を求めなさい。データセット: 3, 6, 9, 12, 15, 18, 21, 24, 27, 30', 'choices': ['a) 6', 'b) 7.5', 'c) 9', 'd) 10.5'], 'correct_answer': 'b', 'explanation': '四分位偏差は、データの第3四分位数（Q3）と第1四分位数（Q1）の差を2で割ったものです。'}",よく頑張りました！引き続き学習を続けてください。
10,2,0.4,統計量の基本的な概念を理解し、データ分析の基礎を学ぶ。,"{'question': '次のデータセットの四分位範囲を求めなさい。データセット: 2, 4, 6, 8, 10, 12, 14, 16, 18, 20', 'choices': ['a) 8', 'b) 10', 'c) 12', 'd) 14'], 'correct_answer': 'b', 'explanation': '四分位範囲は、第3四分位数（Q3）と第1四分位数（Q1）の差です。'}",よく頑張りました！引き続き学習を続けてください。
11,1,0.2,統計量の基本的な概念を理解し、データ分析の基礎を学ぶ。,"{'question': '次のデータセットの標準偏差を求めなさい。データセット: 10, 12, 14, 16, 18, 20', 'choices': ['a) 2.58', 'b) 3.16', 'c) 4.47', 'd) 5.29'], 'correct_answer': 'b', 'explanation': '標準偏差は、分散の平方根です。'}",よく頑張りました！引き続き学習を続けてください。
12,1,0.2,統計量の基本的な概念を理解し、データ分析の基礎を学ぶ。,"{'question': '次のデータセットの四分位範囲を求めなさい。データセット: 2, 4, 6, 8, 10, 12, 14, 16, 18, 20', 'choices': ['a) 8', 'b) 10', 'c) 12', 'd) 14'], 'correct_answer': 'b', 'explanation': '四分位範囲は、第3四分位数（Q3）と第1四分位数（Q1）の差です。'}",よく頑張りました！引き続き学習を続けてください。
13,1,0.2,統計量の基本的な概念を理解し、データ分析の基礎を学ぶ。,"{'question': '次のデータセットの四分位範囲を求めなさい。データセット: 2, 4, 6, 8, 10, 12, 14, 16, 18, 20', 'choices': ['a) 8', 'b) 10', 'c) 12', 'd) 14'], 'correct_answer': 'b', 'explanation': '四分位範囲は、第3四分位数（Q3）と第1四分位数（Q1）の差です。'}",よく頑張りました！引き続き学習を続けてください。
14,1,0.2,統計量の基本的な概念を理解し、データ分析の基礎を学ぶ。,"{'question': '次のデータセットの標準偏差を求めなさい。データセット: 10, 12, 14, 16, 18, 20', 'choices': ['a) 2.58', 'b) 3.16', 'c) 4.47', 'd) 5.29'], 'correct_answer': 'b', 'explanation': '標準偏差は、分散の平方根です。'}",よく頑張りました！引き続き学習を続けてください。
15,1,0.2,統計量の基本的な概念を理解し、データ分析の基礎を学ぶ。,"{'question': '次のデータセットの分散を求めなさい。データセット: 4, 8, 6, 5, 3, 7, 9', 'choices': ['a) 4', 'b) 5', 'c) 6', 'd) 7'], 'correct_answer': 'b', 'explanation': '分散は、データの各値と平均値との差の二乗の平均です。'}",よく頑張りました！引き続き学習を続けてください。
16,0,0.0,統計量の基本的な概念を理解し、データ分析の基礎を学ぶ。,"{'question': '次のデータセットの標準偏差を求めなさい。データセット: 10, 12, 14, 16, 18, 20', 'choices': ['a) 2.58', 'b) 3.16', 'c) 4.47', 'd) 5.29'], 'correct_answer': 'b', 'explanation': '標準偏差は、分散の平方根です。'}",よく頑張りました！引き続き学習を続けてください。
17,2,0.4,統計量の基本的な概念を理解し、データ分析の基礎を学ぶ。,"{'question': '次のデータセットの平均値を求めなさい。データセット: 3, 5, 7, 9, 11, 13, 15', 'choices': ['a) 7', 'b) 8', 'c) 9', 'd) 10'], 'correct_answer': 'c', 'explanation': '平均値は、データの合計をデータの個数で割ったものです。'}",よく頑張りました！引き続き学習を続けてください。
18,1,0.2,統計量の基本的な概念を理解し、データ分析の基礎を学ぶ。,"{'question': '次のデータセットの四分位範囲を求めなさい。データセット: 2, 4, 6, 8, 10, 12, 14, 16, 18, 20', 'choices': ['a) 8', 'b) 10', 'c) 12', 'd) 14'], 'correct_answer': 'b', 'explanation': '四分位範囲は、第3四分位数（Q3）と第1四分位数（Q1）の差です。'}",よく頑張りました！引き続き学習を続けてください。
19,1,0.2,統計量の基本的な概念を理解し、データ分析の基礎を学ぶ。,"{'question': '次のデータセットの四分位範囲を求めなさい。データセット: 2, 4, 6, 8, 10, 12, 14, 16, 18, 20', 'choices': ['a) 8', 'b) 10', 'c) 12', 'd) 14'], 'correct_answer': 'b', 'explanation': '四分位範囲は、第3四分位数（Q3）と第1四分位数（Q1）の差です。'}",よく頑張りました！引き続き学習を続けてください。
20,2,0.4,統計量の基本的な概念を理解し、データ分析の基礎を学ぶ。,"{'question': '次のデータセットの平均値を求めなさい。データセット: 3, 5, 7, 9, 11, 13, 15', 'choices': ['a) 7', 'b) 8', 'c) 9', 'd) 10'], 'correct_answer': 'c', 'explanation': '平均値は、データの合計をデータの個数で割ったものです。'}",よく頑張りました！引き続き学習を続けてください。
21,1,0.2,統計量の基本的な概念を理解し、データ分析の基礎を学ぶ。,"{'question': '次のデータセットの標準偏差を求めなさい。データセット: 10, 12, 14, 16, 18, 20', 'choices': ['a) 2.58', 'b) 3.16', 'c) 4.47', 'd) 5.29'], 'correct_answer': 'b', 'explanation': '標準偏差は、分散の平方根です。'}",よく頑張りました！引き続き学習を続けてください。
22,1,0.2,統計量の基本的な概念を理解し、データ分析の基礎を学ぶ。,"{'question': '次のデータセットの標準偏差を求めなさい。データセット: 10, 12, 14, 16, 18, 20', 'choices': ['a) 2.58', 'b) 3.16', 'c) 4.47', 'd) 5.29'], 'correct_answer': 'b', 'explanation': '標準偏差は、分散の平方根です。'}",よく頑張りました！引き続き学習を続けてください。
23,2,0.4,統計量の基本的な概念を理解し、データ分析の基礎を学ぶ。,"{'question': '次のデータセットの四分位偏差を求めなさい。データセット: 3, 6, 9, 12, 15, 18, 21, 24, 27, 30', 'choices': ['a) 6', 'b) 7.5', 'c) 9', 'd) 10.5'], 'correct_answer': 'b', 'explanation': '四分位偏差は、データの第3四分位数（Q3）と第1四分位数（Q1）の差を2で割ったものです。'}",よく頑張りました！引き続き学習を続けてください。
24,2,0.4,統計量の基本的な概念を理解し、データ分析の基礎を学ぶ。,"{'question': '次のデータセットの四分位範囲を求めなさい。データセット: 2, 4, 6, 8, 10, 12, 14, 16, 18, 20', 'choices': ['a) 8', 'b) 10', 'c) 12', 'd) 14'], 'correct_answer': 'b', 'explanation': '四分位範囲は、第3四分位数（Q3）と第1四分位数（Q1）の差です。'}",よく頑張りました！引き続き学習を続けてください。
25,0,0.0,統計量の基本的な概念を理解し、データ分析の基礎を学ぶ。,"{'question': '次のデータセットの分散を求めなさい。データセット: 4, 8, 6, 5, 3, 7, 9', 'choices': ['a) 4', 'b) 5', 'c) 6', 'd) 7'], 'correct_answer': 'b', 'explanation': '分散は、データの各値と平均値との差の二乗の平均です。'}",よく頑張りました！引き続き学習を続けてください。
26,1,0.2,統計量の基本的な概念を理解し、データ分析の基礎を学ぶ。,"{'question': '次のデータセットの四分位偏差を求めなさい。データセット: 3, 6, 9, 12, 15, 18, 21, 24, 27, 30', 'choices': ['a) 6', 'b) 7.5', 'c) 9', 'd) 10.5'], 'correct_answer': 'b', 'explanation': '四分位偏差は、データの第3四分位数（Q3）と第1四分位数（Q1）の差を2で割ったものです。'}",よく頑張りました！引き続き学習を続けてください。
27,1,0.2,統計量の基本的な概念を理解し、データ分析の基礎を学ぶ。,"{'question': '次のデータセットの平均値を求めなさい。データセット: 3, 5, 7, 9, 11, 13, 15', 'choices': ['a) 7', 'b) 8', 'c) 9', 'd) 10'], 'correct_answer': 'c', 'explanation': '平均値は、データの合計をデータの個数で割ったものです。'}",よく頑張りました！引き続き学習を続けてください。
28,2,0.4,統計量の基本的な概念を理解し、データ分析の基礎を学ぶ。,"{'question': '次のデータセットの平均値を求めなさい。データセット: 3, 5, 7, 9, 11, 13, 15', 'choices': ['a) 7', 'b) 8', 'c) 9', 'd) 10'], 'correct_answer': 'c', 'explanation': '平均値は、データの合計をデータの個数で割ったものです。'}",よく頑張りました！引き続き学習を続けてください。
29,0,0.0,統計量の基本的な概念を理解し、データ分析の基礎を学ぶ。,"{'question': '次のデータセットの四分位範囲を求めなさい。データセット: 2, 4, 6, 8, 10, 12, 14, 16, 18, 20', 'choices': ['a) 8', 'b) 10', 'c) 12', 'd) 14'], 'correct_answer': 'b', 'explanation': '四分位範囲は、第3四分位数（Q3）と第1四分位数（Q1）の差です。'}",よく頑張りました！引き続き学習を続けてください。
30,2,0.4,統計量の基本的な概念を理解し、データ分析の基礎を学ぶ。,"{'question': '次のデータセットの標準偏差を求めなさい。データセット: 10, 12, 14, 16, 18, 20', 'choices': ['a) 2.58', 'b) 3.16', 'c) 4.47', 'd) 5.29'], 'correct_answer': 'b', 'explanation': '標準偏差は、分散の平方根です。'}",よく頑張りました！引き続き学習を続けてください。
31,4,0.8,統計量の基本的な概念を理解し、データ分析の基礎を学ぶ。,"{'question': '次のデータセットの分散を求めなさい。データセット: 4, 8, 6, 5, 3, 7, 9', 'choices': ['a) 4', 'b) 5', 'c) 6', 'd) 7'], 'correct_answer': 'b', 'explanation': '分散は、データの各値と平均値との差の二乗の平均です。'}",よく頑張りました！引き続き学習を続けてください。
32,1,0.2,統計量の基本的な概念を理解し、データ分析の基礎を学ぶ。,"{'question': '次のデータセットの標準偏差を求めなさい。データセット: 10, 12, 14, 16, 18, 20', 'choices': ['a) 2.58', 'b) 3.16', 'c) 4.47', 'd) 5.29'], 'correct_answer': 'b', 'explanation': '標準偏差は、分散の平方根です。'}",よく頑張りました！引き続き学習を続けてください。
33,1,0.2,統計量の基本的な概念を理解し、データ分析の基礎を学ぶ。,"{'question': '次のデータセットの四分位範囲を求めなさい。データセット: 2, 4, 6, 8, 10, 12, 14, 16, 18, 20', 'choices': ['a) 8', 'b) 10', 'c) 12', 'd) 14'], 'correct_answer': 'b', 'explanation': '四分位範囲は、第3四分位数（Q3）と第1四分位数（Q1）の差です。'}",よく頑張りました！引き続き学習を続けてください。
34,1,0.2,統計量の基本的な概念を理解し、データ分析の基礎を学ぶ。,"{'question': '次のデータセットの標準偏差を求めなさい。データセット: 10, 12, 14, 16, 18, 20', 'choices': ['a) 2.58', 'b) 3.16', 'c) 4.47', 'd) 5.29'], 'correct_answer': 'b', 'explanation': '標準偏差は、分散の平方根です。'}",よく頑張りました！引き続き学習を続けてください。
35,0,0.0,統計量の基本的な概念を理解し、データ分析の基礎を学ぶ。,"{'question': '次のデータセットの四分位偏差を求めなさい。データセット: 3, 6, 9, 12, 15, 18, 21, 24, 27, 30', 'choices': ['a) 6', 'b) 7.5', 'c) 9', 'd) 10.5'], 'correct_answer': 'b', 'explanation': '四分位偏差は、データの第3四分位数（Q3）と第1四分位数（Q1）の差を2で割ったものです。'}",よく頑張りました！引き続き学習を続けてください。
36,1,0.2,統計量の基本的な概念を理解し、データ分析の基礎を学ぶ。,"{'question': '次のデータセットの平均値を求めなさい。データセット: 3, 5, 7, 9, 11, 13, 15', 'choices': ['a) 7', 'b) 8', 'c) 9', 'd) 10'], 'correct_answer': 'c', 'explanation': '平均値は、データの合計をデータの個数で割ったものです。'}",よく頑張りました！引き続き学習を続けてください。
37,1,0.2,統計量の基本的な概念を理解し、データ分析の基礎を学ぶ。,"{'question': '次のデータセットの分散を求めなさい。データセット: 4, 8, 6, 5, 3, 7, 9', 'choices': ['a) 4', 'b) 5', 'c) 6', 'd) 7'], 'correct_answer': 'b', 'explanation': '分散は、データの各値と平均値との差の二乗の平均です。'}",よく頑張りました！引き続き学習を続けてください。
38,2,0.4,統計量の基本的な概念を理解し、データ分析の基礎を学ぶ。,"{'question': '次のデータセットの標準偏差を求めなさい。データセット: 10, 12, 14, 16, 18, 20', 'choices': ['a) 2.58', 'b) 3.16', 'c) 4.47', 'd) 5.29'], 'correct_answer': 'b', 'explanation': '標準偏差は、分散の平方根です。'}",よく頑張りました！引き続き学習を続けてください。
39,0,0.0,統計量の基本的な概念を理解し、データ分析の基礎を学ぶ。,"{'question': '次のデータセットの平均値を求めなさい。データセット: 3, 5, 7, 9, 11, 13, 15', 'choices': ['a) 7', 'b) 8', 'c) 9', 'd) 10'], 'correct_answer': 'c', 'explanation': '平均値は、データの合計をデータの個数で割ったものです。'}",よく頑張りました！引き続き学習を続けてください。
40,0,0.0,統計量の基本的な概念を理解し、データ分析の基礎を学ぶ。,"{'question': '次のデータセットの標準偏差を求めなさい。データセット: 10, 12, 14, 16, 18, 20', 'choices': ['a) 2.58', 'b) 3.16', 'c) 4.47', 'd) 5.29'], 'correct_answer': 'b', 'explanation': '標準偏差は、分散の平方根です。'}",よく頑張りました！引き続き学習を続けてください。
41,3,0.6,統計量の基本的な概念を理解し、データ分析の基礎を学ぶ。,"{'question': '次のデータセットの分散を求めなさい。データセット: 4, 8, 6, 5, 3, 7, 9', 'choices': ['a) 4', 'b) 5', 'c) 6', 'd) 7'], 'correct_answer': 'b', 'explanation': '分散は、データの各値と平均値との差の二乗の平均です。'}",よく頑張りました！引き続き学習を続けてください。
42,1,0.2,統計量の基本的な概念を理解し、データ分析の基礎を学ぶ。,"{'question': '次のデータセットの分散を求めなさい。データセット: 4, 8, 6, 5, 3, 7, 9', 'choices': ['a) 4', 'b) 5', 'c) 6', 'd) 7'], 'correct_answer': 'b', 'explanation': '分散は、データの各値と平均値との差の二乗の平均です。'}",よく頑張りました！引き続き学習を続けてください。
43,1,0.2,統計量の基本的な概念を理解し、データ分析の基礎を学ぶ。,"{'question': '次のデータセットの平均値を求めなさい。データセット: 3, 5, 7, 9, 11, 13, 15', 'choices': ['a) 7', 'b) 8', 'c) 9', 'd) 10'], 'correct_answer': 'c', 'explanation': '平均値は、データの合計をデータの個数で割ったものです。'}",よく頑張りました！引き続き学習を続けてください。
44,1,0.2,統計量の基本的な概念を理解し、データ分析の基礎を学ぶ。,"{'question': '次のデータセットの分散を求めなさい。データセット: 4, 8, 6, 5, 3, 7, 9', 'choices': ['a) 4', 'b) 5', 'c) 6', 'd) 7'], 'correct_answer': 'b', 'explanation': '分散は、データの各値と平均値との差の二乗の平均です。'}",よく頑張りました！引き続き学習を続けてください。
45,1,0.2,統計量の基本的な概念を理解し、データ分析の基礎を学ぶ。,"{'question': '次のデータセットの分散を求めなさい。データセット: 4, 8, 6, 5, 3, 7, 9', 'choices': ['a) 4', 'b) 5', 'c) 6', 'd) 7'], 'correct_answer': 'b', 'explanation': '分散は、データの各値と平均値との差の二乗の平均です。'}",よく頑張りました！引き続き学習を続けてください。
46,0,0.0,統計量の基本的な概念を理解し、データ分析の基礎を学ぶ。,"{'question': '次のデータセットの標準偏差を求めなさい。データセット: 10, 12, 14, 16, 18, 20', 'choices': ['a) 2.58', 'b) 3.16', 'c) 4.47', 'd) 5.29'], 'correct_answer': 'b', 'explanation': '標準偏差は、分散の平方根です。'}",よく頑張りました！引き続き学習を続けてください。
47,1,0.2,統計量の基本的な概念を理解し、データ分析の基礎を学ぶ。,"{'question': '次のデータセットの平均値を求めなさい。データセット: 3, 5, 7, 9, 11, 13, 15', 'choices': ['a) 7', 'b) 8', 'c) 9', 'd) 10'], 'correct_answer': 'c', 'explanation': '平均値は、データの合計をデータの個数で割ったものです。'}",よく頑張りました！引き続き学習を続けてください。
48,3,0.6,統計量の基本的な概念を理解し、データ分析の基礎を学ぶ。,"{'question': '次のデータセットの四分位偏差を求めなさい。データセット: 3, 6, 9, 12, 15, 18, 21, 24, 27, 30', 'choices': ['a) 6', 'b) 7.5', 'c) 9', 'd) 10.5'], 'correct_answer': 'b', 'explanation': '四分位偏差は、データの第3四分位数（Q3）と第1四分位数（Q1）の差を2で割ったものです。'}",よく頑張りました！引き続き学習を続けてください。
49,5,1.0,統計量の基本的な概念を理解し、データ分析の基礎を学ぶ。,"{'question': '次のデータセットの標準偏差を求めなさい。データセット: 10, 12, 14, 16, 18, 20', 'choices': ['a) 2.58', 'b) 3.16', 'c) 4.47', 'd) 5.29'], 'correct_answer': 'b', 'explanation': '標準偏差は、分散の平方根です。'}",よく頑張りました！引き続き学習を続けてください。
50,1,0.2,統計量の基本的な概念を理解し、データ分析の基礎を学ぶ。,"{'question': '次のデータセットの標準偏差を求めなさい。データセット: 10, 12, 14, 16, 18, 20', 'choices': ['a) 2.58', 'b) 3.16', 'c) 4.47', 'd) 5.29'], 'correct_answer': 'b', 'explanation': '標準偏差は、分散の平方根です。'}",よく頑張りました！引き続き学習を続けてください。
```

凄い!!!

:::note information
所感
- ぶっちゃけ、本当に学生ごとの学習状況に最適な教材が出来ているのか不安です
:::

# Reasoning Model の検証

Code Interpreterがあった方がいい場合は、明らかに Reasoning Modelの方がいいですね。
 
個別学習のPromptを、o3-mini-high と GPT-4.5 で比較しました。

- 最後のステップでの、**学生の習熟度毎での問題選択の部分**が異なります。この1か所が一番大事なので
- ただし o3君は、ファイルの読み書きが苦手の様で...悉く😭

Reasoning Model (o3):
https://chatgpt.com/share/67cb43af-845c-8002-8642-a5fa938f3306

```python
import pandas as pd

# 1. 採点結果のデータ読み込み
df = pd.read_csv("graded_test_results.csv")

# 2. 各カテゴリーの最大点数設定
max_points = {
    "統計量の知識": 2,         # 問題1, 問題2
    "具体的な事象との関連付け": 1,  # 問題3
    "四分位数の知識": 1,         # 問題4
    "データのばらつきの把握": 1    # 問題5
}

# 3. 学生ごとの分析レポートを作成
analysis_reports = []
students = df["学生ID"].unique()

for student in students:
    student_df = df[df["学生ID"] == student]
    
    # カテゴリーごとの正答数を集計
    category_scores = {}
    for cat in max_points.keys():
        cat_df = student_df[student_df["テスト問題の種類"] == cat]
        correct_count = (cat_df["正誤判定"] == "正解").sum()
        category_scores[cat] = correct_count
        
    total_correct = student_df["正誤判定"].eq("正解").sum()
    
    # 分析レポートのテキストを作成
    report_lines = []
    report_lines.append(f"【学生ID: {student}】")
    report_lines.append("")
    report_lines.append("1. 単元毎の点数の推移:")
    for cat in max_points.keys():
        report_lines.append(f"   - {cat}: {category_scores[cat]}/{max_points[cat]}")
    report_lines.append(f"   - 総合スコア: {total_correct}/5")
    report_lines.append("")
    
    # 推奨する目標 (SMART) の設定
    if total_correct >= 4:
        timeline = "1週間以内"
        target = "既存の知識をさらに深化させ、応用問題にも挑戦する"
    elif total_correct >= 2:
        timeline = "2週間以内"
        target = "苦手な分野の基礎を固め、統計量の理解を確実にする"
    else:
        timeline = "3週間以内"
        target = "統計量の基本概念から再学習し、基礎の定着を目指す"
    
    goal_text = (
        "【推奨する目標 (SMART)】\n"
        f"Specific: {target}。\n"
        "Measurable: 次回の小テストで各項目で80%以上の正答率を達成する。\n"
        "Achievable: 個別教材と追加演習により実現可能。\n"
        "Relevant: データの散らばりや変動の正確な把握は、今後の統計分析に不可欠です。\n"
        f"Time-bound: {timeline}を目標期間とする。\n"
    )
    report_lines.append(goal_text)
    
    # 理解度の説明
    understanding_text = "【理解度の説明】\n"
    if total_correct >= 4:
        understanding_text += "非常に優れた理解が示されています。基礎は十分に習得し、応用力も期待できます。\n"
    elif total_correct >= 2:
        understanding_text += ("基礎的な理解はあるものの、特に「具体的な事象との関連付け」や「統計量の知識」 "
                                  "において改善の余地が見受けられます。\n")
    else:
        understanding_text += ("統計量の基本概念の理解に大きな課題があり、再度基礎から丁寧に学習する必要があります。\n")
    report_lines.append(understanding_text)
    
    # 個別教材（別の教材）の作成：苦手なカテゴリーに対してミニクイズを出題
    mini_test_lines = []
    mini_test_lines.append("【個別教材 (別の教材)】")
    if category_scores["統計量の知識"] < max_points["統計量の知識"]:
        mini_test_lines.append("[ミニクイズ: 統計量の知識]")
        mini_test_lines.append("問題: 四分位偏差、分散、標準偏差の定義と計算方法について、簡潔に説明しなさい。")
        mini_test_lines.append("【回答例】\n"
                               "・四分位偏差: 中央50%の範囲（第一四分位数と第三四分位数）の半分。\n"
                               "・分散: 各データと平均値の差の二乗の平均。\n"
                               "・標準偏差: 分散の平方根。")
    if category_scores["具体的な事象との関連付け"] < max_points["具体的な事象との関連付け"]:
        mini_test_lines.append("[ミニクイズ: 具体的な事象との関連付け]")
        mini_test_lines.append("問題: 充電式機器の使用可能時間を例に、平均値、分散、標準偏差がどのように役立つか説明しなさい。")
        mini_test_lines.append("【回答例】\n"
                               "・平均値: 一般的な使用時間の中心的な値。\n"
                               "・分散: 使用時間のばらつき具合。\n"
                               "・標準偏差: ばらつきを直感的に理解できる尺度。")
    if category_scores["四分位数の知識"] < max_points["四分位数の知識"]:
        mini_test_lines.append("[ミニクイズ: 四分位数の知識]")
        mini_test_lines.append("問題: 四分位範囲(IQR)の計算方法と、その意義について説明しなさい。")
        mini_test_lines.append("【回答例】\n"
                               "IQR = 第三四分位数 - 第一四分位数。外れ値の影響を受けにくく、データの中心部分のばらつきを示す。")
    if category_scores["データのばらつきの把握"] < max_points["データのばらつきの把握"]:
        mini_test_lines.append("[ミニクイズ: データのばらつきの把握]")
        mini_test_lines.append("問題: 分散と標準偏差の違いを具体的な計算例とともに説明しなさい。")
        mini_test_lines.append("【回答例】\n"
                               "分散は各データと平均の差の二乗の平均、標準偏差はその平方根で、元の単位でばらつきを示す。")
    report_lines.extend(mini_test_lines)
    
    # フィードバック
    feedback_text = "【フィードバック】\n"
    if total_correct >= 4:
        feedback_text += "非常に優れた成果です！さらなる応用力の向上を目指し、より高度な問題にも挑戦してください。"
    elif total_correct >= 2:
        feedback_text += "基礎は理解できていますが、いくつかの分野で改善が必要です。個別教材を活用して、苦手分野の克服に努めましょう。"
    else:
        feedback_text += "基本概念の再確認が必要です。焦らず、基礎から丁寧に学習し、確実に理解を深めることを目指してください。"
    report_lines.append(feedback_text)
    
    full_report = "\n".join(report_lines)
    analysis_reports.append({"学生ID": student, "分析レポート": full_report})

# 4. 学生ごとの解析結果をDataFrameにまとめ、CSVファイルとして保存（全学生分）
df_reports = pd.DataFrame(analysis_reports)
csv_report_filename = "student_analysis_reports.csv"
df_reports.to_csv(csv_report_filename, index=False)

# 5. 最初の2名の学生（S001, S002）の解析結果を表形式で表示
df_reports_first2 = df_reports[df_reports["学生ID"].isin(["S001", "S002"])]
df_reports_first2
```

 
GPT-4.5:
https://chatgpt.com/share/67cb441e-3168-8002-b4d4-27d46ee0d878

```python
# 学生ごとの正答数を計算
student_scores = df.groupby(['学生ID', '問題種類']).apply(lambda x: (x['正誤判定'] == '正解').sum()).unstack(fill_value=0)

# 各学生ごとの目標と理解度を設定するためのデータフレームを作成
student_analysis = []

for student_id in student_scores.index:
    scores = student_scores.loc[student_id]
    total_correct = scores.sum()
    goals = {
        "統計量の知識": "統計量の計算や概念を正確に理解し、4問中3問以上を正解できるようにする",
        "四分位数の知識": "四分位数や四分位偏差の概念を明確に理解し、正答率100％を目指す",
        "具体的な事象との関連付け": "実生活の事象と統計概念を的確に関連付けて説明できるようにする"
    }

    # 学生の理解度に基づいたコメントを作成
    understanding_comment = f"あなたは合計で5問中{total_correct}問正解しました。"
    if total_correct >= 4:
        understanding_comment += "基礎は非常によく理解できています。応用問題に挑戦し、理解を深めましょう。"
    elif total_correct >= 2:
        understanding_comment += "基礎的な概念の理解はできていますが、理解の定着を図るためさらに学習が必要です。"
    else:
        understanding_comment += "基本概念の理解が不足しています。個別のサポート教材を活用して基礎力を高めましょう。"

    # 個別の教材作成（簡易的に学生ごとの復習小テストを作成）
    personalized_material = f"復習テスト ({student_id})：\n1. 四分位偏差とは何か説明しなさい。\n2. 標準偏差が大きい場合データはどのような状態か説明しなさい。\n（解答例：1. 四分位偏差は中央50％のデータの散らばりの程度を示します。2. データが広範囲に散らばっている状態を示します。）"

    # 分析レポートをまとめる
    student_analysis.append({
        "学生ID": student_id,
        "単元毎の点数": scores.to_dict(),
        "推奨する目標": goals,
        "理解度の説明": understanding_comment,
        "個別教材": personalized_material,
        "フィードバック": f"{understanding_comment} 前向きな姿勢で継続的に学習しましょう！"
    })

# データフレームとして整理
student_analysis_df = pd.DataFrame(student_analysis)

# 最初の2人の分析レポートを表示
tools.display_dataframe_to_user(name="最初の2名の学生分析レポート", dataframe=student_analysis_df.head(2))

# CSVに保存
analysis_file_path = '/mnt/data/student_analysis_reports.csv'
student_analysis_df.to_csv(analysis_file_path, index=False)

analysis_file_path
```
Microsoft 365 Copilot にも、早く Reasoning Model が来てほしいところ😊

# まとめ

基盤技術としてのPromptとCode Interpreterの可能性は見えてきました。最後の[所感]に書きましたが、現時点だと不安も正直ありますけど。これは今後改善していく可能性はあります。

後は、情報保護・管理ですね。セキュアに扱える必要がありますので。
私はMicrosoft 365 CopilotあるいはAzure AI Agent Serviceなどの進展に期待しています!!!