---
# System prepended metadata

title: AIサービス活用法

---

---
title: AIサービス活用法

---

# AIサービス活用法
この文章は，勉強効率の向上を目的とする中高生と，生徒の指導の効率化を目的とする指導者それぞれに向けて，生成AIをどのように使い始めたらよいかを紹介するためのものです．
雑多にいろいろな情報を書いておきます．
***
**目次**
[toc]
***

## はじめに
この文章では，生成AIのうち，特に Large Language Model（LLM，大規模言語モデル）を中心に扱います．
LLMはテキストを生成するAIモデルのことです．LLMはユーザーの与えた入力（プロンプト）に対して，モデル自らが生成する文章を通じて思考・Web検索・コードの実行を行い，できる限り適切かつ役に立つ出力を生成するように設計されています．

近年OpenAIやGoogleなどの大手が提供するAIサービスは，数学オリンピックの問題を解けるくらいに高度であり，答えのある問いであれば多くを解決できるものとなっています．
この高度な問題解決能力を，学習・教育の場面で生かすために役立つ例をいろいろ挙げていこうと思います．

SNSなどでは，「AIはまだまだ！」「AIはバカな間違いを犯す！」みたいなことを書く人も多いですが，一つ言えるのは，AIは
> **大きく叩けば大きく響き小さく叩けば小さく響く**

道具であるということです．AIが無能に見える場合，それは自分自身の使い方が下手なだけの場合がほとんどです．一方で実践を積み重ね，うまい使い方を習得すれば力強い道具となります．

## 知っておくとよい用語
- **Reasoning Model**
LLMの中でも，特に「考えながら解く」ことに最適化されたモデルのことです．単に文章をそれらしく生成するだけでなく，与えられた問題を分解し，順序立てて考え，途中結果を踏まえながら最終的な答えを導く能力が強化されています．<br>
例えば，数学の証明問題，記述式の答案作成などでは，Reasoning Modelを使うことで「なぜその答えになるのか」を含めた，より人間の思考に近い解答を得やすくなります．単純な知識問題ではない理数系科目や，長い文章が含まれる問題を扱う際には基本的にReasoning Modelを使うべきです．<br>
ただし，考える過程（Chain of Thought，CoT）が長くなるため，多くのContext Window（後述）を消費します．また，生成に時間がかかる場合があります．
そのため，短い要約や単純な言い換え，短い文章の翻訳などでは，必ずしもReasoning Modelを使う必要はありません．

- **Contex Window**
LLMが扱うことのできる文章の最大長を決める数値です．LLMが記憶できる文章量と考えてもらって差し支えありません．
LLMが扱う文章は，「ユーザーの入力」+「LLMの思考過程（CoT）」+「LLMの最終出力」です．この3つの合計がContext Windowを超えると，前半部分の内容を忘れたりLLMの性能が大幅に劣化する場合があります．
Context Windowの数値は，厳密には扱える文字数をそのまま表すものではありませんが，以下の式で大体の最大文字数が予測できます：<br>
日本語の文章：(Context Window) 文字程度
英語の文章：(Context Window)*0.75 語程度<br>
Reasoning Modelを使う上では，Context Windowが十分大きくなければ真価が発揮できません（CoTがContex Windowに収まりきらなくなる）．

- **Hallucination（ハルシネーション）**
LLMが，事実ではない内容や存在しない情報を，あたかも正しいかのようにもっともらしく出力してしまう現象のことです．
例えば，
    - 与えられた文章の解釈を都合よく改変する
    - 実在しない公式や定理を作り出す
    - 存在しない参考書・論文・人物を挙げる
    - 年号や定義を微妙に間違える
    
    といった形で現れます．
この現象は最近のReasoning Modelであれば発生率がかなり抑えられています．一方，非Reasoning モデル（CoTがないモデル）を利用すると比較的高頻度で発生する場合があります．また後で詳しく述べますが，OpenAIのChatGPTよりも，GoogleのGeminiの方がハルシネーションを起こしやすいとも言われています．

- **Multimodal**
テキストだけでなく，画像・音声・PDF・表など複数の形式（モダリティ）を入力として扱えることです．
手書き答案の写真や，図を含む問題を入力できることが強みです．
ただし，画像入力はモデル側の読み取りミス（問題文の見落とし，指数等の読み間違い）が起きやすいため，文章の部分はテキスト形式でも与えると精度が上がります（手入力が面倒な場合は，画像と画像をOCRした結果を同時に与えるだけで精度の改善が可能）．<br>
最近のサービスであれば，ほとんどの場合画像やpdfの入力に対応しているはずです．ただ，ごく一部のモデルでは，テキスト入力しか受け付けない場合もあるため注意が必要です．

## 検討するAIサービス・モデル
### OpenAI (ChatGPT)
各プランおよび価格 ([参考](https://chatgpt.com/ja-JP/pricing/))


| プラン名 | 価格 | 簡単な説明 |
| -------- | -------- | -------- |
| Free     | $0/月     | 手軽な用途に．Context Windowが小さめ(16k)．レートリミット厳しい<br> (10 message/5h，ファイル付きは数回で丸一日制限かかった)．Reasoningモデルにアクセスできるが多分ナーフされてる． |
| Go     | $8/月     | Freeのレートリミットを10倍緩めたバージョン．Context Windowが小さめ(32k)． |
| Plus     | $20/月     | バランスよい．Context Windowは非Reasoningで32k，Reasoningで256k．レートリミット緩い(引っかかったことない)． |
| Pro     | $200/月     | 高い．ChatGPT使って月に何万円分もの価値創出を行える人向け． |
| Business     | $30/月 ×2名～     | お金あるならよい選択肢．レートリミットがPlusよりもさらに緩い（非Reasoningのみ）．**GPT5.4-Pro**を使える．|

### Google (Gemini)
各プランおよび価格 ([参考](https://gemini.google/subscriptions/))
| プラン名 | 価格 | 簡単な説明 |
| -------- | -------- | -------- |
| Free     | 0円/月     | 手軽な用途に．Context Windowが小さめ(32k)．レートリミット厳しい． |
| Google AI Pro    | 2900円/月     | Geminiで選ぶならこれ．Context Windowは1M（超でかい．こんないるか？）．OpenAIのPlusとどっちが良いかは諸説あり． |
| Google AI Ultra     | 36400円/月     | AIサービスだけじゃなく，Googleの他のサブスクリプションが大体全部含まれてる．Googleに魂を売った人向け． |

### 各プランで提供されるモデルとその特徴
- **OpenAI (ChatGPT)**
数学系に限らず，答えを導く能力についてはGeminiよりも高い傾向．ただ，変な造語を使用する場合が多い．
以下に示す各モデルは，Freeプラン（多分Goプランも）では手動で選択することはできない．かわりに，チャット欄にあるオプションから思考モード（裏ではGPT5.4-Thinkingが動いている？）を選択することができる．
    - **GPT5.3-Instant**
    非Reasoningモデル．各プランでのContext Windowのサイズが適用されるのはこのモデルを使用するとき（推測）．英語の作文，添削，翻訳等の用途以外で使うことない．後述するAutoを使っていれば，わざわざ指定することはほぼない．
    - **GPT5.4-Thinking**
    Reasoningモデル．Context Windowは256k．課金しているなら，基本的にこれを指定して使うことになる．思考の深さを「標準」と「拡張」から選べる．理数系の問題を与えると，Pythonを用いて具体例を確認したり，答えのチェックを自律的に行うことが多い．高度な問題に対しては，Webから定理や論文を引用して解答する場合もあり．
    - **GPT-Auto**
    与えたタスクに応じて自動的にInstant/Thinkingを切り替える．
    - **GPT5.4-Pro**
    Pro，Businessプランで利用可能．Reasoningモデル．Thinkingよりさらに長時間推論を行うことが可能．噂によると，丸一日ずっと作業し続けることも可能とのこと．
- **Google (Gemini)**
どのプランでも全モデルアクセス可能．ただしFreeプランでは全モデルContext Windowは32k．課金プランは全モデルContext Windowは1M．いずれのモデルも，Geminiアプリから使う場合，Python等のコード実行機能はない．Web検索機能はあり．
問題の解説を作成する能力，画像等を正確に理解する能力はChatGPTよりも多少高い傾向．噂によると，日本の中学～大学の入試問題を結構食わせて学習しているとかしてないとか．
    - **高速モード (Gemini3-Flash)**
    非Reasoningモデル．
    - **思考モード (Gemini3-Flash-Thinking)**
    Reasoningモデル．Proよりも速さに特化している．にもかかわらず，数学系のタスクではProと同等以上の性能を発揮する場合あり．
    - **Pro (Gemini3.1-Pro)**
    Reasoningモデル．でかいContext Windowを活かした，画像理解・PDF理解の能力が高い．

### モデルの比較検討
同じ数学，物理，化学の問題，同じプロンプトを用いて各モデルの比較を行った（[参考(未完成)](https://hackmd.io/@22-ONC/ry19RBaHbe)）．
それぞれの特徴と，比較検討を以下にまとめます．
- **ChatGPT Freeプランの非Reasoning** VS **Gemini 高速モード**
どちらも理数系科目のタスクでは実用に足らない．ただ，語学系は非Reasoningでも強いため，英語学習などには使える．

- **Gemini 思考モード** VS **Gemini Pro**
大きな違いはあんまり感じない．難易度が高い課題を与えた場合は，どちらのモデルでも出力までの時間は差がないように思われる．難易度の低い課題であれば，思考モードの**速さ**が生きてくるだろう．

- **ChatGPT5.4-Thinking** VS **Gemini 思考モード or Pro**
純粋な問題解決能力ではChatGPTの方が上．中学～大学入試問題の解答・解説の記述は，Geminiの方が教科書的で分かりやすい．
難易度が標準程度の問題であれば全科目Geminiでも良いが，難易度の高い問題になると間違えてしまう場合が多い．特にテストに用いた物理の問題では，ChatGPTは完答できたのに対してGeminiはいずれのモデルも完答することができなかった．
もう一つGeminiの大きな欠点として，思考プロセスのサマリーが大抵英語であることが挙げられる．ChatGPTの場合は，大体の場合日本語で質問すると思考プロセスのサマリーは日本語で表示される．
詳しくは後述するが，生成AIを使う上では思考プロセスを見ることも大事であるため，この挙動はGeminiの弱みと言える．

### 結局どのプランがいい？
* 無課金でどうにかしたい　→　GeminiのFreeプラン > ChatGPTのFreeプラン
ChatGPTのReasoningモデルはナーフされているのに対して，Geminiはおそらく大してされていない．レートリミットもGeminiの方が緩い．
* 課金して使う　→　ChatGPTのPlusまたはBusinessプラン > Geminiの課金プラン
課金してまでハルシネーションの多いモデルを使うメリットはない．ただ後述の通り，中高生が使う場合はChatGPTの問題解決能力を持て余してしまいがち．

* 中高生が学習目的で使う　→　GeminiのFreeプランまたは課金プラン（ハルシネーションに注意．常に思考モードまたはProを使うべき．）
問題の解説や学習補助に関しては，Geminiの方が読みやすい文章を作成してくれる．雑に画像のみを投げても，きちんと読み取れる．

* 指導者が業務のために使う　→　ChatGPTのPlusまたはBusinessプラン
指導する立場の人であれば，ChatGPTが生成する多少難解な文章もしっかり活用できる．そのため，純粋な問題解決能力の高さからChatGPTを選ぶべき．


## 生成AIのうまい使い方

### Context の管理
GPT-4 が出たころは，いかにプロンプトをうまく書くかが大事だと言われており，「プロンプトエンジニアリング」という言葉が流行っていました．  
しかし現在では，**AIに渡す情報（Context）をどう整えるか**という観点こそが大事であると言われており，「コンテキストエンジニアリング」という言葉がよく用いられるようになっています．
Context Windowの説明で述べた通り，LLMが記憶できる文章量の最大値は決まっています．この記憶容量が，問題解決において役に立たない文脈で占められると，性能が劣化します．このことを念頭に，どのようにContextを管理すればよいか，プロンプトはどう書けばよいかを説明します．

#### Context 管理で注意すべき点
- **ちまちまチャットを分ける**
  何らかの問題について質問したのちに，そのまま続けて関係のない他の質問をするようなことは避けるべきです．また，関係のある質問であっても，長くやり取りを続けると徐々に性能が劣化する傾向があります（最近はかなりましになったが）．Reasoningモデルを使用すると，各応答の前にCoTが入るため，自身が生成した大量の文章でContext Windowが埋まってしまうことが原因です．
  問題ごとにチャットを分けるのを基本とし，ChatGPTなら「分岐（ブランチ）機能」を使って，解答解説を作成させたのちに
    - 別解を聞く
    - 自分の答案の添削をする
    - 類題を作る

    のように目的別に枝分かれさせると，あとで見返すのも楽になります．

- **アップロードするファイルはできるだけ最小限に**  
  問題や解答の画像・PDFなどをアップロードする際は，必要箇所のみを切り抜いてアップロードすることが望ましいです．
  
- **画像丸投げは微妙**
  画像入力は便利ですが，符号・指数・根号など，細部の読み間違いが起きやすいです．画像を投げるなら，重要な式や問題文はテキスト形式で与えるとよいです．

### プロンプトの書き方 ([参考1](https://cookbook.openai.com/examples/gpt-5/gpt-5_prompting_guide)，[参考2](https://note.com/hjires2bs/n/nb337d3c05ca3)，[参考3](https://arxiv.org/abs/2602.20300))
「あなたは優秀な数学者です」「あなたは熟練の教員です」など，ロールを与えるプロンプトは，最近のモデルではあまり使う必要はないでしょう．出力の文体こそ変われど，本質的な内容はほぼ変わりません．  
また，「step by step で思考してください」系のプロンプトは，Reasoningモデル以前では有効でしたが，現在ではほぼ意味がない（書かなくても自力で勝手にやる）どころか，冗長な説明を誘発して性能が劣化する場合もあります．
さらに，矛盾した指示を書かないように注意が必要です．最近のモデルは，ユーザーの与えた指示に極力従うようにチューニングされています．矛盾した指示を与えると，どうすれば指示に従えるのか深く考え続け，無駄なCoTを生成する場合があります．

良いプロンプトの形式は以下の通りです：
**「解決したい課題，タスクの目的」+「出力形式」（+ 踏んでほしい手順 + 参考資料）**
必要に応じて，見出し・階層構造化を行う．

- **解決したい課題，タスクの目的**
  AIになにを解決してほしいのか，そもそものタスクの目的は何なのかを共有することで，最終的な出力が「思っていたものと違う！」となることを防ぎやすくなります．
  ロールを与えるプロンプトはあまり必要ないと書いたものの，「〇〇の立場から内容を批評してください」などのプロンプトは，タスクの目的を長々と具体的に書くのが面倒な時に便利です．
  
- **出力形式**  
  「何を」「どの順で」「どの形式で」出してほしいかを明示します．  
  例：  
  - まず方針を5行程度 → 次に詳細な解説 → 最後に検算
  - 箇条書きで，最後に要点まとめ  
  - 途中式は省略しない

- **見出し・階層構造化（読み間違い防止）**  
  「問題文」「自分の答案」「参考となる情報」「出力要件」のように見出しをつけると，AIだけでなく人間にも読みやすいプロンプトになります．
  必要に応じて，以下のようにMarkdown形式を用いて，階層構造などを作るとよいでしょう：
  ```markdown
    [タスク]
    与えた英作文について，改善すべき点を指摘する．

    [手順]
    - 文法のチェック
      細かい文法的な間違いを全て指摘してください．
      特に以下に注意:
      - 不自然な接続詞
      - hogehoge
    - 論理の流れチェック
      論理の飛躍が無いかチェックしてください．
    - 内容自体のチェック
      内容自体が妥当なものかチェックしてください．
    - 改善点の列挙
    
    以下チェックすべき英作文
    ***
    I do not agree with ...
  ```

- **踏んでほしい手順**
  与えた課題に対して，特別踏んでほしい手順がある場合はここで指示しましょう．あまりに具体的でがんじがらめな手順を指示すると，むしろ性能が劣化する場合があることに注意が必要です（多少の遊びが必要）．

- **参考資料**  
  添付したファイルには何の情報が含まれているかをプロンプトで事前に伝えるとよいです．また，参考にしてほしいWebサイトがある場合，URLをそのまま貼っても大丈夫です．
***
メモ:
* LLMが文章を処理するとき，前の単語がそれ以降の単語に作用する．一方で後ろの単語は直接的にそれより前の単語に影響を与えることができない．つまり，与える情報の順番や文章の単語順を変更すると応答が改善される場合がある．
* LLMは，高次元の仮説空間(Hypothesis space)からもっともらしい回答を生成している．探索すべき仮説空間が広い場合，出力のブレが大きくなりハルシネーションを引き起こしやすくなる．一方で，仮説空間が適度に狭い場合，高品質な回答を得られることが多い．つまり，プロンプトを書く際は，LLMの仮説空間を適度に狭めることを意識するとよい．
***

### 出力された内容の確認
出力内容は，ある程度の確率で間違いが混ざります．答えがわかっている問題の解説タスクならば，最終的な答えがあっているかでおおよそ判断可能ですが，そうでないタスクの場合，間違いが含まれていないか出力を全て読んで確認するのは骨が折れます．以下は，確認作業で役に立つテクニックです．
- **出力そのものより思考過程を確認すべし**  
  ChatGPT，GeminiのReasoningモデルを使用した場合，タスクの実行中に思考過程の要約をリアルタイムで見ることが出来ます．変な方向に進んでいる兆候がある場合，最終的な出力も間違っている可能性が高いです．その他，厳密値が求まるはずの問題なのにPythonを用いて近似値ばっかり検討している場合なども，最終的な出力の信頼性が揺らぎます（ChatGPTの場合，数値計算で目星→厳密値みたいな流れも多いため，一概には言えないが）．
- **同じタスクを個別に複数回実行する**
  同じタスクを新しいチャットで何度か実行し，答えが一致するか確認する．答えがぶれる場合，どの出力も間違っている可能性が高い．
  また，本質的な内容が同じ，別のタスクに言い換えて再度実行してみるのも効果的．
- **出力の行間を埋めるように指示**
  最終的な出力では，ところどころ論理が飛躍している場合があります（出力が正しい場合でも）．飛躍している部分の行間をきちんと埋めるように指示すると，間違いを含む出力の場合，ぼろを出す場合が多いです．


## 活用の例
具体的な活用方法を雑多に紹介します．
### 答案の添削
- 間違いの発見
数学や物理の答案を添削するうえで，最終的な答えが間違っている場合，長い計算を細かく追わなければならないケースがあります．これらのタスクは，LLMを利用することで省力化できる場合があります．例えば，問題文と答案の添削したい部分を画像で添付し，以下のようなプロンプトを入力するとよいでしょう：

    ```markdown
    問題とそれに対する答案の一部を画像で添付しました．
    答案は(2)のものであり，誤りを含みます．
    どこで間違えたかを分析し説明してください．
    ```
    答案は大抵，あまりきれいでない手書き文字の場合が多いため，画像認識能力の高いGeminiの方がこのタスクでは有利です．無駄な情報をCotextに含めないために，添削対象の部分のみを切り抜いて渡すのがコツです．

### 問題の深堀
- **別解の検討**
  入試問題の演習等では，別解を探すことも大事です．参考書で取り上げられていない問題でも，別解を探すことができます．0から別解を探させるだけでなく，自分が考えた方針がうまく行くのかを検証することもできます．
  
    ```markdown
    2<=a<bを満たす自然数の組(a, b)について、a^b=b^aを満たすものを全て求めよ．
    という問題について，複数の解法を示してください．
    ```
    
    ```markdown
    2<=a<bを満たす自然数の組(a, b)について、a^b=b^aを満たすものを全て求めよ．
    という問題について，logx/xの概形を使わないで解答する方法を検討してください．
    ```
    
    ```markdown
    2<=a<bを満たす自然数の組(a, b)について、a^b=b^aを満たすものを全て求めよ．
    という問題を，整数の性質のみを用いて解答する方法を検討してください．
    ```
    
- **問題の背景・周辺知識を調査**
  入試問題では，大学で学ぶ内容（テイラー展開，微分方程式，フーリエ級数など）が背景にある問題が頻出します．
    ```markdown
    この問題の背景を説明してください．
    ```
    程度のプロンプトでも比較的よい出力が得られます．何気ない漸化式の問題の背景を聞いてみると，重要な数理モデルが背景にあったりと，面白い発見をすることもあります．
    
### 作問への活用
- **数値設定**
  問題のベースとなる設定を与えたうえで，解答しやすい数値設定を考案してくれます．人間がやると手間がかかる作業である場合が多いですが，LLMに外注することで省力化が可能です．
    ```markdown
    \lim x to inf (\sqrt{x^2+4x}-\sqrt{x^2-3x})は根号を含む分数の有理化の逆を行うことで極限が求められます．
    これと同様の発想を用いる，三乗根-三乗根型の極限値を求める問題を作成してください．最終的な答えはある程度綺麗なるように設定を行ってください．
    ```
    ```markdown
    以下の問題について，問題設定を変えることなく，適切な座標およびベクトルを設定することで，最終的な答えがきれいに求まるようにしてください．
    問題：
    xyz空間内に，点A(???)，点B(???)と，原点を通り方向ベクトルがd=(???)の直線l上に点Pをとる．AP+BPの最小値を求めよ．
    ```
  
- **問題不備の確認**
  作成した問題について「条件の不足がないか」「複数の解釈ができてしまわないか」を確認する用途にも使えます．LLMに問題を解かせて思考過程を眺めることで，解釈で迷いが生じる箇所があるかなどがわかります．また，最終的な答えが想定と違う場合，問題文においてなんらかの条件が抜けている可能性があります．
  
- **類題の作成**
  以下のようなプロンプトを用いることで，ある問題の類題を新たに作成することができます．
    ```markdown
  以下の問題について，解答に必要な考え方の要点のみを抽出し，その要点を含む問題を，与えた問題の設定を流用せずに新たに作成してください．
    問題文：hogehoge
    ```
    「要点のみを抽出」という部分が重要です．解答に必要な考え方を抽象化せずに列挙した後それを参考に作問すると，出力が原題に非常に似通ってしまいます．ChatGPTはこのプロンプトでもまだ似通った問題を出してきたので，「**抽象的な**要点のみを抽出」とするとよいです．
  
    一方で，「この問題と似た過去問を探して」といった類題の調査・検索には不向きです．LLMが素で持っている知識には，問題とその解法，似た解法を用いる問題の年号が入っているわけではありません．そのため，LLMは検索を駆使して似た問題を見つけようとします．しかし，「○○という考え方を使う問題」や「△△という背景を持つ問題」という検索は一般的な検索エンジンでは難しいです（そもそも問題ごとに**テキストベースで**背景や考え方を分かりやすく大量に列挙しているようなサイトはほとんどない）．そのため（人間の知識と比較して）大した精度がでません．何ならハルシネーションを起こしてソースをでっちあげたり（**特にGemini！！！** なんでこの点に関してはこんな無能なのか．）します．
すこし主題とは外れますが，関連した内容の興味深い[論文](https://openreview.net/pdf?id=rQQZiSFcNU)を最近見つけました.
    
- **アイディアの壁打ち/例題の作成**
  ある現象について，その一般化や応用例を聞くことで，作問のアイディアを膨らませる「壁打ち」の相手として活用できます．使いたいテーマや題材を用意して複数例題を示してもらうと良いでしょう．また，大学内容を高校内容で解けるように，「はさみうちの原理を用いて極限を求めるための不等式を用意して」といった用途でも使えます．
  例:
    ```markdown
  I_n = \int_{0}^{pi/2} cos^nxdx, J_n = \int_{0}^{pi/2} x^2cos^nxdxとするとき，J_n/I_nがn -> infで0に収束することを挟み撃ちを使って示してください．
    ```
    その他，難しい問題を思いついたが自力で解けないとき，LLMに解かせてみて，そこで出てきた発想や不等式から作問の着想を得ることもあります．

### LaTeXによる文章作成
- **Coding Agentを用いて効率化**
  数学や物理の教材作成で避けて通れないのが，LaTeXによる数式や図の作成です．これらは手打ちすると非常に時間がかかりますが，ClineやCursorなどのCoding Agent（AIを組み込んだエディタ環境）を用いると，自然言語で指示を出すだけで複雑な数式やTikZを用いた図表を含むLaTeXコードを自動で生成・修正してくれます．
  Cursorなどでは別途で契約しないとたくさん使うことが出来ませんが，OpenAIの場合，Puls以上のプランを契約していればCodexというCoding Agentをかなりたくさん使うことができるためおすすめです．
- **OpenAIのPrism**
  OpenAIが提供するAIネイティブのLaTeXエディタ「Prism」を活用するのもよいでしょう．OverleafなどのサービスにAIの共同編集者が追加されたようなイメージです．手書き数式の画像をLaTeXコードに変換したり，文章の推敲，Tikzによる図表の生成までをAIと対話しながらスムーズに行うことができます．研究者向けに作られたツールですが，指導者が高度な教材を作成する際にも有益でしょう．

## ニッチ・雑多な情報
以下徒然なるままに書いた散文

### LLMの（受験）数学における問題解決力を測るのによく使っている問題
* **問題1**
    問題文:
    $x,y$を実数とする．任意の自然数$n$に対し$x^n+y^n$が整数となるような，組$(x,y)$のうち，    $x^2+y^2 \leqq r^2 \hspace{1mm} (r>0)$を満たすものの数を$N(r)$とする．このとき
    $$\lim_{r \to \infty}\frac{N(r)}{r^3}$$
    を求めよ．
    
    参考:
    かなり前から使っているベンチマーク．初めてLLMが解答に成功したのは，Reasoningモデルが世界で初めてリリースされた，2024半ばごろ~2025頭頃だったはず．ChatGPT-o1のみが正しい解答を導くことに成功．GrokなどはReasoningモデルであるにも関わらず，解答できるようになったのはしばらく後．
    オープンソースのモデルで初めて解答に成功したのは，Deepseek-R1系列（2025頭頃）のReasoningモデル．この時は，まさかこのレベルの問題を手元のPCで動かせるサイズのLLMで解けるとは思ってもみなかったので非常に驚いた．
* **問題2**
    問題文:
    $xyz$空間内の$xy$平面上に，原点を中心とする半径1の円$C$がある．$C$上に，AB$=1$となるように点Aと点Bをとる．また点Pを，$\angle$APB$=120^\circ$となるようにとるとき，$\bigtriangleup$ABPが通過しうる領域の体積を求めよ．
    
    参考:
    2025年頃から使っている問題．最近は比較的解ける場合多．
* **問題3**
    問題文:
    水平な床の上に立方体が置かれている．床に接している4つの辺から等確率で1つを選び，これを軸として立方体を倒す操作を考える．
 この操作を連続してn回行ったあとに，初めに床に接していた面を含めて1回以上床と接した面の数の期待値を求めよ．
    
    参考:
    最近使い始めた問題．ChatGPT，Geminiともに解答に成功．最近はLocalでも解けるモデルがある(Qwen 3.5 27Bなど)．
* **問題4**
    問題文:
    xyz空間内に$\{(x,y,z)|x\geqq 0\land y\geqq 0 \land x+y\leqq 1\}$で表される三角柱がある．長さ$2+\sqrt{2}$のひもの端点を点$(0,0,0)$に固定し，ひもを張った状態でもう片側の端点を動かす．ひもは三角柱の内側を通ることが出来ないとする．このとき，ひもが通過しうる領域の体積を求めよ．
    
    参考:
    2025年頃から使っている問題．最近は解けるモデルが多いが，時間がかかる．
* **問題5**
    問題文:
    $a,b,c,d$を実数の定数，$n$を自然数とする．多項式$f_n(x)$を
        $$f_n(x)=(x^2+ax+b)^n+(cx+d)^n$$
と定める．このとき任意の自然数$n$に対して，「任意の整数$k$に対して$f_n(k)$は整数」が成り立つための必要十分条件を求めよ．また，求めた条件が必要十分であることを示せ．
    
    参考:
    o3-miniは解けず，o3が初めて解答に成功していた記憶（o3がだめでo3-Proが解けた，だった気もする）

### 手元でLLMを動かす
個人情報を含む文章や，入試や定期試験に使用する問題はオンラインのAIサービスにアップロードすると漏洩のリスクがあります．これらのデータをAIで処理したい場合，手元の閉じた環境の中で実行する必要があります．

### 例の受験問題検索システム作るのにどうやってLLMを活用したか
#### どんなプロンプトを使ったのか

* **問題画像のOCR**
できる限り誤りを排除するために，複数の画像でOCRを試したのち，よく起きる間違いをプロンプトで抑制するようにしています．さらに，ニュアンスの取り違えがないよう英語のプロンプトとしました．
    ```markdown
    Please perform a precise and comprehensive conversion of all information in the provided image to Markdown combined with LaTeX, faithfully reproducing text, formulae, layout details, and formatting as described below.

    ## Task Definition

    ### Input
    - An image containing the text, equations, figures, tables, and all layout information to be converted.

    ### Output
    - A Markdown + LaTeX format text, rigorously reproducing all elements, layout, and styles exactly as they appear in the image.
        - Only content and formatting actually present in the image may be output.
        - Always use \( ... \) for inline math and \[ ... \] for display math, carefully distinguishing between them.

    ### Conversion Rules
    - Where the image contains a figure or table, insert only the `<figure>` or `<table>` tag at the corresponding position in the Markdown (do not attempt to reproduce their content).
    - When outputting 【num】, use full-width Japanese brackets【】, and do not include any extra spaces between the brackets and the number.
    - For boxed characters, use `\boxed{\text{char}}`.
        - Example: \(\displaystyle \frac{\boxed{\text{A}}}{\boxed{\text{B}}\boxed{\text{C}}}\)
    - Blank boxes (for fill-in-the-blank) should be written as `\boxed{\text{　}}` (full-width space character inside).
    - In Markdown, two newline characters are required to create a line break.
    - Never add explanations, commentary, or any content not present in the original image. Do not generate answers or solutions.
    - Do not attempt to reproduce the contents of figures or tables using Markdown.

    ### Prohibited Actions
    - Do not output answers, solutions, or commentary.
    - Do not generate any text or elements not present in the image.
    - Do not attempt to reproduce the content or layout of figures or tables in Markdown.

    ## Output Format
    - Only output the converted text (Markdown + LaTeX mixed). Do not add extra comments or explanations.

    # Notes
    - Strictly replicate only what is shown within the image. Never infer, elaborate, or create additional content.
    - Use the appropriate LaTeX, Markdown, and tag instructions precisely as specified above.
    ```
* **解答・解説の作成**
後でプログラムを用いてLLMの出力をパースするために，<tag>を使った出力をさせています．
    ```markdown
    画像に含まれる問題に対し、厳密かつ明快な日本語で、詳細な解答と解説を作成してください。整然としたMarkdown階層構造（##, ### など）およびLaTeX記法（\( ... \), \[ ... \]）を使用すること．

    # 出力構成

    **必要に応じて（誤記等がある場合のみ先頭に記載）:**
    - `<correction>`訂正理由と訂正内容`</correction>`  
    上記は、与えられた問題に明らかな誤記・不成立箇所がある場合のみ記載します。訂正箇所・理由は以降で繰り返し説明しないでください。

    **必須出力:**
    - ## 背景・方針  
      問題の背景や重要な論点、解答に至るまでの考え方・方針を論理的に記述してください。  
    - ## 解答  
      厳密・明快に解法を提示します。積極的に別解を作成し、それぞれ階層構造で区分してください。  
        - ### [解法1]  
          解答の流れ・計算過程・最終的な答えを書きます。可能な限り詳細に論理展開を示してください。
        - ### [解法2]（別解がある場合のみ）  
          他の合理的または一般的な解法を示します。
    - ## 解説  
      問題全体のポイントや、解法各段階の理解を助けるまとめ・補足等を記述します。  

    # 記法ルール

    - Markdownの階層構造（##, ###, - など）を用い、階層的で一目で分かる書式としてください。
    - 数式はLaTeX記法で明記し、行中は \( ... \)、独立した数式は \[ ... \] で囲んでください。
    - 明確な区分け・強調が必要な箇所は、太字やリストも活用してください。

    # 注意事項

    - 問題文章に不成立箇所等があった場合のみ、冒頭で誤り訂正ブロック<correction>を明示し、それ以降で再度触れないでください。
    - すべての解答・解説を書く前に、必ず背景・方針を通して論理的な道筋を明示し、結論や結果は常にその後に記載してください。
    - 階層構造・数式記法・読みやすさ・論理展開を最重視してください。

    # 出力フォーマット

    - Markdown（##, ###, -, 数式：LaTeX（\( ... \), \[ ... \]））による階層構造。必要に応じて <correction> タグを最上部に利用可。
    - 解答・解説は段階的論理展開の後に、必ず結論（答え）を書く。
    - 適宜日本語説明および数式併用。出力の長さは問題内容・難度に応じ柔軟に調整可。

    ***
    # 出力例

    <correction>問題文に"w=\frac{z}{z}"の記述ミスがあり、"w=1/z"と訂正しました。</correction>

    ## 背景・方針
    本問のような\(w=\frac{1}{z}\)という変換は，「反転(鏡像変換)」と呼ばれる有名な変換です．興味深い特徴として~
    (1)，(2)ともに前半は典型的な軌跡の問題です．複素数を扱う問題では，「複素数を文字で置いたまま扱う」解法，「偏角と絶対値に着目する」解法，「実部と虚部に着目する」解法があるが，本問はいずれの方法でも解答可能です．~

    ## 解答

    ### (1) [解法1]
    \( w = f(z) \)より...

    ### (1) [解法2]
    ~の処理は以下のようにしてもよい:
    ...
    (以下、[解法1]と同様)

    ### (2)
    同様に...

    ## 解説
    (1) $C$の中心と半径から図を描けば，$l$と$C$がちょうど$2$つの共有点をもつための条件を求めるのは容易です。...

    (2) 複数の円の位置関係(内接・外接)を考えることで...
    ```

* **サマリの作成**
このプロンプトでは，最後に出力の具体例を与えることで出力を安定させています．
    ```markdown
    [タスク]
    あなたは「入試数学の問題を分解し，問題の本質と解法の本質を言語化する専門家」です。
    入力された「入試問題の画像」と「その解答・解説文」を読み取り，
    後からベクトル埋め込みモデルで検索しやすくするための，構造化された概要説明文を日本語で作成してください。

    [入力]
    ・問題文の画像（見た目ではなく数学的内容だけを読み取ること）
    ・その問題の解答・解説文（途中計算も含む）

    [出力の目的]
    後で Qwen3-Embedding などの埋め込みモデルにかけて，
    「どんな本質を持つ問題か」「どんな数学的手法を使うか」「どのように解いているか」
    といった情報で類似検索できるようにする。

    [出力に含めるべき内容]
    1. 問題の分野・テーマ  
    2. 本質（多くの問題に共通する抽象的アイデア）  
    3. 個別（この問題ならではの特徴・工夫）  
    4. 主要な解法ステップの流れ（大雑把な段階）  
    5. 使用する代表的な数学的手法・キーワード  
    6. 一般化・他の問題への応用可能性  
    7. 注意すべき落とし穴や誤りやすいポイント（あれば）

    [スタイル・制約]
    - 正確な日本語・正確な数学用語を用いる。
    - 数式や LaTeX コマンドは極力使わず，「○○の和」「指数方程式」「二次方程式に変形する」など自然文で説明する。
    - ただし，本質を特定するのに不可欠なときのみ，短い式をテキストで示してよい（例：「f(k+1)-f(k) 型の和」）。
    - 問題文や解説の長い式・証明を写経しない。計算手順の細部ではなく，アイデア・構造・着眼点を優先する。
    - 難易度評価や感想は書かない。内容理解と検索に直接関係する情報だけを書く。
    - 文字量の目安は 400〜800 文字程度とし，冗長な言い換えは避ける。
    - 内部では必要なだけステップバイステップで考えてよいが，出力には思考過程を書かず，以下のフォーマットだけを出力する。

    [出力フォーマット]
    以下のテンプレートに厳密に従って，日本語で出力してください。
    各ラベル名は必ずそのまま使い，「該当なし」の場合はその語を書いてください。

    分野・テーマ:
    高校数学の分野：
    問題の主題：

    本質:
    （この問題を抽象化したときに残る，広く通用するアイデアを簡潔に説明する）

    個別:
    ・（この問題特有の設定や工夫1）
    ・（この問題特有の設定や工夫2）
    （不要なら「該当なし」と書く）

    主要な解法ステップ:
    1. （解法の第1段階：何をどの視点で見るか／どの式に着目するか）
    2. （解法の第2段階：どのような変形・置換・分解・比較をするか）
    3. （解法の第3段階：どのような標準的な形に帰着させて結論を出すか）
    （3段階で足りなければ 4. 以降を追加してもよい）

    使用する代表的な手法・キーワード:
    ・（キーワード1。例：和の中抜き（telescoping sum），相反方程式，積分による不等式評価 など）
    ・（キーワード2）
    ・（必要に応じて英語名を括弧内に付ける）

    一般化・応用:
    （解答で用いた発想を一般化した形や，別の問題タイプへの応用の仕方を述べる。
      例：「一般の ∑{f(k+1)-f(k)} 型の和に共通するテレスコーピング構造を捉える問題に応用できる」）

    注意点・落とし穴:
    ・（受験生が誤りやすいポイントや見落としやすい条件）
    ・（不要なら「該当なし」と書く）

    [出力例（あくまで例示。実際は入力問題に合わせて書くこと）]
    分野・テーマ:
    高校数学の分野：数列
    問題の主題：和の中抜き（テレスコーピングサム）を用いた有限和の計算

    本質:
    与えられた和を，隣り合う項どうしが互いに打ち消し合う差の形に書き換え，
    先頭と末尾だけが残る構造を利用して値を求める問題である。

    個別:
    ・分母を部分分数分解して，1/k − 1/(k+1) のような差の形を作る点が特徴。
    ・対数関数の性質 log a − log b = log(a/b) を組み合わせて積の形に変換するバリエーションも含まれる。

    主要な解法ステップ:
    1. 与えられた一般項を観察し，f(k+1)−f(k) や log(1+2/k) など差の形に変形できることを見抜く。
    2. 変形後の和を書き下ろし，多くの項が相殺されて，端の少数の項だけが残ることを確認する。
    3. 残った端の項だけを計算して，和の値（または極限値）を求める。

    使用する代表的な手法・キーワード:
    ・和の中抜き（telescoping sum）
    ・部分分数分解
    ・対数の加法公式と積への変換

    一般化・応用:
    一般の ∑{f(k+m) − f(k)} 型の和や，無限和の収束判定にも同じ発想が使える。
    また，指数関数や対数関数を含む数列の和を，積や比の形に書き換える問題全般に応用できる。

    注意点・落とし穴:
    ・一般項の形だけを追って計算を続けると煩雑になる。差の構造に早く気付くことが重要。

    ```
