初一学生自研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": {...} },
# 其他工具...
]
这种方式在工具数量少的时候很稳定,但也会带来一些实际的小麻烦:
- Token消耗会跟着工具变多而增加,工具多了之后单次对话占用会明显变高;
- 反复传输大量工具描述,会让模型的上下文变得拥挤;
- 新增工具时,还要额外添加对应的格式定义,扩展起来不够轻便。
目前常见的优化方式,比如动态筛选工具、精简描述,都能起到一定效果,但没有从根本上改变“工具越多、开销越大”的问题。
二、我的原创设计:大一统工具调用
在 FranxAI v3.0.0 里,我换了一个更直接的思路: 只保留一个统一的工具入口,用它承载所有功能调用。
核心实现
全程只需要定义这一个通用的tools函数,不管后续加多少工具,都不用再改动这份格式:
# 无论多少工具,永远只需要这一个定义
tools = [
{
"name": "tools",
"parameters": {
"工具名": "需要使用的功能名称",
"参数": "自然语言描述的执行内容"
}
}
]
实际调用方式
AI只需要用自然语言按照规则调用就行,非常简单:
tools(定时任务, 每天早上8点提醒学习)
tools(文件读取, 打开本地笔记文件)
整体逻辑
- 整个AI系统只有
tools()这一个统一调用入口; - 对话初期只说明一次使用规则,不用反复传输所有工具的描述;
- 模型通过“工具名”区分要使用的功能,参数直接用自然语言表达;
- 后端根据工具名,统一分发到对应的功能逻辑执行。
实现原理特别简单,但效果却很明显。
三、这套架构带来的实际优势
这个小优化,让 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项目。