Agent Skills 評估與進階維運

將 Agent Skills 部署到實際應用場景(例如上架 ChatGPT Store 或上線 Claude 應用服務)後,開發工作並未就此結束。面對使用者多變的指令以及語言模型不可預測的微小波動,建立一套可靠的測試與維運機制,是確保 AI 服務長期穩定運作的最後一塊拼圖。

評估優先開發 (Evaluation-First Development)

在傳統軟體工程中,我們推崇測試驅動開發 (TDD);而在 AI 開發領域,則強調「評估優先 (Evaluation-First Development)」。因為 AI 回答的結果往往不是單純的 True/False,而是需要評估其語意與邏輯的正確性。

在開始撰寫大量的技能邏輯之前,我們應該先建立一套測試案例。具體的做法是蒐集預期會發生的複雜情境,並設計成「黃金任務 (Golden Tasks)」。

例如,針對一個「查詢訂單」的技能,你可以建立以下測試資料集:

  1. 正常查詢:「幫我查訂單編號 A123 的狀態。」(預期:成功呼叫 API 並回報狀態)
  2. 模糊查詢:「我上禮拜買的鞋子出貨了嗎?」(預期:Agent 主動詢問訂單編號或使用者帳號,而不是亂猜參數)
  3. 錯誤處理:「查訂單 X999」(預期:API 回傳 Not Found,Agent 需溫婉地回覆找不到,而非直接印出系統錯誤碼)

每次修改技能的 Prompt 或 Schema 後,都必須讓 Agent 重新執行這些測試。實務上,業界常使用另一個 LLM(例如 GPT-4o 或 Claude 3.5 Sonnet)作為「裁判 (Judge)」,來自動評分 Agent 的表現是否符合預期。

將複雜任務封裝為後端自動化腳本

如果一項任務包含了十幾個繁瑣的 API 呼叫步驟,直接要求 Agent 透過自然語言一步步依序呼叫,失敗的機率會非常高。只要中間斷線或幻覺一次,整個流程就會崩潰。

為了提高穩定性,最佳實踐是將這些複雜的重複性工作封裝成一個獨立的後端腳本或單一的 API 端點。Agent 就不需要記住每一個微小的操作細節,它只需要知道「呼叫這個整合好的工具」。

# ❌ 錯誤做法:讓 Agent 自己分開呼叫三個工具
# 1. create_server()
# 2. install_software()
# 3. start_service()

# ✅ 最佳實踐:封裝成單一工具,由後端腳本處理複雜邏輯
@app.route('/deploy_server', methods=['POST'])
def deploy_server_api():
    # 後端自動依序執行創建、安裝與啟動
    server_id = create_server()
    install_software(server_id)
    start_service(server_id)
    return {"status": "success", "message": "伺服器已成功部署並啟動"}

在這個範例中,Agent 只需要呼叫 deploy_server 一次,大幅降低了 AI 在關鍵操作中出錯的風險。

建立人類介入機制 (Human-in-the-Loop)

儘管我們透過各種手段提升了技能的穩定性,但在處理高風險操作(例如:刪除資料庫、發送正式對外電子郵件、處理金流轉帳)時,完全放任 AI 自主執行仍存在極大的安全隱患。

設計技能時,必須考量到「人類介入 (Human-in-the-Loop)」的機制。

  • ChatGPT Custom Actions 的原生支援:在 ChatGPT 中設定 Custom Actions 時,你可以透過平台設定將某些危險的 API 端點設為「需要使用者點擊 Confirm 才能執行」。
  • 自定義應用的實作:如果你是自己開發串接 Claude API 的系統,當 Agent 準備執行這類敏感工具時,你的後端系統應該強制暫停執行流程,並將 Agent 準備送出的 JSON 參數呈現給人類操作員。只有在人類明確點擊網頁上的「核准」按鈕後,程式才會真正觸發該動作。

這種機制不僅是系統安全的最後一道防線,也能幫助開發團隊在早期階段收集 Agent 的錯誤決策紀錄,進一步用於優化技能的設計。