2023年1月、ChatGPT が話題になった直後に gpt-practice で OpenAI API を初めて触った。当時 Deno が気になっていたので、ついでに Deno から叩いてみた。

最初にやったこと

deno.jsonc にタスクを書いて、npm:openai を直接 import する形。Deno は npm: 指定でそのまま npm パッケージを読めるのが新鮮だった。

import "https://deno.land/std@0.171.0/dotenv/load.ts";
import { Configuration, OpenAIApi } from "npm:openai";

const openai = new OpenAIApi(
  new Configuration({ apiKey: Deno.env.get("OPENAI_API_KEY")! })
);

const res = await openai.createCompletion({
  model: "text-davinci-003",
  prompt,
  temperature: 0.9,
  max_tokens: 4000,
});
console.log(res.data.choices[0].text);

モデルはまだ text-davinci-003(chat completions 以前の completion API)。プロンプトは「企業のマーケティング担当者として Apple のレポートを書いて」みたいな、雑なロールプレイを投げて遊んでいた。

deno run --allow-net --allow-env --allow-read main.ts

初体験のリポなのに main_test.tsmain_bench.ts も置いていて、最初からテストとベンチを書きたがる癖が出ている。

衝撃

ブラウザ版 ChatGPT と API 版は、体験がまるで違う。ChatGPT は会話も履歴も UI も全部やってくれるけど、API は 会話履歴の管理・UI・認証を全部自分で作る必要がある。「あの体験を再現するには、結構な実装が要るぞ」と気づいたのがこのとき。

次のステップ

その気づきから、2月〜3月に chatgpt-imitation で UI を自前実装する方へ進んだ。UI を組んだ話はそちらの記事に。text-davinci-003 から始まったのが、今振り返ると時代を感じる。