見出し画像

TypeScript で OpenAI API を触り始める

そろそろいい加減openaiのapiくらいは使いながら、プログラムにも反映していかないといけない時代だなと実感しました。

と言うことで、最近お勉強中のTypeScriptを使って、コマンドラインでOpenAI の API をコールできるようなプログラムを作り始めました。

初期準備としてこちら。openai と dotenv パッケージを使う以外は、標準的な TypeScript 環境を作ってます。

npm init -y
npm install -D 'jest' 'ts-jest' '@types/jest' typescript @types/node ts-node
npm install --save openai dotenv
npm install -D @types/dotenv
npx tsc --init --rootDir src --outDir dist --esModuleInterop --resolveJsonModule --module commonjs --target es2022 --strict
npx ts-jest config:init

で、とりあえず作ったプログラムはこちら。
Github Copilot に頼ったら、一部まちがってて焦りました。

ルートには '.env' ファイルを配置して、OPENAI_API_KEY="xxxxx" として設定しています。

import OpenAI from "openai";
import "dotenv/config";

const openai = new OpenAI({
  apiKey: process.env["OPENAI_API_KEY"], // This is the default and can be omitted
});

async function main(messages: string[]) {
  messages.forEach(async (message) => {
    const chatCompletion = await openai.chat.completions.create({
      messages: [{ role: "user", content: message }],
      model: "gpt-4",
    });
    console.log(chatCompletion.choices[0].message);
  });
}

main(process.argv.slice(2));

なお、OpenAI の API を利用するには、https://platform.openai.com/ の 'Settings' から 'Billing' で支払の設定をしておかないと API は利用できません。また登録してすぐに使えるわけではないので、5〜10分程度待てば使えます。HTTP Response Code 492 が帰ってくる間はしばらく待ってみましょう。

Billing で支払の設定をした後

実際に試してみるとこんな感じです。

npx ts-node src/index.ts 'openai の api を使ってみるテストです。こちらのメッセージは見えていますか?'
{
  role: 'assistant',
  content: 'はい、あなたのメッセージは見えています。どのようにお手伝いできるかお気軽にお問い合わせください。'
}

コードはこちらを更新していく予定です。何ができあがるかな。


この記事が参加している募集

AIとやってみた

貴方がサポートしてくれると、私が幸せ。 私が幸せになると、貴方も幸せ。 新しいガジェット・ソフトウェアのレビューに、貴方の力が必要です。