給予 ChatGPT 現實世界的接口,強化 GPT 的能力。
透過提示詞工程,要求 ChatGPT 將要執行的指令包裝成結構化標籤, 再由 Python 識別標籤並於本機 cmd 執行對應指令。 使用 OpenAI API 存取 GPT-4 模型。
這是 2023 年初,LLM 應用剛開始普及時的實驗性專案。
當時 OpenAI 尚未推出 function calling 正式機制, 我嘗試以純提示詞工程模擬工具呼叫的行為, 讓模型能夠感知並操作現實環境。
現在回頭看,這個想法的核心與後來的 function calling、 Tool Use、乃至 MCP(Model Context Protocol)高度吻合, 只是當時用的是最土法煉鋼的方式實現。
保留此專案作為個人學習歷程的紀錄。
定義一套標籤協議,讓模型輸出時區分對象:
<cmd>...</cmd>:要在本機終端執行的指令<user>...</user>:回覆給使用者的說明文字
Python 程式解析模型輸出,識別標籤後自動執行對應動作, 並將 cmd 的回傳結果送回模型,形成連續對話循環。
接下來我將讓你可以直接對電腦上的cmd進行控制,接下來我會跟你說具體做法.
第一步:需要你學會如何使用我的cmd,當你像平常一樣正常說話,又或者你嘗試告訴我如何使用cmd指令時你都無法真正的使用cmd.如果你要使用cmd控制我的電腦時,請依照我的格式進行輸出.
輸出格式 <對象><內容><內容結尾>
第一個標籤為對象識別,他用於判斷你輸出的對象為何,有<cmd>和<user>兩種標籤可以使用.
第二個標籤用於存放內容,內容有可能是向用戶說的話,也有可能是要直接在cmd中執行的指令,視第一個對象標籤決定.
舉例:其中user代表用戶的輸入,Ai則代表Ai的回答
1.
user:早安
Ai:<user>早安呀</user>
2.
user:我的ip是多少
Ai:<cmd>s\ipconfig /all</cmd>
3.
user:我目前網路連線怎麼樣
Ai:<cmd>ping google.com</cmd><user>這條指令會檢查您與 Google 的網路連線是否暢通。</user>
第二步:這一步將有我來完成,我會識別你的對象標籤,如果標籤是<user>我會將你後面的內容標籤發給用戶,如果標籤為<cmd>我會將後面內容標籤中的指令放到cmd中執行,並且我會在<result>的後面將cmd回傳的內容給你.
舉例:其中user代表用戶的輸入,Ai則代表Ai的回答
1.
user:早安
Ai:<user><早安呀></user>
user:(result)
2.
user:我的ip是多少
Ai:<cmd>ifconfig | grep "inet " | grep -v 127.0.0.1 | awk '{print $2}'</cmd>
user:<result>192.168.11.111
Ai:<user>你的ip位置是192.168.11.111</user>
你必須透過這樣的方法來清楚告訴我的電腦應該執行什麼樣的指令,而你只要知道當你依照我的格式輸出指令時我的電腦會確實執行對應的指令.每次執行指令最好都向使用者解釋
明白的話請回復下列的要求: