用途:为在应用中实现LLM(语言模型)功能提供开发规范。
主要能力与约定:
- 目录结构:LLM代码位于 apps/web/utils/ai/(主实现)、apps/web/utils/llms/(核心工具与配置)、apps/web/tests/(测试)。关键文件:utils/llms/index.ts(核心功能)、utils/llms/model.ts(模型定义与配置)、utils/usage.ts(用量跟踪与监控)。
- 实现模式:提供标准函数结构,导入 zod、createScopedLogger、chatCompletionObject、EmailAccountWithAI、createGenerateObject,进行输入校验、系统提示与用户提示分离、调用 getModel、createGenerateObject 传入 userEmail、label、modelOptions,并用 Zod schema 校验结构化输出。
- 最佳实践:系统与用户提示分开;始终定义 Zod schema 并尽量具体;使用描述性 scoped logger 记录输入输出;对无效输入提前返回、处理错误、实现回退,并用 withRetry 添加重试;用类 XML 标签组织提示数据、去除多余空白并截断长输入;使用 TypeScript 类型保证安全;相关 AI 函数保持在同一文件或目录,抽取公共模式,添加注释。
- AI-First 行为:优先使用通用提示指令、结构化输出与模型选择,避免模仿模型推理的脆弱词法启发式;仅在确需硬规则时添加确定性过滤;不要为通过测试而添加与评估样本高度相似的提示示例。
- 草稿归因版本:当修改草稿生成提示输入、检索上下文、路由或后处理时,需递增 apps/web/utils/ai/reply/draft-attribution.ts 中的 DRAFT_PIPELINE_VERSION,该版本用于回复草稿质量比较的分析归因。
适用场景:在类似 inbox-zero 的 TypeScript Web 应用中加入 LLM 功能时,可遵循该规范组织代码与流程。
限制:资料未提供具体模型名称、收费、价格、平台或效果数据,这些事实暂未提供。