用途:为 AI 功能建立生成结果的持久化规范,把每次 LLM 调用视为数据库记录,而非一次性输出。
主要能力:调用前用 nanoid() 或 @paralleldrive/cuid2 的 createId() 生成 ID;将文本与元数据写入数据库,图片与文件存入 Vercel Blob;用 /chat/[id]、/generate/[id]、/image/[id] 等 URL 使生成可寻址;记录模型名、token 用量、预估成本、时间戳与用户 ID;流式输出也必须落库,刷新后仍可恢复。
使用方式:采用“先生成再重定向”模式,在 POST 路由中先插入 status 为 pending 的记录,再 redirect 到 /chat/[id],由该页面负责流式渲染或展示已保存结果。存储策略为:文本与元数据用 Neon Postgres + Drizzle,图片与文件用 @vercel/blob 的 put() 保存并回写永久 URL,提示词去重用 Upstash Redis 按 sha256(model:prompt) 缓存并设 TTL。成本追踪从 result.usage 提取 token 用量并估算成本后更新记录。
适用场景:需要分享链接、支持浏览器后退、多标签会话与生成历史的 AI 聊天、生成、图像类应用。
限制与反模式:不要只流式返回而不保存;不要使用无 [id] 的路由;不要重复生成相同提示词而不查缓存;不要用临时 base64 图片;不要遗漏模型名、token 数与时间戳;不要仅用 React state 或 localStorage 存储。具体价格与计费细节暂未提供。