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