リリースされたばかりの GPT-4o を API経由で試すのに、以前、以下の記事で書いた「Node.js の process.loadEnvFile()」を組み合わせてみたという内容です。
●【小ネタ】Node.js v21.7.0 の新機能で環境変数用のファイル読みこみを軽く試す: process.loadEnvFile() - Qiita
https://qiita.com/youtoy/items/ae838cacd43b3c3e61e1
GPT-4o について
GPT-4o については、既にいろいろな方が記事を書いていると思うので、詳細はそれらをご参照ください。
●GPT-4o - Google 検索
https://www.google.com/search?q=GPT-4o
OpenAI の Node.js ライブラリ
今回、GPT-4o を API経由で試します。
その処理には、以下の OpenAI の Node.js用ライブラリを使います。
●openai - npm
https://www.npmjs.com/package/openai
公式のサンプルコード
公式のサンプルコードは、上記の npm のページやドキュメントなどに書かれています。
それらを、いくつかピックアップしてみます。
npm のページの内容
npm のページのサンプルをピックアップしてみます。
以下は、Create chat completion のサンプルです。
モデルは、元の記載から GPT-4o に変更して掲載しています。
import OpenAI from 'openai';
const openai = new OpenAI({
apiKey: process.env['OPENAI_API_KEY'], // This is the default and can be omitted
});
async function main() {
const chatCompletion = await openai.chat.completions.create({
messages: [{ role: 'user', content: 'Say this is a test' }],
model: 'gpt-4o',
});
}
main();
以下のサンプルは、レスポンスをストリーミングで得られるようにしているものです。
なお上記と違って、以下では明示的に APIキーを指定してないですが、その場合は「OPENAI_API_KEY」という名前の環境変数をデフォルトで読みこむようです。
import OpenAI from 'openai';
const openai = new OpenAI();
async function main() {
const stream = await openai.chat.completions.create({
model: 'gpt-4o',
messages: [{ role: 'user', content: 'Say this is a test' }],
stream: true,
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content || '');
}
}
main();
環境変数で APIキーを設定する: 公式の情報
公式のクイックスタートでは、以下の部分で Mac・Windows のそれぞれの環境で、環境変数を設定する方法が紹介されています。
以下は、Mac用の内容が書かれた部分を展開したものです。
今回は、このようなコマンドで環境変数を設定する方法ではなく、Node.js のプログラムの中で「process.loadEnvFile()」を使って設定します。
環境変数で APIキーを設定する: process.loadEnvFile()
冒頭で紹介していた記事にも書いてい「process.loadEnvFile()」を使って試してみます。
※ Node.js のバージョンに依存する処理になるので、その点はご注意ください
上記サンプルの 2つ目をベースに、内容を作ってみます。
実装内容
具体的なコードは、以下のとおりです。
process.loadEnvFile('./development.env')
という指定をしているので、環境変数に関するファイルは「development.env」というファイル名で用意します。
import OpenAI from "openai";
process.loadEnvFile("./development.env");
const openai = new OpenAI();
const message = "GPT-4 について、特長を説明してください。";
console.log("\n【ユーザー】:");
console.log(message + "\n");
async function main() {
const stream = await openai.chat.completions.create({
model: "gpt-4o",
messages: [
{
role: "user",
content: message,
},
],
stream: true,
});
console.log("\n【GPT-4o】:");
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content || "");
}
}
main();
また、 process.loadEnvFile()
は new OpenAI()
よりも前に書くようにしてください。
process.loadEnvFile("./development.env");
const openai = new OpenAI();
以下、「development.env」のサンプルです。
「【ご自身の OpenAI の APIキー】」の部分は、適宜書きかえてください。
OPENAI_API_KEY="【ご自身の OpenAI の APIキー】"
上記を実行してみる
上記のプログラムを実行してみます。
レスポンスは良い感じです!
おわりに
今回、GPT-4o を OpenAI の Node.js用ライブラリで試すのに、以前試した Node.js v21.7.0 の新機能を一緒に使ってみました。
GPT-4o のお試しはとりあえず版という感じにとどめたので、今後は色々 GPT-4o を試していければと思います。
その他
その他、公式の情報でサンプルコード・GPT-4o に関する情報が書かれた部分を、以下に掲載してみます。
APIリファレンスのサンプル
APIリファレンスの「Create chat completion」のページでもサンプルを確認できます。
こちらは上部のメニューを選ぶことで、画像を入力にしたものや、Tools(Function Calling)を使う例なども、簡単に切り替えて見ることができます。
また、その下にあるメニューから、用いるモデルや言語を簡単に変更することもできます。
例えば「Default」の場合は、以下の選択肢から選ぶことができます。
公式ドキュメント内のサンプル
公式ドキュメントで「Text generation > Chat Completions」とたどった先にもサンプルが掲載されていて、こちらもライブラリを切り替えられるようになっています。
●Text generation - OpenAI API
https://platform.openai.com/docs/guides/text-generation/chat-completions-api?lang=node.js
OpenAI公式の GPT-4o に関する情報
OpenAI公式の記事、ドキュメントで、GPT-4o について書かれたページをいくつか掲載します。
公式の紹介記事
●Hello GPT-4o | OpenAI
https://openai.com/index/hello-gpt-4o/
Cookbook
●Introduction to gpt-4o | OpenAI Cookbook
https://cookbook.openai.com/examples/gpt4o/introduction_to_gpt4o
モデルの情報
●Models - OpenAI API
https://platform.openai.com/docs/models/gpt-4o
価格
●Pricing | OpenAI
https://openai.com/api/pricing/