对比 / JevModel

Google Sheets 文本分类:=AI() 函数 vs Apps Script 调用 Jev API

用 Google Sheets 的 AI 函数,或用 Apps Script 调用 JevModel,给表格行打标签:固定 Choice 标签与概率、复核列、Apps Script 配额,以及何时直接把 CSV 传到 Console → Batch 更省事。

最近更新:

速读:单元格里的提示词 vs 固定的标签契约

  • Google 的 AI 函数(=AI() 或 =Gemini())接收一个提示词和可选区域,Google 把“对信息分类”和情感分析列为用途之一。它需要符合条件的 Google Workspace 或 Google AI 方案,只返回文本,不能嵌在 IF 等其他公式里,一次最多生成所选前 350 个 AI 单元格。
  • 用 Apps Script 菜单命令把每一行 POST 到 JevModel 的 /api/v1/systemone,会从你定义的 2–12 个标签里返回一个 Choice,通常附带概率;于是可以写出标签列和概率列,把低概率的行送去复核。
  • 调用付费 API 时,优先用菜单命令而不是自定义函数:自定义函数必须在 30 秒内返回,引用的单元格一变就会重算,可能再次调用(并计费)API。菜单运行的脚本每次最多 6 分钟;URL Fetch 在个人账号上限 20,000 次/天,Workspace 账号 100,000 次/天。
  • 不想写代码:把表格导出为 CSV,上传到 JevModel 的 Console → Batch(未购买前每批最多 50 行,任意一次购买后 1,000 行)。无论选哪条路,都保留一列人工标注,先测一致率再信任标签。

在电子表格里,文本分类长什么样

大多数表格分类任务形状相同:一列自由文本(问卷回答、表单提交、客服消息、商品评价),一小组类别,再加一列新列,每行只放其中一个类别。有用的附加列是置信度列、“需复核”标记,以及在抽样行上的人工标注列,用来检验结果。在 Google Sheets 里,填这列标签有三条现实路径:内置 AI 函数;用 Apps Script 调用 JevModel 这类外部分类 API;或导出 CSV、在别处分类后把结果贴回来。

如何用 JevModel API 分类文本Jev API 批量文本分类:CSV 与 JSONL

Google Sheets 的 AI 函数:Google 文档写了什么

Google 帮助页给出的语法是 AI("prompt", [可选区域]);=Gemini() 是等价写法。选中单元格后点 Generate and Insert,想重新生成时点 Refresh and Insert。Google 自己的例子包括把客户咨询分为表扬、换货请求或退货请求,以及把邮件正文分为正面、负面或中性。对分类来说,这些文档限制很关键:只返回文本;函数只能看到你传入的区域,看不到整张表;不能嵌入其他公式(Google 举的不支持写法就是把 AI() 包在 IF 里);一次只生成所选的前 350 个 AI 单元格;有短期和长期生成上限;能否使用取决于方案、管理员设置和语言。优势:符合条件的账号零配置,非开发者也能改自然语言提示词。边界:输出是自由文本,除非提示词和清洗步骤强制精确取值,否则标签会漂移(“Return”“return request”“Returns”),也没有可用于复核阈值的逐标签概率列。

2026 年零样本文本分类:LLM 提示词、Hugging Face 与类型化 API 怎么选Jev vs GPT 与 Claude:如何选择判断层

Apps Script → Jev:用菜单命令,不要用自定义函数

Apps Script 可以用 UrlFetchApp 调用任何 HTTPS API,Google 的自定义函数指南也确认 URL Fetch 是自定义函数允许使用的服务之一。但它仍不适合放按量计费的分类调用。自定义函数必须在 30 秒内返回,否则单元格显示 #ERROR!;每次使用都是一次独立的 Apps Script 服务器调用;而且只要引用的单元格变化就会重算,一次编辑就可能把同一行悄悄再分类一次(并再付一次费)。自定义菜单项可以避开这些:点一次脚本跑一次,读取选中行、调用 JevModel,把标签和概率作为普通值写回,之后不会重算。按 Google 公布的限制做规划:每次脚本执行最多 6 分钟;URL Fetch 配额个人账号 20,000 次/天,Google Workspace 账号 100,000 次/天(Google 说明这些数值可能变化)。每次选择的行数要能在一次执行内跑完。JevModel 密钥放在 Project Settings → Script properties,不要写进单元格;并记住,能编辑这张表的人也能编辑它绑定的脚本,所以编辑者名单要尽量短。

JevModel API:请求与响应JevModel 价格与 Jev 免费额度运行记录与隐私

对比:=AI() vs Apps Script → Jev vs CSV 上传 Console → Batch

下表对比的是工作流形态与输出契约,不是准确率。表中没有任何一行是基准测试结果;请在自己的标注样本上测量。

Jev API 批量文本分类:CSV 与 JSONL如何用 JevModel API 分类文本Choice、Score 与 Noul
对比:=AI() vs Apps Script → Jev vs CSV 上传 Console → Batch
维度Sheets =AI()Apps Script 菜单 → JevModelCSV → Console → Batch
准备工作符合条件的 Workspace / Google AI 方案;输入提示词粘贴脚本,在 Script properties 里放密钥导出 CSV、上传、导出结果
标签输出自由文本;是否精确取值取决于提示词从你定义的 2–12 个标签中返回一个 Choice ID,通常带概率同一个 Jev 问题应用到每一行
复核阈值没有逐标签概率列把概率写在标签旁,筛出低概率行导出文件里有逐行答案
主要限制每次生成 350 个所选单元格;有生成上限;不能嵌套每次执行 6 分钟;URL Fetch 每日配额;请求约 8,000 字符未购买前每批 50 行,购买后 1,000 行
计费包含在 Google 方案及其限制内每次成功请求扣 JevModel Token;失败运行退回与 Playground、API 共用同一 Token 余额

Apps Script 示例:给选中的行分类(示意)

打开 Extensions → Apps Script,粘贴代码,新增名为 JEVMODEL_API_KEY 的脚本属性(密钥在 JevModel Console → API keys 创建),然后刷新表格。选中同一列的文本单元格,点 Jev → Classify selected rows,标签和概率会写到右边两列。请求遵循文档化的契约:state(单元格文本)加具名问题,这里是一个 Choice,criteria 把标签 ID 映射到简短定义。清晰的定义(包括明确的 “other”)比花哨措辞更重要。本站通过 OpenRouter 固定调用 typesafe/jev-1.13,所以没有 model 字段。JevModel 与开发 Jev 的 TypeSafe AI 相互独立。返回非零 code(例如 INSUFFICIENT_TOKENS)时写成 ERROR,方便只重跑这些行;API 不支持幂等键,已有标签的行不要重跑。

JevModel API:请求与响应Choice、Score 与 NoulJevModel 价格与 Jev 免费额度
// Illustrative only. Save the key as the script property JEVMODEL_API_KEY.
// Run from the menu, not as a custom function, so edits never re-bill rows.
const LABELS = {
  billing: "Charges, refunds, invoices or payment methods.",
  shipping: "Delivery status, delays or address changes.",
  product: "How the product works, or a defect report.",
  other: "Anything that fits none of the labels above.",
};

function onOpen() {
  SpreadsheetApp.getUi()
    .createMenu("Jev")
    .addItem("Classify selected rows", "classifySelection")
    .addToUi();
}

function classifySelection() {
  const key = PropertiesService.getScriptProperties().getProperty("JEVMODEL_API_KEY");
  const sheet = SpreadsheetApp.getActiveSheet();
  const range = sheet.getActiveRange(); // one column of text cells
  const rows = range.getValues().map(([text]) => {
    if (!text) return ["", ""];
    const res = UrlFetchApp.fetch("https://jevmodel.app/api/v1/systemone", {
      method: "post",
      contentType: "application/json",
      headers: { Authorization: "Bearer " + key },
      muteHttpExceptions: true,
      payload: JSON.stringify({
        state: String(text),
        questions: {
          route: {
            type: "choice",
            instructions: "Which support queue should handle this message?",
            criteria: LABELS,
          },
        },
      }),
    });
    const body = JSON.parse(res.getContentText());
    if (body.code !== 0) return ["ERROR", body.message];
    const answer = body.data.answers.route;
    const p = answer.probabilities ? answer.probabilities[answer.choice] : "";
    return [answer.choice, p];
  });
  // Plain values in the next two columns: label, probability.
  sheet.getRange(range.getRow(), range.getColumn() + 1, rows.length, 2).setValues(rows);
}

加一列复核,并在使用前检验标签

电子表格让评估很容易,那就做。分类整张表之前,先在单独一列里人工标注随机抽样的若干行,对它们跑同一个问题,用 COUNTIFS 或数据透视表对比:每个标签的一致率,以及哪些标签容易混淆。然后基于样本定复核规则,例如“概率低于大多数分歧出现的水平就送复核”,再加一列公式,如 =IF(C2<0.7,"review","ok");0.7 只是占位,不是推荐值。保留 “other” 标签,“other” 占比高说明标签表需要调整,而不是模型失败。TypeSafe 描述的 Choice 置信度 (p − 1/n)/(1 − 1/n) 会按标签数校正,但同样不是校准后的准确率。改动标签或定义后,要重新检查样本。

Jev 概率、置信度与人工复核阈值评估 Jev 工作流用户反馈分类:一个主题、一个优先级,以及为什么情感分析不够

该选哪条路

已有符合条件的方案、这张表只是一次性探索、反正会有人逐条看结果时,选 =AI()。同一套标签会反复使用、需要概率列决定哪些送复核,或标签必须与其他地方的自动化(Zapier、Make、n8n、Power Automate、Pipedream 或你自己的应用)通过同一 API 使用的标签一致时,选 Apps Script → Jev 菜单。不想写代码、或想先用小文件试一个问题时,选 CSV → Console → Batch。无论哪条路的检查清单:1)写带明确 “other” 的标签定义;2)人工标注一份样本;3)结果被接受后以值保存,而不是保留实时公式;4)API 密钥不进单元格;5)没在样本上测过的准确率不要宣称。如果一行可能同时属于多个标签,请看 multi-label-text-classification,不要硬塞进一个 Choice。

多标签文本分类:一次 Choice、多道是否题,还是第二轮请求Zapier 文本分类:AI by Zapier Classify vs Vertex Classify Text vs HTTP → JevMake.com Categorize Text:AI Toolkit vs HTTP → Jev(类型化标签与置信度阈值)Jev API 批量文本分类:CSV 与 JSONLPower Automate 文本分类:AI Builder 类别模型 vs HTTP → JevPipedream 文本分类:Hugging Face 动作 vs HTTP → Jev(类型化标签)n8n Text Classifier 节点:内置分类 vs 在工作流中调用 Jev用户反馈分类:一个主题、一个优先级,以及为什么情感分析不够JevModel API:请求与响应

常见问题

Google Sheets 的 AI 函数能做文本分类吗?

可以。Google 把对信息分类和情感分析列为用途,例子如 =AI("Categorize the customer inquiry as a compliment, exchange request, or return request.", C2)。它需要符合条件的 Google Workspace 或 Google AI 方案,返回自由文本,且不能嵌在 IF 等公式里。

为什么不写一个 =JEV(A2) 这样的自定义函数?

技术上可行,但自定义函数会在引用单元格变化时重算,而且必须在 30 秒内完成:按量计费的 API 可能对已付过费的行再次调用,大范围还会超时。菜单命令只运行一次,并写入普通值。

用 Jev 从 Google Sheets 能分类多少行?

有三层限制:JevModel Token 余额(验证邮箱的账号先获赠 100,000 免费 Token)、Apps Script 每次执行 6 分钟及每日 URL Fetch 配额,以及全站每日容量。每行就是一次普通请求,没有批量折扣。如果是文件,Console → Batch 在未购买前每批 50 行,购买后 1,000 行。

表格数据会发给 JevModel 吗?

只有脚本放进 state 的内容(示例里是单元格文本)会被发送;JevModel 通过 OpenRouter 把它转给模型。发送前去掉不需要的列,例如邮箱或电话;运行历史如何保存请看隐私指南。

JevModel 为独立项目,与 TypeSafe AI 无关联。