Needle 2 Skill:把 AI 工具调用能力塞进 14MB 的设备端模型
Needle 2 是一个仅 14MB 的设备端 AI 模型,专为工具调用、设备控制和结构化数据提取场景设计。不同于需要云端算力的重量级模型,这个 45M 参数的小型模型可以直接在手机、穿戴设备、智能家居设备和机器人上运行,无需网络连接。它通过自研的 Simple Attention Network 架构和 Cactus Quants 量化技术,在仅 28MB 内存占用下实现了与 FunctionGemma 270M、LFM2.5 230M 等更大模型相当甚至更优的基准表现,同时体积缩小 5-70 倍。
功能与原则
Needle 2 的核心能力是函数调用(Tool Calling)——用户声明工具,模型决定调用哪个、传入什么参数,并返回结构化结果。设计原则包括:
- 无网络依赖:权重内置于单一 14MB 引擎,推理过程完全不访问网络
- grammar 约束解码:用字节级语法编译用户声明的 schema,确保模型输出的 JSON 永远合法,不会出现格式错误
- 置信度门控:每个响应附带经过校准的置信度分数,用户可设置阈值,高于阈值执行,低于阈值升级到更大模型
- 工具检索:当工具目录超过 5 个时,内置检索头自动选出最相关的 5 个工具子集,grammar 只在这 5 个工具上约束
- bounded memory:256 token 滑动窗口 + 工具 KV 固定,内存占用恒定约 28MB,无论对话多长
认可度
- GitHub star:约 3,900(截至 2026-08-12)
- 今日新增:248 stars(GitHub Trending 今日上榜)
- Fork:294
- 编程语言:Python 78.1%、JavaScript 11.1%、CSS 7%
- 上榜原因:14MB 设备端小模型 + Tool Calling 能力,在 to–device AI 和边缘推理领域填补了重要空白
链接
GitHub:https://github.com/cactus-compute/needle
Hugging Face:https://huggingface.co/Cactus-Compute/needle2
原作者
由 Cactus Compute, Inc. 团队开发,主要贡献者包括 @HenryNdubuaku、@ncylich、@kar-m 等 9 位开发者。团队同时发表了 Simple Attention Network 相关论文(arXiv:2607.18363),核心技术为自研。
介绍
Needle 2 是一个开源的设备端 Tool Calling 基础模型。与传统大语言模型追求通用对话能力不同,它专注于一个核心任务:理解自然语言指令 + 调用正确的工具 + 填入正确参数 + 返回结构化结果。整个模型是一个单一 14MB 的二进制文件(.cact 格式),内置推理引擎,pip install 后即可使用,无需单独下载模型文件或构建本地服务。
它基于 Simple Attention Network 架构:使用 Hadamard MLP 替代标准 FFN、支持 GQA attention、engram key-value memory 和多lane hyper-connections。模型被量化到 CQ2-bit(Cactus Quants),最终输出为单一可执行引擎,无需分片管理。
工具调用通过 schema 约束来保证正确性:用户声明 JSON schema(通过装饰器或直接传入),模型只能在 schema 允许的范围内生成参数,每一次解码的 token 都被 grammar 限制在合法范围内,因此输出 JSON 永远不会格式错误,只会参数合法或为空调用。
特点
- 单一 14MB 二进制:权重和推理引擎打包在一起,无额外模型文件,推理零网络依赖
- grammar 约束解码:schema 编译为字节级 grammar,JSON 输出格式永远合法,参数永远符合约束
- 置信度门控:内置校准置信度头,返回 0-1 分数;可设定业务阈值,高于执行,低于升级
- 工具检索头:超过 5 个工具时自动只把 top-5 工具加载到 context,grammar 也只在这 5 个上约束,未选中工具不可达
- bounded 28MB RAM:256 token 滑动窗口,工具描述 KV 固定,无论对话多长内存不增长
- LoRA 微调支持:可用自有数据微调,合并 adapter 后仍是一个
.cact文件,在同一引擎上运行 - Playground UI:内置
needle playground命令,可视化编辑工具和提示词,支持从 UI 触发微调并下载调优后的.cact文件 - 系统环境注入:可选 system turn 注入 date/locale/device/battery 等环境事实,模型可解析相对时间等自然语言引用
使用方法
安装:
pip install cactus-needle
简单用法(装饰器):
import needle
@needle.tool
def get_weather(city: str):
"Get the current weather for a city."
return {"city": city, "temp_c": 27, "sky": "clear"}
agent = needle.Needle(tools=[get_weather])
print(agent.run("what's it like in Lagos right now?")["results"])
# [{'city': 'Lagos', 'temp_c': 27, 'sky': 'clear'}]
带参数描述和约束:
from typing import Literal
@needle.tool
def set_thermostat(temperature: int, mode: Literal["heat", "cool", "auto"] = "auto"):
"""Set the thermostat.
Args:
temperature: target temperature in Celsius
mode: heating strategy to use
"""
return {"temperature": temperature, "mode": mode}
agent = needle.Needle(tools=[set_thermostat])
agent.run("make it 21 and cool the room")
结构化数据提取(将工具调用思想用于 extraction):
from pydantic import BaseModel
class Invoice(BaseModel):
vendor: str
total: float
due_date: str
invoice = needle.extract("Invoice from Acme Corp, $1,200.00, due 2026-09-01", Invoice)
print(invoice.vendor, invoice.total) # -> Acme Corp 1200.0
Playground 可视化:
needle playground # 启动 http://127.0.0.1:7860
使用场景与人群
适用场景:
– 移动设备上的本地 AI 助手(无需联网,保护隐私)
– 智能家居设备控制(本地执行设备指令,延迟低)
– 机器人控制(嵌入式实时推理)
– 穿戴设备交互
– 需要离线 Tool Calling 能力的任何边缘设备
目标用户:
– 移动/嵌入式开发者,需要在设备端集成 AI 能力
– 对数据隐私有要求,不希望工具调用请求走云端
– 物联网(IoT)产品团队
– 研究设备端小模型的科研人员
输入与输出案例
案例 1:智能家居控制
输入:
"dim the living room to 30"
输出(function_call):
{
"type": "call",
"success": true,
"function_calls": [
{
"name": "set_lights",
"arguments": {
"room": "living room",
"on": true,
"brightness": 30
}
}
],
"reasoning": "'living room' -> room; 'dim' -> on true, brightness 30",
"confidence": 0.94
}
案例 2:发票数据提取
输入(query):
"GreenMart receipt: oat milk 3.50, total 7.75 paid by visa"
提取到的结构化数据:
{
"name": "receipt",
"arguments": {
"merchant": "GreenMart",
"total": 7.75
}
}
(currency 未在输入中明确证据,被省略而非猜测)
评论区
登录后可评论。