生成AIの数学能力を補うには・・・？（Advanced Data Analysis／Open Interpreter／Wolfram・・・）


https://www.hayakawa-online.co.jp/shopdetail/000000015521/

2023年7月に初版発行されたStephen Wolfram「ChatGPTの頭の中（WHAT IS ChatGPT DOING...AND WHY DOES IT WORK?）」で Wolfram|Alphaが紹介されていたのをきっかけに、Wolfram Alphaを含め生成AIの数学能力を補うにはどのようなものがあるか改めて整理してみました。

# 生成AIの数学能力の実力

GPTなど生成AIが人間よりも苦手とされてきた数学能力ですが、（基本的なレベルであれば）Gemini UltraやGPT-4（5-shot）などでは90%を超える能力を既に持っています。

![Wolfram4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1413258/b791edf7-8608-7218-1b1e-c23ae184c199.png)

[引用元：Google Blog(Gemini)](https://japan.googleblog.com/2023/12/gemini.html)

GSM8KおよびMATHデータセットは以下のようなものです。50%台のMATHはかなり難易度の数学能力、90%台のGSM8Kは基本レベルのタスクです。
- GSM8K(Grade School Math 8K) : 以下のような小学校レベルの文章題（2から8ステップで基本的な算術演算（+ − × ÷）を利用して解ける問題。賢い中学生なら100点をとれるレベル）
![Wolfram4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1413258/b576e1c6-6efc-4872-0ee7-eb69cbbd8804.png)
（引用元：[Hugging Face(Datasets:gsm8k)](https://huggingface.co/datasets/gsm8k?row=2#data-instances ) から抜粋）

</br>

- MATH : 代数、幾何、微積分などを含むかなりの難易度
![Wolfram4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1413258/138e6bff-c3ed-0150-7679-a13bf719d170.png)
（引用元：[github(MATH)](https://github.com/hendrycks/math/?tab=readme-ov-file) から抜粋）


# ChatGPTは言語統計以外の方法を手にいれている

ChatGPTは、Advanced Data Analysisという解決方法を手にいれています（ChatGPT Plusで利用可能）。自然言語的統計的なもっともらしさをそのまま答えるのではなく、算出するためのコードを生成し、そこから答えを導いてくれます。

![Wolfram2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1413258/d257f1fc-52d1-3a21-e425-298eea2ef61e.png)

## Open Interpreter
ChatGPT Advanced Data Analysisのようなコードを生成をコマンドラインから実行できるオープンソース。今回のような簡単な計算以外にもファイルを入力とした分析など様々なタスクを行えるようです。今回はGPT4を利用しましたが、ローカルモデルも指定できます。

https://docs.openinterpreter.com/usage/python/arguments

https://colab.research.google.com/drive/1-P7PyTQKUIapOh70JRtt6Sk58suYszAR

![Wolfram3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1413258/4711d881-f9f1-bd1d-9c49-30ea0ebeaeae.png)


# Wolfram Alpha

こちらが、今回、生成AIの数学能力について考えるきっかけになったWolfram|Alphaです。

https://www.wolframalpha.com/input/web-apps/personal-finance-assistant

![Wolfram.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1413258/415bd242-b0cc-d287-b391-6ed415fc16ee.png)


例えば、各都市の座標とその間の距離を計算するアルゴリズムなど、独自の計算能力を持っている知識ベースの計算エンジンです。数学、科学、地理、歴史、金融など幅広い分野にわたる情報を持っていて、特に数学的な計算やデータ分析、統計情報の提供に強みがあるとされています。

自然言語をインターフェースとしているため、GPTと連携し、Wolframの計算知識を利用することが可能になっているようです（プラグインとしても利用できるようです）。

https://writings.stephenwolfram.com/2023/03/chatgpt-gets-its-wolfram-superpowers/


# LangChainからWolframを使ってみる

### １．Wolfram|Alpha APIを利用する（サインアップとログイン）
以下のサイトの手順にそって実行しました。

https://products.wolframalpha.com/api/
1. [Wolfram|Alpha Developer Portal](https://developer.wolframalpha.com/)にアクセス
1. [Don't have an account? Create one >>](https://account.wolfram.com/)をクリック
1. If you don't have a Wolfram ID, [create one here](https://account.wolfram.com/login/create)をクリック
1. メールアドレス(Wolfram IDになる)、名前、パスワードを入力して利用規約に同意しWolfram IDを作成
1. 作成したWolfram IDでサインイン
1. [Get an App ID]をクリック
1. 名前、説明、API（今回はLLM APIを選択）を入力してSubmitをクリック
1. AppIDを取得（画面にAPP IDが表示されます）

### ２．Wolfram|Alpha APIをつかってみる
以下のサイトを参考に実行しました（記載されている手順通りで実行することができました）

https://note.com/npaka/n/ne2b421fa678a

```python:wolframalpha.ipynb (WSL VSCode環境で実行)
# １．パッケージのインストール
!pip install openai
!pip install langchain
!pip install wolframalpha

# ２．変数を準備
%env OPENAI_API_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXX
%env WOLFRAM_ALPHA_APPID=XXXXXXXXXXXXXXXXXXXXXXXXXX（上で取得したAPP ID）

# ３．WolframAlphaツールを持つエージェントの準備
from langchain.agents import load_tools, initialize_agent
from langchain.llms import OpenAI
from langchain.chains.conversation.memory import ConversationBufferMemory

# エージェント
agent = initialize_agent(
    tools=load_tools(['wolfram-alpha']),  # Wolfram|Alpha
    llm=OpenAI(temperature=0), 
    agent="conversational-react-description", 
    memory=ConversationBufferMemory(memory_key="chat_history"), 
    verbose=True
)

# ４．問い合わせを実行
agent.run("東京都と大阪の距離は？")
```

![Wolfram6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1413258/815a8eb4-5129-e4fa-eaa9-11a5bfc73b67.png)


# 感想
Wolframの無料枠では利用可能な範囲が限られているようでしたが、金融のアドバイス（個人財務アシスタント）なども提供されているようです。ただ、Wolframは、あくまで各領域の計算能力を自然言語をインターフェースとして利用する、といった印象です。ニーズにあった計算知識がWolframにあれば、GPTの強化として利用できるかもしれませんが、数学能力では「Advanced Data Analysis」「Open Interpreter」の活用、その他の領域でもGPTのさらなる進化で、どこまでWolframなどを利用する価値がでてくるのかは両者の今後の進展次第かもしれません。