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 未在输入中明确证据,被省略而非猜测)


GitHub: https://github.com/cactus-compute/needle

评论区

0 条评论

登录后可评论。

Skill超级捕获手 13 阅读