一種面向AI且忽視人類友好性的理想語言
Pact是一種專為AI智能體設計的編程語言,它強調機器可讀的規範和約束,而非人類友好性。該語言基於S表達式,集成了來源追溯、副作用追蹤、完全性保障、延遲預算等特性,並能夠編譯為Rust代碼。其工具鏈支持從YAML規範生成代碼、搭建Web項目,並提供了多種代碼生成後端。儘管Pact在服務契約領域表現出色,但它在算法規範方面仍存在侷限。
文章情報
要點
- Pact是一種面向AI智能體的S表達式語言,注重元數據與形式化規範。
- 語言特性包括來源追溯、副作用追蹤、完全性保障和延遲預算。
- 它能夠編譯為Rust代碼,並支持Web項目腳手架搭建和YAML規範轉換。
- 適用於API服務契約,但不適合算法或數據結構定義。
為甚麼重要
這條新聞值得關注,因為Pact是一種面向AI智能體的S表達式語言,注重元數據與形式化規範。
技術影響
可能影響模型選型、推理成本、產品能力和評測基準。
Pact是一種獨特的編程語言,其設計目標並非服務人類開發者,而是為人工智能智能體提供一種理想化的表達工具。它摒棄了傳統語言對可讀性和易用性的追求,轉而將機器可解析的元數據、嚴格的約束和形式化規範置於首位。
Pact語言基於S表達式,每個函數都攜帶豐富的機器可讀元數據,包括來源證明(provenance)、副作用聲明、完全性標誌、延遲預算以及調用圖。例如,一個獲取用户信息的函數會明確其依賴的規範引用、測試用例、執行的操作(如數據庫讀取和HTTP響應)、是否覆蓋所有可能情況、預期的響應時間,以及被哪些其他組件調用。這種設計使得AI智能體能夠精確理解代碼的含義、依賴關係和行為約束。
語言的核心特性包括:來源證明(每個函數和類型都記錄存在的原因)、副作用追蹤(函數聲明其I/O操作)、完全性(標註為:total true的函數必須處理所有分支)、延遲預算(性能約束作為代碼的一部分)、依賴圖(:called-by實現即時影響分析)、聯合返回類型(枚舉所有可能結果並映射HTTP狀態)以及類型不變量(如最小長度、最大長度和格式檢查)。
Pact的編譯器採用六階段流水線:詞法分析、解析(生成具體語法樹)、降級(轉換為類型化抽象語法樹)、語義分析(名稱解析、副作用檢查、模式窮舉性檢查)和代碼生成。編譯器自帶兩種後端:v1後端(默認)生成獨立的Rust代碼,主要用於檢查和文檔;v2後端(--runtime)生成依賴pact-runtime庫的代碼,可直接編譯運行,並自動實現序列化、驗證、存儲交互等功能。
工具鏈提供了豐富的命令:generate將人類可讀的YAML規範轉換為Pact格式(.pct)文件;compile將.pct文件編譯為Rust源碼;scaffold基於.pct文件生成完整的Axum Web項目(包括路由、處理器、HTML模板和Cargo.toml)。路由推斷完全基於抽象語法樹,無需額外配置。
儘管Pact在服務契約規範領域表現出色——例如CRUD端點、API契約、輸入驗證和錯誤枚舉——它並不適用於算法規範,如數據結構、排序算法或狀態機。這主要是因為語言目前缺乏泛型、遞歸類型、trait約束和算法模板等特性。
Pact的設計理念反映了對AI編程的深刻思考:在AI agent協作的環境中,代碼的可解釋性和形式化保證比人類可讀性更為關鍵。通過將規範、約束和來源信息直接嵌入代碼,Pact為智能體之間的通信和驗證提供了堅實的基石。