跳到主要內容
OpenAI

OpenAI 如何使用 Codex

簡介

OpenAI 的多個技術團隊,例如資訊安全、產品工程、前端工程、API、基礎架構及效能工程等,每日都會使用 OpenAI Codex。各團隊正使用它來加速各類工程任務,範疇涵蓋理解複雜系統、大規模程式碼重構,乃至於交付新功能以及在緊迫的期限內解決突發事故。

根據對 OpenAI 工程師的訪談及內部使用數據,我們彙整了多個使用案例與最佳實踐,藉此展示 Codex 如何協助團隊提升效率、優化工作品質,並在大規模環境下管理系統的複雜性。


用例 1:程式碼理解

當進行新進人員培訓、除錯或調查突發事故時,Codex 能協助我們的團隊快速熟悉程式庫中不熟悉的部分。

他們經常使用 Codex 來定位某項功能的核心邏輯,梳理服務或模組之間的關係,以及追蹤資料在系統中的流向。此外,它亦有助於識別架構模式,或找出文件中缺漏的內容;否則通常需要投入大量人力才能產生。

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

來自我們團隊的實例分享

「當我修正錯誤時,我會使用
詢問模式來查看程式碼庫中還有哪些地方可能會出現同樣的問題」
效能工程師,檢索系統
可以嘗試使用以下範例提示詞,透過 Codex 來理解程式碼:
  • 這個程式碼儲存庫中的身份驗證邏輯於何處實施?

  • 總結請求從入口點到回應在這個服務中的流程。

  • 哪些模組會與[插入模組名稱]互動,以及如何處理故障?

用例 2:重構與遷移

Codex 常被用來對多個檔案或套件做修改。例如,當工程師正在更新 API、更改某種模式的實作方式,或遷移至新的相依項目時,Codex 可讓他們輕鬆套用一致性變更。

當需要在數十個檔案中進行相同更新時,或當更新需要考慮結構及相依關係,而這些內容不容易透過 Regex 或「尋找與取代」捕捉時,使用 Codex 就特別方便。

工程師們也會用它來進行程式碼清理,例如拆分過大的模組、將舊有模式替換為現代化模式,或是優化程式碼以提升可測試性。

來自我們團隊的實例分享

「Codex 將所有舊有的 getUserById() 替換為我們新的服務模式,並提交了 PR。」「原本需要數小時的工作,幾分鐘內就完成了。」
後端工程師,ChatGPT 網頁
可以嘗試使用以下範例提示詞,透過 Codex 進行重構與遷移:
  • 按關注點將此檔案拆分成不同模組,並為每個模組產生測試。

  • 將所有基於回呼的資料庫存取轉換為 async/await。

使用案例 3:效能最佳化

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

在調校或提升可靠性的工作中,工程師會提示 Codex 分析執行緩慢或耗費記憶體的程式碼路徑,例如效率低下的迴圈、冗餘操作或成本高昂的查詢,並提出經過優化的替代方案,往往能顯著提升效率和可靠性。

Codex 亦可用於維護程式碼健康,協助識別仍在使用中的高風險模式或已棄用模式。我們的團隊倚重它來減少長期技術債務,並主動防止效能倒退問題。

來自我們團隊的實例分享

「我使用 Codex 來掃描重複且成本高昂的資料庫呼叫。它在標記熱路徑和草擬批次查詢方面表現出色,隨後我只需再進行調校即可。」
基礎設施工程師,API 可靠性
可以嘗試使用下列範例提示詞,透過 Codex 進行效能優化:
  • 優化此迴圈以提升記憶體效率,並說明為何你的版本速度更快。

  • 找出這個請求處理程式中重複且耗資源的操作,並建議可採用快取的機會點。

  • 請建議在這個函式中批次處理資料庫查詢的更快方法。

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

Codex 可協助工程師更快編寫測試用例——尤其是在測試覆蓋率較低或完全缺失的場景。

在修正錯誤或進行重構時,工程師通常會要求 Codex 建議可涵蓋邊緣案例或可能失敗路徑的測試方案。對於新編寫的程式碼,它可根據函式簽章及周邊邏輯產生單元測試或整合測試。

Codex 在識別邊界條件方面尤為出色,例如空輸入、最大長度或不尋常但有效的狀態,這些情況在初始測試中經常被忽略。

來自我們團隊的實例分享

「我晚上讓 Codex 處理測試覆蓋率較低的模組,過夜後醒來就能看到可執行的單元測試 PR。」
前端工程師,ChatGPT 桌面版
可以嘗試使用下列範例提示詞,透過 Codex 進行效能優化:
  • 為此函式撰寫單元測試,包括邊界案例和失敗路徑。

  • 為此排序工具產生屬性測試。

  • 擴充此測試檔案,以涵蓋與 null 輸入及無效狀態相關的遺漏情境。

用例 5:加快開發速度

Codex 透過加快開發週期的起始與收尾階段,協助團隊提升開發速度。

在啟動新功能開發時,工程師會利用它搭建樣板程式碼架構——生成資料夾、模組和 API 存根,以便快速建立可執行的程式碼,而無需手動編寫每個部分。

當專案接近發布時,Codex 可透過處理較小但不可或缺的任務來協助在緊迫的期限內達成目標,例如對錯誤進行分類、填補最後一哩的實作缺口,以及生成部署腳本、遙測掛鈎或設定檔。

Codex 亦可用於將產品回饋轉化為起始程式碼。工程師經常會貼上用戶請求或規範,讓 Codex 產生初稿,之後再回頭進行調整與優化。

「我成日都喺開會,但因為 Codex 一直喺背景中運作,我仍然合併咗 4 個 PR。」
產品工程師,ChatGPT Enterprise
可以嘗試使用以下範例提示詞,透過 Codex 提高開發速度:
  • 為 POST/events 搭建新的 API 路由框架,並加入基本驗證和日誌記錄功能。

  • 使用此範本[插入遙測代碼範例]產生一個遙測掛鈎,用於追蹤新導入流程的成功或失敗情況。

  • 根據此規格說明建立存根實作:[插入規格或產品意見回饋]。

用例 6:保持工作流暢

當工程師的日程安排較為瑣碎且經常被中斷時,Codex 能協助他們保持高效能。
它可用於記錄未完成的工作、將筆記轉化為可運作的原型,或拆分出稍後可再查看的探索性任務。這讓人們更容易在不失去上下文脈絡的情況下暫停及恢復工作,尤其是在需要待命或有許多會議時。

「如果我發現需要順手修復的問題,我會啟動一個 Codex 任務而非切換分支,等有空時再檢閱它產生的 PR。」
後端工程師,ChatGPT API
可以嘗試使用以下範例提示詞,透過 Codex 保持工作流暢:

用例 7:探索與構思

Codex 亦適用於開放式工作,例如尋找替代方案或驗證設計決策。你可以提示它提供解決問題的不同方法、探索不熟悉的模式,或對各項假設進行壓力測試。這有助於權衡利弊、擴展設計選項,並優化實作選擇。

Codex 亦用於識別相關錯誤。給定一個已知問題或已棄用的方法,Codex 可以識別程式碼中其他地方的類似模式,讓你更容易找出效能倒退問題或完成清理工作。

「Codex 幫我解決冷啟動問題——我貼上規格和文件後,它就會為我搭建程式碼框架,或者指出我遺漏了甚麼。」
產品工程師,ChatGPT 桌面版
可以嘗試使用以下範例提示詞,透過 Codex 進行探索和構思:
  • 如果系統採用事件驅動而非請求/回應模式,會如何運作?

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

  • 以更偏向函數式的風格重寫此內容,避免狀態變更和副作用。


最佳做法

當獲得清晰的結構、上下文以及迭代空間時,Codex 的表現最為出色。以下為 OpenAI 團隊為了在日常工作中穩定發揮其效益,而逐步建立的幾項工作習慣。

從詢問模式開始

對於重大的變更,建議先使用詢問模式提示 Codex 製作實作計劃,之後當你切換至程式碼模式時,該計劃便可作為後續提示詞的輸入內容。這種兩步走的流程能讓 Codex 保持專注,並有助於避免輸出錯誤。Codex 最適合處理範疇明確的任務,例如你或隊友大約一小時可完成的工作,或實作規模在數百行程式碼以內的任務。隨著模型不斷改進,預計它能處理的任務規模也會增大。

迭代優化 Codex 的開發環境

設定啟動腳本、環境變數和互聯網存取權限,可大幅降低 Codex 的錯誤率。在執行任務時,請留意是否有透過 Codex 的環境配置來修正的建構錯誤。這可能需要反覆嘗試幾次,但長遠來看能帶來顯著的效率提升。

像撰寫 GitHub 問題一樣構建提示詞

當提示詞模仿你在 PR 或問題中描述變更的方式時,Codex 的回應效果會更好。這意味著在必要時應包括檔案路徑、組件名稱、差異內容及文件片段。使用「按照[X 模組]中的方式實作」之類的模式進行提示,能有效改善結果。

將 Codex 任務佇列作為輕量級待辦清單

快速建立任務,以記錄臨時想法、未完成內容或臨時修復。毋須一次性產生完整的 PR,沒有需要感到壓力。Codex 作為一個暫存區效果很好,你可以在重新專注時返回處理。

使用 AGENTS.md 提供持續上下文

維護一個 AGENTS.md 檔案,有助於 Codex 在程式碼儲存庫中跨提示詞執行時更具效率。這些檔案通常包含命名慣例、商業邏輯、已知的特殊情況,或是 Codex 無法單憑程式碼推斷出來的相依性。有關如何建構 AGENTS.md 檔案的更多資訊,請參閱文檔。

運用「N 中擇優」功能提升輸出質素

N 中擇優功能讓你可同時為單一任務產生多個回覆,以快速探索多個解決方案並從中挑選最優者。對於較複雜的任務,你可以檢視幾次迭代的結果,並結合不同回應的部分內容,以獲得更好的結果。


展望未來

Codex 仍處於研究預覽階段,但它已經對我們的構建方式帶來實質影響,幫助我們加快速度、寫出更好的程式碼,並著手處理原本可能永遠不會被列為優先事項的工作。

我們對前方的潛力感到振奮——隨著模型不斷進步,以及 Codex 更深入地融入工作流程中,我們期待能開啟更多運用它開發軟件的強大方式。我們將持續分享在此過程中所獲得的經驗。

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

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