15
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

完走賞ゲットのため小ネタを毎日投稿しようとチャレンジするAdvent Calendar 2022

Day 24

【完走賞ゲット-24】OpenAI の ChatGPT の API を公式ライブラリの JavaScript版 を試す(使い方を ChatGPT に聞いてみたりも)

Last updated at Posted at 2022-12-24

はじめに

こちらは、完走賞ゲットのため小ネタを毎日投稿しようとチャレンジする Advent Calendar 2022 の 24日目の記事です。

今月のアドベントカレンダー用記事で、以下の 3記事で扱った OpenAI の ChatGPT の話です。

基本的に、GUIベースで扱ってきたのですが、上記の enebular の記事に書いた内容では API を利用する方法も軽く試しました。

その API を利用したやり方について、Node.js を使ったものを試して過程をメモとして残す、というのが今回の記事の内容です。

ChatGPT を API 経由で利用する

OpenAI の API を利用するためのシークレットキー

OpenAI の API を利用するためにはシークレットキーが必要です。

OpenAI のアカウントのメニュー(※ 画面左上のメニュー)の「View API keys」を選んで、その後のページでキーを生成してください。既にキーを生成済みの方は、ここにキーのリストが表示されます。
右上メニュー
シークレットキーの確認画面

公式ライブラリの情報を確認する

公式ライブラリの情報を確認します。
こちら⇒ https://beta.openai.com/docs/libraries/libraries にアクセスすると、Python関連の内容と、Node.js関連の内容を確認することができます。

Python用
Node.js用

それでは、Node.js のほうを実際に試してみます。

ChatGPT に聞いてみる(Node.js版)

ここで、ふと、API の使い方を ChatGPT に聞いてみることもできるな、と思って試してみました。
※ こちらにて⇒ https://chat.openai.com/chat

以下が「Chat GPT の API を Node.js で使うためのプログラムを教えて」という内容に対して返ってきた答えです。
聞いてみた結果1:Node.js
聞いてみた結果2:Node.js

読み込むパッケージが違っているような感じがします。それと、プログラムがひとまとめになってないので、プログラムの部分の出力はまとめてもらうような書き方にしてみました。
具体的には、「Chat GPT の API を Node.js で使うためのプログラムを教えて。プログラムはひとまとめにして書いてください。」という内容で、それに対する返答は以下となりました。

再度聞いてみた結果

今度は、openai 関連のパッケージを使わない方向の話になっている...

上記が意図しない内容のため、「openai - npm を利用する」というのを明示してみることにしました。
以下は「Chat GPT の openai - npm を Node.js で使うためのプログラムを教えて。プログラムはひとまとめにして書いてください。」という内容に対する返答です。

openai - npmを使うことを明示した際の返答1
openai - npmを使うことを明示した際の返答2

プログラムがひとまとめになってないですが、構文的には使えそうなものが返ってきた気がします。

const openai = require('openai');

openai.apiKey = 'your_api_key';

const prompt = 'Hello, how are you today?';
const model = 'text-davinci-002';
const maxTokens = 128;

openai.completion.create({
  prompt,
  model,
  max_tokens: maxTokens
}, function(error, response) {
  if (error) {
    console.error(error);
  } else {
    console.log(response.text);
  }
});

ただし、以下の公式ドキュメントの例とは差異があるようです...
(単純に古い情報が元になっていたり等なのか、そもそも、コードの内容が正しいものっぽく見えるだけのものなのかは不明ですが、今回は深追いしないことにします)

const { Configuration, OpenAIApi } = require("openai");
const configuration = new Configuration({
  apiKey: process.env.OPENAI_API_KEY,
});
const openai = new OpenAIApi(configuration);
const response = await openai.createCompletion({
  model: "text-davinci-003",
  prompt: "Say this is a test",
  temperature: 0,
  max_tokens: 7,
});

公式情報をもとに Node.js で API を使う

それでは、公式ドキュメントの例を使って API を試してみます。

以下が今回試す処理の内容です(※ サンプルに少し手を加えています)。

const { Configuration, OpenAIApi } = require("openai");
const configuration = new Configuration({
  apiKey: process.env.OPENAI_API_KEY,
});
const openai = new OpenAIApi(configuration);

(async () => {
  const response = await openai.createCompletion({
    model: "text-davinci-003",
    prompt: "Chat GPTについて教えて。",
    temperature: 0,
    max_tokens: 100,
  });
  console.log(response.data.choices[0].text);
})();

上記を実行する前に npm i openai を実行して、パッケージをインストールしておいてください(※ 既に、Node.js が利用できる環境になっている想定です)。
また、とりあえずのお試しということで、一時的に環境変数にシークレットキーを設定する形で試します。 export OPENAI_API_KEY=【OpenAI のシークレットキー】 も実行してから、上記のプログラムを nodeコマンドで実行しましょう。

実行してみた結果は以下のとおりです。

% node app.js
GPT(Generative Pre-trained Transformer)は、自然言語処理(NLP)タスクを実行するためのオープンソースの自然言語処理モデルです。GPTは、大規模なテキストコーパ

max_tokens: 100 というパラメータ指定があり、出力は途中で途切れていますが、うまく結果を取得できているようです。

API経由で試した内容も GUI上で試してみる

最後に、API経由で行った内容を、ChatGPT のページ上( https://chat.openai.com/chat )でも試しておくことにします。

↓このような結果になりました。
GUI上で試す(API経由で行ったことと同じ内容)

15
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?