目前大家對 LLM 的共識是
現在的 LLM 可以處理《立即反應的淺層問題》(System 1)
但是不能處理《需要深度思考的問題》(System 2)
以下為一些需要深度思考的 System2 問題
- 大數字的加減乘除
- 下棋
- 深度的推理能力
- 需要《執行複雜的函數程式》才能得知結果的問題
這些 System2 的問題,我們可以使用外掛程式來處理 ...
這就是本專案想處理的事情!
方法是讓 LLM 在回答的時候,自行判定哪些部份是 LLM 不知道怎麼回答的,在輸出的時候,用 <python>code</python> 把那些需要 plugin 介入的部分標示出來。
而這些 plugin code 當中,對於 LLM 已經知道該呼叫那些函數去做的,由 Python 程式去處理,而不知道該由哪些函數去處理的,則是交給 system2(...) 函數去處理。
這樣我們就能適時地呼叫 plugin 去回答那些問題了 ...
ccckmit@asus MINGW64 /d/ccc/code/py/ai2 (main)
$ python ai_test.py
question: 12/02/2023, 08:28:20 Saturday: 請問 32179 加上 13426 是多少? 兩者相乘又是多少?
=========chat1============
32179 加上 13426 是 <python>eval('32179+13426')</python> ,32179 乘以 13426 是 <python>eval('32179*13426')</python> 。
=========chat2============
32179 加上 13426 是 45605 ,32179 乘以 13426 是 432035254 。
question: 12/02/2023, 08:28:22 Saturday: 請問 2025 年的美國總統是誰?
=========chat1============
2025 年的美國總統是 <python>system2('2025 年的美國總統姓名')</python>
=========chat2============
2025 年的美國總統是 <system2>2025 年的美國總統姓名</system2>
question: 12/02/2023, 08:28:23 Saturday: 請問桃園中正機場到台北總統府距離多遠?
=========chat1============
根據下列程序計算:
桃園中正機場的經緯度是 <python>p1=geo_location('桃園中正機場')</python>
台北總統府的經緯度是 <python>p2=geo_location('台北總統府')</python>
根據 geo_distance() 函數傳回兩者的距離是 <python>geo_distance(p1,p2)</python>。
=========chat2============
根據下列程序計算:
桃園中正機場的經緯度是 <run>p1=geo_location('桃園中正機場')</run>
台北總統府的經緯度是 <run>p2=geo_location('台北總統府')</run>
根據 geo_distance() 函數傳回兩者的距離是 <run>geo_distance(p1,p2)</run>。
question: 12/02/2023, 08:28:27 Saturday: 請問 1995 年的美國總統是誰?
=========chat1============
1995 年的美國總統是 <python>system2('1995 年的美國總統姓名')</python>
=========chat2============
1995 年的美國總統是 <system2>1995 年的美國總統姓名</system2>
question: 12/02/2023, 08:28:29 Saturday: 請寫一個 Python 程式劃出折線圖
=========chat1============
當然,我可以幫你寫一個 Python 程式來劃出折線圖。你需要使用 matplotlib 套件來繪製圖表。以
下是一個簡單的範例程式碼:
```python
import matplotlib.pyplot as plt
# 資料
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
# 繪製折線圖
plt.plot(x, y)
# 設定圖表標題和軸標籤
plt.title("折線圖")
plt.xlabel("X 軸")
plt.ylabel("Y 軸")
# 顯示圖表
plt.show()
```
你可以根據自己的需求修改 `x` 和 `y` 的資料,並自訂圖表的標題和軸標籤。執行這段程式碼後,
會彈出一個視窗顯示折線圖。
=========chat2============
當然,我可以幫你寫一個 Python 程式來劃出折線圖。你需要使用 matplotlib 套件來繪製圖表。以
下是一個簡單的範例程式碼:
```python
import matplotlib.pyplot as plt
# 資料
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
# 繪製折線圖
plt.plot(x, y)
# 設定圖表標題和軸標籤
plt.title("折線圖")
plt.xlabel("X 軸")
plt.ylabel("Y 軸")
# 顯示圖表
plt.show()
```
你可以根據自己的需求修改 `x` 和 `y` 的資料,並自訂圖表的標題和軸標籤。執行這段程式碼後,
會彈出一個視窗顯示折線圖。
question: 12/02/2023, 08:28:35 Saturday: 我後天早上九點要開系務會議
=========chat1============
好的,已呼叫 <python>memory("12/04/2023 09:00", "後天早上九點要開系務會議")</python> 函數
紀錄到行事曆中。
=========chat2============
好的,已呼叫 <memory>12/04/2023 09:00:後天早上九點要開系務會議</memory> 函數紀錄到行事曆
中。
question: 12/02/2023, 08:28:37 Saturday: 我下周三早上 10 點要搭華航下午五點的飛機去泰國
=========chat1============
好的,已呼叫 <python>memory("12/06/2023 10:00", "搭華航下午五點的飛機去泰國")</python> 函
數紀錄到行事曆中。
=========chat2============
好的,已呼叫 <memory>12/06/2023 10:00:搭華航下午五點的飛機去泰國</memory> 函數紀錄到行事
曆中。
另外關於 LLM 沒有網路查詢能力的問題,目前有些系統已經用 RAG 去處理了
而對於 LLM 沒有長期記憶的問題,也已經有些系統會用向量資料庫去提取記憶中的語句來處理了。