2025年初,一個AWS工程師在內部測試時隨手寫了段注釋,結果系統直接把自然語言編譯成了Python函數。三個月后,這個功能被塞進Strands Labs——AWS專門用來放"瘋狂實驗"的GitHub組織。現在它叫AI Functions,能讓開發者用三行文檔字符串替代過去幾十行的格式檢測、提示工程、重試循環。
這不是低代碼平臺那種拖拖拽拽的玩具,而是給已經用慣Strands Agents SDK的架構師準備的手術刀。
從"寫代碼"到"寫意圖":一個發票解析的對比實驗
想象這個場景:用戶上傳了一份發票,格式未知——可能是掃描件、Excel、PDF,甚至是某家供應商的定制XML。傳統做法里,你得先寫格式檢測邏輯,再搭轉換管道,然后設計提示模板、解析響應、包裝重試循環。等業務邏輯真正開始時,代碼已經膨脹了幾十行。
AI Functions的做法是:直接描述你想要什么。
@ai_function裝飾器把文檔字符串變成契約,LLM在運行時生成實現,框架自動處理執行、糾錯和驗證。
代碼長這樣:
from ai_functions import ai_function
from pydantic import BaseModel
class MeetingSummary(BaseModel):
attendees: list[str]
summary: str
action_items: list[str]
@ai_function
def summarize_meeting(transcripts: str) -> MeetingSummary:
"""
Write a summary of the following meeting in less than 50 words.
{transcripts}
"""
調用方式和普通Python函數完全一致。result = summarize_meeting(transcript_text)返回的是類型安全的MeetingSummary對象,不是需要二次解析的字符串。
Strands Labs的三張牌:機器人、仿真、AI Functions
2026年初,AWS把Strands Labs從Strands Agents SDK的主線剝離,做成獨立的實驗性GitHub組織。定位很明確:前沿研究的沙盒,生產環境的探路者。
首發三個項目。Robots做物理AI代理,Robots Sim搭仿真環境,AI Functions瞄準的是最務實的群體——正在搭建AI流水線的開發者和架構師。
AWS給AI Functions的定調很克制:"實驗性,會有破壞性變更,尚未生產就緒。"但補充了一句關鍵的話:"概念本身今天就有生產相關性。"
換句話說,現在理解它,比等它GA(正式發布)后再補課,能搶出三到六個月的認知窗口。
技術實現:裝飾器背后的運行時
AI Functions建立在Strands Agent運行時之上。這意味著所有strands.Agent的有效配置——model、tools、system_prompt——都能透傳給裝飾器。
調用發生時,框架自動完成四件事:從文檔字符串提取意圖,讓LLM生成實現,執行并監控,必要時糾錯和重試。對外暴露的接口和普通Python函數無異,但內部完全由模型驅動。
Pydantic模型在這里扮演關鍵角色。返回類型不是建議,是強制契約。模型生成的輸出必須經過模式驗證,失敗會觸發框架級的重試或報錯,而不是把臟數據漏給下游。
這種"意圖即代碼"的模式,把提示工程從手藝活變成工程規范。
過去寫提示詞像在調黑箱——換模型、換溫度參數、換few-shot示例,效果波動全靠手感。AI Functions把提示模板、響應解析、錯誤處理全部收進框架,開發者只負責描述"要什么",不負責規定"怎么做"。
生產相關性:為什么現在就要關注
實驗性標簽容易讓人觀望,但AWS的措辭留了后門。"尚未生產就緒"指的是API穩定性,不是概念可行性。實際場景中,已經有團隊在用類似思路處理非結構化數據清洗、多格式文檔轉換、動態API適配——這些任務的共同特點是:規則難寫全,邊界案例多,傳統代碼維護成本指數級上升。
AI Functions的價值在于把這種"規則寫不完"的場景,從硬編碼遷移到模型驅動。不是取代所有傳統代碼,而是把"描述即解決"的邊界往外推了一層。
一個細節值得玩味:AWS選擇在Strands Labs發布,而不是塞進Bedrock或SageMaker的主線文檔。
這種"隔離實驗"的策略,既保護了生產用戶的穩定性預期,又給早期采用者留了快速迭代的通道。GitHub組織的獨立存在,意味著issue響應、PR合并、破壞性變更的溝通鏈條更短——適合愿意和代碼一起進化的團隊。
競品格局:這不是第一個,但可能是最"AWS"的
自然語言轉代碼的嘗試不少。OpenAI的Function Calling、LangChain的@tool裝飾器、Vercel的AI SDK,都在模糊"提示"和"代碼"的邊界。但AI Functions的差異點在于紀律性——它不強求LLM做所有事,而是明確劃分"意圖層"(開發者寫文檔字符串)和"執行層"(框架+模型協作)。
這種分層讓調試變得更像傳統軟件工程。意圖不對?改文檔字符串。執行失敗?查模型日志或調整運行時配置。輸出格式漂移?加固Pydantic模型。問題域清晰,排查路徑明確。
相比之下,端到端的自然語言編程往往把調試變成考古——你得從模型的"想法"里反推它為什么理解錯了。
AWS的克制還體現在工具鏈整合。AI Functions不試圖重新發明Agent架構,而是寄生在已有的Strands生態里。已經用strands.Agent的團隊,學習成本幾乎為零;沒用過的團隊,也能從單一功能切入,不必承諾整個技術棧。
風險與限制:實驗性意味著什么
AWS的文檔列了三條紅線。第一,API會變——今天能跑的代碼,下個月可能需要改寫。第二,延遲不可控——模型生成實現需要時間,不適合熱路徑。第三,確定性問題——相同輸入可能產生不同實現,雖然框架有驗證層,但語義漂移的風險客觀存在。
這些限制決定了AI Functions的適用邊界。離線批處理、探索性數據分析、原型驗證是甜區;高頻交易、安全關鍵系統、強合規審計場景則需要謹慎。
一個實用的判斷標準:如果任務的"正確性"可以由下游驗證(比如Pydantic模型、單元測試、人工抽檢),AI Functions是候選方案;如果錯誤成本極高且不可逆,傳統代碼仍是首選。
開發者反饋:從"玩具"到"工具"的認知轉折
Strands Labs的GitHub討論區里,早期用戶的反饋呈現兩極。一部分人覺得"終于不用寫提示模板了",另一部分人擔心"黑箱又厚了一層"。
一個被多次點贊的評論來自某金融科技公司的數據工程師:「我們處理供應商發票的場景和文檔示例幾乎一樣。之前用傳統代碼寫了800行的格式適配器,維護 nightmare。用AI Functions原型花了20分鐘,準確率反而更高——因為模型見過的人類發票格式,比我的正則表達式多幾個數量級。」
也有反對聲音。一位AWS社區建設者指出:「當模型生成的實現出錯時,調試體驗比傳統代碼差一個量級。你得同時理解框架行為、模型偏好、以及你的文檔字符串被解析后的實際語義。這種三層認知負擔,團隊準備好了嗎?」
這些爭論本身說明AI Functions觸及了一個真實張力:軟件工程的可維護性,和AI系統的靈活性,能否在同一個框架里共存。
下一步:從實驗到生產的橋梁
AWS沒有公布AI Functions的GA時間表,但Strands Labs的運作模式提供了線索。實驗性項目通常經歷三個階段:GitHub組織內的快速迭代、集成到主SDK的beta通道、最終GA或歸檔。Robots和Robots Sim的物理AI屬性決定了它們會長期留在沙盒,但AI Functions的通用性更強,遷移路徑也更清晰。
對于正在評估的團隊,建議采取"雙軌策略"。在原型和新功能開發中試用AI Functions,積累意圖描述的最佳實踐;同時保持核心流水線的傳統代碼,等待API穩定后再逐步遷移。
一個值得監控的信號:AWS是否會把AI Functions的模式反向輸出到Bedrock或SageMaker的官方SDK。這種"沙盒驗證→主線產品"的路徑,在AWS的歷史上反復出現。
如果三個月后在Bedrock的更新日志里看到類似的裝飾器語法,說明實驗通過了內部的生產就緒評估。屆時,現在寫的文檔字符串經驗,會直接轉化為競爭優勢。
當自然語言和代碼的邊界進一步模糊,開發者需要重新定義"編程"的邊界——是精確控制每一行執行,還是學會描述意圖并信任框架的糾錯能力?你的團隊會更傾向哪種分工模式?
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.