OpenAI Node API Library 入門
「OpenAI Node API Library」で「OpenAI API」を利用する方法をまとめました。
1. OpenAI Node API Library
「OpenAI Node API Library」は、TypeScript / JavaScriptから「OpenAI API」にアクセスする機能を提供します。
2. 環境変数の準備
OpenAIのサイトで「OpenAI APIキー」を取得し、PCの環境変数に設定します。Macの場合は、「~/.zshrc」に以下のように追加します。
・~/.zshrc
export OPEN_AI_KEY=sk-XXXXX
3. プロジェクトの準備
プロジェクトの準備手順は、次のとおりです。
(1) Node.jsとnpmのインストール。
(2) プロジェクトの作成。
プロジェクトの初期化とTypeScriptのセットアップを行います。
$ mkdir helloworld
$ cd helloworld
$ npm init -y
$ npm install typescript --save-dev
$ npx tsc --init
(3) openaiパッケージのインストール。
$ npm install --save openai
(4) コードの準備。
・index.ts
console.log("Hello, World!");
(5) コンパイルと実行。
$ npx tsc
$ node index.js
Hello, World!
4. テキスト生成
4-1. Chat Completion
「Completion」は、「メッセージリスト → メッセージ」のテキスト生成のAPIです。
import OpenAI from "openai";
// クライアントの準備
const client = new OpenAI({
apiKey: process.env["OPENAI_API_KEY"],
});
async function main() {
// テキスト生成
const response = await client.chat.completions.create({
model: "gpt-3.5-turbo",
messages: [
{
"role": "user",
"content": "日本一高い山は?",
}
],
temperature: 0.2,
max_tokens: 500
});
// 確認
console.log(response)
console.log(response["choices"][0]["message"])
}
main();
{
id: 'chatcmpl-8iLhWGYJyMXlMvqDNdfx0hC9FsUeT',
object: 'chat.completion',
created: 1705580542,
model: 'gpt-3.5-turbo-0613',
choices: [
{
index: 0,
message: [Object],
logprobs: null,
finish_reason: 'stop'
}
],
usage: { prompt_tokens: 15, completion_tokens: 14, total_tokens: 29 },
system_fingerprint: null
}
{ role: 'assistant', content: '日本一高い山は富士山です。' }
4-2. Chat Completion のストリーミング
import OpenAI from "openai";
// クライアントの準備
const client = new OpenAI({
apiKey: process.env["OPENAI_API_KEY"],
});
async function main() {
// テキスト生成
const stream = await client.chat.completions.create({
model: "gpt-3.5-turbo",
messages: [
{
"role": "user",
"content": "日本一高い山は?",
}
],
temperature: 0.2,
max_tokens: 500,
stream: true
});
// 確認
for await (const chunk of stream) {
console.log(chunk.choices[0]?.delta?.content || "");
}
}
main();
日
本
一
高
い
山
は
富
士
山
です
。
4-3. Completion
「Completion」は、「テキスト → テキスト」のテキスト生成のAPIです。
import OpenAI from "openai";
// クライアントの準備
const client = new OpenAI({
apiKey: process.env["OPENAI_API_KEY"],
});
async function main() {
// テキスト生成
const response = await client.completions.create({
model: "gpt-3.5-turbo-instruct",
prompt: "ユーザー: 日本一高い山は?\nアシスタント: ",
temperature: 0.2,
max_tokens: 500
});
// 確認
console.log(response)
console.log(response["choices"][0]["text"])
}
main();
{
id: 'cmpl-8iLjyVernapAArd4O1bSEEWtKqEk3',
object: 'text_completion',
created: 1705580694,
model: 'gpt-3.5-turbo-instruct',
choices: [
{
text: 'それは富士山です。標高は3,776メートルです。',
index: 0,
logprobs: null,
finish_reason: 'stop'
}
],
usage: { prompt_tokens: 21, completion_tokens: 22, total_tokens: 43 }
}
それは富士山です。標高は3,776メートルです