鲜于言悠905头像
Jev实战:给AI工作流装上轻量决策层,速度直接快49倍封面图

Jev实战:给AI工作流装上轻量决策层,速度直接快49倍

P.S. 推荐一个大神的教程给想要了解或者学习人工智能知识的读者,这个教程里内容讲解通俗易懂且风趣幽默,对我帮助很大。我想与大家分享这个宝藏教程,请点击下方链接查看,传送门https://blog.csdn.net/qq_74013365

Jev 实战:给 AI 工作流装个轻量决策层

1. 先唠个五块钱的

最近圈子里被一个叫 Jev 的东西刷了屏。

我一开始的反应跟大家一样:又一个新模型?行吧,先加个收藏夹吃灰。

结果真上手用了才发现——这货根本不是来抢大模型饭碗的。

它是来给大模型打杂的。

对,你没听错。一个 AI 模型,专门给另一个 AI 模型打下手。

我当时就乐了。合着现在 AI 圈也开始卷后勤了?

但笑完之后我发现一个更离谱的事儿:它是真的好用。

好用到什么程度?我三个测试场景跑下来,最快的一个快了 49 倍,最便宜的一个省了 93 倍 的钱。

49 倍是什么概念?就是你点外卖等了半小时,店家突然给你打电话:不好意思久等了,无人机已经在你楼下了。

今天就跟大家聊聊,我是怎么用这个"AI 后勤"给工作流提速的。

2. 这玩意儿到底是个啥

2.1 先看个对比,你就懂了

我先问你个问题:蝙蝠是鸟类吗?

你要是问 ChatGPT,它能给你写一篇小论文。

从分类学讲到进化史,从解剖结构讲到趋同演化,最后还给你配个五列表格。

看完你会觉得:嗯,我确实问了个好问题,它确实回答得很详细。

但你心里清楚——我就想知道是还是不是,你跟我扯这么多干嘛?

Jev 就不一样了。

你问它蝙蝠是鸟类吗?

它直接告诉你:不属于(否),置信度 100%。

完了。

就这么干脆,干脆到你甚至觉得它有点冷淡。

但仔细想想,这难道不是我们大多数时候真正想要的答案吗?

就像你去问同事:这个需求能不能做?

一个同事跟你聊半小时技术架构,最后说"理论上可以"。

另一个同事说:能,明天给你。

你更愿意跟谁合作?

2.2 两者的区别在哪

我把这两者的差异整理了一下:

  • 普通大模型:输入普通文本,输出一大段自然语言,耗时秒级,按 token 双向收费。
  • Jev:输入结构化的问题和选项,输出结构化的判断结果,耗时毫秒级,输入便宜,输出免费。

对,你没看错——输出免费。

我第一次看到这个定价的时候,以为自己看错了,把眼睛揉了揉又看了一遍。

输出免费?这是什么神仙操作?

相当于你去饭店吃饭,菜钱收你,米饭管够,而且不是那种"米饭管够但茶位费收你 20"的套路,是真的一分钱不收。

为什么?因为 Jev 不生成自然语言。它只返回判断结果,机器直接读,不需要人来逐字看。

这就很有意思了。

2.3 什么时候该用它

我发现一个规律:越是简单的问题,越不适合用大模型。

就像你不会请个教授来帮你查快递到哪了。

以下这些场景,Jev 特别合适:

  • 判断一个用例是不是 P1 优先级
  • 识别这段内容跟我们的业务有没有关系
  • 从一堆候选动作里选下一步该干啥

你让大模型干这些活儿,就像开着法拉利去菜市场买菜——不是不行,是真的费油。

而且 Jev 火起来之后,网上一堆人晒用法。有人专门做了个聚合页,从 11 万条帖子里扒了 5700 多个作品,来自 4400 多个作者。

你看,连晒图的人都这么多,说明这玩意儿是真的香。

我挑了三个最贴近日常工作的场景,挨个试了试。

3. 场景一:批量用例打标

3.1 事儿是这么个事儿

我们写测试用例,写完之后得给它打标签。

优先级是 P1 还是 P2?涉及不涉及资损?

这些判断,说难不难,但量大啊。

我手头有 300 条用例。你要是让我一条条看,我得看到天黑,看到老板以为我在摸鱼。

你要是让大模型一条条跑,它也能跑,但你得做好心理准备——又慢又贵。

那我试试 Jev。

3.2 怎么干的

很简单,写个 Python 脚本,并发跑,每条用例问一次 Jev。

问题就两个:

第一,这条用例的优先级是 P1、P2 还是 P3?

第二,这条用例涉及资金损失风险吗?

脚本跑起来之后,我就看着它一条条出结果。

快是真的快。

你能想象吗?300 条用例,5 秒钟跑完。

5 秒钟是什么概念?就是你起身去接杯水的功夫,它已经干完了。

你回来一看,活儿已经干完了,杯里的水还没凉。

3.3 结果有多离谱

我对比了一下:

  • 用 DeepSeek 跑,4 分 5 秒,花了 0.31 元。
  • 用 Jev 跑,5 秒,花了 0.01 元。

前者是后者的 49 倍时间,后者是前者的 1/31 成本。

49 倍啊兄弟们。

我当时就愣在那儿了。

我之前花在等大模型上的那些时间,合着全是在浪费生命?

而且结果里还有个特别贴心的设计:对于那些不太确定的判断,它不会硬给你一个答案,而是标个"疑似资损-待复核"。

这就很人性化。

就像你问一个朋友:我穿这件衣服好看吗?

他不是直接说"好看"或者"不好看",而是说:这件吧,我觉得还行,但你要不找别人再看看?

既给了参考,又不背锅。

我喜欢这种有分寸的 AI。

4. 场景二:UI 自动化测试

4.1 又是个什么活儿

第二个场景更有意思——UI 自动化。

你知道现在做 UI 自动化有多离谱吗?

以前是写固定脚本,页面改一个按钮位置,你整个脚本就得重写。

后来搞出来个交互式的,让 AI 看着页面自己决定点哪儿。

想法是好的。但问题是——每一步都要问大模型一次。

一个登录流程,点用户名、输密码、点登录,三步下来,大模型要被调用三次。

每一步都等几秒,加起来就很可观了。

就像你开车,每到一个路口就得停下来问导航:我下一步该往哪走?

导航当然能告诉你,但你得等它反应啊。

而且导航有时候还给你绕路。

4.2 Jev 怎么干的

我让浏览器工具先把页面上所有可见的控件都收集起来,然后让 Jev 从这些候选里选一个:

下一步该操作哪个元素?是点按钮还是填输入框?

Jev 直接给你选好,置信度 98%、100% 那种。

我看了一下它的判断过程:

当前步骤要做什么?往一个可编辑输入框填内容。

填哪个?邮箱那个输入框。

填完之后呢?点登录按钮。

就这么简单,一步到位,不跟你废话。

4.3 对比一下就知道差距了

同一个登录用例:

  • 用通用大模型跑,90 秒,花了 0.93 元。
  • 用 Jev 跑,7 秒,花了 0.01 元。

13 倍的速度,93 倍的成本差距。

93 倍是什么概念?就是你去买奶茶,一家店卖 30 块,另一家店卖 3 毛钱。

味道还差不多。

你下次买奶茶选哪家?

当然了,我不是说大模型不好。它有它擅长的事儿,比如复杂推理、开放性生成。

但你不能让一个擅长写作文的人,去干一个擅长做选择题的人的活儿吧?

术业有专攻,古人说这话的时候,肯定没想到有一天会用在 AI 身上。

5. 场景三:知识库检索精排

5.1 这个场景有点绕,我慢慢说

第三个场景,是我觉得最聪明的一个用法。

我们平时做分析,会先去知识库里检索相关的历史用例。

用向量检索,对吧?

你搜"XXX 业务",它就给你召回一堆语义相近的结果。

问题是——语义相近不代表业务相关。

我给你举两个例子你就懂了。

第一条:绑定境内银行卡,完成商城人民币支付,验证支付成功。

你看,里面有"银行"有"支付",关键词全中。

但它验证的是境内支付,跟我要找的跨境业务半毛钱关系都没有。

第二条:打开目标银行的汇率展示页,切换币种,验证显示正确。

更离谱。里面连"目标业务银行"都出现了,但它验证的是页面展示,不是交易链路。

你说这些结果有用吗?

扔给 AI,它还真能给你分析出一堆"相关"的东西来。

但你心里清楚——这都是噪音。

就像你在百度搜"感冒怎么办",弹出来一堆卖感冒药的广告。

看起来跟你的问题有关,但其实根本没解决你的问题。

5.2 加一道精筛

所以我在向量召回之后,加了一道 Jev 的判断。

三个维度,一次问完:

  • 第一,这条用例验证的对象,跟我要找的业务直接相关吗?
  • 第二,它属于哪个业务主题?目标业务、其他跨境、境内支付、还是非支付域?
  • 第三,用例的内容质量怎么样?场景、操作对象、预期结果,三要素齐不齐?

Jev 跑完,给你分好类:

  • 相关的、质量好的 → 交给 AI 去分析
  • 相关但不完整的 → 单独放着,待补全
  • 不相关的 → 直接扔掉

多好。

5.3 代码给你,拿去改改用

import json
import os
from urllib.request import Request, urlopen

JEV_URL = "..."
QUESTIONS = {
    "relevance": {
        "type": "noul",
        "instructions": (
            "该用例的验证对象是否直接属于XXX业务?"
            "核心链路、通道或交易场景涉及XXX业务的收付汇、"
            "跨境通道(含代理行、业务通道、退款、对账、合规拦截、通道切换)才算相关;"
            "仅出现XXX业务、银行、支付等词,但验证其他业务,不算相关。"
        ),
    },
    "topic": {
        "type": "choice",
        "instructions": "该用例最准确归属的业务主题是哪个?",
        "criteria": {
            "target_business": "XXX业务(通道、收付汇、退款、对账、合规、切换)",
            "other_crossborder": "其他跨境支付(非目标业务的其他通道)",
            "domestic_payment": "境内支付收单",
            "non_payment": "非支付域(汇率展示、开户、物流、登录、营销等)",
        },
    },
    "quality": {
        "type": "score",
        "instructions": "作为基线测试用例,场景、操作对象、预期结果三要素是否完备清晰?",
        "criteria": ["要素缺失或表述含糊", "基本完整但细节不足", "三要素完备可直接执行"],
    },
}


def judge_case(case):
    payload = {"state": json.dumps(case, ensure_ascii=False), "questions": QUESTIONS}
    request = Request(
        JEV_URL,
        data=json.dumps(payload, ensure_ascii=False).encode("utf-8"),
        headers={
            "Content-Type": "application/json",
            "Authorization": "Bearer " + os.environ["AUTH_TOKEN"],
        },
        method="POST",
    )
    with urlopen(request, timeout=30) as response:
        body = json.load(response)
        # 接口业务错误也可能返回 HTTP 200,必须检查信封内 code。
        if body.get("code") != 200:
            raise RuntimeError(f"Jev 调用失败:{body.get('code')}{body.get('message')}")
        return body["data"]


def refine(candidates):
    accepted, review, rejected = [], [], []
    total_cost = 0.0

    for case in candidates:
        data = judge_case(case)  # 每条候选一次请求,同时完成三个判断。
        answers = data["answers"]
        relevance = answers["relevance"]["noul"]
        topic = answers["topic"]["choice"]
        quality = answers["quality"]["score"]

        row = {"case": case, "answers": answers, "trace_id": data.get("u_trace_id")}
        total_cost += data.get("usage", {}).get("cost", 0)

        # 以下阈值与排序仅为示例,不代表截图中原脚本的实际配置。
        if relevance < 0.8 or topic != "target_business":
            rejected.append(row)
        elif quality < 2:
            review.append(row)
        else:
            accepted.append(row)

    accepted.sort(key=lambda x: x["answers"]["relevance"]["noul"], reverse=True)
    return {"accepted": accepted, "review": review, "rejected": rejected,
            "jev_cost": total_cost}


# 在已开启 Jev 的 AI Testing 会话终端运行,复用会话自带 token。
# 输入文件由现有向量检索脚本输出,内容为 Top-10 候选用例的 JSON 数组。
if __name__ == "__main__":
    with open("vector_top10.json", encoding="utf-8") as f:
        candidates = json.load(f)
    print(json.dumps(refine(candidates), ensure_ascii=False, indent=2))

5.4 跑出来的结果

跑了一圈,Top-10 的结果里:

  • 采纳 6 条
  • 待补全 1 条
  • 剔除噪音 3 条

整个过程花了 4 秒,Jev 成本是 0.000336 美元。

0.000336 美元。

我算了一下,合人民币不到两厘。

两厘是什么概念?就是你在地上捡一分钱,都够你跑五十次的。

50 次啊兄弟。一分钱能跑 50 次,这性价比,你跟我说你不心动?

5.5 这个设计妙在哪

妙就妙在——它把"判断"这个活儿,从大模型身上剥下来了。

以前是:向量召回 → 直接扔给大模型分析。

现在是:向量召回 → Jev 先筛一遍 → 只把真正相关的扔给大模型。

这就像什么?

就像你公司前台,以前是不管谁来都直接往你办公室领,搞得你一天到晚见一堆无关的人。

后来你找了个前台,先帮你筛一遍:是客户的领进来,是快递的放楼下,是推销的直接轰走。

你说你是不是轻松多了?

6. 最后唠几句

6.1 三个场景的共同点

跑完这三个场景,我发现一个规律:

它们都有一个共同点——答案范围是明确的。

你不是让 AI 自由发挥,你是给它几个选项,让它选一个。

这就是 Jev 最擅长的事儿。

6.2 它有什么本事

我总结了一下,Jev 就三招:

  • Noul:是非判断,返回一个 0 到 1 的概率值。
  • Choice:从你给的选项里挑一个,最多 255 个选项。
  • Score:按你定义的档位打分,比如 1 到 3 分。

就这三招,但架不住它快啊、便宜啊。

端到端延迟 70 到 500 毫秒,输入 0.3 元每百万 token,输出免费。

这个价格,你点杯奶茶都够它跑一个月的。

6.3 它不行的地方

当然了,它也不是万能的。

你不能让它写代码,不能让它做长程推理,不能让它做复杂规划。

它就是个做选择题的选手。

而且你得把选项定义清楚。你要是选项写得模棱两可,它给你的结果也模棱两可。

就像你问别人:你觉得这个方案怎么样?

别人也只能说:嗯……还行吧。

你得问:这个方案在现有架构下,能不能在两周内上线?

人家才能给你一个明确的答案。

你问得越清楚,它答得越靠谱。

6.4 怎么用最划算

我的建议是:

把需要分析、规划、生成的活儿,交给大模型。

把那些边界明确、高频重复的判断活儿,交给 Jev。

比如路由分流、结果校验、风险打分、输入过滤。

你给它的活儿越具体,它干得越漂亮。

你给它一个模糊的问题,它就给你一个模糊的答案。

这不怪它,怪你没说清楚。

6.5 我的建议

别上来就大干快上。

先找一个你工作流里最频繁、判断边界最明确的环节,试一下。

定义好答案范围,写好判断标准,拿一批样本跑一遍。

看看准不准,看看快不快,看看省不省钱。

确认没问题了,再慢慢扩大范围。

我就是这么干的。

三个场景,从简单到复杂,一个一个试过来。

最后发现——这玩意儿是真的能打。

不是那种"概念很好但落地拉胯"的东西。

是真的快、真的便宜、真的能用。

行了,不说了。

我得回去看看还有哪些活儿能扔给 Jev 干的。

毕竟,谁不喜欢一个又快又便宜还不顶嘴的 AI 呢?

P.S. 推荐一个大神的教程给想要了解或者学习人工智能知识的读者,这个教程里内容讲解通俗易懂且风趣幽默,对我帮助很大。我想与大家分享这个宝藏教程,请点击下方链接查看,传送门https://blog.csdn.net/qq_74013365

转载自 CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/qq_74013365/article/details/169834738

文章来源转载

评论

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--