題圖|字節(jié)跳動(dòng)技術(shù)副總裁洪定坤在演講現(xiàn)場(chǎng)
虎嗅注: 昨天的火山引擎 Force 原動(dòng)力大會(huì)主論壇,是字節(jié)跳動(dòng)技術(shù)副總裁洪定坤的首次公開露面,三十多分鐘的演講,主題全部圍繞“AI Coding”和字節(jié)跳動(dòng)自研AI IDE “TRAE”。 AI Coding,一直以來是大模型落地最具潛力的方向之一。伴隨著底層模型編程能力的突飛猛進(jìn),AI Coding 已經(jīng)開始在程序員的日常開發(fā)工作中產(chǎn)生了深刻影響。包括在字節(jié)跳動(dòng)公司內(nèi)部,超過 80% 的工程師都在使用 TRAE 這樣的 AI Coding 產(chǎn)品輔助開發(fā)。值得一提的是,作為首個(gè)中文 AI IDE,TRAE 目前的月活用戶數(shù)量已經(jīng)超過了 100 萬。 在演講中,洪定坤還分享了自己用TRAE做AI Coding的一些實(shí)踐,比如在三天時(shí)間里,如何“見縫插針”地開發(fā)一個(gè)英語學(xué)習(xí)應(yīng)用。 對(duì)于洪定坤和TRAE幕后團(tuán)隊(duì)的所有人來說,他們希望軟件開發(fā)能夠 all in one,讓 AI 成為調(diào)度者,更大幅度地降低開發(fā)的門檻,提升開發(fā)效率。AI Coding是可預(yù)見的未來,但“AI Development”是更高級(jí)的目標(biāo)。 以下是演講全文,在不改變?cè)獾幕A(chǔ)上,進(jìn)行了整理。
大家好,我是洪定坤,字節(jié)跳動(dòng)研發(fā)的負(fù)責(zé)人,也是一個(gè)研發(fā)工程師,最近在做 AI Coding 方面的探索。這是第一次跟大家見面,主要是想跟大家介紹一下我們?cè)?AI Coding 方向的產(chǎn)品 TRAE。
其實(shí)做這方向的探索有一段時(shí)間了。GPT-3.5 出來的時(shí)候,我們就覺得編程可能是一個(gè)很好的應(yīng)用方向。包括我們給這個(gè)產(chǎn)品起的名字“TRAE”,意思是“The Real AI Engineer”。我們覺得,AI 大模型確實(shí)會(huì)給 Coding 帶來真正的變革。
不過最開始,因?yàn)槟P湍芰Φ脑颍芏嘞敕ㄟ€實(shí)現(xiàn)不了。但過去一年,國(guó)內(nèi)外大模型的基礎(chǔ)能力進(jìn)步很快。包括今天字節(jié)發(fā)布的豆包大模型 1.6,在編程能力上也有很大的進(jìn)步。
模型能力的進(jìn)步,讓 AI Coding 類產(chǎn)品,包括我們的 TRAE,真正開始有了落地的機(jī)會(huì)。我們也在今年年初發(fā)布了 TRAE。現(xiàn)在,不少工程師已經(jīng)在工作中開始深度使用我們的產(chǎn)品。截至目前,TRAE 的月活用戶已經(jīng)超過了 100 萬。這個(gè)數(shù)字也說明,AI Coding 已經(jīng)在程序員的工作中切切實(shí)實(shí)地起到了重要的作用。
所以,今天借著火山引擎這個(gè)場(chǎng)合,和大家分享一下,我們?yōu)槭裁匆鲞@個(gè)事情,以及對(duì) AI Coding 的一些思考。
為什么要做 AI Coding?
技術(shù)普惠,AI 讓人人都是開發(fā)者
作為計(jì)算機(jī)歷史中的偉大發(fā)明,編程語言用簡(jiǎn)潔、優(yōu)雅的語法和語義規(guī)則,定義清晰明確的指令,讓計(jì)算機(jī)完成各種任務(wù)。而且,不管技術(shù)如何發(fā)展,我們都相信,代碼仍然是未來最重要,或者說唯一的,能夠讓計(jì)算機(jī)完成各類復(fù)雜任務(wù)的工具和手段。代碼是數(shù)字世界的基礎(chǔ)生產(chǎn)力工具。
AI 的出現(xiàn),則前所未有地降低了大眾掌握代碼能力的門檻。
隨著 AI 代碼能力的不斷提升,今天,更多人可以通過 AI 掌握代碼這個(gè)工具,專業(yè)的程序員也能更專注于工作中具有創(chuàng)造性的部分。這顯然會(huì)極大地提高開發(fā)效率和代碼質(zhì)量,也使得更多不同背景的人成為開發(fā)者,通過代碼來完成更多復(fù)雜的任務(wù),極大地提高生產(chǎn)力。
我們的一位研發(fā)同事,就在用 TRAE 教他們家 11 歲的小朋友學(xué)習(xí)編程。這是小朋友最近完成的一個(gè)奧數(shù)競(jìng)賽題庫(kù)網(wǎng)站:一個(gè)真實(shí)的網(wǎng)站,可以用來練習(xí)小學(xué)的奧數(shù)題。
奧數(shù)競(jìng)賽題庫(kù)網(wǎng)站截圖
可以看到,一個(gè)小朋友,在 AI 的幫助下,也能很快地為自己的學(xué)習(xí)完成一次開發(fā)、生成一個(gè)應(yīng)用。我也相信,做好 AI Coding,能夠?qū)崿F(xiàn)技術(shù)普惠,讓更多人掌握代碼這一強(qiáng)大的生產(chǎn)力,未來真正有機(jī)會(huì)實(shí)現(xiàn)“人人都是開發(fā)者”。這也是我們希望做 AI Coding 的第一個(gè)原因。
提升研發(fā)效率
然后,作為一家技術(shù)比重及規(guī)模都很大的科技公司,研發(fā)效率一直是我們非常重視和關(guān)注的話題,在這方面,AI 帶來了非常多的機(jī)會(huì)和提升。
認(rèn)真做好開發(fā)工具,對(duì)公司和開發(fā)者個(gè)人,都有很大的意義,能夠大幅度地提升工作效率。
實(shí)際工作中,過去一年我確實(shí)也看到了很大的變化。今天,在字節(jié)跳動(dòng)內(nèi)部,我們有超過 80% 的工程師,在使用 TRAE 這樣的產(chǎn)品輔助開發(fā)。我們也有相當(dāng)比例的代碼是通過 AI 生成的。
追求智能上限
最后,字節(jié)做大模型工作,我們最重要的任務(wù)之一是追求智能上限。
Coding 作為一種高度結(jié)構(gòu)化、邏輯嚴(yán)密的任務(wù),對(duì)模型理解復(fù)雜的語義結(jié)構(gòu)、邏輯推理、算法設(shè)計(jì)和精確表達(dá)都有很高的要求,能很好地助力模型智能上限的探索。
因此,幫助更多人掌握代碼做更多復(fù)雜的任務(wù)、提升專業(yè)工程師工作效率和助力模型追求更好的智能上限,是我們決定認(rèn)真做 AI Coding 這個(gè)事情的原因。
我的 AI Coding 實(shí)踐:用自然語言寫代碼
接下來,我想和大家具體分享一下,我們的產(chǎn)品 TRAE。
最開始,這部分內(nèi)容我是列出了一些產(chǎn)品核心能力,打算做成 PPT 來介紹。但寫完后總感覺不是特別理想,不夠生動(dòng)、具體。我自己平時(shí)也會(huì)使用 TRAE 工作,做一些開發(fā)。我在想,也許作為一個(gè)開發(fā)者和用戶,把自己使用 TRAE 的過程分享出來,會(huì)更生動(dòng)、真實(shí)。
所以,上周端午節(jié)假期之后,我和兩個(gè)同事一起開發(fā)了一個(gè)新的學(xué)習(xí)英語的應(yīng)用“積流成江”(體驗(yàn)地址:https://sstr.trae.com.cn)。
今天,我想就著這個(gè)應(yīng)用和開發(fā)過程,把 TRAE 的一些核心功能更好地呈現(xiàn)給大家。
您目前設(shè)備暫不支持播放
英語學(xué)習(xí)應(yīng)用現(xiàn)場(chǎng)演示
可以看到,這是一個(gè)相對(duì)復(fù)雜且完成度已經(jīng)比較高的英語學(xué)習(xí)應(yīng)用。產(chǎn)品里包含和模型對(duì)話、單詞管理&復(fù)習(xí)、用戶登錄以及其他一些復(fù)雜的交互。
而且這并不是一個(gè) demo,產(chǎn)品在昨天晚上已經(jīng)發(fā)布了。因?yàn)槲液蛨F(tuán)隊(duì)討論了一下,覺得不能做一個(gè) demo,應(yīng)該直接發(fā)布,這樣,大家如果有興趣也可以直接體驗(yàn)一下。后面,我也會(huì)把整個(gè)代碼放到我們的 Github,大家有興趣可以下載,看看 TRAE 和我一起寫的代碼是什么樣子。
過去開發(fā)這樣一個(gè)產(chǎn)品,可能需要幾周甚至一個(gè)月的時(shí)間。尤其是像我這樣,有段時(shí)間沒有在一線寫代碼了,在這次開發(fā)其實(shí)還有很多“重新?lián)炱饋怼钡倪^程。
不過這次,我在 3 天時(shí)間里就陸續(xù)完成了開發(fā)。接下來,我就把開發(fā)過程中的實(shí)踐和大家分享一下,看看我是怎么通過 TRAE 來提升開發(fā)效率的。
首先,TRAE 的兩個(gè)最基礎(chǔ)的功能是“代碼補(bǔ)全”和“局部代碼生成”。
我們的 AI,會(huì)在工程師編寫代碼的過程中,根據(jù)上下文自動(dòng)推測(cè)和補(bǔ)全代碼,提高編程效率。
不過,典型的代碼補(bǔ)全和局部代碼生成,主要就是在當(dāng)前用戶光標(biāo)所在位置,推測(cè)后面的代碼。TRAE 在這個(gè)基礎(chǔ)上更進(jìn)一步。TRAE 能根據(jù)用戶的編輯行為以及上下文,精準(zhǔn)預(yù)測(cè)接下來要修改的地方,直接跳轉(zhuǎn)對(duì)應(yīng)位置,并持續(xù)進(jìn)行代碼補(bǔ)全和生成。
我們發(fā)現(xiàn),用這樣的方式,補(bǔ)全和生成的效率都會(huì)得到較為大幅的提升,并且更實(shí)用。
代碼補(bǔ)全是很基礎(chǔ)也很重要的能力。我們最早做的產(chǎn)品就是編程插件,叫 MarsCode。MarsCode 用插件的形式,幫助開發(fā)者在使用VS Code、jetbrains 等傳統(tǒng) IDE 中提效。這也是目前被開發(fā)者最廣泛使用的 AI 能力。
直到今天,也還是有很多用戶喜歡豆包 MarsCode 插件這類產(chǎn)品。但作為一個(gè)輕量級(jí)的形態(tài),插件很難承載更完整的真正基于 AI Coding 的體驗(yàn)。尤其是隨著模型能力快速提升,以及開發(fā)者群體的快速擴(kuò)大,越來越多的用戶、開發(fā)者,都期待 AI 能夠承載更完整的開發(fā)流程,而不僅僅是補(bǔ)全代碼。
所以,為了把 AI 能力與 IDE 更深入、自然的結(jié)合,我們研發(fā)了 TRAE IDE。TRAE IDE 是一個(gè)為 AI 編程量身打造的原生開發(fā)環(huán)境,不僅具備代碼生成、項(xiàng)目導(dǎo)航、上下文感知等基本能力,也支持代碼重構(gòu)、批量修改、知識(shí)問答等復(fù)雜任務(wù)。這些能力,可以說占到了我的開發(fā)中用到的 80% 的場(chǎng)景。
那這次,在 TRAE 的幫助下,我使用了一種完全不同的方式來寫代碼。我自己把它稱作用自然語言來編程。
這里的自然語言編程,并不是一般意義上理解的,產(chǎn)品經(jīng)理把功能描述一下,然后讓 AI 來開發(fā)。我的開發(fā)過程,仍然是典型意義上的工程師開發(fā)。我描述的,除去功能,更多是編碼邏輯和技術(shù)方案本身。只是,這種邏輯是用自然語言,而非代碼的方式呈現(xiàn)。
一個(gè) 300 行代碼的功能,我可能只需要 200 字的方案描述。這有點(diǎn)像我給另外一個(gè)程序員說,咱們實(shí)現(xiàn)這樣一個(gè)功能,技術(shù)方案是這樣的,核心流程要這樣這樣。然后,AI 把這些方案變成真正的代碼。
我統(tǒng)計(jì)了一下,這次開發(fā),大概 85% 的代碼是通過這種自然語言對(duì)話的方式讓 AI 生產(chǎn)。得益于 TRAE 的幫助,我們最終用 2 天時(shí)間完成了超過 3000 行代碼的開發(fā)和調(diào)試。而且兩天里還有一些事情和會(huì)議,也不是很完整的時(shí)間,我也沒有特別仔細(xì)地統(tǒng)計(jì)。但差不多就是從端午之后,大概到周五,我就基本把核心功能開發(fā)完了。
所以,整個(gè)過程,和傳統(tǒng)的開發(fā)比起來,是非常非常不一樣的,我正好錄了一個(gè)真實(shí)的開發(fā)過程的視頻,大家可以看一下。
您目前設(shè)備暫不支持播放
TRAE 開發(fā)過程演示過程
模型強(qiáng)大的代碼能力,也是這次順利開發(fā)的重要原因。我們這次在 TRAE 用的 doubao-dev 模型,就是基于今天發(fā)布的豆包 1.6 模型。TRAE 團(tuán)隊(duì)在豆包 1.6 基礎(chǔ)上,也針對(duì)工程開發(fā)場(chǎng)景做了進(jìn)一步的訓(xùn)練。對(duì)比現(xiàn)當(dāng)前的 1.5 來說,我覺得還是有一個(gè)比較大的提升的。這兩天我們就會(huì)把這個(gè)新模型推送給用戶,相信可以使開發(fā)者的效率進(jìn)一步提升。
不只是 AI Coding,更是 AI Development
TRAE 對(duì)整個(gè)編程的工作有很大的提升,但 Coding 只是軟件開發(fā)的一個(gè)環(huán)節(jié),并不是最終的目標(biāo)。
做過軟件開發(fā)的人應(yīng)該都知道,你要寫文檔、做運(yùn)維、做調(diào)試、發(fā)布,還要 Debug,最后你還要做壓力測(cè)試,很多事情。一個(gè)典型的軟件開發(fā)過程中,寫代碼可能大概占不到 40% 的工作,并且,越復(fù)雜的應(yīng)用,代碼工作的占比越少。
坦白說,這次除了我們 3 個(gè)人開發(fā)團(tuán)隊(duì)外,還有另外的同事,花了一些時(shí)間協(xié)助我們完成環(huán)境搭建、調(diào)試、運(yùn)維等工作。特別是決定這個(gè)產(chǎn)品要直接放出來之后,我們又花了一個(gè)周末的時(shí)間在做各種工作,其實(shí)到昨天還在做一些壓測(cè)。
這次開發(fā),我們用到了 meego 管理需求,飛書多維表格記錄問題、內(nèi)部運(yùn)維平臺(tái)上線、trace 系統(tǒng)查 bug,還有代碼提交和合并工具等等等等。其實(shí)在過程中來回切換上下文,都是非常復(fù)雜,也非常耗時(shí)間的。
我自己是非常相信在大模型這個(gè)時(shí)代,隨著模型能力的進(jìn)步, AI 是有機(jī)會(huì)把這些工作統(tǒng)籌起來的。AI 成為調(diào)度者,讓軟件開發(fā) all in one,更大幅度地降低開發(fā)的門檻,提升開發(fā)效率。
這其實(shí)是一個(gè)蠻大的想象空間,我有時(shí)候想起來也會(huì)覺得很興奮。舉個(gè)例子。傳統(tǒng)模式下,我調(diào)一個(gè) bug,可能先要去找錯(cuò)誤日志,然后可能要定位,定位完之后我可能要用 git 拉一個(gè)分支。我還要寫代碼,寫完之后我還要部署發(fā)布,還要調(diào)試,沒問題之后我再去上線,這個(gè)過程,可能調(diào)一個(gè) bug,半天過去了。
未來有沒有可能就是 AI 來做這個(gè)事情?它來幫我自動(dòng)從日志里面定位,然后分析可能什么問題,和我一起確認(rèn)。我覺得沒問題的時(shí)候,我說你改吧,改完之后他幫我提交上線。
是這樣一個(gè)未來的話,其實(shí)就是從軟件開發(fā)(software development),到 AI 開發(fā)(AI Development)了。我們這次額外的好幾天的這些工作,也許會(huì)降低成幾個(gè)小時(shí)甚至更短的時(shí)間。那這些都是我們想下一步努力的方向,我們希望,TRAE 不只是 AI Coding,更是 AI Development。
現(xiàn)在,TRAE 也在做一些類似的嘗試,比如引入了 Agent 能力,用戶可以依據(jù)場(chǎng)景選擇不同的 Agent 進(jìn)行工作,并且允許用戶自定義 Agent。用戶可以自定義工具,然后來去做這種上下文切換,把工作串起來。大家可以看一下下面的 demo:
您目前設(shè)備暫不支持播放
TRAE 自定義 Agent 演示案例
AI Coding 離不開人的協(xié)作
當(dāng)然,這個(gè)小的 demo 本身還是個(gè)演示,整個(gè)過程比較理想化,做的程序也比較簡(jiǎn)單,現(xiàn)在能使用的工具也還比較少。但它是一個(gè)雛形,未來,我相信隨著 AI 能力的進(jìn)步,它可以完成更多、復(fù)雜的應(yīng)用。我們也會(huì)努力地往前去走。
另外,我也認(rèn)為,不管 AI 如何進(jìn)步,真正的 Real AI Engineer 也離不開人的協(xié)作。純粹用 AI 做開發(fā),自己只是提要求,點(diǎn)點(diǎn)按鈕,做出來的程序是很難維護(hù)的,而且也沒有把工程師很多的創(chuàng)造性和 AI 結(jié)合起來。
包括我這次的開發(fā),雖然是自然語言,但也是代碼邏輯的自然語言,是我提技術(shù)方案和流程,AI 寫成代碼。當(dāng)然有一些我會(huì)和它探討,我說你覺得怎么這樣寫更合適、更好,它也會(huì)給我一些建議。之后,我還會(huì)比較仔細(xì)的 review 代碼。我可以隨時(shí)接管,直接人工修改。
比如昨天晚上,我們突然發(fā)現(xiàn)了一個(gè) bug,其實(shí) debug 對(duì)模型還是一個(gè)挑戰(zhàn),昨天的 bug,AI 找起來也有點(diǎn)難度。最后還是我和它一起完成的。所以人是非常重要的。
現(xiàn)在很多人測(cè) Coding 能力,經(jīng)常讓模型做一個(gè)貪吃蛇,或者做一個(gè)六邊形小球游戲。但其實(shí)這種測(cè)試不全面。因?yàn)檎鎸?shí)的開發(fā)場(chǎng)景是很復(fù)雜的,對(duì)模型和產(chǎn)品的邏輯能力,和幻覺控制都有很高的要求。而且人也需要仔細(xì)的 review 代碼,這樣做出來的程序才是可以持續(xù)維護(hù)的。
所以,哪怕85%的代碼都是 AI 寫的,但仍然是我在驅(qū)動(dòng)整個(gè)過程。模型在不斷進(jìn)步,能做越來越多的事情,但編程仍然是離不開人的。而 AI 也只有做到“聽得懂也理解人的想法”,也得“懂上下文”,并且能夠很好的和人合作,才可能是真正的 Real AI Engineer,做到 AI Development。
TRAE 也會(huì)一直向這個(gè)方向努力,最后也歡迎大家體驗(yàn)我們的產(chǎn)品 TRAE,還有我新開發(fā)的英語學(xué)習(xí)應(yīng)用“積流成江”,因?yàn)椴砰_發(fā)了幾天,可能還會(huì)有一些 bug,也歡迎大家多給我提建議,謝謝大家。
本內(nèi)容為作者獨(dú)立觀點(diǎn),不代表虎嗅立場(chǎng)。未經(jīng)允許不得轉(zhuǎn)載,授權(quán)事宜請(qǐng)聯(lián)系 hezuo@huxiu.com
本文來自虎嗅,原文鏈接:https://www.huxiu.com/article/4458182.html?f=wyxwapp
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
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.