【needle】仅需 28MB 内存即可运行,这款超轻量开源模型让本地工具调用与数据提取变得极简
这是一款专为工具调用、设备控制和结构化数据提取设计的超轻量级开源 AI 模型。它解决了传统大语言模型体积庞大、内存占用高的问题,将整个模型压缩至仅 14MB,运行完整会话仅需约 28MB 内存,使得在资源受限的本地设备上运行 AI 智能体成为可能。
主要特性
- 极致轻量与自包含:模型权重与推理引擎被打包为一个单一的 14MB 二进制文件,无需额外管理模型文件,且推理过程完全离线,无需网络连接。
- 极简的交互契约:采用“文本输入,JSON 输出”的简单模式,并通过从 Schema 编译的字节级语法严格约束每一个生成的 Token,确保输出格式绝对正确。
- 置信度门控机制:每次响应都会附带一个经过校准的置信度分数。开发者可以设置阈值,高于阈值自动执行,低于阈值则升级处理(如交由人工或大模型)。
- 智能工具检索:支持声明庞大的工具目录,模型内置的检索机制会在每轮对话中自动筛选,仅将最相关的五个工具传递给模型,从而节省上下文空间。
- 严格的内存控制:采用 256-token 的滑动窗口机制,并将工具作为 KV 缓存的锚点,确保无论对话进行多长,总内存占用始终稳定在 28MB 左右。
安装与使用示例
你可以通过 pip 直接安装该工具的 Python 包:
pip install cactus-needle
安装后,你可以非常轻松地定义工具并让模型进行调用,或者直接从文本中提取结构化数据。以下是两个基础使用示例:
1. 工具调用示例
通过装饰器定义工具,模型会自动解析函数签名和文档字符串来理解工具用途:
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])
response = agent.run("what's it like in Lagos right now?")
print(response["results"])
# 输出: [{'city': 'Lagos', 'temp_c': 27, 'sky': 'clear'}]
2. 结构化数据提取示例
结合 Pydantic 模型,可以直接从非结构化文本中精准提取所需字段:
from pydantic import BaseModel
import needle
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
适用场景与目标用户
适用场景:
* 边缘计算与物联网(IoT):在智能家居、工业控制器等算力有限的设备上实现本地语音或文本指令解析。
* 移动端与桌面端应用:在手机客户端或 PC 软件中内置离线 AI 助手,保障数据隐私且无需消耗网络流量。
* 自动化数据流水线:在本地服务器或低成本云实例上,批量处理文档并进行高并发的结构化信息抽取。
目标用户:
嵌入式开发者、移动端应用工程师、AI 智能体(Agent)开发者,以及任何需要在资源受限或完全离线环境下部署 AI 工具调用能力的技术团队。
总结
该项目通过创新的 Simple Attention Network 架构和极致的 2-bit 量化压缩技术,成功将工具调用模型缩小到了令人惊叹的体积,同时保留了完整的微调(LoRA)和工具检索能力。它极大地降低了在端侧设备部署 AI 智能体的硬件门槛,为本地化 AI 应用提供了一种极其优雅且高效的解决方案,建议访问其主页获取更详细信息。
