Needle:26MB的Gemini工具调用蒸馏模型,让小设备也能调用AI工具

Cactus团队发布了Needle项目,一个仅26MB的工具调用(Tool Calling)模型,通过将Gemini的工具调用能力蒸馏到极小的模型中,让资源受限的设备也能具备AI工具调用能力。

项目背景

AI工具调用(Tool Calling / Function Calling)是大语言模型的重要能力之一,让模型能够根据用户指令调用外部工具和API。但主流的工具调用能力通常依赖于大型模型(如GPT-4、Gemini Pro等),需要云端API支持。

Needle项目的目标是将这种能力压缩到一个仅26MB的模型中,使其可以在手机、嵌入式设备甚至浏览器中运行。

项目地址:https://github.com/cactus-compute/needle

核心特点

  • 极小体积:模型仅26MB,适合边缘设备部署
  • 工具调用能力:支持结构化的工具/函数调用
  • 基于Gemma:从Google的Gemini/Gemma模型蒸馏而来
  • 开源:Apache 2.0许可证
  • 多平台:支持Python、移动端和Web环境

技术原理

知识蒸馏

Needle使用了知识蒸馏(Knowledge Distillation)技术,将大型Gemini模型的工具调用能力迁移到小型Gemma模型中。具体来说:

  1. 使用Gemini模型生成大量的工具调用示例
  2. 用这些示例对小型Gemma模型进行微调
  3. 优化模型结构和推理流程
  4. 压缩模型到26MB

工具调用格式

Needle使用结构化的JSON格式进行工具调用,与OpenAI的Function Calling格式兼容。这意味着你可以用Needle替代大型模型来处理简单的工具调用任务。

使用教程

1. 安装

pip install cactus-needle

2. 基本使用

from cactus_needle import NeedleModel

# 初始化模型
model = NeedleModel()

# 定义工具
tools = [
    {
        "name": "get_weather",
        "description": "Get weather for a city",
        "parameters": {
            "type": "object",
            "properties": {
                "city": {"type": "string", "description": "City name"}
            }
        }
    }
]

# 执行工具调用
result = model.call("What is the weather in Beijing?", tools=tools)
print(result)
# 输出: {"tool": "get_weather", "arguments": {"city": "Beijing"}}

3. 集成到应用

from cactus_needle import NeedleModel
import json

model = NeedleModel(tools=my_tools)

def process_user_input(text):
    # 模型决定调用哪个工具
    call = model.call(text)
    
    if call:
        # 执行工具
        tool_name = call["tool"]
        args = call["arguments"]
        result = execute_tool(tool_name, args)
        return result
    else:
        return "No tool call needed"

适用场景

  1. 移动应用:在手机本地运行AI助手,无需联网
  2. IoT设备:智能设备理解和执行用户指令
  3. 浏览器扩展:在浏览器中运行轻量级AI
  4. 边缘计算:在网络边缘处理工具调用请求
  5. 离线助手:在无网络环境中提供AI工具调用能力

与大型模型的对比

  • vs GPT-4:Needle体积小1000倍以上,但复杂任务能力有限
  • vs Gemini Pro:Needle可在本地运行,无需API费用
  • vs Llama 3:Needle专注于工具调用,更小更快

局限性

  • 只支持简单的工具调用场景
  • 复杂推理能力不如大型模型
  • 需要预先定义好工具列表
  • 多语言支持有限

简评

Needle代表了AI能力民主化的趋势——将大模型的核心能力压缩到可以在任何设备上运行的小模型中。对于需要在边缘设备上实现工具调用功能的开发者来说,这是一个值得关注的项目。

来源:GitHub cactus-compute/needle、Hacker News讨论

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容