1. 引言
ChatGPT Plus 与 ChatGPT Pro 是 OpenAI 面向不同需求用户推出的订阅方案,而 Codex 则是 OpenAI 推出的 AI 编程助手。很多开发者关心的是:这三者到底有什么区别?在日常开发中如何组合使用?本文不讨论充值渠道与价格策略,而是从技术角度出发,围绕模型能力、API 调用、Codex 编程实战、提示词工程、自动化工作流等方向,给出可落地的使用指南。
本文默认读者已经拥有 ChatGPT Plus 或 Pro 账号,并具备基础的 Python 与命令行操作能力。文中所有代码示例均基于 2026 年 8 月可用的公开接口与工具链编写,读者可根据自身环境微调。
2. 模型能力对比
2.1 ChatGPT Plus 与 Pro 的差异
从技术角度看,Plus 与 Pro 的核心差异主要体现在以下几个方面:
- 上下文窗口长度:Pro 通常支持更长的上下文窗口,适合处理超长文档与大型代码库。
- 推理次数与深度:Pro 在复杂推理任务上会分配更多计算资源,输出质量更稳定。
- 高级语音与多模态:Pro 解锁更完整的语音对话与图像理解能力。
- 速率限制:Pro 的 API 速率限制更高,适合自动化脚本高频调用。
2.2 Codex 的定位
Codex 是 OpenAI 的编程智能体,它不仅能补全代码,还能理解仓库结构、执行命令、运行测试并迭代修复。Codex 与 ChatGPT 的聊天界面不同,它更贴近「本地开发环境中的协作者」这一角色。
三者关系可以这样理解:
- ChatGPT Plus / Pro 是「对话与创作入口」。
- Codex 是「代码执行与工程落地入口」。
- 两者共享底层模型能力,但使用场景不同。
3. 环境准备
3.1 安装 Codex CLI
Codex 提供命令行工具,安装方式如下:
npm install -g @openai/codex
安装完成后,验证版本:
codex –version
3.2 配置 API Key
在终端中设置环境变量:
export OPENAI_API_KEY="sk-你的密钥"
建议将密钥写入 ~/.zshrc 或 ~/.bashrc,避免每次手动导出。
3.3 初始化项目
创建一个示例项目:
mkdir codex-demo
cd codex-demo
git init
4. Codex 实战:从需求到代码
4.1 用自然语言生成项目骨架
在项目目录下运行:
codex "创建一个 Python 命令行工具,用于统计指定目录下各文件类型的数量,并输出 Markdown 表格"
Codex 会自动生成项目文件,包括主脚本、依赖文件与 README。生成后,我们可以查看目录结构:
tree
4.2 代码审查与修复
Codex 可以读取仓库内容并执行测试。假设我们有一个存在 bug 的 Python 文件,可以这样让 Codex 修复:
codex "检查 main.py 中的逻辑错误,并运行测试验证修复结果"
Codex 会定位问题、修改代码、执行测试,并汇报结果。这种「计划-执行-验证」的闭环是 Codex 的核心价值。
4.3 与 Git 工作流集成
Codex 支持读取 Git 状态,我们可以让它基于未提交的改动生成提交信息:
codex "根据当前 git diff 生成规范的 commit message"
也可以让它自动完成阶段性提交:
codex "将当前改动提交到 git,提交信息要符合 Conventional Commits 规范"
5. 用 ChatGPT 构建自动化工作流
5.1 调用 OpenAI API
ChatGPT Plus / Pro 账号可以在 platform.openai.com 创建 API Key。下面是一个最小化的 Python 调用示例:
from openai import OpenAI
client = OpenAI()
response = client.chat.completions.create(
model="gpt-4.1",
messages=[
{"role": "system", "content": "你是一名资深 Python 工程师。"},
{"role": "user", "content": "请解释 Python 装饰器的执行顺序。"}
]
)
print(response.choices[0].message.content)
5.2 流式输出
对于长文本生成,流式输出能显著改善体验:
from openai import OpenAI
client = OpenAI()
stream = client.chat.completions.create(
model="gpt-4.1",
messages=[{"role": "user", "content": "写一段关于 FastAPI 的简介,200 字左右。"}],
stream=True
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="")
5.3 函数调用(Function Calling)
函数调用让模型可以触发本地工具,适合构建自动化 Agent。下面是一个查询天气的示例:
from openai import OpenAI
import json
client = OpenAI()
tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "获取指定城市的天气",
"parameters": {
"type": "object",
"properties": {
"city": {"type": "string", "description": "城市名称"}
},
"required": ["city"]
}
}
}
]
response = client.chat.completions.create(
model="gpt-4.1",
messages=[{"role": "user", "content": "北京今天天气怎么样?"}],
tools=tools
)
print(json.dumps(response.choices[0].message.tool_calls, ensure_ascii=False, indent=2))
6. 提示词工程实战
6.1 结构化输出
让模型输出 JSON 是常见需求,可以通过 response_format 强制约束:
from openai import OpenAI
client = OpenAI()
response = client.chat.completions.create(
model="gpt-4.1",
response_format={"type": "json_object"},
messages=[
{"role": "system", "content": "你只输出 JSON 格式。"},
{"role": "user", "content": "列出 3 个 Python Web 框架,包含名称与适用场景。"}
]
)
print(response.choices[0].message.content)
6.2 角色扮演与上下文管理
在复杂任务中,维护清晰的上下文至关重要。推荐使用消息数组管理多轮对话:
messages = [
{"role": "system", "content": "你是代码评审专家,只关注性能问题。"},
{"role": "user", "content": "请评审以下代码:\\n\\n```python\\ndef process(data):\\n result = []\\n for item in data:\\n result.append(item * 2)\\n return result\\n```"}
]
response = client.chat.completions.create(
model="gpt-4.1",
messages=messages
)
print(response.choices[0].message.content)
6.3 少样本提示
给模型提供少量示例,可以显著提升输出质量:
from openai import OpenAI
client = OpenAI()
messages = [
{"role": "system", "content": "将用户输入转换为 SQL 查询。"},
{"role": "user", "content": "查询所有年龄大于 30 的用户"},
{"role": "assistant", "content": "SELECT * FROM users WHERE age > 30;"},
{"role": "user", "content": "查询订单金额大于 100 的订单"}
]
response = client.chat.completions.create(
model="gpt-4.1",
messages=messages
)
print(response.choices[0].message.content)
7. Codex 与 ChatGPT 的组合工作流
7.1 需求分析阶段
使用 ChatGPT 进行需求拆解与方案设计,生成技术选型文档。例如:
请帮我设计一个日志分析系统,要求:
1. 支持多格式日志解析
2. 支持实时告警
3. 输出可视化报表
请给出架构图与模块划分。
7.2 编码实现阶段
将 ChatGPT 生成的架构文档交给 Codex 落地:
codex "根据 docs/architecture.md 中的设计,实现日志解析模块,并编写单元测试"
7.3 测试与重构阶段
Codex 执行测试后,将结果反馈给 ChatGPT 进行代码评审:
codex "运行 pytest,并将失败用例输出到 test-report.md"
随后将 test-report.md 内容粘贴给 ChatGPT,要求其分析失败原因并给出修复建议。
7.4 整体流程示意
#mermaid-svg-IjaRCqnEndW3UYgR{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-IjaRCqnEndW3UYgR .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-IjaRCqnEndW3UYgR .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-IjaRCqnEndW3UYgR .error-icon{fill:#552222;}#mermaid-svg-IjaRCqnEndW3UYgR .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-IjaRCqnEndW3UYgR .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-IjaRCqnEndW3UYgR .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-IjaRCqnEndW3UYgR .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-IjaRCqnEndW3UYgR .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-IjaRCqnEndW3UYgR .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-IjaRCqnEndW3UYgR .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-IjaRCqnEndW3UYgR .marker{fill:#333333;stroke:#333333;}#mermaid-svg-IjaRCqnEndW3UYgR .marker.cross{stroke:#333333;}#mermaid-svg-IjaRCqnEndW3UYgR svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-IjaRCqnEndW3UYgR p{margin:0;}#mermaid-svg-IjaRCqnEndW3UYgR .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-IjaRCqnEndW3UYgR .cluster-label text{fill:#333;}#mermaid-svg-IjaRCqnEndW3UYgR .cluster-label span{color:#333;}#mermaid-svg-IjaRCqnEndW3UYgR .cluster-label span p{background-color:transparent;}#mermaid-svg-IjaRCqnEndW3UYgR .label text,#mermaid-svg-IjaRCqnEndW3UYgR span{fill:#333;color:#333;}#mermaid-svg-IjaRCqnEndW3UYgR .node rect,#mermaid-svg-IjaRCqnEndW3UYgR .node circle,#mermaid-svg-IjaRCqnEndW3UYgR .node ellipse,#mermaid-svg-IjaRCqnEndW3UYgR .node polygon,#mermaid-svg-IjaRCqnEndW3UYgR .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-IjaRCqnEndW3UYgR .rough-node .label text,#mermaid-svg-IjaRCqnEndW3UYgR .node .label text,#mermaid-svg-IjaRCqnEndW3UYgR .image-shape .label,#mermaid-svg-IjaRCqnEndW3UYgR .icon-shape .label{text-anchor:middle;}#mermaid-svg-IjaRCqnEndW3UYgR .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-IjaRCqnEndW3UYgR .rough-node .label,#mermaid-svg-IjaRCqnEndW3UYgR .node .label,#mermaid-svg-IjaRCqnEndW3UYgR .image-shape .label,#mermaid-svg-IjaRCqnEndW3UYgR .icon-shape .label{text-align:center;}#mermaid-svg-IjaRCqnEndW3UYgR .node.clickable{cursor:pointer;}#mermaid-svg-IjaRCqnEndW3UYgR .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-IjaRCqnEndW3UYgR .arrowheadPath{fill:#333333;}#mermaid-svg-IjaRCqnEndW3UYgR .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-IjaRCqnEndW3UYgR .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-IjaRCqnEndW3UYgR .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-IjaRCqnEndW3UYgR .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-IjaRCqnEndW3UYgR .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-IjaRCqnEndW3UYgR .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-IjaRCqnEndW3UYgR .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-IjaRCqnEndW3UYgR .cluster text{fill:#333;}#mermaid-svg-IjaRCqnEndW3UYgR .cluster span{color:#333;}#mermaid-svg-IjaRCqnEndW3UYgR div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-IjaRCqnEndW3UYgR .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-IjaRCqnEndW3UYgR rect.text{fill:none;stroke-width:0;}#mermaid-svg-IjaRCqnEndW3UYgR .icon-shape,#mermaid-svg-IjaRCqnEndW3UYgR .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-IjaRCqnEndW3UYgR .icon-shape p,#mermaid-svg-IjaRCqnEndW3UYgR .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-IjaRCqnEndW3UYgR .icon-shape .label rect,#mermaid-svg-IjaRCqnEndW3UYgR .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-IjaRCqnEndW3UYgR .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-IjaRCqnEndW3UYgR .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-IjaRCqnEndW3UYgR :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}
否
是
ChatGPT 需求分析
生成架构文档
Codex 编码实现
运行测试
测试通过?
ChatGPT 分析失败原因
Codex 提交代码
8. 进阶技巧
8.1 使用 Codex 批量重构
Codex 支持跨文件修改,适合批量重构。例如:
codex "将项目中所有 print 语句替换为 logging 模块调用,并保持输出格式不变"
8.2 利用 ChatGPT 生成测试数据
from openai import OpenAI
import json
client = OpenAI()
response = client.chat.completions.create(
model="gpt-4.1",
response_format={"type": "json_object"},
messages=[
{"role": "system", "content": "生成 JSON 测试数据。"},
{"role": "user", "content": "生成 5 条用户数据,字段包括 id、name、email、age。"}
]
)
data = json.loads(response.choices[0].message.content)
print(json.dumps(data, ensure_ascii=False, indent=2))
8.3 自动化代码评审流水线
结合 Git Hooks 与 Codex,可以在提交前自动执行代码评审:
#!/bin/bash
# .git/hooks/pre-commit
codex "审查暂存区的代码改动,输出潜在问题与改进建议"
9. 常见问题
9.1 Codex 与 GitHub Copilot 的区别
Codex 更强调「理解整个仓库并执行多步任务」,而 Copilot 更侧重「行级补全」。Codex 适合自动化重构与测试驱动开发,Copilot 适合日常编码时的即时补全。
9.2 如何选择 Plus 还是 Pro
如果只是日常对话与轻量编程辅助,Plus 足够;如果需要处理超长上下文、高频 API 调用或复杂推理任务,Pro 更合适。
9.3 API 与网页版的差异
网页版适合交互式探索,API 适合构建自动化流程。两者共享底层模型,但 API 提供更精细的参数控制。
10. 总结
ChatGPT Plus / Pro 与 Codex 的组合,构成了一个完整的 AI 辅助开发闭环:ChatGPT 负责需求分析、方案设计与代码评审,Codex 负责编码实现、测试执行与仓库级重构。通过 API 与提示词工程,我们可以将这两者深度集成到自己的开发工作流中,显著提升效率。
本文从环境准备、Codex 实战、API 调用、提示词工程、组合工作流等角度,给出了可落地的技术方案。读者可以根据自身项目需求,灵活组合这些能力,构建属于自己的 AI 驱动开发流水线。
网硕互联帮助中心



评论前必须登录!
注册