Needle 2 的 reset() 与会话设计:为什么一个会话只绑一个工具集
Needle 2 的 reset() 与会话设计为什么一个会话只绑一个工具集【免费下载链接】needle14MB foundation model for tiny devices; phones, wearables, smart home, and robots.项目地址: https://gitcode.com/GitHub_Trending/needle20/needleNeedle 2 是一个 45M 参数、仅需 14MB 的端侧小模型专攻工具调用tool calling与结构化抽取整个会话约 28MB 内存即可运行。它的会话模型非常克制一个会话session只绑定一个工具集toolset——reset()只回退对话历史、永不改变工具要换工具必须新建Needle(...)实例。这篇文章讲清楚reset()到底做什么、为什么这样设计以及切换工具时的正确姿势。reset() 到底做了什么先看官方 API 的一句话定义doc/apis.mdagent.reset()— 回退对话rewind the conversation保留已加载的工具keep the tools loaded。对应到源码实现只有三步先确保引擎绑定到当前 agent再调用 C 引擎的needle_resetneedle/init.pydef reset(self): self._bind() _lib().needle_reset()它清空的是对话历史不动工具。反过来complete()在同一个 agent 上重复调用就是同一个会话的后续轮次后一轮的参数可以依赖前一轮工具执行的结果比如先search_for_contact拿到contact_id再send_instant_message这个多轮语义正是会话存在的意义doc/apis.md。为什么一个会话只绑一个工具集这不是 API 偷懒而是由 Needle 2 的推理机制决定的工具集在初始化时就被编译进了解码语法。needle_init会把 system 与全部工具 schema 一次性交给引擎编译出字节级语法byte-level grammar约束后续每一个 tokenneedle/init.py。换工具集 重建整套语法与上下文代价远高于清空历史所以设计成新工具 新实例。记忆是有界的工具被钉死在窗口里。模型使用 256 token 的滑动窗口工具作为 KV sink 固定pinned在上下文中因此对话无论多长内存都稳定在约 28MBREADME.md。工具被钉住天然意味着会话期内不变。规模换确定性的前提是小。Needle 2 用 45M 参数、2-bit 量化CQ2在 Mobile-Actions 等基准上打平数倍于它的 270M 模型。这么小的模型没有余力做运行时热换工具与其让语法动态变化不如把工具集冻结在会话级把复杂度挡在初始化之外。补充一点当声明的工具超过 5 个时内置检索头会在初始化时嵌入所有 schema每轮只把得分最高的 5 个工具渲染进上下文语法也只在这一子集上重建doc/apis.md。注意这是每轮的检索不是换工具集——整个目录仍然属于同一个会话。切换工具集的正确姿势官方行为约定写得很直白llms.txtOne toolset per session. To change tools, make a newNeedle(...).reset()clears history but keeps the tools.官方 Playground 的实现就是标准范例needle/playground/server.pydef complete(self, tools_json, query): with self.lock: if self.agent is None or tools_json ! self.tools_json: self.agent Needle(toolstools_json, weightsself.weights) # 工具变了 → 新会话 self.tools_json tools_json else: _lib().needle_reset() # 工具没变 → 只重置历史 return self.agent.complete(query)页面上的New chat按钮就是走POST /reset调needle_reset()needle/playground/app.js清历史、留工具而切换预设工具时则按上面的逻辑重建 agent。⚠️ 一个连带约束引擎无法卸载已加载的权重。如果你先加载了微调过的.cact再想建一个基础模型 agent会直接抛出 cannot unload 的RuntimeError而不是静默地用错权重——测试里有专门覆盖这一点tests/test_weights.py。常见坑清单别给一个会话的每一轮都新建Needle。上下文不会延续多轮依赖会断正确做法是复用同一实例llms.txt。reset()不能换工具。想换工具集就建新 agentreset()只是重开一轮对话。话题不符时返回空调用[]不是自由文本。没有声明的工具能接住的问题会被拒绝代码里要处理这个分支doc/apis.md。extract()本质是单工具一次性会话。它把 schema 声明为唯一工具、用完即弃所以语法保证 schema 一定被满足needle/init.py。小结一句话记住 Needle 2 的会话模型工具集在创建时冻结reset()只清历史换工具 新实例。这个看似简单的约定让 28MB 内存、字节级语法约束和有界记忆三件事都能成立——端侧小模型的设计往往就是用明确的边界换确定性。【免费下载链接】needle14MB foundation model for tiny devices; phones, wearables, smart home, and robots.项目地址: https://gitcode.com/GitHub_Trending/needle20/needle创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

域名申请的流程全解析:不懂代码怎么挑服务商哪家好

域名申请的流程全解析:不懂代码怎么挑服务商哪家好

域名申请的流程全解析:不懂代码怎么挑服务商哪家好 自己不会代码想做网站,却卡在第一步:域名怎么买、流程怎么走、哪家服务商靠谱?别急,这不仅是技术门槛,更是很多老板的第一道坎。选对域名和建站路径,比写代码重要十倍。今天用10年实战经验,把域名…

2026/11/14 5:07:45 阅读更多 →
pytest 6.0.1 维护版发布解读:升级方式与关键 Bug 修复的源码级分析

pytest 6.0.1 维护版发布解读:升级方式与关键 Bug 修复的源码级分析

pytest 6.0.1 维护版发布解读:升级方式与关键 Bug 修复的源码级分析 【免费下载链接】pytest The pytest framework makes it easy to write small tests, yet scales to support complex functional testing 项目地址: https://gitcode.com/GitHub_Trending/py/p…

2026/10/28 17:56:22 阅读更多 →
Ultralytics YOLO 与 DVCLive 集成:callbacks/dvc.py 实验跟踪回调全解析

Ultralytics YOLO 与 DVCLive 集成:callbacks/dvc.py 实验跟踪回调全解析

Ultralytics YOLO 与 DVCLive 集成:callbacks/dvc.py 实验跟踪回调全解析 【免费下载链接】yolov10 YOLOv10: Real-Time End-to-End Object Detection [NeurIPS 2024] 项目地址: https://gitcode.com/GitHub_Trending/yo/yolov10 DVCLive 是 DVC&#xff08…

2026/10/25 12:19:35 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/13 5:13:25 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/13 5:13:25 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/13 5:13:25 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/13 22:08:41 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/14 2:41:37 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/13 5:13:25 阅读更多 →

日新闻

周新闻

月新闻