偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Django創(chuàng)造者Simon Willison分享:我如何使用LLM幫我寫代碼

人工智能 新聞
著名 AI 科學(xué)家 Andrej Karpathy 提出的氛圍編程(vibe coding)是 AI 領(lǐng)域的一大熱門話題。

近段時間,著名 AI 科學(xué)家 Andrej Karpathy 提出的氛圍編程(vibe coding)是 AI 領(lǐng)域的一大熱門話題。簡單來說,氛圍編程就是鼓勵開發(fā)者忘掉代碼,進(jìn)入開發(fā)的氛圍之中。更簡單地講,就是向 LLM 提出需求,然后「全部接受」即可。

圖片

當(dāng)然,這種使用 LLM 編程的方法過于簡單粗暴,或許并不適合用來開發(fā)一些更加復(fù)雜和精細(xì)的項目。近日,探索和發(fā)表數(shù)據(jù)的開源工具 Datasette 的創(chuàng)造者、Web 應(yīng)用框架 Django 創(chuàng)造者之一、社交會議目錄 Lanyrd 的聯(lián)合創(chuàng)始人、著名編程技術(shù)博主 Simon Willison 分享了自己使用 LLM 輔助編程的體驗(yàn)。文中,他分享了不少自己積累的有用實(shí)踐和策略。機(jī)器之心編譯了這篇博客文章,希望能給開發(fā)者讀者們帶來一些幫助。

圖片

Simon Willison

原文地址:https://simonwillison.net/2025/Mar/11/using-llms-for-code/

網(wǎng)絡(luò)上,很多開發(fā)者在討論使用大型語言模型輔助編程,而其中不少開發(fā)者都表示挺失望的。他們經(jīng)常會問自己哪里做錯了 —— 為什么有些人報告的結(jié)果如此出色,而他們自己的實(shí)驗(yàn)卻乏善可陳?

使用 LLM 編寫代碼既困難又不直觀。需要付出巨大的努力才能弄清楚使用它們的利弊,而且?guī)缀鯖]有什么指導(dǎo)可以幫助人們學(xué)會如何最好地使用它們。

如果有人告訴你使用 LLM 編碼很容易,那么他們(可能無意中)誤導(dǎo)了你。他們很可能偶然發(fā)現(xiàn)了有效的模式,但這些模式并不是每個人都能自然而然掌握的。

兩年多來,LLM 代碼在輔助我寫代碼方面表現(xiàn)很好。下面我將盡力將一些經(jīng)驗(yàn)和直覺傳授給你。

目錄:

  1. 設(shè)定合理的期望
  2. 考慮訓(xùn)練截止日期
  3. 上下文為王
  4. 讓它們提供選擇
  5. 告訴它們確切要做什么
  6. 你必須測試它寫的內(nèi)容!
  7. 記住這只是一次對話
  8. 使用可以為你運(yùn)行代碼的工具
  9. 氛圍編程是一種很好的學(xué)習(xí)方式
  10. 使用 Claude Code 的一個詳細(xì)示例
  11. 做好讓人類接管的準(zhǔn)備
  12. 最大的優(yōu)勢是開發(fā)速度
  13. 使用 LLM 是對已有專業(yè)知識的放大
  14. 獎勵:回答有關(guān)代碼庫的問題

設(shè)定合理的期望

不要去管圍繞「AGI」的炒作 ——LLM 仍舊只是花哨的自動補(bǔ)全。它們所做的只是預(yù)測 token 序列 —— 但事實(shí)證明,寫代碼的主要工作就是以正確的順序?qū)?token 串聯(lián)在一起,因此只要你給它們指示正確的方向,它們就會非常有用。

如果你認(rèn)為這項技術(shù)將完美地實(shí)現(xiàn)你的項目,而你不需要鍛煉任何技能,那你就等著失望吧。

相反,你應(yīng)該使用 LLM 來增強(qiáng)你的能力。我現(xiàn)在最喜歡的心理模式是將它們想象成一個過度自信的結(jié)對編程助理 —— 它們查找東西的速度快如閃電,可以隨時提供相關(guān)示例,并且可以毫無怨言地執(zhí)行繁瑣的任務(wù)。

過度自信很重要。它們絕對會犯錯誤 —— 有時很細(xì)微,有時是大錯。這些錯誤可能與人類錯誤非常不一樣 —— 如果一個人類合作者想象出了一個根本不存在的庫,你會馬上就不再相信他了。不要把 LLM 當(dāng)人類一樣看,這是一個陷阱。AI 犯的錯誤并不能否定它的有用性。

當(dāng)與 LLM 一起工作時,你經(jīng)常會發(fā)現(xiàn)它們無法做到的一些事情。記下這些事情 —— 它們是有用的教訓(xùn)!它們也是為未來儲備的寶貴例子 —— 一個強(qiáng)大的新模型的標(biāo)志是:它能解決以前的模型無法處理的任務(wù)。

考慮訓(xùn)練截止日期

任何模型都有一個關(guān)鍵特征:訓(xùn)練截止日期。也就是停止收集訓(xùn)練數(shù)據(jù)的日期。對于 OpenAI 的模型,這通常是 2023 年 10 月。Anthropic 和 Gemini 以及其它提供商可能有更近期的日期。

這對于編程來說非常重要,因?yàn)檫@個時間會影響它們知道的庫。如果你使用的庫自 2023 年 10 月以來發(fā)生了重大變化,OpenAI 模型將不會知道!

我從 LLM 中獲得了足夠的價值,現(xiàn)在我在選擇庫時會特意考慮這一點(diǎn) —— 我會盡力堅持使用具有良好穩(wěn)定性且足夠流行的庫,這樣一來,這些庫的許多示例都會在其訓(xùn)練數(shù)據(jù)中。我喜歡應(yīng)用無聊技術(shù)(boring technology)的原則 —— 在項目的獨(dú)特賣點(diǎn)上進(jìn)行創(chuàng)新,在其它所有方面堅持使用經(jīng)過嘗試和測試的解決方案。

LLM 仍然可以幫助你處理訓(xùn)練數(shù)據(jù)之外的庫,但你需要付出更多努力 —— 你需要在提示詞中向它們提供最新示例,說明這些庫應(yīng)如何使用。

這就引出了使用 LLM 時最重要的事情:

上下文為王

要想讓 LLM 給出優(yōu)良的結(jié)果,很大一部分工作在于都可歸結(jié)為管理上下文,即當(dāng)前對話的一部分文本。

此上下文不僅僅是提供給 LLM 的提示詞:成功的 LLM 交互通常采用對話的形式,而其上下文包括當(dāng)前對話線程中存在的來自你的每條消息和來自 LLM 的每條回復(fù)。

當(dāng)你開始新的對話時,你會將該上下文重置為零。了解這一點(diǎn)很重要,因?yàn)閷τ诓辉儆杏玫膶υ?,通常的解決方法是將一切清除干凈并重新開始。

一些 LLM 編程工具不僅僅適用于對話。例如,Claude Projects 允許你預(yù)先填充大量文本,包括最近的直接從 GitHub 庫導(dǎo)入代碼的功能 —— 我經(jīng)常使用這個功能。

Cursor 和 VS Code Copilot 等工具會自動包含當(dāng)前編輯器會話和文件布局中的上下文,有時你可以使用 Cursor 的 @commands 等機(jī)制來提取其它文件或文檔。

我主要直接使用 ChatGPT 和 Claude 網(wǎng)頁版或應(yīng)用界面的原因之一是:它能讓我更容易準(zhǔn)確地了解上下文中的內(nèi)容。那些向我隱瞞上下文的 LLM 工具的效果更差。

另一個事實(shí)也可為你所用:之前的回復(fù)也是上下文的一部分。對于復(fù)雜的編程任務(wù),可以先嘗試讓 LLM 編寫一個更簡單的版本,檢查它是否有效,然后再迭代構(gòu)建更復(fù)雜的實(shí)現(xiàn)。

我在開始新聊天時,經(jīng)常會把現(xiàn)有代碼放入到上下文中,然后再與 LLM 一起合作以某種方式來修改它。

我最喜歡的代碼提示詞技術(shù)之一是放入幾個與我想要構(gòu)建的東西相關(guān)的完整示例,然后提示 LLM 將它們用作新項目的靈感。當(dāng)我在構(gòu)建我的 JavaScript OCR 應(yīng)用時,我詳細(xì)地寫了:該應(yīng)用應(yīng)結(jié)合 Tesseract.js 和 PDF.js—— 這兩個庫我過去曾使用過,我可以在提示詞中提供有效示例。

讓它們提供選擇

我的大多數(shù)項目都是從一些開放式問題開始的:我想做的事情是否可行?我可以用哪些潛在方式來實(shí)現(xiàn)它?哪些選項是最好的?

我會將 LLM 用作初始研究階段的一部分。

我會使用這樣的提示:「Rust 中有哪些 HTTP 庫可選?包括使用示例」或者「JavaScript 中有哪些有用的拖放庫?為我構(gòu)建一個展示每個庫的工件」(對 Claude)。

訓(xùn)練截止時間在這里很重要,因?yàn)檫@意味著 LLM 不會建議使用較新的庫。通常這樣沒問題 —— 我不想要最新的,我想要最穩(wěn)定的,以及存在時間足夠長的,可以解決錯誤的東西。

如果我要使用更新的東西,我會在 LLM 世界之外自己做研究。

開始任何項目的最佳方式是使用原型來證明該項目的關(guān)鍵要求可以得到滿足。我經(jīng)常發(fā)現(xiàn),LLM 可以在我坐下來使用筆記本電腦的幾分鐘內(nèi)就讓我獲得那個可行的原型 —— 有時甚至在我使用手機(jī)工作時也可以。

告訴它們確切要做什么

一旦我完成了初步研究,我就會大幅改變模式。對于生產(chǎn)級代碼,我對 LLM 的使用更加專制:我會把它當(dāng)作數(shù)字實(shí)習(xí)生,工作內(nèi)容是根據(jù)我的詳細(xì)指示來寫代碼。

這里有個最近的例子:

圖片

我可以自己寫這個函數(shù),但我需要花上十五分鐘來查找所有細(xì)節(jié),才能使代碼正常工作。Claude 在 15 秒內(nèi)就搞定了。

我發(fā)現(xiàn),對于我在這里使用的函數(shù)簽名,LLM 的響應(yīng)非常好。我的工作是作為函數(shù)設(shè)計者,LLM 負(fù)責(zé)根據(jù)我的規(guī)范構(gòu)建主體。

我經(jīng)常還會提出跟進(jìn)要求,比如「現(xiàn)在用 pytest 給我寫測試」。再次強(qiáng)調(diào),選擇哪種技術(shù)完全由我決定 —— 我希望 LLM 能幫我省去錄入已經(jīng)存在于我腦子里的代碼的時間。

如果你對此的反應(yīng)是「輸入代碼肯定比輸入英文指令要快」,我只能告訴你,對我來說已經(jīng)不是這樣了。代碼必須正確。而英語中存在大量捷徑、奇思妙想和拼寫錯誤,比如如果你記不住名字,你可以說「使用那個流行的 HTTP 庫」。

優(yōu)秀的編程 LLM 非常擅長填補(bǔ)空白。它們也遠(yuǎn)沒有我那么懶 —— 它們總是會記得捕捉可能的異常,添加準(zhǔn)確的文檔字符串,并用相關(guān)的類型標(biāo)注代碼。

你必須測試它寫的內(nèi)容!

有一件事是你絕對不能外包給機(jī)器的,那就是測試代碼是否真的有效。

作為軟件開發(fā)者,你的責(zé)任是提供能有效工作的系統(tǒng)。如果你還沒有看到它運(yùn)行,那么它就不是一個有效的系統(tǒng)。你需要親手試試看。

這件事做起來可能沒多少趣味,但它一直是交付良好代碼的關(guān)鍵部分 —— 無論有沒有 LLM 參與其中。

記住這只是一次對話

如果我不喜歡 LLM 寫的東西,可以馬上讓它重構(gòu),而它絕對不會抱怨!「將重復(fù)的代碼分解成一個函數(shù)」、「使用字符串操作方法而不是正則表達(dá)式」,甚至「寫更好一點(diǎn)!」

LLM 第一次編寫的代碼很少是最終的實(shí)現(xiàn),但它們可以為你重新輸入幾十次,而不會感到沮喪或無聊。

偶爾我會從我的第一個提示中獲得很好的結(jié)果 —— 我練習(xí)得越多,結(jié)果就越頻繁 —— 但我一直做好了需要后續(xù)跟進(jìn)的準(zhǔn)備。

我一直很好奇,這是否是人們錯過的關(guān)鍵技巧之一 —— 糟糕的初始結(jié)果并不是失敗,而是一個起點(diǎn),基于此才能將模型推向你真正想要的方向。

使用可以為你運(yùn)行代碼的工具

現(xiàn)在越來越多的 LLM 編程工具能夠?yàn)槟氵\(yùn)行代碼。我對其中一些略微謹(jǐn)慎,因?yàn)殄e誤的命令可能會造成真實(shí)的損害,所以我傾向于堅持使用在安全沙箱中運(yùn)行代碼的工具。我現(xiàn)在最喜歡的包括:

  • ChatGPT Code Interpreter,ChatGPT 可以直接在 OpenAI 管理的 Kubernetes 沙箱 VM 中編寫并執(zhí)行 Python 代碼。這是完全安全的 —— 它甚至無法建立出站網(wǎng)絡(luò)連接,因此實(shí)際上可能發(fā)生的一切就是臨時文件系統(tǒng)被破壞然后重置。
  • Claude Artifacts,Claude 可以為你構(gòu)建一個完整的 HTML+JavaScript+CSS Web 應(yīng)用,該應(yīng)用顯示在 Claude 界面中。這個 Web 應(yīng)用顯示在一個非常封閉的 iframe 沙箱中 —— 這雖然極大地限制了它可以做的事情,但可以防止意外泄露你的私人 Claude 數(shù)據(jù)等問題。
  • ChatGPT Canvas 是一個較新的 ChatGPT 功能,具有與 Claude Artifacts 類似的功能。我自己還沒有對此進(jìn)行足夠的探索。

如果你愿意更冒險一點(diǎn):

  • Cursor 有一個「Agent」功能可以做到這一點(diǎn),Windsurf 和越來越多的其它編輯器也是如此。我還沒有花足夠的時間研究這些,所以我不能提供相關(guān)推薦。
  • Aider 是這些模式的領(lǐng)先開源實(shí)現(xiàn),是 dogfooding 的一個很好的例子 ——Aider 的最新版本有 80% 以上是由 Aider 自己編寫的。https://aider.chat/
  • Claude Code 是 Anthropic 進(jìn)入這個領(lǐng)域的新成員。我將在稍后詳細(xì)介紹如何使用該工具。

這種在交互流程中運(yùn)行代碼的模式非常強(qiáng)大。我在選擇核心 LLM 編程工具時,主要就是看它們是否可以安全地運(yùn)行和迭代我的代碼。

氛圍編程是一種很好的學(xué)習(xí)方式

Andrej Karpathy 一個多月前創(chuàng)造了氛圍編程(vibe coding)一詞:

圖片

Andrej 認(rèn)為這「對于一次性的周末項目來說還不錯」。這也是探索這些模型功能的絕佳方式 —— 而且真的很有趣。

學(xué)習(xí) LLM 的最佳方式就是玩它們。向它們拋出荒謬的想法,然后進(jìn)行氛圍編程,直到它們基本可以正常工作,這是一種真正有用的方法,可以讓你更快地對什么有效、什么無效形成直覺認(rèn)識

早在 Andrej 給它命名之前,我就已經(jīng)開始進(jìn)行氛圍編程了!我的 simonw/tools GitHub 存儲庫有 77 個 HTML+JavaScript 應(yīng)用和 6 個 Python 應(yīng)用,每個應(yīng)用都是通過提示 LLM 構(gòu)建的。我從構(gòu)建這個集合中學(xué)到了很多東西,我以每周幾個新原型的速度向其中添加內(nèi)容:https://github.com/simonw/tools

你可以在 tools.simonwillison.net 上直接試用我的大部分工具 —— 這是這個庫的 GitHub Pages 發(fā)布版本。

使用 Claude Code 的一個詳細(xì)示例

在撰寫本文時,我想到了 tools.simonwillison.net/colophon 頁面 —— 我想要一個可以鏈接到的東西,以比 GitHub 更明顯的方式顯示我的每個工具的提交歷史記錄。

我決定利用這個機(jī)會展示我的 AI 輔助編程過程。

對于這個任務(wù),我使用了 Claude Code,因?yàn)槲蚁M軌蛑苯痈鶕?jù)我筆記本電腦上現(xiàn)有的工具庫運(yùn)行 Python 代碼。

在我的會話結(jié)束時運(yùn)行 /cost 命令,會向我顯示以下內(nèi)容:

圖片

其最初的項目從開始到結(jié)束只花了我 17 分鐘多一點(diǎn)的時間,并且在調(diào)用 Anthropic 的 API 上僅花費(fèi)了 61 美分。

在這個過程中,我會確切地告訴模型我想要構(gòu)建什么。下面是我的提示詞序列,完整記錄在這里:https://gist.github.com/simonw/323e1b00ee4f8453c7834a7560eeafc1

首先,我要求 LLM 編寫一個初始腳本來收集新頁面所需的數(shù)據(jù):

圖片  

我真的沒有認(rèn)真考慮過上面的首個提示詞 —— 它更像是我在思考初始問題時輸入到機(jī)器人中的意識流。

我檢查了初始結(jié)果并發(fā)現(xiàn)了一些問題:

圖片

然后我改變了主意 —— 我也想要那些完整的提交消息:

圖片

像這樣提供示例是獲得你想要的確切內(nèi)容的絕佳捷徑。

請注意,我從未查看過在 gather_links.py 中編寫的代碼!這是純粹的氛圍編程:我正在查看它在做什么,但我把實(shí)現(xiàn)細(xì)節(jié)完全留給了 LLM。

這個 JSON 看起來還不錯,所以我指示 LLM:

圖片

Claude 知道 GitHub URL 的工作方式,因此告訴它提交的鏈接并提供庫名稱就足夠了,它猜測這些提交 URL 是 https://github.com/simonw/tools/commit/fd9daf885c924ba277806b3440457d52b0ad90a8

我經(jīng)常發(fā)現(xiàn) Claude 在網(wǎng)頁設(shè)計方面有很好的默認(rèn)品味 —— 我只是說了「頁面應(yīng)該適合移動設(shè)備」,然后剩下的就交給它了。

Claude 不停地為我構(gòu)建不正確的頁面,所以我發(fā)出指令:

圖片

然后它自己修復(fù)了所有錯誤,只剩下我決定要做的兩處更改:

圖片

整個項目就完成了!結(jié)果文件為 build_colophon.py,它生成的頁面看起來相當(dāng)不錯:

圖片

還有一項任務(wù):我需要將新的 colophon 作為我網(wǎng)站的一部分進(jìn)行部署,但我不想將新的 colophon.html 頁面簽入庫本身。我想要一個自定義的 GitHub Pages 構(gòu)建過程。

我啟動了一個全新的 Claude Code 會話,看看 Claude 是否也能做好這件事:

圖片

與第一次不同,這次我非常仔細(xì)地觀察了它在做什么 —— 我不知道如何以這種方式自定義 GitHub Pages 構(gòu)建,我想學(xué)習(xí)如何做到這一點(diǎn),并保持謹(jǐn)慎,因?yàn)樗赡軙a(chǎn)生幻覺并導(dǎo)致任務(wù)失敗。

它告訴我它想要創(chuàng)建這個文件并請求我的許可:

圖片

我想這是正確的?我很喜歡這個注釋「Need full history for git log in gather_links.py」—— 這是我很容易忽視的。

然后它說它想將這些文件添加到 .gitignore—— 聽起來是個好主意。

它輸出了對以上操作的總結(jié):

圖片

我查看了它的成本:

圖片


因此,使用 Claude API 花費(fèi)了 17 美分和 45 秒。(我分心了,因此總共花費(fèi)了 10 分鐘。)這里是完整記錄:https://gist.github.com/simonw/a560b07eef577e6183021d1ccaae7e07

這些代碼看起來不會不可逆地破壞任何東西,因此我將其 push 到了 GitHub,然后看看會發(fā)生什么。

……成功了!我的 colophon 頁面已上線。

有一個問題。我在 GitHub Actions 運(yùn)行時觀察了它,發(fā)現(xiàn)有些不對勁:

圖片

我原本期待的是「Test」job,但為什么有兩個不同的部署?

我有一種預(yù)感,之前的默認(rèn) Jekyll 部署仍在運(yùn)行,而新的部署同時運(yùn)行 —— 新腳本完成得晚并覆蓋了原始腳本的結(jié)果,這純粹是時間上的運(yùn)氣。

是時候暫時放下 LLM 并閱讀一些文檔了!

我在 GitHub Pages 的使用自定義工作流中找到了這個頁面,但它沒有告訴我我需要知道的內(nèi)容。

出于另一個直覺,我檢查了我的庫的 GitHub Pages 設(shè)置界面,發(fā)現(xiàn)了這個選項:

圖片

我的倉庫設(shè)置為「從分支部署」,所以我將其切換到「GitHub Actions」。

我手動更新了我的 README.md,以在此提交中添加指向新 Colophon 頁面的鏈接,而這又觸發(fā)了另一次 build。

這次只運(yùn)行了兩個 job,最終結(jié)果是正確部署的站點(diǎn):

圖片

(我后來發(fā)現(xiàn)了另一個 bug—— 一些鏈接無意中在其 href= 中包含了 <br> 標(biāo)簽,我用另一個 11 美分的 Claude Code 會話修復(fù)了這個問題。)

之后,我還通過新增 AI 生成描述工具進(jìn)一步改進(jìn)了這個 colophon:https://simonwillison.net/2025/Mar/13/tools-colophon/

做好讓人類接管的準(zhǔn)備

在這個例子中,我很幸運(yùn),因?yàn)樗兄谡f明我的最后一點(diǎn):要做好接管的準(zhǔn)備。

LLM 無法取代人類的直覺和經(jīng)驗(yàn)。我在 GitHub Actions 上花了足夠多的時間,我知道要尋找什么樣的東西。在這種情況下,比起繼續(xù)嘗試通過提示詞完成這個任務(wù),我介入并完成項目的速度更快。

最大的優(yōu)勢是開發(fā)速度

我的新 colophon 頁面從構(gòu)思到完成、部署功能只花了我不到半個小時的時間。

我確信如果沒有 LLM 的幫助,我會花更長的時間 —— 以至于我可能根本不會費(fèi)心去構(gòu)建它。

也因此,我非常關(guān)心我從 LLM 中獲得的生產(chǎn)力提升:它不是為了更快地完成工作,而是為了能夠交付我根本不想花時間的項目。

我在 2023 年 3 月寫過一篇文章談到,AI 增強(qiáng)的開發(fā)讓我對我的項目更加雄心勃勃。兩年后,這種影響沒有消退的跡象。

這也是加速學(xué)習(xí)新事物的好方法 —— 今天我講的是如何使用 Actions 自定義我的 GitHub Pages 構(gòu)建,這是我將來肯定會再次使用的東西。

事實(shí)上,LLM 能讓我更快地執(zhí)行我的想法,這意味著我可以實(shí)現(xiàn)更多的想法,這意味著我可以學(xué)到更多。

使用 LLM 是對已有專業(yè)知識的放大

其他人也能以同樣的方式做到這一點(diǎn)嗎?可能不會!我在這里的提示詞依賴于 25 年以上的專業(yè)編程經(jīng)驗(yàn),包括我之前對 GitHub Actions、GitHub Pages、GitHub 本身以及我使用的 LLM 工具的探索。

我也知道這會起作用。我花了足夠多的時間使用這些工具,我相信使用從我的 Git 歷史記錄中提取的信息組裝一個新的 HTML 頁面完全在優(yōu)秀 LLM 的能力范圍內(nèi)。

我的提示詞反映了這一點(diǎn) —— 這里沒有什么特別新穎的東西,所以我口述了設(shè)計,在它工作時測試了結(jié)果,偶爾推動它修復(fù)錯誤。

如果我試圖構(gòu)建一個 Linux 內(nèi)核驅(qū)動程序 —— 一個我?guī)缀跻粺o所知的領(lǐng)域 —— 我的過程將完全不同。

獎勵:回答有關(guān)代碼庫的問題

如果你覺得使用 LLM 為你寫代碼仍舊沒有吸引力,那么還有另一個用例可能會讓你覺得更有吸引力。

優(yōu)秀的 LLM 非常擅長回答有關(guān)代碼的問題。

這也是非常低風(fēng)險的:最糟糕的情況是它們可能會出錯。因此,你可能需要花一點(diǎn)時間才能弄清楚。與完全自己挖掘數(shù)千行代碼相比,這仍然可能會節(jié)省你的時間。

這里的技巧是將代碼提交給長上下文模型中并開始提問。我目前最喜歡的模型是 gemini-2.0-pro-exp-02-05,這是 Google Gemini 2.0 Pro 的預(yù)覽版,目前可通過其 API 免費(fèi)使用。

我前幾天就用過這個技巧。當(dāng)時我正在嘗試一種對我來說很新的工具 monolith,這是一個用 Rust 編寫的 CLI 工具,它可以下載網(wǎng)頁及其所有依賴資產(chǎn)(CSS、圖像等)并將它們捆綁到一個存檔文件中。

我很好奇它是如何工作的,所以我將它克隆到了我的臨時目錄中并運(yùn)行了以下命令:

圖片

我在這里使用我自己的 files-to-prompt 工具(去年由 Claude 3 Opus 為我構(gòu)建)將庫中所有文件的內(nèi)容收集到一個流中。然后我將其導(dǎo)入我的 LLM 工具并告訴它(通過 llm-gemini 插件)使用系統(tǒng)提示詞「architectural perspective as markdown」來調(diào)用 Gemini 2.0 Pro。

這給了我一份詳細(xì)的文檔,描述了該工具的工作原理 —— 哪些源文件做什么,以及最重要的是,它使用了哪些 Rust 包。我了解到它使用了 reqwest、html5ever、markup5ever_rcdom 和 cssparser,并且根本沒有評估 JavaScript,這是一個重要的限制。

我每周都會使用這個技巧幾次。這是開始深入研究新代碼庫的好方法。

責(zé)任編輯:張燕妮 來源: 機(jī)器之心
相關(guān)推薦

2023-09-07 06:59:36

2024-05-28 01:00:00

CISO網(wǎng)絡(luò)安全

2019-12-18 16:00:26

人工智能人生第一份工作技術(shù)

2016-12-08 09:45:49

2017-03-27 16:50:26

windowsedge微軟

2014-06-11 17:13:59

LinuxLinux創(chuàng)造者

2015-03-27 10:16:48

編程流行編程語言編程創(chuàng)造者

2024-09-10 10:28:58

2020-09-03 11:11:03

黑暗市場網(wǎng)絡(luò)犯罪詐騙

2024-11-27 14:30:46

2012-07-18 09:43:40

FLash

2024-07-12 15:24:07

2020-06-02 09:52:42

微軟瀏覽器Windows

2013-05-02 09:36:44

代碼項目

2015-08-17 09:43:12

編程創(chuàng)造程序員

2023-07-07 17:13:14

生成式AIGoogle

2023-03-17 18:33:12

ChatGPTLLM應(yīng)用
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號