跳至主要內容
OpenAI

OpenAI 會如何使用 Codex

簡介

Codex 每天都被使用於 OpenAI 的眾多技術團隊中,例如安全、產品工程、前端、API、基礎架構和效能工程。團隊正利用它來加速各類工程任務,從理解複雜系統、重構大型程式碼庫,到交付新功能,以及在緊迫的時限下處理事故。

根據對 OpenAI 工程師的訪談與內部使用資料,我們整理出使用案例與最佳實務,說明 Codex 如何協助團隊加快工作速度、提升工作品質,並有效管理大規模的複雜性。


使用案例 1:程式碼理解

Codex 可協助我們的團隊在新人到職、偵錯或調查事件時,針對程式碼庫中不熟悉的部分快速上手。

他們經常使用 Codex 來找出某項功能的核心邏輯、梳理服務或模組之間的關係,並追蹤資料在系統中的流向。它也有助於找出架構模式或文件中缺漏的部分,否則往往需要投入大量人工才能整理出來。

在事件回應期間,Codex 會透過呈現元件之間的互動關係,或追蹤故障狀態如何在各系統間傳播,協助工程師快速熟悉新的領域。

來自我們團隊的案例分享

「當我修正錯誤時,我會使用 Ask 模式,看看程式碼庫中還有哪些地方可能也會出現相同問題。」
效能工程師,檢索系統
試著使用 Codex 透過這些範例提示來理解程式碼:
  • 這個儲存庫中的驗證邏輯是在哪裡實作的?

  • 總結請求如何從進入點到回應流經此服務。

  • 哪些模組會與 [插入模組名稱] 互動,以及如何處理失敗情況?

使用案例 2:重構和移轉

Codex 常用於進行跨多個檔案或套件的變更。例如,當工程師在更新 API、調整模式的實作方式,或遷移至新的相依套件時,Codex 能讓他們輕鬆一致地套用變更。

當需要在數十個檔案中進行相同更新,或是當更新需要掌握不容易單靠 Regex 或尋找與取代就能處理的結構與相依性時,這會特別有用。

他們也用它來進行程式碼清理,例如拆分過大的模組、以現代模式取代舊有模式,或讓程式碼更易於測試。

來自我們團隊的案例分享

「Codex 將所有舊版的 getUserById() 替換為我們新的服務模式,並建立了 PR。」它在幾分鐘內就完成了原本需要數小時才能完成的工作。
後端工程師,ChatGPT 網頁版
試著使用 Codex 透過這些範例提示詞進行重構和移轉:
  • 依關注點將這個檔案拆分成不同模組,並為每個模組產生測試。

  • 將所有以 Callback 為基礎的資料庫存取轉換為 Async/Await。

使用案例 3:效能最佳化

Codex 用來識別並解決效能瓶頸。

在進行效能調校或可靠性改善時,工程師會使用提示詞指示 Codex 分析執行緩慢或耗用大量記憶體的程式碼路徑,例如低效率的 Loop、冗餘操作或成本高昂的 Query,並提出最佳化的替代方案,通常能顯著提升效率與可靠性。

Codex 也用於支援程式碼健康,透過識別仍在積極使用中的高風險或已淘汰模式。我們的團隊仰賴它來協助減少長期技術債,並主動防止功能退化。

來自我們團隊的故事分享

「我使用 Codex 來掃描重複且成本高昂的 DB 呼叫。」它很擅長標記高頻路徑,並草擬我之後可以調整的批次查詢。」
基礎設施工程師,API 可靠性
試用 Codex,搭配這些範例提示進行效能最佳化:
  • 將這個迴圈最佳化以提升記憶體使用效率,並說明你的版本為何更快。

  • 找出此請求處理常式中重複且成本高昂的作業,並建議可採用快取的機會。

  • 建議在這個函式中以更快的方式批次處理 DB 查詢。

使用案例 4:提升測試覆蓋率

Codex 協助工程師更快速地撰寫測試,尤其是在測試覆蓋率不足或完全缺失的地方。

在修正錯誤或進行重構時,工程師經常會請 Codex 建議涵蓋極端情況或可能失敗路徑的測試。對於新程式碼,可根據函式簽章與周圍邏輯產生單元測試或整合測試。

Codex 對於識別邊界條件特別有幫助,例如空輸入、最大長度,或是不尋常但有效的狀態,而這些情況在初始測試中經常被忽略。

來自我們團隊的故事分享

「我會在晚上把 Codex 指向測試覆蓋率較低的模組,隔天醒來就能看到可直接執行的單元測試 PR。」
前端工程師,ChatGPT 桌面版
試用 Codex,搭配這些範例提示進行效能最佳化:
  • 為此函式撰寫單元測試,包括邊界情況和失敗路徑。

  • 為此排序工具建立屬性測試。

  • 請擴充此測試檔案,補上 null 輸入和無效狀態等遺漏情境的測試。

使用案例五:提升開發速度

Codex 透過加速開發週期的起點與終點,幫助團隊加快開發速度。

開始開發新功能時,工程師會用它來搭建樣板程式碼框架——產生資料夾、模組和 API 存根,快速產出可執行的程式碼,而不必手動串接每個部分。

隨著專案接近發布,Codex 能透過處理較小但不可或缺的任務來因應緊迫的時程,例如分類錯誤、填補最後一哩的實作缺口,以及產生部署腳本、遙測掛鉤或設定檔。

它也可以用來將產品回饋轉化為起始程式碼。工程師經常貼上使用者請求或規格,讓 Codex 產生初稿,之後再回頭修改和潤飾。

「我一整天都在開會,但還是合併了 4 個 PR,因為 Codex 一直在背景中運作。」
產品工程師,ChatGPT Enterprise
試試使用 Codex 搭配這些範例提示來提升開發速度:
  • 為新的 API 路由 POST /events 建立支架,並加入基本驗證與日誌記錄。

  • 使用此範本(插入您的遙測程式碼範例),為追蹤新版導入流程的成功/失敗情況生成遙測掛鉤。

  • 根據此規格建立初步實作:[插入規格或產品回饋]。

使用案例六:保持心流

Codex 幫助我們的工程師即使在行程零碎且經常被打斷的情況下,仍能維持生產力。它可用來記錄尚未完成的工作、將筆記轉化為可運作的原型,或拆分出可於日後再回頭處理的探索性任務。這讓他們更容易在不會失去上下文脈絡的情況下暫停及恢復工作,尤其是在值班待命或有很多會議時。

「如果我發現有個順手修一下的小問題,我就會啟動一個 Codex 任務,而不是切換分支,等有空時再審查它的 PR。」
後端工程師,ChatGPT API
試著使用 Codex,搭配這些範例提示詞,保持專注:

使用案例七:探索與構想

Codex 也很適合用於開放式工作,例如探索替代方案或驗證設計決策。您可以用提示詞詢問不同的解題方式、探索不熟悉的模式,或針對假設進行壓力測試。這有助於突顯其中的取捨、拓展設計選項,並明確化實作上的選擇。

它也可用來識別相關的錯誤。給定已知問題或已淘汰的方法,Codex 可以識別程式碼其他地方的類似模式,讓您更容易發現回歸問題或完成清理工作。

「Codex 幫我解決冷啟動問題,我貼上規格和文件後,它會產生程式碼骨架,或指出我遺漏的部分。」
產品工程師,ChatGPT Desktop
試著使用 Codex 透過這些範例提示詞進行探索與發想:
  • 如果系統採用事件驅動而非請求/回應模式,這會如何運作?

  • 找出所有手動組合 SQL 字串,而不是使用我們查詢建構器的模組。

  • 將這段內容改寫成更偏函數式的風格,避免變更狀態與副作用。


最佳做法

當 Codex 被賦予明確的結構、充分的上下文,以及反覆迭代的空間時,最能發揮效益。以下是 OpenAI 團隊正在培養的一些習慣,幫助他們在日常工作中持續從中獲得穩定價值。

從 Ask 模式開始

對於大型變更,請先使用 Ask 模式向 Codex 提示實作計畫,當切換到 Code Mode 時,該計畫將成為後續提示的輸入內容。這個兩步驟流程可讓 Codex 維持穩健,並有助於避免輸出錯誤。Codex 最適合處理範圍明確的任務,例如你或隊友約一小時可完成的工作,或需要撰寫數百行程式碼才能實現的內容。隨著模型持續改進,可預期其能承擔的任務規模也會隨之增加。

循序改進 Codex 的開發環境

設定啟動指令碼、環境變數和網際網路存取權,可明顯降低 Codex 的錯誤率。執行任務時,請留意可在 Codex 的環境設定中修正的建置錯誤。這可能需要幾次迭代,但長期而言可帶來顯著的效率提升。

請將您的提示詞寫成如同您正在撰寫 GitHub Issue 的形式

當提示詞貼近你在 PR 或 issue 中描述變更的方式時,Codex 的回應會更好。也就是說,在相關情況下應包含檔案路徑、元件名稱、差異內容和文件片段。使用像「用與 [module X] 相同的方式實作這個功能」這樣的模式來撰寫提示詞,能改善結果。

使用 Codex 任務佇列作為輕量型待辦清單

啟動任務來記錄延伸想法、部分完成的工作或順手修正的問題。不必有壓力一次產生完整的 PR。Codex 很適合作為暫存區,等你重新專注時可以返回。

使用 AGENTS.md 來提供持續性內容

維護 AGENTS.md 檔案,以協助 Codex 在儲存庫中跨提示詞更有效地運作。這些檔案通常包含命名慣例、業務邏輯、已知特殊情況或相依性,而這些都是 Codex 無法僅從程式碼本身推斷出來的。詳情請參閱文件,了解如何組織 AGENTS.md 檔案。

運用「Best of N」來提升產出

Best-of-N 功能可讓您針對單一任務同時產生多個回應,以快速探索多種解決方案,並選出最佳方案。對於較複雜的任務,你可以檢視多次迭代的結果,並結合不同回應中的部分內容,以獲得更好的結果。


展望未來

Codex 仍處於研究預覽版階段,但它已經對我們打造產品的方式帶來實質影響,幫助我們加快開發速度、寫出更好的程式碼,並承接原本可能永遠不會被排上優先順序的工作。

我們對未來的潛力感到振奮——隨著我們的模型持續進步,且 Codex 更深入整合到我們的工作流程中,我們期待解鎖更多更強大的軟體開發方式。我們將持續分享我們一路上學到的內容。

有興趣把 AI 帶入你的業務?

了解我們如何協助企業建立可擴展且負責任的 AI 策略。