Needle 2 评测:14MB 的工具调用小模型,跑在边缘设备上的 AI Agent 引擎

一句话介绍

Needle 2 是 Cactus Compute 开源的一款 45M 参数轻量级基础模型,专为工具调用、设备控制和结构化数据提取而设计。整个模型打包在单个 14MB 的二进制文件中,运行一次完整会话仅需约 28MB 内存,可以无缝部署在手机、可穿戴设备、智能家居和机器人等边缘设备上。


它是什么?

在 AI 工具调用领域,主流方案普遍依赖 GPT-4、Claude 等大模型的 API,或者在服务器上运行 Llama、Qwen 等 70B+ 参数模型。但这些方案对资源匮乏的边缘设备来说完全不现实——手机内存不够、功耗太高、还要联网。

Needle 2 走了一条截然不同的路:它用极致的轻量化设计,在 45M 参数的体量下实现了可用的工具调用能力。项目由 Cactus Compute 团队开发,于 2026 年 7 月开源,采用 MIT 许可证,主语言为 Python,底层训练框架为 JAX。截至 2026 年 8 月,已在 GitHub 收获 6,100+ Stars,并发表了配套技术论文 arXiv:2607.18363。

GitHub: https://github.com/cactus-compute/needle
HuggingFace: https://huggingface.co/Cactus-Compute/needle2
Stars:  6,100+
语言:   Python / JAX
许可证: MIT
模型大小: 14MB (.cact)
参数量: 45M
内存占用: ~28MB

核心功能

1. 极简的工具调用 API

Needle 2 最吸引人的地方在于其简洁的调用方式。你只需要用 @needle.tool 装饰一个函数,它的签名就是参数类型,文档字符串就是工具描述,然后通过 agent.run() 即可完成整个调用闭环——模型选择工具、填充参数、执行函数、返回结果。

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'}]

2. 结构化数据提取

除了工具调用,Needle 2 还内置了强大的结构化数据提取能力。你只需定义一个 Pydantic 模型,就可以从任意文本中提取出结构化的数据。

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

3. 置信度门控

每个响应都附带一个经过校准的置信度分数。你可以设置一个阈值——高于阈值时自动执行,低于阈值时升级为人工审核。这对于边缘设备的自动化场景非常重要,可以在不确定时避免错误操作。

4. 内置工具检索

当你的工具库规模较大时,Needle 2 内置的检索头会自动从海量工具中选出最相关的 Top 5 个,并将解码过程约束在这 5 个工具之内。这意味着你可以在同一个模型中管理数百个工具,而不必担心上下文爆炸。

5. 恒定内存占用

无论对话多长,Needle 2 的内存占用始终维持在约 28MB。它使用 256-token 滑动窗口,并将工具定义作为 KV sink 固定下来,确保总内存不随对话长度增长。这对于内存受限的设备来说至关重要。


适用人群

  • 边缘设备开发者:需要在手机、可穿戴设备、智能家居或机器人上运行 AI 功能的开发者
  • IoT 工程师:需要设备端工具调用来控制硬件的工程师
  • 离线场景应用者:需要在无网络环境下运行 AI 功能的开发者(模型完全本地推理,无需联网)
  • 成本敏感型项目:希望避免大模型 API 调用费用的团队
  • 隐私敏感场景:需要在本地处理数据、不上传到云端的场景

与同类工具对比

特性Needle 2FunctionGemma 270MLFM2.5 230MApple FMGPT-4 API
模型大小14MB~540MB~460MB封闭N/A
参数量45M270M230M未知未知
内存占用~28MB~1GB+~900MB+未知N/A
离线运行✅✅✅❌❌
工具调用✅✅✅✅✅
结构化提取✅❌❌❌✅
置信度门控✅❌❌❌❌
自定义微调✅ (LoRA)有限有限❌❌
许可证MITApache 2.0研究用途封闭商业

Needle 2 的尺寸比 FunctionGemma 小 5-70 倍,内存占用低 2-3 个数量级,同时额外提供了结构化提取和置信度门控功能。虽然在大模型benchmark上可能不如 FunctionGemma 等更大模型,但在资源受限的边缘场景下,它的性价比极为突出。


如何使用

安装

pip install cactus-needle

如果需要在 GPU 上训练,安装额外依赖:

# NVIDIA GPU
pip install "cactus-needle[gpu]"

# Apple Silicon
pip install "cactus-needle[metal]"

快速上手

import needle

# 定义你的工具
@needle.tool
def set_light(room: str, brightness: int):
    "Set the brightness of a light in a room."
    return {"room": room, "brightness": brightness, "status": "ok"}

@needle.tool
def get_temperature(room: str):
    "Get the current temperature in a room."
    return {"room": room, "temp_c": 22.5}

# 创建 agent
agent = needle.Needle(tools=[set_light, get_temperature])

# 运行对话
result = agent.run("Please dim the kitchen light to 30% and tell me the living room temperature")
print(result["results"])

使用 Web Playground

Needle 2 提供了一个交互式 Web Playground,可以在浏览器中试用:

needle playground

然后在浏览器中打开 http://127.0.0.1:7860,即可编辑工具定义、调整参数并进行测试。Playground 还支持一键微调——点击「Finetune on these tools」按钮即可从 UI 中完成完整的微调流程。

微调自己的模型

Needle 2 支持 LoRA 微调,流程非常简单:

# 1. 准备训练数据(JSONL 格式)
# 2. 运行微调
needle finetune data.jsonl --epochs 10

# 3. 构建微调后的模型
needle build checkpoints/needle2.pkl --lora checkpoints/needle_lora.pkl --out my_needle.cact

微调后的模型仍然是单个 .cact 文件,可以在任何设备上直接运行,无需重新编译引擎。


技术亮点

Needle 2 底层采用的是 Simple Attention Network(SAN) 架构——这是 Cactus Compute 团队提出的一种新型轻量级网络结构:

  • 用 Hadamard MLP 替代传统 FFN,无需额外权重,以 n log n 时间复杂度计算
  • 使用 GQA(Grouped Query Attention) 减少 KV 缓存开销
  • 引入 Engram 键值记忆,在特定层激活以增强记忆能力
  • 采用 CQ2 量化(Cactus Quants),以 2-bit 精度压缩模型
  • 解码阶段使用基于字节级语法的约束解码,确保输出符合工具 schema

这些设计使得 Needle 2 在保持 45M 参数体量的同时,实现了与 FunctionGemma 270M、LFM2.5 230M 等更大模型相当的工具调用能力。


总结

Needle 2 是当下边缘 AI 领域最具实用价值的开源工具之一。它将一个原本需要数十亿参数才能实现的工具调用能力,压缩到了 14MB、28MB 内存的体量,同时提供了置信度门控、工具检索、结构化提取等高级功能。

推荐指数:⭐⭐⭐⭐⭐(5/5)

对于需要在手机、物联网设备或机器人上部署 AI 工具调用能力的开发者来说,Needle 2 几乎是目前最优的选择——它足够小、足够快、足够易用,而且完全开源免费。无论你是构建智能家居控制代理、车载 AI 助手,还是离线数据处理工具,Needle 2 都值得一试。

GitHub: https://github.com/cactus-compute/needle
技术论文: https://arxiv.org/abs/2607.18363

边缘部署后如需验证输出格式,可用本站的 JSON 格式化工具 或 Base64 编码解码工具 辅助调试。