2021年,OpenAI发布Codex,首次让"用自然语言写代码"从概念走向可用。2025年之后,随着Agentic AI的爆发,Codex类能力不再只是"代码补全工具",而是演化为能理解任务、规划步骤、调用工具、自主执行的智能体(Agent)。
对于想系统学习智能体的开发者而言,Codex是一个极佳的切入点——它同时涵盖了智能体的三大核心能力:语言理解、工具调用、任务执行。本文从零开始,系统拆解如何以Codex为范本,建立智能体开发的完整知识体系。
智能体(Agent)是能够感知环境、做出决策、执行动作以达成目标的系统。与传统程序不同,智能体的核心特征是:
特征 | 传统程序 | 智能体 |
|---|---|---|
输入 | 固定格式 | 自然语言/多模态 |
决策 | 硬编码逻辑 | 模型推理 |
执行 | 预设流程 | 动态规划 |
环境 | 封闭 | 开放、不确定 |
目标 | 明确指令 | 模糊意图 |
text
┌─────────────────────────────────┐
│ Agent 架构 │
│ ┌───────────┐ ┌───────────┐ │
│ │ 感知 │ │ 记忆 │ │
│ │ Perception│ │ Memory │ │
│ └───────────┘ └───────────┘ │
│ ┌───────────┐ ┌───────────┐ │
│ │ 规划 │ │ 执行 │ │
│ │ Planning │ │ Action │ │
│ └───────────┘ └───────────┘ │
└─────────────────────────────────┘Codex本质是一个代码领域的智能体:
学习Codex,就是学习智能体的最小完整闭环。
目标:理解智能体的"大脑"
需要掌握:
实践:
python
from openai import OpenAI
client = OpenAI()
response = client.chat.completions.create(
model="gpt-4",
messages=[
{"role": "system", "content": "你是一个代码助手"},
{"role": "user", "content": "写一个快速排序"}
]
)目标:让模型输出可控、可解析
核心技术:
Codex范式:
text
用户需求 → 模型推理 → 代码生成 → 执行验证 → 反馈修正目标:让智能体"动手做事"
这是从"聊天机器人"到"智能体"的关键跃迁。
python
tools = [
{
"type": "function",
"function": {
"name": "execute_code",
"description": "执行Python代码并返回结果",
"parameters": {
"type": "object",
"properties": {
"code": {"type": "string", "description": "要执行的代码"}
},
"required": ["code"]
}
}
}
]
response = client.chat.completions.create(
model="gpt-4",
messages=messages,
tools=tools,
tool_choice="auto"
)关键理解:模型不直接执行,而是输出调用意图,由外部系统执行并返回结果。
目标:让智能体"记住"并"成长"
记忆类型 | 实现方式 | 用途 |
|---|---|---|
短期记忆 | 对话历史 | 多轮对话 |
工作记忆 | 任务状态 | 长任务执行 |
长期记忆 | 向量数据库 | 知识检索 |
情景记忆 | 案例库 | 经验复用 |
RAG(检索增强生成):
text
用户问题 → 向量化 → 检索相关文档 → 拼接上下文 → 模型生成目标:让多个智能体协同完成复杂任务
Codex的进化方向之一就是多Agent协作:
python
class CodexAgent:
def __init__(self):
self.planner = PlannerAgent()
self.coder = CoderAgent()
self.reviewer = ReviewerAgent()
self.executor = ExecutorAgent()
async def solve(self, task: str):
plan = await self.planner.decompose(task)
for step in plan.steps:
code = await self.coder.generate(step)
review = await self.reviewer.check(code)
if review.approved:
result = await self.executor.run(code)
if not result.success:
code = await self.debugger.fix(code, result.error)
return resulttext
┌──────────────────────────────────────────────┐
│ Codex Agent System │
│ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ 用户接口 │──▶│ 任务规划 │──▶│ 代码生成 │ │
│ └─────────┘ └─────────┘ └─────────┘ │
│ ▲ │ │ │
│ │ ▼ ▼ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ 结果反馈 │◀──│ 执行引擎 │◀──│ 代码审查 │ │
│ └─────────┘ └─────────┘ └─────────┘ │
│ │ │
│ ┌───────┴───────┐ │
│ ▼ ▼ │
│ ┌─────────┐ ┌─────────┐ │
│ │ 沙箱环境 │ │ 记忆库 │ │
│ └─────────┘ └─────────┘ │
└──────────────────────────────────────────────┘(1)安全沙箱
Codex执行代码必须在隔离环境:
python
import docker
def execute_in_sandbox(code: str, timeout: int = 30):
client = docker.from_env()
container = client.containers.run(
"python:3.11-slim",
command=f"python -c '{code}'",
mem_limit="512m",
cpu_period=100000,
cpu_quota=50000,
network_disabled=True,
remove=True,
timeout=timeout
)
return container(2)人机协同
关键决策点保留人工确认:
(3)可观测性
记录每一步的:
框架 | 特点 | 适用场景 |
|---|---|---|
LangChain | 生态丰富、组件多 | 快速原型 |
LangGraph | 图结构、状态管理 | 复杂流程 |
AutoGen | 多Agent对话 | 协作任务 |
CrewAI | 角色分工 | 团队模拟 |
OpenAI Assistants API | 官方托管 | 快速集成 |
自研 | 完全可控 | 生产环境 |
python
import openai
import subprocess
import json
class MiniCodex:
def __init__(self):
self.client = openai.OpenAI()
self.memory = []
def run(self, task: str, max_iterations: int = 5):
messages = [
{"role": "system", "content": SYSTEM_PROMPT},
{"role": "user", "content": task}
]
for i in range(max_iterations):
response = self.client.chat.completions.create(
model="gpt-4",
messages=messages,
tools=TOOLS,
tool_choice="auto"
)
msg = response.choices[0].message
messages.append(msg)
if msg.tool_calls:
for tool_call in msg.tool_calls:
result = self.execute_tool(tool_call)
messages.append({
"role": "tool",
"tool_call_id": tool_call.id,
"content": result
})
else:
return msg.content
return "达到最大迭代次数"
def execute_tool(self, tool_call):
name = tool_call.function.name
args = json.loads(tool_call.function.arguments)
if name == "execute_python":
return self.run_python(args["code"])
elif name == "read_file":
return self.read_file(args["path"])
elif name == "write_file":
return self.write_file(args["path"], args["content"])
def run_python(self, code: str) -> str:
result = subprocess.run(
["python", "-c", code],
capture_output=True,
text=True,
timeout=30
)
return f"stdout: {result.stdout}\nstderr: {result.stderr}"python
SYSTEM_PROMPT = """
你是一个专业的代码智能体。你的目标是帮助用户完成编程任务。
工作流程:
1. 理解用户需求,必要时提问澄清
2. 制定解决计划
3. 编写代码
4. 执行代码验证
5. 如果失败,分析错误并修复
6. 返回最终结果
原则:
- 代码必须可执行
- 优先使用标准库
- 添加必要注释
- 处理异常情况
- 不确定时明确说明
工具使用:
- execute_python: 执行Python代码
- read_file: 读取文件
- write_file: 写入文件
"""python
TOOLS = [
{
"type": "function",
"function": {
"name": "execute_python",
"description": "执行Python代码并返回输出",
"parameters": {
"type": "object",
"properties": {
"code": {"type": "string", "description": "Python代码"}
},
"required": ["code"]
}
}
},
{
"type": "function",
"function": {
"name": "read_file",
"description": "读取文件内容",
"parameters": {
"type": "object",
"properties": {
"path": {"type": "string"}
},
"required": ["path"]
}
}
}
]从MVP到生产级,需要补充:
阶段 | 时间 | 目标 | 产出 |
|---|---|---|---|
基础 | 1-2周 | 理解LLM与提示工程 | 能写有效Prompt |
入门 | 2-4周 | 掌握Function Calling | 能调用API工具 |
进阶 | 1-2月 | 构建完整Agent | 能完成实际任务 |
精通 | 3-6月 | 多Agent协作 | 能设计复杂系统 |
专家 | 持续 | 前沿研究与优化 | 能发表/开源 |
Codex智能体的意义,不在于它能写多少代码,而在于它展示了一个完整的智能体范式:理解意图、规划步骤、调用工具、执行验证、反馈迭代。
从零系统学习智能体,本质上是在学习一种新的软件范式——从"编写逻辑"到"设计能力",从"确定性程序"到"概率性系统",从"人操作机器"到"人机协作"。
Codex是这条路的起点。掌握它,你就掌握了通往Agentic AI时代的钥匙。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。