
在你用 n8n 打造 MCP Server 時,掛在 MCP 下的工作流就是「tool」,想像 MCP 是工具箱,每個外掛都是一把工具,但 AI 不一定看得懂它是做什麼用的(我到五金行也會看到很多工具不知道是幹嘛用的),所以要寫「本工具的自我描述」(description)讓 AI 讀,例如「我是螺絲起子,用我可以把螺絲上緊或鬆開」,你會發現,服務出錯常常是因為這段描述寫壞了。
例如:
- 「任務查詢」功能的描述是:「呼叫會查詢當前有什麼任務」;
- 「任務完成」功能的描述是:「呼叫會把任務標示為完成,需要先由使用者確認後,查詢確有此任務才能執行」。
看起來很合理吧?但結果卻是:
- 你跟 AI 說:「任務 A 完成了」,AI 應該把任務標示完成後,回報「我已經幫你把任務 A 標示完成了!」
- 但實際上是,AI 聽到這句話想「哦!使用者已經確認了」,那我要幹嘛呢?這裡有個「任務完成」工具,我要呼叫它!
- 但「任務完成」工具卻告訴 AI「還不行哦!你要先去查詢有沒有這個任務!」
- AI 就用「任務查詢」工具查詢
- 「任務查詢」工具說「任務 A 存在!」
- AI 想「我知道了,那接下來要幹嘛呢?」就停了
- 你等了很久,為什麼 AI 一直不回答呢?
MCP 是「無狀態」(stateless)的,就是它沒配備記憶體,你叫它查它就查,但不會幫你判斷、記錄流程、想下一步,結果每次你說任務完成時,它就想去按下完成,但就被推去查詢,這個完成按鈕始終按不到!鬼打牆啊!
你看,這些描述雖是白話文,但對 AI 來說,就是程式邏輯,它在用 自然語言寫程式 。
其實只要改一點點「呼叫會把任務標示完成,用於當使用者確認後,並確定有此任務時,否則會報錯」,我沒叫你去用別的工具,你自己想流程哦!
本文目錄
寫程式越進步越簡化
程式的目的是要讓電腦工作,無奈電腦不懂人話,只懂數學,於是人類想盡辦法:
- 最早用打孔卡片輸入,用 0101 來操作記憶體
- 後來發明了組合語言,很難,接近機器語言
- 後來發明了高階語言,就是像 C、Java、Python…,像英語,但有嚴格的結構和語法
- 最新的是 AI,用自然語言就可以讓電腦工作了
這些手段是科學家製造了各種轉換器,把人類的思考轉換成數學,就像把 DOCX 檔轉成 PDF 檔一樣。既然是要叫電腦工作的語言,當然不是一般自然語言,應該是有高度邏輯的自然語言吧!至少文法不能錯太多,會有歧義。
「沒有啊,我隨便扯它都回答得不錯!」
是,因為 AI 很聰明,聽了我們顛三倒四的語言後,會自己腦補邏輯。
不過,你確定它補的正確嗎?我覺得它常曲解,你最好能用邏輯語言把意思講清楚,免得它扭曲了,就浪費錢浪費時間。
未來文科最吃香?
有人說,因為現在我們都用自然語言跟 AI 說話,語文更強的文科生,未來比理工科更吃香。
我不這麼覺得,AI 要邏輯語言,目的是驅動電腦工作,文學再美、再詩意,對 AI 都沒意義。
跟 AI 說話要「準確用字 + 清晰邏輯」,如果你年輕時有在管理學院、國貿系學過「英文書信寫作」,就知道英文是邏輯清晰的,拿來跟 AI 說話還不錯,但中文的邏輯很混亂。
「準確用字」確實是文學素養,考驗詞彙量,很多軟體用的單字都不常見,有些挺深的
誠實的重要性
文字清晰以外,最重要的是誠實。很簡單,說謊邏輯一定亂。
比如網上突然有美女來認識你,要你買遊戲網卡,但要見面有各種無法克服的困難,她家人不准啊、公司不准、突然老家有事、攝影機壞了……,好多人會幫詐騙集團找藉口,賠了不少錢。
AI 沒有荷爾蒙,這些奇怪理由,只會讓它覺得不合理,就腦補,然後出錯。
我猜,政客的語言是 AI 無法理解的吧,因為他們很少說真話,AI 要重構邏輯,耗費更多 Token,還會做錯。
我們是否誠實?可以把 AI 當照妖鏡!
