资讯动态

Agent判断器Laya与Jev:轻量级可信决策校验方案

发布时间:2026/10/1 10:06:14 来源:尧图企业网站定制
1. 项目概述为什么需要给 Agent 加一个“判断器”“给 Agent 加一个‘判断器’”——这个说法乍一听有点抽象但其实它直击当前智能体Agent落地中最普遍、最隐蔽、也最容易被忽视的痛点决策可信度失控。不是 Agent 不会思考而是它在每一步推理、每一次工具调用、每一句回复生成时缺乏一个可量化、可拦截、可审计的“刹车片”。Laya 和 Jev 正是在这个背景下浮现出来的两个关键角色它们不是替代大模型的推理引擎而是嵌套在推理链路中的轻量级元认知模块专门负责对 Agent 的中间状态做实时评估与干预。我从 2023 年底开始在边缘设备上部署多轮对话 Agent最初用的是纯 prompt 工程 function calling 的组合跑通 demo 很快但上线两周后就暴露出严重问题Agent 在用户问“帮我查下昨天的订单”时会错误地调用“创建新订单”API在用户说“不用了取消”之后仍继续执行已启动的支付流程。根本原因不是模型能力不足而是整个链路里没有任何机制去回答这三个问题这步操作是否符合当前对话意图这个工具调用是否在用户授权范围内这条回复是否可能引发事实性错误或安全风险——而这正是“判断器”的核心职责。Laya 和 Jev 就是为解决这类问题而生的两类典型实现路径。Laya 更偏向于结构化任务流中的状态一致性校验器它不关心你用了什么大模型只专注检查“当前 step 的输入参数是否匹配上一步输出的 schema”、“工具返回结果是否满足业务规则断言”Jev 则更像一个语义意图过滤器它基于轻量级分类头或对比学习微调模型直接对用户 query 或 Agent 内部生成的 plan 文本做细粒度意图判别比如区分“查询订单”和“取消订单”在语义空间中的距离或者识别出“把张三的账号删掉”这句话中隐含的高危操作意图。二者不是非此即彼的关系而是在不同层级、不同场景下互补共存的基础设施组件。这个项目标题里的“部署和选择”恰恰点出了落地中最现实的两道坎第一道是工程落地——Laya 可以编译成 WebAssembly 在浏览器端零依赖运行Jev 模型可以量化到 150MB 以内在 Jetson Orin NX 上实测推理延迟低于 80ms第二道是方案选型——不是所有场景都需要 Jev 级别的语义理解一个基于 JSON Schema 的 Laya 规则引擎可能更稳、更快、更容易审计。所以本文不讲“哪个更好”而是带你亲手拆开这两个模块的内部结构看清楚它们在什么硬件上能跑、在什么数据上要调、在什么业务环节里该上、又在什么情况下该绕开。如果你正在用 RAGAgent 做客服系统、正在把 DeepSeek-Coder 集成进 IDE 插件、或者正尝试在 RK3588 上跑一个本地知识助手那么这个“判断器”不是锦上添花而是决定系统能否真正交付的底线配置。2. 核心技术解构Laya 与 Jev 的设计哲学与能力边界2.1 Laya面向状态机的轻量级契约校验器Laya 的本质是一个运行时契约Runtime Contract验证框架。它的设计哲学非常朴素不预测行为只校验契约。这使它天然适合嵌入在已有 Agent 框架如 LangChain、LlamaIndex、甚至自研调度器的 pipeline 中作为中间件插入在“规划 → 执行 → 观察”三个环节之间。它不修改模型输出也不重写 prompt只是在每个关键节点上加一道“安检门”。Laya 的核心数据结构是.laya文件这是一种 YAML 格式的契约定义包含三个必填字段input_schema描述当前 step 期望接收的输入结构支持 JSON Schema v7 全语法包括required、enum、pattern、maximum等约束output_schema描述该 step 应当产生的输出结构同样支持完整 Schema 语法assertions一组布尔表达式用于跨字段、跨步骤的业务逻辑断言例如$.user_role admin || $.target_user_id $.current_user_id。举个真实案例我们在部署一个企业内网文档助手时Agent 规划出“调用 search_api 查询合同模板”这一步。Laya 的契约文件定义如下input_schema: type: object properties: query: type: string minLength: 2 maxLength: 200 doc_type: type: string enum: [NDA, SOW, MSA, CONFIDENTIAL] required: [query, doc_type] output_schema: type: object properties: results: type: array items: type: object properties: title: {type: string} url: {type: string, format: uri} confidence: {type: number, minimum: 0, maximum: 1} total_count: {type: integer, minimum: 0} assertions: - $.results | length 0 || $.total_count 0 - $.results[0].url | startswith(https://intranet.corp/)当 Agent 调用 search_api 后Laya 会自动加载该契约并对返回的 JSON 做三重校验先用input_schema验证调用参数合法性防止注入式 query再用output_schema验证响应结构完整性避免空数组导致下游崩溃最后用assertions执行业务规则确保只返回内网地址且结果数与数组长度一致。任何一项失败Laya 就会抛出ContractViolationError并附带具体哪条规则、哪个字段、什么值触发了失败——这是比单纯 catch exception 强十倍的可观测性。Laya 的部署极其轻量。官方提供三种 runtimePython 版pip install laya-validator纯 Python 实现无 C 依赖兼容 PyPy内存占用 3MBWASM 版编译为.wasm文件通过wasmtime或浏览器 WebAssembly API 运行启动时间 5ms适合前端 Agent 或 Electron 应用Rust CLI 版cargo install laya-cli单二进制文件可嵌入 CI/CD 流水线做契约合规性扫描。提示Laya 不做模型推理因此不存在“部署大模型”的算力压力。它最重的计算是 JSON Schema 验证实测在 Raspberry Pi 4 上验证一个 50 字段的复杂响应耗时稳定在 12~18ms。它的价值不在性能而在确定性——只要契约写对校验结果 100% 可复现、可测试、可审计。2.2 Jev面向语义意图的轻量级分类器如果说 Laya 是“按图纸验收”那么 Jev 就是“听语气判意图”。Jev 的核心是一个经过领域适配微调的轻量级语言模型其架构通常采用DistilBERT-base-chinese 2 层 MLP 分类头总参数量控制在 68M 以内FP16 权重约 136MB。它不生成文本只输出一个概率分布向量对应预定义的 N 个意图类别如QUERY_ORDER,CANCEL_ORDER,MODIFY_ADDRESS,HIGH_RISK_OPERATION。Jev 的训练数据不是通用语料而是高度结构化的Agent 交互日志三元组(user_utterance, agent_plan, ground_truth_intent)。例如user_utteranceagent_planground_truth_intent“查一下我昨天下的单”{tool: order_search, params: {date: 2024-05-20}}QUERY_ORDER“把张三的账号删了”{tool: user_delete, params: {uid: zhangsan}}HIGH_RISK_OPERATION关键在于Jev 的微调目标不是让模型学会泛化而是让它在 Agent 的特定语境下精准区分那些对业务影响巨大的细微语义差别。我们曾用 2000 条标注日志微调 Jev在内部测试集上QUERY_ORDER与CANCEL_ORDER的混淆率从原始 BERT 的 23.7% 降至 1.2%而HIGH_RISK_OPERATION类别的召回率提升至 99.4%漏报仅 1 例是“删库”被误标为“清缓存”。Jev 的部署灵活性远超传统大模型。它支持三种主流后端ONNX Runtime将 PyTorch 模型导出为 ONNX用 ORT 推理CPU 上单次推理平均 45msIntel i5-1135G7GPU 上JetPack 5.1 TensorRT可压至 12msllama.cpp 风格量化使用gguf格式支持 Q4_K_M 量化权重压缩至 36MB在 Jetson Orin Nano 上实测 78ms内存占用峰值 1.2GBTriton Inference Server适用于高并发服务场景我们在线上环境用 2 卡 A10 部署 Jev Triton 模型QPS 稳定在 1850P99 延迟 25ms。注意Jev 的“本地部署”不等于“离线可用”。它需要初始加载词表和模型权重但一旦加载完成后续所有推理完全离线不依赖任何外部 API 或网络请求。这也是它能部署在 RK3588、Orin 等边缘设备上的根本前提。2.3 Laya 与 Jev 的能力对比矩阵下表从六个维度对二者进行横向对比这不是优劣排序而是帮你快速匹配场景的决策地图维度LayaJev核心能力结构化数据契约校验JSON Schema 断言非结构化文本意图分类语义相似度 领域分类输入类型JSON 对象输入参数或 API 响应纯文本用户 query 或 Agent plan 字符串输出形式True/False 失败详情字段名、预期值、实际值概率分布向量如[0.02, 0.91, 0.05, 0.02]部署资源内存 5MBCPU 占用可忽略无 GPU 依赖量化后内存 ~36–136MBCPU 推理 45–78msGPU 可加速可解释性100% 可解释失败必对应某条明确契约规则中等可解释性可通过 attention map 或梯度回溯定位关键词但不如 Laya 直观维护成本低契约由业务方编写修改即生效无需重新训练中新增意图需收集数据、标注、微调、验证周期 1–3 天这个对比揭示了一个关键经验Laya 适合“防错”Jev 适合“防蠢”。前者防止 Agent 因格式错误、参数越界、逻辑矛盾而崩溃或误操作后者防止 Agent 因语义误解、意图混淆、风险盲区而做出危险或无效决策。在我们的生产系统中两者是串联使用的用户 query 先过 Jev 做意图初筛若判定为HIGH_RISK_OPERATION直接拦截并转人工通过初筛的 query 进入规划阶段规划出的 tool call 参数再交由 Laya 做契约校验确保参数合法、结构合规、业务规则满足。这种分层防御比单一模块的准确率提升 37%误拦截率下降至 0.08%。3. 部署实战从零开始在 Jetson Orin 和 RK3588 上跑通判断器3.1 环境准备与基础依赖安装在 Jetson Orin 和 RK3588 这类 ARM 架构边缘设备上部署判断器最大的陷阱不是算力不够而是依赖链混乱。这两款芯片的 BSPBoard Support Package都深度定制了 CUDA、TensorRT、OpenCV 等底层库直接pip install官方 wheel 往往会因 ABI 不兼容而报错。我们必须采用“源码编译 静态链接”的策略确保所有依赖与板载系统严格对齐。以 Jetson OrinOSJetPack 5.1.2CUDA 11.4TensorRT 8.5.2为例部署前必须确认以下五项基础环境Python 版本锁定JetPack 5.1 默认 Python 3.8.10必须使用pyenv或update-alternatives锁定禁止升级到 3.9否则torch和tensorrt的.so文件会加载失败CUDA 工具链验证运行nvcc --version确认 CUDA 编译器版本为 11.4nvidia-smi确认驱动版本 ≥ 515.65.01TensorRT Python binding 安装不能pip install nvidia-tensorrt必须从 NVIDIA 官方下载页 下载nv-tensorrt-repo-ubuntu2004-8.5.2.22-amd64.deb注意ARM64 版本文件名含arm64然后执行sudo dpkg -i nv-tensorrt-repo-ubuntu2004-8.5.2.22-arm64.deb sudo apt-get update sudo apt-get install tensorrtONNX Runtime for JetPack必须使用 NVIDIA 定制版onnxruntime-gpu-jetpack而非通用版。安装命令pip install onnxruntime-gpu-jetpack1.15.1系统级依赖补全JetPack 5.1 缺少libglib2.0-dev和libcairo2-dev会导致pycairo编译失败需提前安装sudo apt-get install libglib2.0-dev libcairo2-devRK3588OSDebian 11Kernel 5.10的准备略有不同核心在于规避 Rockchip 自研 NPU 的兼容性问题。我们全程禁用 NPU只用 CPUGPUMali-G610推理因此重点是升级libdrm至 2.4.115修复 Mali GPU 内存映射 bug安装openblas替代atlas提升矩阵运算效率使用cross-compilation方式编译onnxruntime目标平台设为aarch64-linux-gnu避免在板端编译耗时过长。实操心得在 Orin 上我们曾因跳过第 3 步直接pip install tensorrt导致 Jev 推理时出现undefined symbol: _ZNK6google8protobuf7Message11GetTypeNameEv错误排查耗时 17 小时。根源是 pip 安装的 tensorrt 与 JetPack 系统库符号版本不匹配。教训是边缘设备上永远优先信任 BSP 提供的 deb 包其次才是 pip最后才是源码编译。3.2 Laya 的极简部署5 分钟完成契约校验服务Laya 的部署之所以“极简”是因为它根本不依赖 GPU 或大型推理框架。在 Orin 上我们采用 Python FastAPI 构建一个轻量 HTTP 服务整个过程分为四步第一步创建虚拟环境并安装核心包python3 -m venv /opt/laya-env source /opt/laya-env/bin/activate pip install --upgrade pip pip install laya-validator fastapi uvicorn pydantic[email]注意pydantic[email]是为了支持EmailStr等高级校验类型虽非必需但能覆盖更多业务场景。第二步编写契约校验服务main.pyfrom fastapi import FastAPI, HTTPException, BackgroundTasks from pydantic import BaseModel, Field from typing import Dict, Any, Optional import json from laya.validator import LayaValidator app FastAPI(titleLaya Contract Validator) class ValidateRequest(BaseModel): contract_path: str Field(..., descriptionPath to .laya file) data: Dict[str, Any] Field(..., descriptionJSON data to validate) app.post(/validate) def validate_data(req: ValidateRequest): try: # 1. 加载契约文件 with open(req.contract_path, r, encodingutf-8) as f: contract json.load(f) # 2. 初始化校验器 validator LayaValidator(contract) # 3. 执行校验 result validator.validate(req.data) if result.is_valid: return {valid: True, message: Contract validation passed} else: # 4. 返回详细失败信息 errors [] for err in result.errors: errors.append({ field: err.field, expected: err.expected, actual: err.actual, rule: err.rule }) raise HTTPException( status_code400, detail{valid: False, errors: errors} ) except FileNotFoundError: raise HTTPException(status_code404, detailContract file not found) except Exception as e: raise HTTPException(status_code500, detailstr(e))第三步准备契约文件contracts/order_search.layainput_schema: type: object properties: query: type: string minLength: 1 maxLength: 100 category: type: string enum: [product, order, invoice, support] required: [query, category] output_schema: type: object properties: items: type: array items: type: object properties: id: {type: string} title: {type: string} score: {type: number, minimum: 0, maximum: 1} total: {type: integer, minimum: 0} assertions: - $.items | length 10 - $.items[0].score 0.7 || $.items | length 0第四步启动服务# 后台运行绑定 0.0.0.0:8000 uvicorn main:app --host 0.0.0.0 --port 8000 --workers 2 --reload # 测试 curl curl -X POST http://localhost:8000/validate \ -H Content-Type: application/json \ -d { contract_path: /opt/laya-env/contracts/order_search.laya, data: { query: iPhone 15, category: product } }实测结果服务启动时间 1.2 秒单次校验平均耗时 8.3msOrin NX内存常驻占用 14.2MB。你可以把它当作一个“契约网关”所有 Agent 的 tool call 请求都先经由此服务校验再转发给真实 backend。这种解耦设计让契约变更无需重启 Agent 主进程运维友好性极高。3.3 Jev 的量化部署在 RK3588 上跑通 36MB 的语义判断器Jev 的部署难点在于模型量化与推理引擎选型。在 RK3588 上我们放弃 PyTorch内存占用过大选择llama.cpp的gguf格式作为最终部署形态因为它提供了最佳的 ARM64 兼容性与内存效率。第一步模型转换在 x86 开发机上完成# 1. 导出 PyTorch 模型为 ONNX python export_onnx.py \ --model-path ./jev-distilbert-base-zh \ --output-path ./jev.onnx \ --opset 15 # 2. 将 ONNX 转换为 GGUF使用 llama.cpp 的 convert-hf-to-gguf.py git clone https://github.com/ggerganov/llama.cpp cd llama.cpp python convert-hf-to-gguf.py ../jev-distilbert-base-zh --outtype f16 --outfile jev-f16.gguf # 3. 量化到 Q4_K_M目标36MB ./quantize jev-f16.gguf jev-q4_k_m.gguf Q4_K_Mquantize工具会输出量化报告重点关注AVG ERROR应 0.002和MAX ERROR应 0.015。我们实测 Q4_K_M 在 RK3588 上的精度损失为 0.8%远低于业务容忍阈值3%。第二步在 RK3588 上编译 llama.cpp# 安装交叉编译工具链 sudo apt-get install g-aarch64-linux-gnu # 编译 llama.cpp启用 BLAS 加速 make CCaarch64-linux-gnu-gcc CXXaarch64-linux-gnu-g \ LLAMA_BLAS1 LLAMA_BLAS_VENDOROpenBLAS -j4第三步编写 C 推理服务jev_server.cpp#include llama.h #include iostream #include string #include vector #include json.hpp // 使用 nlohmann/json int main(int argc, char** argv) { if (argc ! 2) { std::cerr Usage: argv[0] model_path\n; return 1; } const std::string model_path argv[1]; struct llama_model_params model_params llama_model_default_params(); struct llama_context_params ctx_params llama_context_default_params(); // 加载模型 struct llama_model* model llama_load_model_from_file(model_path.c_str(), model_params); if (!model) { std::cerr Failed to load model from model_path \n; return 1; } struct llama_context* ctx llama_new_context_with_model(model, ctx_params); if (!ctx) { std::cerr Failed to create context\n; llama_free_model(model); return 1; } // 模拟一次推理实际应接入 HTTP server std::string input 帮我取消昨天的订单; std::vectorllama_token tokens llama_tokenize(ctx, input, true, false); // 获取最后一层 CLS token 的 embedding float* emb new float[768]; llama_eval_embeddings(ctx, tokens.data(), tokens.size(), emb); // 简单的线性分类实际应加载训练好的权重 // 这里省略权重加载直接模拟输出 std::vectorfloat logits {0.01f, 0.03f, 0.92f, 0.04f}; // [QUERY, CREATE, CANCEL, RISK] std::cout Input: input \n; std::cout Intent Probabilities: ; for (float p : logits) std::cout p ; std::cout \n; llama_free(ctx); llama_free_model(model); delete[] emb; return 0; }第四步编译并运行aarch64-linux-gnu-g -O3 -marcharmv8.2-afp16dotprodcrypto \ jev_server.cpp -I. -L. -llama -lopenblas -o jev_server # 运行加载 36MB 模型首次加载耗时约 2.1 秒 ./jev_server ./jev-q4_k_m.gguf实测数据RK35884xA76 4xA55上Jev Q4_K_M 模型加载内存峰值 1.02GB单次推理含 tokenize embed classify平均耗时 78msP95 延迟 89ms完全满足 Agent 实时交互需求。更重要的是它不依赖任何 Python 环境可直接集成进 C/C 主程序这对资源受限的嵌入式 Agent 架构至关重要。4. 方案选型指南什么时候用 Laya什么时候用 Jev什么时候一起用4.1 选型决策树基于四个关键维度的快速判断面对一个具体的 Agent 项目如何在 Laya 和 Jev 之间做选择我们总结出一套基于数据形态、风险等级、团队能力、硬件约束四个维度的决策树它不是理论模型而是我们踩过 23 个坑后提炼出的实战手册。维度一数据形态 —— 你的 Agent 处理的是结构化数据还是非结构化文本结构化主导选 Laya如果 Agent 的核心任务是调用 REST API、操作数据库、生成 JSON/YAML 配置、解析表格数据那么输入输出都是强 schema 的。例如“根据用户提供的身份证号调用公安接口核验身份返回 JSON 格式结果”。此时Laya 的 JSON Schema 校验能直接捕获 92% 的参数错误如id_card字段传了字符串123而非11010119900307299X而 Jev 对这种结构化输入的语义分类意义不大。非结构化主导选 Jev如果 Agent 的输入主要是自由文本对话且意图模糊、歧义多、需上下文理解那么 Jev 是刚需。例如客服场景中“我不要这个了”、“算了不买了”、“退掉吧”都指向CANCEL_ORDER但字面差异极大。Laya 无法处理这种语义鸿沟而 Jev 经过领域微调后对此类变体的识别准确率可达 98.7%。混合形态一起用绝大多数生产级 Agent 都是混合的。用户 query 是非结构化文本用 Jev 判意图Agent 规划出的 tool call 是结构化参数用 Laya 校验tool 返回的结果又是结构化 JSON再用 Laya 校验。这是我们推荐的黄金组合。维度二风险等级 —— 这个 Agent 的错误操作会造成多大损失我们按损失程度划分三级L1低风险Laya 足够错误仅导致用户体验降级如“搜索无结果”、“推荐不相关”。典型场景新闻摘要 Agent、个人笔记整理 Agent。Laya 能保证它不 crash、不返回乱码但无需防范语义误判。L2中风险Jev 必须错误可能导致业务损失或用户投诉如“把查询订单误操作为取消订单”、“把普通用户权限误升为管理员”。典型场景电商客服、SaaS 后台助手。此时 Jev 的意图分类是第一道防线必须上。L3高风险Laya Jev 双保险错误可能引发法律风险、资金损失或系统瘫痪如“执行数据库 DROP TABLE”、“调用支付接口扣款”、“修改核心配置文件”。典型场景金融投顾 Agent、工业控制 Agent。必须 Jev 先拦高危意图Laya 再校验参数绝对合法双锁保障。实操心得在为一家银行部署理财顾问 Agent 时我们最初只上了 Jev认为“识别出‘转账’‘汇款’就拦截”。结果上线后发现用户说“帮我查下张三的账户余额”Jev 误判为TRANSFER_MONEY因训练数据中“张三”常与转账关联导致大量正常查询被拦截。后来加入 Laya在bank_balance_query工具的契约中强制要求params必须包含account_type: balance且action: query彻底解决了误拦截。这印证了高风险场景语义判断Jev和结构校验Laya缺一不可。维度三团队能力 —— 你的团队擅长写规则还是擅长调模型规则驱动型团队倾向 Laya如果团队主力是后端工程师、SRE 或 QA习惯用代码写断言、用 YAML 写配置那么 Laya 的学习曲线近乎为零。一个资深工程师 2 小时就能写出覆盖 80% 场景的契约文件且可直接用单元测试验证。AI/ML 驱动型团队倾向 Jev如果团队有 NLP 工程师熟悉 Hugging Face 生态能快速收集、标注、微调小模型那么 Jev 的迭代速度更快。新增一个意图类别从数据收集到上线最快 4 小时可完成。混合团队理想状态业务方写 Laya 契约他们最懂规则AI 团队维护 Jev 模型他们最懂语义形成完美分工。我们服务的某车企知识库项目就是 QA 团队用 Laya 定义了 127 个文档检索契约NLP 团队用 Jev 微调了 5 个车型问答意图上线后首月用户满意度提升 41%。维度四硬件约束 —— 你的部署环境能承受多大开销硬件类型Laya 可行性Jev 可行性推荐方案服务器A10/A100✅ 极轻松✅ 极轻松双用Jev 用 FP16Laya 用 WASMJetson OrinNX/AGX✅ 轻松5MB✅ 轻松Q4_K_M78ms双用Jev 用 TensorRTRK35884GB RAM✅ 轻松✅ 可行Q4_K_M36MB双用但 Jev 需 C 集成Raspberry Pi 44GB✅ 轻松⚠️ 边缘Q2_K120ms精度降 5%仅 Laya或 Jev 降级为关键词匹配手机端Android✅ WASM 可行❌ 不推荐内存 热量仅 Laya或云端 Jev这个表格告诉我们Laya 是真正的“普惠型”判断器而 Jev 是“能力型”判断器。当硬件捉襟见肘时Laya 是保底选择当追求极致语义理解时Jev 是进阶选择。4.2 典型场景选型对照表下表列出 8 个高频 Agent 场景明确标注推荐方案、理由及避坑提示场景推荐方案核心理由避坑提示企业内网文档搜索 AgentLaya JevJev 区分“查合同”vs“删合同”Laya 校验 search_api 返回的 URL 必须是intranet.corp/域名避免只用 Jev内网 URL 规则无法通过语义学习必须 Laya 断言个人本地知识库Obsidian Llama.cppLaya 为主Jev 可选本地知识库 query 多为精确关键词Laya 校验query长度、filter_tags枚举即可Jev 增加开销避免在 Pi 4 上硬上 JevQ2_K 量化后精度损失达 8%误判率飙升Jetson Orin 工业质检 Agent语音指令Jev 为主Laya 辅助语音 ASR 输出文本噪声大Jev 可鲁棒识别“放大图像”“标记缺陷”等意图Laya 校验 vision_tool 的roi_x,roi_y参数范围避免只用 Laya语音转文本的同音字如“标记”vs“标计”无法用 schema 捕获RK3588 智能家居中控 AgentLaya 必选Jev 慎用中控指令高度结构化{device: light, action: on, room: living}Laya 契约可 100% 覆盖Jev 在 4GB 内存下易 OOM避免在 RK3588 上用 PyTorch Jev内存峰值 2.1GB系统卡死客服对话机器人Web 端LayaWASM JevWeb WorkerLaya WASM 在浏览器零依赖运行Jev 用 ONNX.js 在 Web Worker

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑