2024年5月、demo-gpt-202405 で Remix + Vite + Cloudflare Workers の上に OpenAI のテキスト生成を載せた。2023年の cloudflare-remix の続きで、今度は OpenAI をちゃんと絡める版。Cloudflare Workers 実験記シリーズ第3弾。
構成
- Remix on Cloudflare(Vite ベース)
functions/[[path]].tsで Pages Functions のエントリload-context.tsで env を loader/action に渡すwrangler.toml+worker-configuration.d.tsで型付き env- OpenAI API でテキスト生成
2023年版から1年経って、Remix の Cloudflare アダプタや Vite 対応がだいぶ整っていて、足場づくりがかなり楽になっていた。
ハマったところ
地味に効くのが wrangler.toml を変えたら型を再生成すること。
npm run typegen # wrangler.toml 変更時に env の型を更新
これを忘れると、context.cloudflare.env の型が古いままで、追加したはずのシークレットが型に出てこない。OpenAI のキーを env に足したのに型が合わない、で一回詰まった。load-context.ts で env を loader に流す形にしておくと、各ルートから素直に使えた。
学び
2024年時点で Remix + Cloudflare はかなり成熟していて、個人 SaaS の API 層として普通に実用的、という感触。エッジで OpenAI を叩く構成は、レスポンスの取り回し(ストリーミングなど)まで含めて、もう一段詰める余地がありそう。
おわり
init → openai text generation → fix の3コミットの小さいデモだけど、「エッジ + LLM」の型がここで固まった。このあとの Cloudflare 系の実装は、だいたいこの構成の延長で考えるようになった。