
cactus-needle测试体系导读9个测试文件与pytest运行指南【免费下载链接】needle14MB foundation model for tiny devices; phones, wearables, smart home, and robots.项目地址: https://gitcode.com/GitHub_Trending/needle20/needle这篇文章是cactus-needle的测试体系导读这个 14MB 的轻量工具调用模型仓库在 tests/ 目录下用pytest组织了 9 个测试文件覆盖工具 Schema 生成、真实推理、LoRA 训练与模型导出三大层面。跟随这份 pytest 运行指南你既能快速验证本地环境是否健康也能看懂 cactus-needle 的核心内部机制。 测试体系总览三层覆盖9 个文件cactus-needle 的测试按外部依赖分成三层依赖越重跳过机制越完善保证没有 GPU、没有 C 推理引擎的机器上也能顺畅跑起大部分用例层级测试文件核心内容依赖纯单元测试test_tools.pytool装饰器与 Schema 生成无纯单元测试test_render.py训练数据渲染、Loss 掩码无纯单元测试test_lora.pyLoRA 初始化与合并数学JAX纯单元测试test_fetch.py平台库名与权重规格解析无半集成测试test_weights.py权重加载/卸载语义桩引擎无半集成测试test_generate.py数据合成流水线Mock API无端到端推理test_inference.py工具调用、结构化抽取真实 C 引擎慢速集成test_finetune.pyLoRA 微调全流程微型检查点慢速集成test_build.py.cact模型导出微型检查点 标记slow的 test_finetune.py 和 test_build.py 会现场用 JAX 初始化一个微型模型运行时间明显更长可用 marker 单独筛选。 pytest 运行指南三步跑通1. 安装测试依赖。项目通过test可选依赖声明了 pytest 与 pydantic见 pyproject.toml 中的test [pytest, pydantic]pip install -e .[test]2. 运行全量测试。pyproject.toml已配置testpaths [tests]因此在仓库根目录直接执行即可pytest -v3. 按需筛选。常用技巧pytest tests/test_inference.py # 只跑某个测试文件 pytest -m not slow # 跳过慢速的构建/微调测试 pytest -k schema # 按关键词筛选用例⚙️ 共享基础设施conftest.py 的两个关键件tests/conftest.py 为整个测试体系提供两块公共设施requires_engine标记检测本地是否已有 cactus-needle 的 C 推理引擎首次真实使用时会从 Hugging Face 自动拉取缓存。若未安装test_inference.py等用例会自动跳过而非报错输出友好原因。tiny_checkpoint会话级 fixture用 JAX 现场初始化一个超小规模的 Simple Attention Networkd_model64、仅 2 层、词表 8192并把参数 pickle 到临时目录。test_finetune.py与test_build.py都基于它完成微调 → 合并 → 导出的完整链路验证几秒即可完成一轮端到端训练测试。 各测试文件都在验证什么 工具 Schema 生成test_tools.pycactus-needle 的核心契约是Python 函数 → JSON Schema。该文件覆盖了 needle/agent/tools.py 中build_schema的大部分边界类型注解、默认值与required的推导规则typing.Literal、Optional、带类型项的listField(description..., ge..., pattern...)约束与 docstring 参数说明PEP 604 联合类型int | None在 Python 3.10 上的行为 训练数据渲染test_render.py验证 needle/model/finetune.py 中数据准备链路样例如何渲染出带标记的 prompt/targetIM_START、THINK_START、TOOL_CALL_START、loss 掩码是否只覆盖目标段、fit_max_len的长度分桶以及load_jsonl跳过非法行的健壮性。 LoRA 数学test_lora.py用小型张量验证 LoRA 的三个数学性质目标层只选取q_proj/gate_proj投影核、初始化时B矩阵为零保证起点等价于原模型、merge_lora按scale正确叠加增量——这正是微调后合并导出仍是单个.cact设计成立的根基。 引擎语义test_weights.py通过monkeypatch注入一个桩引擎_Stub类记录每次init/load/complete调用在不下载任何模型的情况下验证权重生命周期调优权重加载后旧基础代理拒绝响应、同权重重绑定不重复加载、extract()继承已加载权重等。 数据合成test_generate.pyMock 掉 OpenRouter 接口后验证generate_dataset的并发批量生成、去重终止、API Key 缺失时报错、OPENROUTER_URL环境变量覆盖以及augment_jsonl对已有数据集的扩写。 平台适配test_fetch.py验证 needle/agent/fetch.py 按平台 tag 返回正确库名libneedle.dylib/.dll/.so、NEEDLE_LIB_PATH环境变量覆盖以及 CLI 中acme/tuned/model.cact形式的权重规格解析。 真实推理test_inference.py依赖requires_engine在真实 14MB 引擎上验证产品级行为工具调用返回结构化 JSON、Pydantic 结构化抽取、run()智能体循环以及多个Needle代理实例共存时各自绑定正确工具。 训练与导出test_finetune.py 与 test_build.py前者的两个用例分别断言微调写出合法适配器rank、scale、A/B 矩阵齐全与微调产物可直接build合并后者验证 4-bit 与 2-bit 导出的.cact文件可被 needle/model/export.py 的read_export读回且反量化后与原始投影核相关系数 0.9。 延伸阅读快速上手与全功能介绍README.md完整 API 参考工具、抽取、置信度门控doc/apis.md微调数据集、loss 曲线与排错doc/finetuning.md推理与 CLI 入口needle/cli.py、needle/model/run.py按这份指南跑一遍pytest -v你不仅完成了一次健康检查也基本摸清了 cactus-needle 从 Schema、推理到训练导出的全部质量防线。【免费下载链接】needle14MB foundation model for tiny devices; phones, wearables, smart home, and robots.项目地址: https://gitcode.com/GitHub_Trending/needle20/needle创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考