見出し画像

OpenAI Node API Library 入門

「OpenAI Node API Library」で「OpenAI API」を利用する方法をまとめました。

・openai v4.24.7


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メートルです

関連



この記事が気に入ったらサポートをしてみませんか?