译者 | 布加迪
审校 | 重楼
“软件工程正在发生变革;到 2025 年底,它将焕然一新。”Greg Brockman在OpenAI 发布会上的开场白为接下来的活动定下了基调。OpenAI随后发布了Codex,这是一款旨在与开发者协同工作的云原生软件智能体。
Codex 并非单一产品,而是一系列基于OpenAI的最新编程模型codex-1的智能体。Codex CLI于几周前发布,是一款终端内运行的轻量级配套工具。如今,人们的注意力转向更强大的远程智能体,它完全可在ChatGPT上使用。你可以启动几台“微型计算机”,在喝咖啡的同时处理多项任务。本文将概述ChatGPT端的Codex,我们后续很快会发布这方面的一些文章。
从自动完成到氛围编程
OpenAI早在2021年就开始致力于AI辅助编程,当时最初的Codex模型发布,为GitHub Copilot等工具提供支持。那时候,它更像是为开发者提供自动完成支持。
从那以后,情况发生了很大变化。得益于强化学习领域的重大进步,Codex的功能得到了显著增强。
如今在氛围编程司空见惯的环境下,你只需用母语描述想要实现的功能,Codex就会自行构建。最新版本Codex-1基于OpenAI的o3架构而建,使用真实的合并请求进行了微调。它不仅仅可以生成代码,还可以遵循诸如代码检查、编写测试和保持一致的风格等最佳实践,使其在实际开发工作中真正发挥作用。
可用性和限制
Codex目前可供ChatGPT Pro、Enterprise和Team用户使用。Plus和EDU用户预计很快也能使用。在研究预览期间,使用量会受到较大限制,但这些限制可能会根据需求而进行调整。未来计划包括推出面向Codex的API、集成到CI流水线,以及统一CLI版本和ChatGPT版本,以便在本地开发和云端开发之间无缝切换。
如何在ChatGPT界面中访问Codex?
所需时间:5 分钟
按照以下简单步骤开始使用Codex:
1. 在ChatGPT中找到Codex
打开ChatGPT,进入到左侧导航栏中的“Codex”侧边栏,你将看到一个新的“Codex(beta)”图标。点击它即可显示智能体仪表板。
2. 多因子身份验证
点击“设置 MFA以继续”,使用你首选的身份验证应用程序(比如Google Authenticator 或 Authy)扫描二维码,然后输入二维码进行验证。就这样,你已设置完毕。
3. 连接GitHub(仅限首次使用)
点击OAuth 即可授权Codex读取/写入你的代码库。你可以将其限制为特定组织或个人项目。
4. 选择代码库和分支
选择你希望Codex处理的项目。该智能体会将此分支克隆到其自己的沙盒中。
5. 配置环境(可选)
就像在CI作业中一样添加环境变量、机密信息或设置命令。代码检查程序和格式化程序已预先安装,但你可以根据需要覆盖版本。
6. 选择任务模板
询问:“请解释架构。”
代码:“查找并修复test_api.py 中的不稳定测试。”
建议:让Codex扫描代码库,并提议从事维护任务。
或者只需用自然语言输入自定义指令即可。
7. 运行和多任务处理
点击“启动”。每个作业都会启动自己的微型虚拟机;可以实现任务并行处理,并在 ChatGPT 中的其他地方继续聊天。
8. 查看结果
绿色复选标记表示测试已通过。点击任务卡即可查看差异、模型的解释和完整工作日志。
9. 合并或迭代
点击“打开合并请求”即可将分支推送回到GitHub,或者在需要更改时回复任务,附以后续操作说明。
OpenAI Codex 演示
下面将给出不同的示例,表明这款全新的软件开发智能体如何帮助你简化工作!
示例 1:加速开发
OpenAI工程师Nacho Soto展示了Codex如何通过设置项目脚手架(比如Swift软件包)帮助他更快地启动新任务。借助简单的提示词,他就能够卸载设置工作,致力于构建功能,而Codex会在后台处理其余工作。
示例2:审核工作流程
Codex不仅支持代码生成,还适用于审核工作流程,开发人员因此可以检查AI生成的合并请求,发现格式问题之类的问题,并提示Codex进行修复。
示例3:使用Codex修复Papercuts
工程师Max Johnson解释了Codex如何在不影响其专注力的情况下帮助修复小错误和代码质量问题。他没有切换上下文,而是将这些任务交给了Codex,稍后审核结果以改进代码库。
示例4:通话期间查找代码库中的错误
Calvin分享了Codex如何在值班期间帮助处理紧急任务。通过向Codex发送堆栈跟踪信息,他可以快速获得诊断或修复方法。它还有助于微调警报并处理日常操作工作,从而减少手动工作。
OpenAI Codex与o3 对比
提示:“请修复matplotlib/matplotlib代码库中的以下问题。请在当前代码执行会话中编辑和测试代码文件,解决以下问题。代码库已克隆到/testbed文件夹中。你必须完全解决问题,那样你的解决办法才被视为正确。”
复制Problem statement:[Bug]: Windows correction is not correct in `mlab._spectral_helper` ### Bug summary Windows correction is not correct in `mlab._spectral_helper`: https://github.com/matplotlib/matplotlib/blob/3418bada1c1f44da1f73916c5603e3ae79fe58c1/lib/matplotlib/mlab.py#L423-L430 The `np.abs` is not needed, and give wrong result for window with negative value, such as `flattop`. For reference, the implementation of scipy can be found here : https://github.com/scipy/scipy/blob/d9f75db82fdffef06187c9d8d2f0f5b36c7a791b/scipy/signal/_spectral_py.py#L1854-L1859 ### Code for reproduction ```python import numpy as np from scipy import signal window = signal.windows.flattop(512) print(np.abs(window).sum()**2-window.sum()**2) ``` ### Actual outcome 4372.942556173262 ### Expected outcome 0 ### Additional information _No response_ ### Operating system _No response_ ### Matplotlib Version latest ### Matplotlib Backend _No response_ ### Python version _No response_ ### Jupyter version _No response_ ### Installation None
输出:
观察:
Codex生成的修复比o3生成的修复更准确、更完整。它正确地移除了 mlab._spectral_helper中窗口归一化使用的不必要的np.abs() 函数,这会导致像flattop这样的负值窗口出现错误的结果。Codex用正确的数学表达式替换了错误的逻辑,使用(window2).sum() 而不是(np.abs(window)2).sum(),这与SciPy实现中的最佳实践相符。它还包含一个单元测试来验证该行为,使修复既可验证又可靠。相比之下,o3输出似乎不完整,没有明确解决核心问题,这使得Codex成为更出色的选择。
OpenAI Codex的工作原理
- Codex编写代码:模型先生成代码来解决给定任务。
- 运行代码:输出不仅仅加以评估以验证合理性,还会实际执行。
- 检查测试结果:Codex会观察生成的代码是否通过了相关的测试。
- 只有成功完成任务后,Codex才会获得奖励:不像传统的LLM专注于下一个单词预测,只有代码端到端运行良好,Codex才能获得高分。
- 通过反馈进行学习:如果代码失败,Codex会重试:创建复现脚本、修复代码检查错误,并调整格式,直到符合标准。
- 像初级开发人员一样不断改进完善:这种训练方法教会Codex的行为不再像文本生成器,而更像遵循实际编程实践的深思熟虑的工程师。
Codex-1在标准化基准测试和OpenAI内部工作流程中的表现均优于之前的模型。如下所示,它在SWE-Bench Verified基准测试中在所有次尝试都获得了更高的准确率,并在 OpenAI 内部软件工程任务中保持领先。这凸显了Codex-1在实际应用中的可靠性,尤其对于将其集成到日常工作流程中的开发人员而言。
Cloud Workshop一窥
每次你按下Codex侧边栏中的“运行”按钮,系统都会创建一个微型虚拟机沙盒:其自己的文件系统、CPU、RAM和锁定的网络策略。你的代码库会被克隆,环境变量被注入,常用的开发者工具(代码检查程序、格式化程序、测试运行器)也会被预先安装。这种隔离带来了两个直接的好处:
- 安全性和可重复性——恶意脚本无法触及你的笔记本电脑或泄露机密信息;整个运行过程可以稍后重放。
- 大规模并行——需要修复拼写错误、协调超时并查找神秘错误?可以启动三个任务,并排查看结果。
可选的AGENTS.md文件就像面向机器人的自述文件:你可以描述项目布局、测试运行方式、首选的提交样式,甚至在步骤之间打印输出ASCII猫的请求。指令越丰富,Codex的运行就越流畅。
结论
将来编程将类似于高级编排:用户表明意图,智能体负责处理细节。Codex代表了开发者与代码交互方式方面的转变,从手动编写所有内容转变为编排处理高级任务。工程师现在更加专注于意图和验证,而Codex负责具体执行。对许多人来说,这标志着全新开发工作流程的开始,即人和智能体协作将成为一种常态,而非例外。
原文标题:How to Access and Use OpenAI Codex?,作者:Nitika Sharma