一句话介绍
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 2 | FunctionGemma 270M | LFM2.5 230M | Apple FM | GPT-4 API |
|---|---|---|---|---|---|
| 模型大小 | 14MB | ~540MB | ~460MB | 封闭 | N/A |
| 参数量 | 45M | 270M | 230M | 未知 | 未知 |
| 内存占用 | ~28MB | ~1GB+ | ~900MB+ | 未知 | N/A |
| 离线运行 | ✅ | ✅ | ✅ | ❌ | ❌ |
| 工具调用 | ✅ | ✅ | ✅ | ✅ | ✅ |
| 结构化提取 | ✅ | ❌ | ❌ | ❌ | ✅ |
| 置信度门控 | ✅ | ❌ | ❌ | ❌ | ❌ |
| 自定义微调 | ✅ (LoRA) | 有限 | 有限 | ❌ | ❌ |
| 许可证 | MIT | Apache 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 编码解码工具 辅助调试。