Agent驅(qū)動的AI編程,終于找到了PMF!
AI編程,下半年火遍全網(wǎng),最近的Devin,以500美刀/M的價格殺瘋了,早上openai 2000刀訂閱的新聞也傳遍了各個微信群。cursor、windsurf、bold.new 都逐漸的進入了實用的階段,未來對AI說“幫我寫個微信”這種需求,似乎也不太遙遠。今天給家人們分享的是AI編程賽道的獨角獸,Replit。
背景
早期流行的,如github copilot,國產(chǎn)的通義靈碼這些AI編程產(chǎn)品,在代碼補全和增量開發(fā)方面表現(xiàn)出色,所以獲得了比較大的市場。但是短期來看,AI編程賽道的一個發(fā)展趨勢是,“人人都是產(chǎn)品經(jīng)理/人人都是超級個體”。
Replit Agent 可以提前思考并采取正確的行動順序,可以輕松構(gòu)建 Web 應用、各種工具軟件,或任何你想象中的新奇想法。它像智能助手一樣,幫助人快速從想法轉(zhuǎn)化為可用的代碼。
保持高可靠性并讓用戶參與其中
Replit 團隊專注于可靠性,將其 AI Agent的環(huán)境限制在 Replit Web 應用和 Replit 開發(fā)者已可用的工具范圍內(nèi)。他們的Agent是一個可以迭代循環(huán)的 ReAct 風格的智能體。
隨著時間的推移,Replit Agent 采用了Multi-Agent架構(gòu)。當只有一個Agent管理工具時,出錯的幾率會增加,因此 Replit 團隊將每個Agent執(zhí)行的任務限制為盡可能小的任務。他們?yōu)椴煌腁gent分配了角色,包括:
- 一個管理Agent來監(jiān)督工作流程。
- 編輯Agent來處理特定的編碼任務。
- 一個驗證Agent來檢查代碼并經(jīng)常與用戶互動。
Replit 總裁 Michele Catasta 指出了他們構(gòu)建理念的一個關鍵區(qū)別:
“我們不追求完全的自主性。我們希望用戶保持參與和投入。”
例如,他們的驗證Agent的獨特之處在于,它不僅僅檢查代碼并試圖做出決定。它經(jīng)常會與用戶對話,以在開發(fā)過程中強制執(zhí)行持續(xù)的用戶反饋。
提示工程
Replit 采用了一系列先進技術來提高其編碼Agent的性能,尤其是對于像文件編輯這樣的復雜任務。
Replit 經(jīng)常使用少量樣本示例以及冗長的、針對特定任務的指令來有效地指導模型。對于開發(fā)過程中更困難的部分,例如文件編輯,Replit 最初嘗試了微調(diào)。但是,這并沒有取得任何突破。相反,性能的顯著提高來自于利用 Claude 3.5 Sonnet。
Replit 還開發(fā)了動態(tài)提示構(gòu)建技術來處理token限制,類似于 OpenAI 流行的提示編排庫使用的系統(tǒng)。他們壓縮和截斷長期的記憶軌跡,以管理不斷增長的上下文。這包括使用LLM壓縮記憶,以確保只保留最相關的信息。
為了提高模型的理解和提示組織,Replit 采用了結(jié)構(gòu)化格式。特別是,XML 標簽有助于描繪提示的不同部分,從而指導模型理解任務。對于冗長的指令,Replit 依賴 Markdown,因為它通常在模型的訓練分布范圍內(nèi)。
值得注意的是,Replit 沒有以傳統(tǒng)方式進行工具調(diào)用。他們沒有使用 OpenAI API 提供的函數(shù)調(diào)用,而是選擇生成代碼來自己調(diào)用工具,因為這種方法更可靠。由于 Replit 擁有包含 30 多個工具的寬泛庫,每個工具都需要多個參數(shù)才能正確運行,這使得工具調(diào)用過程變得復雜。Replit 編寫了一種受限的基于 Python 的 DSL 來處理這些調(diào)用,從而提高了工具執(zhí)行的準確性。
讓用戶參與到Agent的旅程中
Replit 在設計其用戶體驗時,專注于實現(xiàn)關鍵的人機協(xié)作工作流程。首先,Replit 團隊實施了回溯功能以增加控制。在Agent工作流程的每個主要步驟中,Replit 都會在后臺自動提交更改。這使用戶可以“回到過去”的任何時間點并進行更正。
在一個復雜的、多步驟的Agent軌跡中,前幾個步驟往往最成功,而可靠性在后面的步驟中會下降。因此,團隊認為,在必要時使用戶能夠恢復到早期版本尤為重要。初學者只需單擊一個按鈕即可撤消更改,而高級用戶則可以更靈活地深入 Git 面板并直接管理分支。
由于 Replit 團隊將所有內(nèi)容都納入了工具中,因此每當Agent安裝軟件包、執(zhí)行 shell 命令、創(chuàng)建文件等時,用戶都可以看到關于Agent操作的清晰、簡潔的更新消息。
用戶無需關注大型語言模型的原始輸出,而是可以看到他們的應用程序隨著時間的推移而發(fā)展,并決定他們希望在Agent的思考過程中投入多少(例如,選擇展開以查看Agent已采取的每個操作及其背后的想法,或忽略它)。
與其他Agent工具不同,Replit 還允許你通過單擊幾下即可部署你的應用程序。發(fā)布和共享應用程序的功能已平滑地集成到代理工作流程中。
實時反饋和跟蹤監(jiān)控
為了增強對其Agent的信心,Replit 依靠直覺、實際反饋以及對其代理交互的跟蹤可見性的結(jié)合。
在 Replit Agent 的 alpha 測試階段,他們邀請了一小群約 15 名以 AI 為先的開發(fā)者和影響者來測試他們的產(chǎn)品。為了從 alpha 反饋中獲得可操作的見解,Replit 集成了 LangSmith 作為其可觀察性工具,以跟蹤和處理其跟蹤中存在問題的代理交互。
Replit 團隊會在長時間運行的跟蹤中搜索以查明任何問題。由于 Replit Agent 允許人類開發(fā)者根據(jù)需要介入并糾正Agent軌跡,因此多輪對話很常見。他們能夠在 LangSmith 的邏輯視圖中監(jiān)控這些對話流程,以識別用戶卡住并可能需要人工干預的瓶頸。
賦予開發(fā)者創(chuàng)造力
Replit Agent 正在簡化新手和資深開發(fā)者的軟件開發(fā)。通過優(yōu)先考慮人機協(xié)作和Agent操作的可見性,Replit 團隊正在幫助用戶克服最初的障礙,釋放他們的創(chuàng)造力。
雖然Agent的世界提供了許多強大的新用例,但調(diào)試或預測Agent的行為通常仍然是未知領域。Replit 期待與開發(fā)者社區(qū)一起突破界限,并致力于解決棘手的問題,例如評估 AI 代理軌跡。
在構(gòu)建有用且可靠的Agent的道路上,Michele Catasta 做出了最好的總結(jié):
“我們必須擁抱這種新事物帶來的復雜性。”
