初一学生自研AI,我用一个极简设计,把LLM工具Token消耗从O(N)优化到O(1)

5 阅读6分钟

初一学生自研AI,我用一个极简设计,把LLM工具Token消耗从O(N)优化到O(1)

大家好,我是一名初一学生,也是 FranxAI 这款轻量化AI助手的独立全栈开发者。

最近在迭代 FranxAI v3 大版本时,我碰到了一个LLM工具调用里很常见的问题:接入的工具越多,对话需要的Token就越多,模型运行效率也会受影响。

没有直接套用现有的框架规范,我自己琢磨出了一套大一统工具调用架构,用特别简单的方式,实现了工具Token消耗从随数量增长的O(N),到固定不变的O(1)。

这篇文章把完整设计思路分享出来,遵循自由软件精神,完全开放不申请专利,也顺便聊聊我的自研AI项目FranxAI。

一、LLM工具调用的常见情况

现在主流的LLM函数/工具调用,基本都是这样的逻辑: 每一个工具,都需要单独定义一段描述格式,并且每次对话都要把这些信息一起发送

举个很直观的例子:

# 有多少工具,就要定义多少条格式
tools = [
  { "name": "定时任务", "parameters": {...} },
  { "name": "文件读取", "parameters": {...} },
  { "name": "网络搜索", "parameters": {...} },
  # 其他工具...
]

这种方式在工具数量少的时候很稳定,但也会带来一些实际的小麻烦:

  1. Token消耗会跟着工具变多而增加,工具多了之后单次对话占用会明显变高;
  2. 反复传输大量工具描述,会让模型的上下文变得拥挤;
  3. 新增工具时,还要额外添加对应的格式定义,扩展起来不够轻便。

目前常见的优化方式,比如动态筛选工具、精简描述,都能起到一定效果,但没有从根本上改变“工具越多、开销越大”的问题。

二、我的原创设计:大一统工具调用

在 FranxAI v3.0.0 里,我换了一个更直接的思路: 只保留一个统一的工具入口,用它承载所有功能调用

核心实现

全程只需要定义这一个通用的tools函数,不管后续加多少工具,都不用再改动这份格式:

# 无论多少工具,永远只需要这一个定义
tools = [
  { 
    "name": "tools", 
    "parameters": {
      "工具名": "需要使用的功能名称",
      "参数": "自然语言描述的执行内容"
    }
  }
]

实际调用方式

AI只需要用自然语言按照规则调用就行,非常简单:

tools(定时任务, 每天早上8点提醒学习)
tools(文件读取, 打开本地笔记文件)

整体逻辑

  1. 整个AI系统只有tools()这一个统一调用入口;
  2. 对话初期只说明一次使用规则,不用反复传输所有工具的描述;
  3. 模型通过“工具名”区分要使用的功能,参数直接用自然语言表达;
  4. 后端根据工具名,统一分发到对应的功能逻辑执行。

实现原理特别简单,但效果却很明显。

三、这套架构带来的实际优势

这个小优化,让 FranxAI v3 的整体表现提升了很多:

  • Token占用大幅降低:不管是20个工具还是更多,Token消耗都固定在一份定义的大小,不会随工具数量增加;
  • 可扩展能力拉满:v3版本的核心关键词就是“可扩展”,新增工具不用修改和模型的交互格式,几乎零成本添加;
  • 运行更轻量化:减少了冗余数据传输,在本地、低配置环境下运行也很流畅;
  • 代码更整洁:统一的路由逻辑,避免了杂乱的格式适配,项目不容易堆积冗余代码;
  • 完全自研可控:不依赖第三方框架的固定规范,设计完全贴合产品本身的需求。

四、为什么这个思路很少见?

其实这个设计特别简单,之所以不常见,主要是大家大多习惯了现有平台的通用规范,很少跳出“一个工具对应一个函数”的固定思路。

而我作为一名学生开发者,没有复杂的场景兼容压力,只追求简单、好用、高效,所以能更直接地回到问题本身,用最朴素的方式找到解决方案。

五、聊聊我的项目:FranxAI 轻量化自研AI助手

这套架构,是我为 FranxAI 设计的核心能力之一。

FranxAI是我从零开始、100%独立全栈开发的轻量化AI助手,坚持开源自由软件的理念,支持私有化部署,主打简洁、稳定和安全。

版本迭代历程

  • v1:完成AI核心对话与基础功能,实现从0到1;
  • v2:专注用户体验升级,完成网页化、可视化配置,最终迭代到v2.5.0,日常使用已经非常顺手;
  • v3:聚焦“可扩展”架构升级,大一统工具调用是本次核心创新,同时新增可视化任务界面、修复历史小问题;
  • v4(规划中):计划加入向量库与项目Wiki,让AI具备知识库能力,甚至可以辅助项目自我迭代。

v3.1.0最新亮点

  • 修复历史版本遗留的小问题,底层更稳定;
  • 全新可视化任务界面,不用手动修改JSON配置;
  • 搭载大一统工具架构,多工具场景更省资源;
  • 支持MCP插件与自定义技能,功能可灵活扩展。

六、坚持自由软件:开放分享,共同进步

我一直认同自由软件的精神:好的设计和思路,应该开放给更多人参考。 所以这套大一统工具调用架构,我不会申请任何专利,完全公开使用,希望能帮助到更多喜欢开发、喜欢AI的朋友。

结语

这次在FranxAI v3里的小创新,让我更加相信: 好的设计往往并不复杂,有时候跳出固定思路,用简单的方式就能解决实际问题。

未来我也会继续坚持独立自研,一边学习一边打磨FranxAI,后续还希望能围绕它探索更多底层技术方向。

如果你喜欢轻量化、本地私有化、可灵活扩展的AI助手,欢迎关注我的项目 FranxAI,一个初一学生开发者持续打磨的小而美AI项目。