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 を叩く構成は、レスポンスの取り回し(ストリーミングなど)まで含めて、もう一段詰める余地がありそう。

おわり

initopenai text generationfix の3コミットの小さいデモだけど、「エッジ + LLM」の型がここで固まった。このあとの Cloudflare 系の実装は、だいたいこの構成の延長で考えるようになった。