こんにちは。
今回は、ついにリリースされたcodex
について、早速色々触ってみたのでその所感と、Rubyのバージョン変更方法について調査してみました。
🧠 Codexとは?
Codexは、OpenAIの高度なAIモデル「codex-1」を搭載し、自然言語の指示からコードを生成・修正・テストする能力を持つエージェントです。ChatGPTのPro、Team、Enterpriseプランのユーザーが利用でき、PlusやEduプランへの展開も予定されています。
🔧 主な機能
- コード生成・修正:自然言語の指示から新機能の実装やバグ修正を行います。
- テスト実行:自動でテストを実行し、合格するまで繰り返します。
- プルリクエスト提案:コードの変更を提案し、レビューの効率化を支援します。
- コードベースの質問応答:リポジトリ内のコードに関する質問に回答します。
これらのタスクは、各々が独立したクラウドサンドボックス環境で実行され、セキュリティと安定性が確保されています。
⚙️ 技術的特徴
- codex-1モデル:OpenAIのo3モデルをベースに、実際のコーディングタスクで強化学習を行い、人間のスタイルやプルリクエストの好みを模倣したコードを生成します。
- AGENTS.mdファイル:リポジトリ内に配置することで、Codexがコードベースをナビゲートし、プロジェクトの標準的な手法に従うよう誘導できます。
- セキュリティ対策:タスク実行中はインターネットアクセスが無効化され、外部のウェブサイトやAPIへのアクセスが制限されています。
📄 AGENTS.mdとは?
AGENTS.md
は、Codexにプロジェクトの開発ルールや環境設定を伝えるためのMarkdown形式のファイルです。リポジトリのルートディレクトリに配置し、以下のような情報を記述します:
- 環境構築手順:テストの実行方法や依存関係のインストール手順など。
- コーディングスタイル:命名規則や使用するフレームワークのバージョンなど。
- フォルダ構成:重要なディレクトリやファイルの説明。
- タスクの優先順位:バグ修正や新機能開発の優先度など。([AI総合研究所][1])
このファイルを活用することで、Codexはプロジェクトの文脈を理解し、より適切なコード生成や修正を行うことができます。
🛠️ 環境設定とセキュリティ
Codexは、各タスクを独立したクラウドサンドボックス環境で実行します。これにより、以下のような利点があります:
- セキュリティの確保:外部のウェブサイトやAPIへのアクセスが制限され、マルウェアの開発やプロンプトインジェクションなどの攻撃を防ぎます。
- 安定性の向上:各タスクが他のタスクと独立して実行されるため、エラーの影響範囲が限定されます。
- 再現性の確保:同じ環境でタスクを実行することで、結果の再現性が高まります。([Zenn][2])
また、Codexは、AGENTS.md
ファイルを読み取ることで、プロジェクト固有の設定やルールに従って動作します。これにより、開発チームの標準に沿ったコード生成や修正が可能となります。
🚀 利用方法と導入事例
ChatGPTのサイドバーからCodexにアクセスし、プロンプトを入力してタスクを開始します。Codexは、CiscoやTemporalなどの企業で既に導入されており、開発プロセスの効率化に貢献しています。
🧭 今後の展望
OpenAIは、Codexを含むエージェント群を通じて、ChatGPTを仮想の共同作業者として進化させることを目指しています。将来的には、より複雑な開発タスクを自律的に処理できるようになることが期待されています。
Ruby環境について
現状、以下のDockerfileが環境として定義されているようです。
この内容のうち、注意点は以下です。
### RUBY ###
RUN apt-get update && apt-get install -y --no-install-recommends \
ruby-full \
&& rm -rf /var/lib/apt/lists/*
このように、ruby-full
というパッケージをインストールすることでRuby環境が準備されている。
しかし、これではRubyのバージョンを指定できない。
現状、3.2.4
が使われる形になっていたが、自分の環境に合わせたものを使用したいので、以下のようにすることで設定を行う。
codex
の環境ページを開く- 環境のうち、Rubyのバージョンを指定したいものを選ぶ
- セットアップスクリプトという項目に
chmod +x bin/codex-setup && bin/codex-setup
を追記 - リポジトリ内の
bin/codex-setup
ファイルとして以下を作成、コミット
#!/bin/bash
set -e
# 必要な依存パッケージのインストール
apt-get update && apt-get install -y \
autoconf \
bison \
build-essential \
libssl-dev \
libyaml-dev \
libreadline6-dev \
zlib1g-dev \
libncurses5-dev \
libffi-dev \
libgdbm6 \
libgdbm-dev \
libdb-dev \
curl \
git
# rbenvのインストール
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
pushd ~/.rbenv
src/configure
make -C src
popd
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init - bash)"' >> ~/.bashrc
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
# ruby-buildのインストール
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
# Ruby 3.4.3 のインストール
rbenv install 3.4.3 # ここを指定のバージョンにする
rbenv global 3.4.3 # ここを指定のバージョンにする
# Bundler 2.6.8 のインストール
gem install bundler -v 2.6.8 # ここを指定のバージョンにする
rbenv rehash
bundle config set path 'vendor/bundle'
bundle install -j 4
注意点として、セットアップ時にのみインターネット環境が使用できるので、bundle install
等はこの中で行っておく必要があります。
これで、少し時間はかかりますがRubyのバージョンを指定したもので実行することができます。
今回はこのあたりで。