你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
OpenAI 的 Codex CLI 是支持 ChatGPT Codex 的编码代理。 可以在 Azure 基础结构上完全运行此编码代理,同时将数据保留在合规性边界内,并具有企业级安全性、专用网络、基于角色的访问控制和可预测的成本管理等优势。 Codex 不仅仅是与代码代理聊天 - 它是一种异步编码代理,可以从终端、VS Code 或 GitHub Actions 运行程序触发。 Codex 允许使用 AI Foundry 项目和 Azure OpenAI 部署的凭据自动打开拉取请求、重构文件和编写测试。
先决条件
- Azure 订阅 - 免费创建订阅
- Azure AI Foundry 中的参与者权限。
-
homebrew或npm,用于安装 Codex CLI 或 VS Code Codex 扩展。
| 要求 | 详细信息 |
|---|---|
| 操作系统 | macOS 12+、Ubuntu 20.04+/Debian 10+或 Windows 11 通过 WSL2 |
| Git (可选,建议) | 2.23+,用于内置拉取请求帮助程序 |
| RAM | 最低 4 GB (建议使用 8 GB) |
在 Azure AI Foundry 中部署模型
- 转到 Azure AI Foundry 并创建新项目。
- 从模型目录中选择一个推理模型,例如
gpt-5-codex,gpt-5或gpt-5-minigpt-5-nano。 - 若要从模型目录部署模型,请选择“ 使用此模型”,或使用 Azure OpenAI 部署 窗格选择 部署模型。
- 复制终结点 URL 和 API 密钥。
安装 Codex CLI
在终端中运行以下命令以安装 Codex CLI
创建和配置 config.toml
若要将 Codex CLI 与 Azure 配合使用,需要创建和设置
config.toml文件。config.toml 文件需要存储在
~/.codex目录中。 在此目录中创建文件config.toml,或者编辑现有文件(如果已存在):cd ~/.codex nano config.toml复制以下文本以使用 v1 响应 API。 使用 v1 API ,不再需要传递 api 版本,但必须在路径中包含
base_url/v1。 不能将 API 密钥作为字符串直接传递给env_key。env_key必须指向环境变量。 使用你的资源名称更新base_url:model = "gpt-5-codex" # Replace with your actual Azure model deployment name model_provider = "azure" model_reasoning_effort = "medium" [model_providers.azure] name = "Azure OpenAI" base_url = "https://YOUR_RESOURCE_NAME.openai.azure.com/openai/v1" env_key = "AZURE_OPENAI_API_KEY" wire_api = "responses"将更新
config.toml保存到文件后,返回到终端,并创建配置文件中引用的环境变量实例。# Linux, macOS, or WSL export AZURE_OPENAI_API_KEY="<your-api-key>"现在,在终端中运行以下命令之一,以测试 Codex CLI 配置是否成功:
Command 目的 编码集 启动交互式终端用户界面 (TUI) codex“初始提示” 使用初始提示启动 TUI codex exec “初始提示” 在非交互式“自动化模式”中启动 TUI
在 Visual Studio Code 中使用 Codex
使用 OpenAI Codex 扩展时,还可以直接在 Visual Studio Code 中使用 Codex
如果还没有 Visual Studio Code,可以安装适用于 macOS 和 Linux 的 Visual Studio Code。
安装 OpenAI Codex 扩展。 该扩展依赖于为 Codex CLI 配置的
config.toml文件。如果您在新的终端会话中,请设置环境变量
AZURE_OPENAI_API_KEY:export OPENAI_API_KEY="your-azure-api-key-here"从同一终端会话启动 VS Code。 (从应用启动器启动可能会导致 API 密钥环境变量不适用于 Codex 扩展。
code .现在,你将能够在 Visual Studio Code 中使用 Codex 聊天、编辑和预览更改,同时切换三种审批模式。
审批模式
审批模式决定了你想要与 Codex 拥有多少自治和交互。
| 审批模式 | Description |
|---|---|
| Chat | 使用模型进行聊天和规划。 |
| 代理人 | Codex 可以自动读取文件、进行编辑和运行工作目录中的命令。 Codex 需要获得批准才能进行工作目录外的活动或访问互联网。 |
| 代理(完全访问权限) | 无需分步审批即可使用代理模式的所有功能。 如果不充分了解潜在风险,以及实施其他防护措施(例如在受控沙盒环境中运行),就不应使用完全访问模式。 |
重要
建议查看 OpenAI 的 Codex 安全性指南。
使用 AGENTS.md 的持续指导
可以使用 AGENTS.md 文件为 Codex 提供额外的说明和指导。 Codex 在以下位置查找 AGENTS.md 文件,并从上到下合并这些文件,从而提供关于个人偏好、项目特定细节和当前任务的上下文。
-
~/.codex/AGENTS.md– 个人全球指导。 -
AGENTS.md(位于存储库的根目录)- 共享项目备注。 -
AGENTS.md(位于当前工作目录中)- 子文件夹/功能细节。
例如,为了帮助 Codex 了解如何为 Azure AI Foundry 代理编写代码,可以使用以下内容在项目根目录中创建一个 AGENTS.md ,这些内容派生自 Azure AI 代理 SDK 文档:
# Instructions for working with Azure AI Foundry Agents
You are an expert in the Azure AI Agents client library for Python.
## Key Concepts
- **Client Initialization**: Always start by creating an `AIProjectClient` or `AgentsClient`. The recommended way is via `AIProjectClient`.
- **Authentication**: Use `DefaultAzureCredential` from `azure.identity`.
- **Agent Creation**: Use `agents_client.create_agent()`. Key parameters are `model`, `name`, and `instructions`.
- **Tools**: Agents use tools to perform actions like file search, code interpretation, or function calls.
- To use tools, they must be passed to `create_agent` via the `tools` and `tool_resources` parameters or a `toolset`.
- Example: `file_search_tool = FileSearchTool(vector_store_ids=[...])`
- Example: `code_interpreter = CodeInterpreterTool(file_ids=[...])`
- Example: `functions = FunctionTool(user_functions)`
## Example: Creating a basic agent
\`\`\`python
import os
from azure.ai.projects import AIProjectClient
from azure.identity import DefaultAzureCredential
# 1. Create Project Client
project_client = AIProjectClient(
endpoint=os.environ["PROJECT_ENDPOINT"],
credential=DefaultAzureCredential(),
)
# 2. Get Agents Client
with project_client:
agents_client = project_client.agents
# 3. Create Agent
agent = agents_client.create_agent(
model=os.environ["MODEL_DEPLOYMENT_NAME"],
name="my-helpful-agent",
instructions="You are a helpful agent that can answer questions.",
)
print(f"Created agent with ID: {agent.id}")
\`\`\`
在前面的示例中,Python 代码块中的反引号已转义,以确保正常呈现。 可移除 \。
尝试使用 “Codex CLI”
启动 Codex 时使用以下初始提示:
codex "write a python script to create an Azure AI Agent with file search capabilities"
其他建议的测试:
# generate a unit test for src/utils/date.ts
# refactor this agent to use the Code Interpreter tool instead
GitHub Actions 中的 Codex
Codex 可以作为持续集成(CI)管道的一部分执行。 将 API 密钥存储在存储库的机密存储 AZURE_OPENAI_KEY 中,并添加如下所示的作业,以在发布之前自动更新更改日志:
jobs:
update_changelog:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Update changelog via Codex
run: |
npm install -g @openai/codex
export AZURE_OPENAI_API_KEY="${{ secrets.AZURE_OPENAI_KEY }}"
codex -p azure exec --full-auto "update CHANGELOG for next release"
Troubleshooting
| 症状 | 解决方案 |
|---|---|
401 Unauthorized 或 403 Forbidden |
正确导出AZURE_OPENAI_API_KEY环境变量。 确认密钥具有项目/部署访问权限。 请确保不会将 API 密钥作为字符串直接传递到 env_keyconfig.toml文件中。 必须传递有效的环境变量。 |
ENOTFOUND、DNS error 或 404 Not Found |
验证 base_url 中的 config.toml 是否使用你的资源名称和正确的域且包含 /v1。 例如, base_url = "https://<your-resource>.openai.azure.com/openai/v1"。 |
| CLI 忽略 Azure 设置 | 打开 ~/.codex/config.toml 并确保: - model_provider = "azure" 已设置。 - 该 [model_providers.azure] 部分存在。 - env_key = "AZURE_OPENAI_API_KEY" 与环境变量名称匹配。 |
| Entra ID 支持 | Entra ID 支持目前不适用于 Codex。 若要跟踪此功能的状态,请参阅新增了支持的拉取请求。 |
401 Unauthorized 仅使用 WSL + VS Code Codex 扩展 |
使用 Codex 扩展从 WSL 内部运行 VS Code 时,扩展可能会检查本地 Windows 主机上的 API 密钥环境变量,而不是在启动 VS Code 的终端 shell 中。 若要缓解此问题,请在本地 Windows 主机上设置环境变量,然后从 WSL 启动一个新终端,并在其中启动 VS Codecode .。 |