Поделиться через


Кодекс с Azure OpenAI в моделях Microsoft Foundry

Интерфейс командной строки OpenAI Codex CLI является тем же агентом программирования, который используется в Codex от ChatGPT. Этот агент программирования можно запускать полностью на инфраструктуре Azure, сохраняя данные в пределах границы соответствия с дополнительными преимуществами безопасности корпоративного уровня, частных сетей, управления доступом на основе ролей и планируемого управления расходами. Codex больше, чем чат с агентом кода— это асинхронный агент программирования, который можно активировать из терминала, VS Code или из GitHub Actions runner. Codex позволяет автоматически открывать pull запросы, рефакторить файлы и писать тесты, используя учетные данные проекта Foundry и развертываний Azure OpenAI.

Предпосылки

Требования Сведения
Операционные системы macOS 12+, Ubuntu 20.04+/Debian 10+, или Windows 11 через WSL2
Git (необязательно, рекомендуется) 2.23+ для встроенных вспомогательных запросов на вытягивание
ОЗУ Минимум 4 ГБ (рекомендуется 8 ГБ)

Разверните модель в Foundry

  1. Перейдите к Foundry и создайте новый project.
  2. В каталоге моделей выберите модель рассуждения, например gpt-5.3-codex, gpt-5.2-codex,gpt-5.1-codex-max, gpt-5.1-codex, gpt-5.1-codex-mini, gpt-5-codex, gpt-5, gpt-5-mini или gpt-5-nano.
  3. Чтобы развернуть модель из каталога моделей, выберите Использовать эту модель, или, если используется панель Deployments в Azure OpenAI, выберите deploy model.
  4. Скопируйте URL-адрес конечной точки и ключ API.

Установка интерфейса командной строки Codex

В терминале выполните следующие команды, чтобы установить Codex CLI

npm install -g @openai/codex
codex --version # verify installation

Создание и настройка config.toml

  1. Чтобы использовать Cli Codex с Azure, необходимо создать и настроить файл config.toml.

    Файл config.toml должен храниться в каталоге ~/.codex . Создайте файл в этом каталоге или измените существующий config.toml файл, если он уже существует:

    cd ~/.codex
    nano config.toml
    
  2. Скопируйте приведенный ниже текст, чтобы использовать API ответов версии 1. В API версии 1 больше не нужно передавать версию API, но необходимо включить /v1 в base_url путь. Невозможно передать ключ 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"
    
  3. После сохранения обновлений config.toml файла вернитесь в терминал и создайте экземпляр переменной среды, на которую ссылается файл конфигурации.

    # Linux, macOS, or WSL 
    export AZURE_OPENAI_API_KEY="<your-api-key>"
    
  4. Теперь выполните одну из следующих команд в терминале, чтобы проверить, успешно ли выполнена конфигурация cli Codex:

    Command Цель
    кодекс Запуск интерактивного пользовательского интерфейса терминала (TUI)
    codex "Начальный запрос" Запуск TUI с начальным запросом
    codex exec "Начальная подсказка" Запуск TUI в неинтерактивном режиме автоматизации

Использование codex в редакторе Visual Studio Code

Вы также можете использовать Codex непосредственно в коде Visual Studio при использовании расширения OpenAI Codex

  1. Если у вас еще нет кода Visual Studio, его можно установить для macOS и Linux.

  2. Установите расширение OpenAI Codex. Расширение зависит от файла config.toml, который был настроен для Codex CLI.

  3. Если вы находитесь в новом сеансе терминала, настройте переменную среды для AZURE_OPENAI_API_KEY:

    export OPENAI_API_KEY="<your-azure-api-key-here>"
    

    Замечание

    При использовании WSL также установите ту же переменную среды на хосте Windows, чтобы расширение могло его прочитать при необходимости.

  4. Запустите VS Code из одного сеанса терминала. (Запуск из средства запуска приложений может привести к тому, что переменная ключевой среды API недоступна для расширения Codex.)

    code .
    
  5. Теперь вы сможете использовать Codex в Visual Studio Code для чата, редактирования и предварительного просмотра изменений при переключение между тремя режимами утверждения.

Режимы утверждения

Режимы утверждения определяют, сколько автономии и взаимодействия вы хотите иметь с Codex.

Режим утверждения Description
Чат Для чата и планирования с моделью.
Агент Codex может считывать файлы, вносить изменения и выполнять команды в рабочем каталоге автоматически. Codex потребует утверждения действий за пределами рабочего каталога или доступа к Интернету.
Агент (полный доступ) Все возможности режима агента без необходимости пошагового утверждения. Режим полного доступа не следует использовать без полного понимания потенциальных рисков, а также реализации дополнительных мер защиты, таких как запуск в контролируемой среде песочницы.

Это важно

Мы рекомендуем ознакомиться с рекомендациями OpenAI по безопасности Codex.

Постоянное руководство с AGENTS.md

Дополнительные инструкции и рекомендации по Codex можно предоставить с помощью AGENTS.md файлов. Codex ищет файлы AGENTS.md в следующих местах и объединяет их сверху вниз, предоставляя контекст о ваших личных предпочтениях, информации о проекте и текущей задаче.

  • ~/.codex/AGENTS.md— личное глобальное руководство.
  • AGENTS.md в корневом каталоге репозитория — общие заметки проекта.
  • AGENTS.md в текущем рабочем каталоге — особенности подкаталогов/функциональности.

Например, чтобы помочь Codex понять, как писать код для агентов Foundry, можно создать AGENTS.md в корневом каталоге проекта со следующим содержимым, производным от документации по пакету SDK для агентов ИИ Azure.

# Instructions for working with 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

Запустите кодекс со следующим начальным запросом:

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 может выполняться как часть конвейера непрерывной интеграции (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"

Устранение неполадок

Симптом Решение
401 Unauthorized или 403 Forbidden Экспортируйте переменную среды AZURE_OPENAI_API_KEY правильно. Убедитесь, что ваш ключ имеет доступ к проекту/развертыванию.
Убедитесь, что ключ API не передается env_key в виде строки непосредственно в config.toml файл. Необходимо передать допустимую переменную среды.
ENOTFOUND, DNS error или 404 Not Found Убедитесь, что в base_urlconfig.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 При запуске VS Code из WSL с расширением Codex расширение может проверить переменную среды ключа API на локальном узле windows, а не в оболочке терминала, которая запустила VS Code. Чтобы устранить эту проблему, задайте переменную среды на локальном узле Windows, а затем запустите новый терминал из WSL и запустите VS Code.code .