Needle 2:在极小内存设备上运行结构化工具调用模型
一分钟看懂
Needle 2 是一个面向工具调用、设备控制和结构化提取的开放 4500 万参数模型。模型与引擎打包为约 14MB 二进制,完整会话约占 28MB RAM;通过从工具 schema 编译出的字节级 grammar 约束输出,并为每次结果提供置信度,目标是在移动端、家电和离线设备上完成小而确定的 Agent 动作。
你可以用它做什么
- 用 Python 装饰普通函数,让模型选择工具、填写参数、执行并汇总结果。
- 用 Pydantic 模型把发票、表单或自然语言抽取成类型化对象。
- 在智能家居、媒体播放器、可穿戴设备等预制环境上开发控制界面。
- 对自己的工具和表达方式做 LoRA 微调,再导出单一
.cact文件离线运行。 - 用置信度阈值决定自动执行还是升级给更大模型/人工。
主要能力
它采用 Simple Attention Network、CQ2 量化、256 token 滑动窗口和固定工具 KV sink,使长期会话内存保持有界。大型工具目录会先检索每轮最相关的五个工具,再把 grammar 限制在该子集。推理无需网络;Python 包首次从 Hugging Face 获取引擎并缓存,也有隔离网安装说明。
适合哪些人
适合 IoT、移动端、边缘计算和隐私敏感设备开发者,也适合需要低成本结构化抽取或简单函数路由的团队。复杂推理、长文档问答和开放式聊天不是它的优势。
怎么开始使用
执行 pip install cactus-needle,用 @needle.tool 装饰带类型签名和清晰 docstring 的函数,再创建 needle.Needle(tools=[...]) 并调用 run()。抽取任务用 needle.extract(text, PydanticModel)。微调需安装 [train] extra,按文档准备 JSONL、运行 LoRA 训练并 build 为 .cact。
使用前需要知道
窗口只有 256 token,且官方建议每轮暴露不超过五个工具;工具描述质量直接决定表现。小模型的置信度并非安全保证,高风险设备动作仍需硬规则和人工确认。可选训练数据生成依赖 OpenRouter/兼容端点并可能收费。项目收集不含提示和输出的匿名用量遥测,可设 NEEDLE_TELEMETRY=0 或 DO_NOT_TRACK=1 退出。