はじめに
新モデルとともに発表された、以下の Codex CLI を試してみた話です。
GitHub のリポジトリは以下です。
●openai/codex: Lightweight coding agent that runs in your terminal
https://github.com/openai/codex
実際に試してみる
クイックスタートを試す: 軽いお試し
公式のクイックスタートを試します。
ローカルインストールで試す
公式手順ではグローバルインストールをするところですが、ローカルインストールで試します。
npm install @openai/codex
次に、環境変数で OpenAI の APIキーを設定します。「OPENAI_API_KEY」という名前で設定します。
あとは実行コマンドです。ローカルインストールしたので codex
だけでは実行ができないので、以下の内容にして実行します。
npx codex
(他に似たコマンドで、 npm exec codex
や npm x codex
というコマンドもありますが、これらだと一部のオプション付きのコマンド実行で、想定通りでない動作をすることがありそうでした)
とりあえず、適当なプロンプトを送ってみます。
以下のような返答が返ってきました。
クイックスタートの「Full Auto mode」を試す
さらに、以下の部分に書いてある「Full Auto mode」を試してみます。
以下で実行してみます。
npm x codex --approval-mode full-auto "create the fanciest todo-list app"
以下は、コマンド実行直後の画面です。
実行中の様子(続き)
当初のプロンプトの内容と違う方向になってますが、お試しとして適当なプロンプトを入れて続けてみました。
(以下は、主な内容を抜粋したものです)
生成されたコード
コードを書いてもらった部分で、最終的に作成された内容は以下の通りです。
#!/usr/bin/env node
const yargs = require('yargs');
const { hideBin } = require('yargs/helpers');
yargs(hideBin(process.argv))
.scriptName('calc')
.usage('$0 <cmd> [args]')
.command(
'add <numbers..>',
'Add numbers',
(yargs) => {
yargs.positional('numbers', {
type: 'number',
description: 'Numbers to add',
});
},
(argv) => {
const result = argv.numbers.reduce((sum, n) => sum + n, 0);
console.log(result);
}
)
.command(
'subtract <a> <b>',
'Subtract b from a',
(yargs) => {
yargs
.positional('a', { type: 'number', description: 'Minuend' })
.positional('b', { type: 'number', description: 'Subtrahend' });
},
(argv) => {
const result = argv.a - argv.b;
console.log(result);
}
)
.command(
'multiply <numbers..>',
'Multiply numbers',
(yargs) => {
yargs.positional('numbers', {
type: 'number',
description: 'Numbers to multiply',
});
},
(argv) => {
const result = argv.numbers.reduce((prod, n) => prod * n, 1);
console.log(result);
}
)
.command(
'divide <a> <b>',
'Divide a by b',
(yargs) => {
yargs
.positional('a', { type: 'number', description: 'Dividend' })
.positional('b', { type: 'number', description: 'Divisor' });
},
(argv) => {
if (argv.b === 0) {
console.error('Error: Division by zero');
process.exit(1);
}
const result = argv.a / argv.b;
console.log(result);
}
)
.demandCommand(1, 'You need to specify a command')
.help()
.alias('h', 'help')
.alias('v', 'version')
.argv;
どうやら、以下を使ったコードが作成されたようです。
●yargs - npm
https://www.npmjs.com/package/yargs
生成されたツールを試してみる
最後に、生成されたツールを試してみます。
以下のように、計算やヘルプ・バージョンの表示のコマンドを試してみて、それぞれの実行結果を得られました。
API利用履歴を確認してみる
OpenAI のダッシュボードで、API利用履歴を確認してみます。
以下のように、今回のお試しで使ったトークン数が表示されているのを確認しました。
おわりに
とりあえず、OpenAI Codex CLI のクイックスタートを試してみました。
今回は簡単なやりとりと、ちょっとしたコードの作成を依頼しました。別途、Codex CLI の仕様(※ 例えば以下の内容など)を確認して他に試すことを考えてみたり、もしくは別のタスクを依頼してみたりなどできたらと思います。