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.ts と main_bench.ts も置いていて、最初からテストとベンチを書きたがる癖が出ている。
衝撃
ブラウザ版 ChatGPT と API 版は、体験がまるで違う。ChatGPT は会話も履歴も UI も全部やってくれるけど、API は 会話履歴の管理・UI・認証を全部自分で作る必要がある。「あの体験を再現するには、結構な実装が要るぞ」と気づいたのがこのとき。
次のステップ
その気づきから、2月〜3月に chatgpt-imitation で UI を自前実装する方へ進んだ。UI を組んだ話はそちらの記事に。text-davinci-003 から始まったのが、今振り返ると時代を感じる。