NOTE
作者資訊 (Author Info)
在前面的 Agent 代理人章節中,我們看到 AI 能夠幫我們執行命令列指令、建立檔案、甚至自動搜尋網頁。但如果你仔細思考,可能會產生一個巨大的疑問:
NOTE
「大型語言模型(LLM)本質上只是一個『文字產生器』,它沒有手也沒有腳,它是如何精準控制作業系統去執行 mkdir 或 write_to_file 的?難道 AI 真的有直接操控電腦硬體的魔法嗎?」
答案是:沒有魔法!這一切背後,靠的是現代 AI 架構中最重要的核心技術——Function Calling(函數呼叫 / 工具使用閉環)!
當你啟動 Antigravity CLI 或指示 Agent 工作時,第一步並不是直接發問,而是宿主系統(Host System)先向 AI 送出一份「工具菜單」。
這份菜單在電腦科學中被稱為 JSON Schema(工具規格說明書)。
宿主系統會告訴 LLM:「大副,你今天可以使用以下這個名為 create_file 的工具:」
`json
{
"name": "create_file",
"description": "在本機電腦建立一個新檔案",
"parameters": {
"type": "object",
"properties": {
"filename": {
"type": "string",
"description": "檔案名稱,例如 test.py"
},
"content": {
"type": "string",
"description": "要寫入檔案的實體文字內容"
}
},
"required": ["filename", "content"]
}
}
`
LLM 在閱讀了這份說明書後,大腦中就記住了:*「喔!原來我有這個叫 create_file 的能力,而且只要我給它 filename 與 content,外部系統就會幫我跑腿!」*
Function Calling 的完整運作流程,是一個嚴謹的四步驟循環(Loop):
`mermaid
sequenceDiagram
participant User as 使用者
participant LLM as AI 大腦 (LLM)
participant Host as 宿主系統 (CLI / Python)
participant OS as 作業系統 / 工具
User->>LLM: 1. 請幫我建立一個叫 hello.txt 的檔案
Note over LLM: 2. AI 決定使用 create_file 工具
輸出 JSON 格式指令
LLM->>Host: 3. {"tool": "create_file", "args": {"filename": "hello.txt", "content": "你好"}}
Note over Host: 4. 宿主系統解析 JSON
實體呼叫 Python 建立檔案
Host->>OS: 執行檔案建立
OS-->>Host: 檔案建立成功 (Observation)
Host->>LLM: 5. 將執行結果回傳給 AI: "成功建立 hello.txt"
LLM->>User: 6. 報告總裁/船長!檔案已為您成功建立!
`
open() 或 write() 函數。File created successfully)會作為新訊息發送回 LLM,LLM 確認成功後,才會用親切的中文回報給使用者。因為工具的參數有嚴格的型別檢查(如必須是數字或字串),如果 AI 輸出的格式不符,宿主系統會立刻打回重試,絕不盲目執行危險語法。
在第二步與第三步之間,宿主系統可以暫停並跳出提示詢問使用者:*「AI 試圖刪除 main.py,請問您同意授權執行嗎?」* 這為視障與所有使用者提供了最強大的安全防禦網!
透過 Function Calling,我們可以讓 AI 呼叫 NVDA 的播報 API(如 ui.message)或作業系統的音效引擎,讓 AI 的思考過程隨時轉換成清晰的語音報讀。
現在你看清了黑盒子內部的物理構造:
掌握了這個閉環原理,未來你在指示 AI 設計 NVDA 外掛或網頁應用時,就能更精準地為它定義工具菜單!