昨天在开源社区刷到一个话题,标题很直白:“只有 4B,一个令人惊艳的国产 Agent 神器,开源了!”看到“4B”和“Agent”并排出现,我第一反应是不太信。现在主流的 Agent 方案,哪个不是拿大几十B甚至数百B的模型当底座?4B 这种在手机端经常用来做摘要和分类的小模型,能撑起工具调用、任务规划、自我纠错这一整套链路吗?
但本着对“开源”二字的好奇,我还是把项目翻了出来,拉代码、跑样例、接工具,前后折腾了两天。实测下来确实惊艳:它在 Agent 场景里的表现,超出了我对 4B 规模模型能力的原有预期。下面这份记录就是我这两天的实测过程,以及从代码到落地的完整思路,核心围绕一个问题:当主流视线都盯着大模型的“大力出奇迹”时,为什么一个 4B 的小模型反而能在 Agent 落地场景里打开局面?
这算是一篇偏个人经验的实测分享,适合正在评估 Agent 落地方案、又不想一上来就烧钱的团队,也适合那些想把 Agent 塞进树莓派、NAS 或者一台旧电脑里玩个人项目的开发者。
1. “只有4B”凭什么是Agent神器
1.1 看到标题时的第一反应:4B也配做Agent?
我见过不少标榜“端侧 Agent”“边缘部署”的项目,最后无一例外是拿 7B、13B 甚至更大的模型套了一层 Agent 框架,所谓“轻量”其实只是相对百亿模型而言。所以当看到“4B”和“Agent”同时出现时,我脑子里立刻冒出了三个疑问。
第一,4B 能做好规划吗?Agent 的本质是一个“把目标翻译为步骤、再用工具去执行步骤”的闭环,中间还穿插着失败重试和计划调整。这个链路对模型的推理深度要求很高,4B 的参数量往往意味着中间表征能力有限,多跳推理很容易在第三四步就开始跑偏。第二,4B 能保证工具调用不出错吗?工具调用的核心是让模型输出结构化的 JSON 参数,比如“给用户发一封邮件”要准确提取收件人、主题、正文三个字段。小模型在指令跟随上向来是短板,字段缺失、参数类型搞错、把字符串当数字用,都是常见毛病。第三,也是最现实的:为什么只做 4B?在模型开源已经成为常规动作的今天,如果数据、算力、团队资源都够,直接发布 14B 甚至 70B 显然更容易获得社区关注。选择做 4B,要么是某种技术约束下的妥协,要么就是为了明确落地场景做了刻意的轻量化设计。
这些疑问叠加在一起,我心里其实已经把它的预期压得很低,甚至默认它多半只能在简单 Demo 里转两圈的玩具。但真正翻完项目资料之后,我才发现这个判断有偏差。
1.2 拆开项目才发现:它不是通用模型,是专用执行引擎
翻完仓库说明和模型卡之后,我发现它确实是个 4B 模型,但它不是我们常用的那种“什么都能聊、什么都能答”的通用聊天模型,而是把 Agent 执行链路里的核心技能单独拎出来做了强化训练和微调。换句话说,通用大模型像一个各科成绩都不错的全科实习生,能写稿、能翻译、能做题,但面对具体业务流程时你需要反复给出清晰指令;而它更像一个在“跑流程”这件事上练过千百遍的执行员,综合能力面没多宽,但在工具选择、参数抽取、分步执行、失败状态判断这类 Agent 高频操作上的专注度和准确率,反而比同规模的通用模型高出一截。
从模型卡可以看到它重点优化的几个方向:Function Calling 的可靠性、多轮工具调用之间的上下文保持、以及“只输出工具调用、不要发散闲聊”的格式约束。我甚至觉得,把它叫做“Agent 底座”比叫“Agent 模型”更准确——它本来就不是让你直接对话用的,而是让开发者把一个流程中需要用到的工具定义好,然后由它来充当那个“理解请求、分配合适工具、解析返回结果”的调度中枢。这也解释了它为什么坚持做 4B:如果目标是做垂直 Agent 底座,那么 4B 的显存占用和推理延迟,恰好能把整个系统放进一台低配服务器、一个边缘盒子甚至一块开发板,这才是它存在的真正理由。
1.3 和主流大模型Agent方案对比
为了把这个项目的定位说得更清楚,我当时拉了张表,把典型的“大模型 API + Agent 框架”方案和它做了个对照。
| 对比维度 | 主流大模型 Agent 方案 | 这个 4B Agent 项目 |
|---|---|---|
| 模型规模 | 70B 以上或闭源 API | 约 4B |
| 部署门槛 | 多卡服务器或依赖外部接口 | 单张消费级显卡即可 |
| 单次调用成本 | 按接口计费,量大成本高 | 边际成本接近于零 |
| 数据走向 | 需要把提示词和业务数据传到外部 | 完全留在本地 |
| 复杂推理能力 | 强,适合开放式研究 | 弱一档,受篇幅和深度限制 |
| 执行型任务稳定性 | 强但响应偏慢 | 快且稳定,格式可控 |
| 典型适用场景 | 研究助手、复杂任务拆解 | 高频流程执行、边缘设备、私有化部署 |
这张表不是说谁替代谁,而是两种完全不同的产品思路。如果你要它去写行业研究报告、跨网站归纳信息、做创新性的长周期任务,它确实不如大模型;但如果你只是希望用户说一句“帮我查一下订单物流,并且把状态更新到客户表里”就能让系统老老实实把动作做完,那 4B 这个量级的执行能力已经足够了。
想明白这一点,我对“惊艳”两个字的态度也从怀疑变成了好奇。于是接下来两天,我把它放进各种 Agent 任务里实测了一遍。
2. 实测跑通Agent链路:规划、工具调用、纠错全记录
2.1 Agent链路对模型能力的真实要求
很多刚接触 Agent 的人以为,只要模型会聊天,套上一个提示词模板就能当好 Agent。实际跑过一遍就会明白,链路远比想象中复杂。一个最普通的 Agent 任务通常要经过这么几关:理解用户意图,把散落在自然语言里的参数抽取出来,从工具列表里选出正确的工具,按工具要求生成合法的参数结构,拿到工具返回结果后再判断这次调用是否成功,成功就继续下一步或汇总答案,失败还要决定是换参数重试还是换工具。
这几步里,模型的指令跟随能力、格式输出能力、判断能力都会暴露出来。4B 模型的特点在于每一项能力都被刻意压缩成了“够用但专注”的形态;劣势则在于一旦任务里出现模型没有见过的复杂长尾情况,它的兜底能力不如大模型。为了不只看表面能力,我设计了两个比较有代表性的实测:一个考验多工具串联,一个考验步骤拆解和错误恢复。
2.2 实测一:一次请求里的多工具串联
我先给了一个很常见的需求:“帮我看看明天上海适合户外活动吗?顺便定一个明天上午 10 点的提醒,让我提前准备。”这句话里有信息抽取,有天气查询,有提醒设置,还隐含了“户外活动建议”这个判断需求,对中文语义理解是个不大不小的考验。
模型先输出的是天气工具调用:
{ "tool": "query_weather", "params": { "city": "上海", "date": "明天", "type": "户外活动建议" } }接下来我把工具返回的“明天多云,气温 22 到 27 摄氏度,微风”塞回给模型,它没有把之前的目标忘掉,继续输出了第二个工具调用:
{ "tool": "create_reminder", "params": { "time": "明日10:00", "content": "提前准备户外活动", "channel": "system_notification" } }整个过程一气呵成,没有像很多小模型那样把两件事拆成两次独立对话。最关键的是,它理解了“明天上午 10 点”和“让我提前准备”之间存在关联,而不是把“提醒”抽象成一个孤立动作。这个结果刷新了我对 4B 模型的认知——至少在常见工具链路上,它没有因为参数少而表现得“笨”,反而因为输出格式被训练得相当收敛,整体调用过程非常丝滑。
2.3 实测二:任务拆分与失败后的自主恢复
第二个任务我故意设计得更脏一些:“把 /data/pics 目录下所有 jpg 图片压缩到 80% 质量,然后上传到对象存储 upload-bucket 的 backups 目录,最后给我一个可下载的链接列表。”
按照标准 Agent 流程,模型需要把它拆成四步:列出目录、压缩图片、上传文件、生成链接。它确实是这样拆的,而且在每步之间没有让我手动确认,说明它可以维持一个较长的内部执行链。真正让我意外的是错误恢复。我在上传工具内部故意抛出了一个“AccessDenied”异常,模型拿到错误信息后没有简单地把错误抛给用户,而是输出了这样的判断:上传权限被拒绝,可能是密钥过期或者 bucket 路径配置错误,先检查配置,然后尝试备选路径。接着它重新选择了工具并传入了新的参数,比如从原来的 backups 路径切换到了 backups/pending 路径。
这说明它具备一定的“归因-调整-重试”闭环能力。虽然这离复杂系统里那种自主反思还有距离,但对一个 4B 模型来说,能在执行失败时保持镇定并主动做局部修正,已经很出乎我的意料。换作纯粹做闲聊微调的同型号模型,大概率只是复述一遍错误信息,不会自己去改参数重试。
2.4 实测环境与性能数据记录
我的实测环境是一张 RTX 4090 24GB 显卡,模型用 4bit 量化加载,峰值显存占用大约在 3.5GB 到 4.5GB 之间,生成速度在 35 到 45 token/s。如果是 FP16 精度直接加载,显存占用会到 9GB 左右,但工具调用的 JSON 参数生成会更稳定一些,速度回落到 25 到 35 token/s。我又在纯 CPU 的 MacBook Pro 上用 GGUF 量化版本试了试,能跑,但速度明显慢,简单工具调用可能要等几秒;放在树莓派 5 上更是只有个位数的 token/s,更适合离线定时任务而不是交互式 Agent。
下面是我自己测试中记录到的一组大致参考数据:
| 运行方式 | 显存/内存占用 | 生成速度 | 工具调用稳定性 |
|---|---|---|---|
| RTX 4090 + FP16 | 约 9GB | 25-35 token/s | 最稳 |
| RTX 4090 + INT4 | 约 4GB | 40+ token/s | 良好 |
| MacBook CPU + Q5量化 | 4-6GB 内存 | 8-12 token/s | 良好 |
| 树莓派5 + Q4量化 | 2-3GB 内存 | 3-6 token/s | 可用 |
数据仅供参考,不同版本、不同提示词模板都会带来明显波动。但从这个数据能看出,它在成本最低的那个区间里,依然保持了可用的工具调用能力,这比绝对速度更有意义。
3. 部署落地:我在本机和端侧跑通的过程
3.1 硬件门槛到底有多低
在实测之前,我先看了它的硬件要求,结论是:门槛比我预期低非常多。最低配置只需要一台能跑 Python 的机器,CPU 加上 8GB 内存就能跑量化版,速度不算快但能完成基础对话和简单工具调用。跑得更舒服的配置是任意一张支持 CUDA 的 NVIDIA 显卡,显存 8GB 就已经绰绰有余,完全不需要专业级 GPU。Apple Silicon Mac 上也可以直接跑,如果是 M1/M2 芯片的 MacBook,基本等于一台便携 Agent 开发机。如果你想部署到边缘设备,树莓派 4B 的 4GB 版本也能跑起来,只不过交互体验会偏向“慢工出细活”。
这个硬件宽容度,是它在 Agent 部署场景里真正的第一竞争力。以前一说起 Agent 部署,大家总是默认要租 A100,至少要上几十B模型,成本和复杂度劝退了不少想尝试的人。现在一个 4B 模型把整个链路缩小到了可以拿一台旧电脑当测试服务器的程度,开发和迭代的节奏完全不一样了。
3.2 方式一:在线体验与模型下载
拿到项目后最快的验证方式是直接去模型平台体验,这样不用配置本地环境就能看聊天和工具调用效果。常用的国产模型社区和海外模型社区都有类似模型的镜像,我习惯先用类似命令把权重拉下来看模型卡里给的例子:
pip install modelscope modelscope download --model 你的组织名/你的4b-agent模型id这条命令会把模型权重下载到本地缓存目录,后面所有本地部署都从这个目录加载模型即可。如果是用 transformers 库,也可以直接用模型 id 在线加载,第一次运行时会自动下载。
这里要提醒一句:不同仓库里模型 id 差别很大,下载之前一定先看项目 README 里标注的模型 id 到底指向哪个版本。我见过有人下错同名的其他模型,最后跑出来的行为完全不对,还以为是模型 bug,浪费了不少排查时间。
3.3 方式二:transformers本地加载调用
下载完权重后,我习惯先用 transformers 做一个最小加载验证,确认模型在本地能正常输出。下面是完整的最小调用代码:
from transformers import AutoModelForCausalLM, AutoTokenizer # 这里替换成你要加载的模型id或本地路径 model_id = "你的组织名/你的4b-agent模型id" tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True) model = AutoModelForCausalLM.from_pretrained( model_id, device_map="auto", load_in_4bit=True, # 量化加载,省显存 trust_remote_code=True, ) # 注意:Agent场景通常使用对话模板,而不是直接拼接字符串 messages = [ {"role": "system", "content": "你是一个Agent执行引擎,只输出工具调用JSON,不要输出多余解释。"}, {"role": "user", "content": "查询广州明天下午的天气情况,并设置一个下午3点的提醒。"}, ] prompt = tokenizer.apply_chat_template(messages, tokenize=False) inputs = tokenizer(prompt, return_tensors="pt").to("cuda") outputs = model.generate(**inputs, max_new_tokens=512) print(tokenizer.decode(outputs[0], skip_special_tokens=True))这个脚本跑通之后,基本就证明你的本地环境没问题了。接下来可以把这层能力封装成一个服务接口,上游 Agent 框架通过 HTTP 或自定义协议来调用它。有一点我特别想强调:不要直接用“输入一句话,输出一句话”的思维去调用这个模型。它期待的是带工具描述的结构化提示词,而不是闲聊式的 prompt。我一开始图省事,只传了用户句子,结果模型输出了一些零零散散的对话建议,完全不像 Agent。换成上面这种带 system 约束和工具描述的模板之后,行为立刻正常了。
3.4 方式三:接入自研Agent框架做Function Calling
如果不想只用现成框架,想把它接进自己的业务流程里,核心就是让它输出结构化的工具调用,然后由你的代码去解析和执行。我通常维护一个工具映射表,让模型根据用户的自然语言从里面选工具、填参数。下面是一个简化版的执行循环:
tools = [ { "name": "query_weather", "description": "查询指定城市的天气", "parameters": {"city": "string", "date": "string"}, }, { "name": "create_reminder", "description": "创建一条提醒", "parameters": {"time": "string", "content": "string"}, }, ] def run_agent(user_input): # 第1步:让模型根据工具表生成调用JSON action_json = generate_tool_call(user_input, tools) action = parse_json(action_json) # 第2步:执行工具 if action["name"] in tool_map: result = tool_map[action["name"]](**action["params"]) # 第3步:把工具返回结果回填给模型,生成最终回复 final_answer = generate_final_reply(action, result) return final_answer这个循环看起来简单,实际生产里最难的点在于第 1 步生成的 JSON 格式是否稳定。大多数翻车都不是模型不聪明,而是它输出了一堆“思考过程”再输出 JSON,导致解析失败。解决办法有两个:第一,在系统提示词里明确写“只输出 JSON,不要输出任何其他内容”;第二,用约束解码或正则抽取等后处理手段从原始输出里把 JSON 片段剥离出来。
3.5 树莓派上的端侧实测
因为“4B”这个写法太容易让人联想到树莓派 4B,我索性把它也跑到了树莓派上试试。树莓派 4B 的 CPU 性能有限,我没有抱太高期待,但结果比想象中好:把模型转成 GGUF Q4 格式后,推理速度大概在 2 到 4 token/s,跑一个“查询今日待办并设置提醒”的简单 Agent 任务,从收到请求到输出完整结果约要十几秒,不算舒服,但能用。
如果在树莓派 5 上跑,同样的 GGUF 模型速度能到 5 到 8 token/s,体验会好不少。这类设备适合什么场景呢?我想到一个很典型的用途:作为一个低功耗的家庭私有 Agent,定时读取 Docker 容器状态、汇总 NAS 备份日志、在检测到异常时发送通知。不需要实时交互,也不依赖云端,整个系统埋在本地,功耗几瓦,非常安静。从部署形态来看,这个项目基本覆盖了从云端到边缘的完整链路:在线体验、消费级显卡本地服务、纯 CPU 老机器、树莓派。对我这种什么都想试一遍的人来说,这才是它“惊艳”的第二个原因——不是模型能力惊艳,而是生态配套和部署自由度带来的惊艳。
4. 为什么小模型Agent不是妥协,而是一种更务实的形态
4.1 成本账:同样规模的调用场景,本地4B省多少
我在几个社群聊这个项目时,被问得最多的问题不是“它能力到底行不行”,而是“本地部署到底比调 API 便宜多少”。这个问题很难一句话回答,但如果按“稳定、高频、每天都跑”的 Agent 场景来算,差距非常明显。
假设你有一个每天执行 10 万次调用的内部 Agent 系统,每次调用输入输出合计消耗约 2K token,那么一天就是 2 亿 token。如果用外部 API,即便把价格压到很低的批量通道,这仍然是一笔不小的月度支出;按市面上比较常见的每百万 token 十来块到几十块的中低档价格来算,一个月的账单轻松达到数万元。如果换成一张价值一两万元的消费级显卡,在本地把这个流量全部消化掉,主要开销就是显卡折旧和电费,每月的增量成本可能只有几百元。也就是说,在稳定持续的调用量面前,本地部署的边际成本优势几乎是碾压性的。
当然,费用不是唯一考虑因素,它只在这类“高确定性、高吞吐”的流程型任务里才有意义。如果是用户量极小的内部实验,直接用 API 反而更省心,没必要花时间维护硬件和模型服务。
4.2 数据私域:内网部署带来的合规价值
比钱更重要的,往往是数据能不能出内网。我接触过几个想做 Agent 的企业场景,订单数据、客户信息、内部流程文本都不能轻易传到外部接口。哪怕调 API 时做了脱敏,风险审计这一关也很难通过。把 4B Agent 整体部署在内网之后,数据链路就变成了“内网应用 -> 内网模型服务 -> 内网工具”,一个包都不往外发。这个价值在金融、医疗、制造这些合规要求严格的行业里,比“参数够不够大”决定性得多。
这也是为什么我对小参数模型做 Agent 这件事的态度,从怀疑变成了认可:很多时候企业不需要一个什么都会的超级大脑,只需要一个能在家里老老实实干活、又不把家里秘密说出去的执行员。4B 模型在这条路上的契合度,反而是大模型方案给不了的。
4.3 和大模型配合的分层Agent架构
我个人更推荐的做法,不是用小模型去硬扛所有 Agent 任务,而是做一套分层架构。把 Agent 系统拆成“大脑”和“手”两层。大脑负责理解复杂目标、拆解大任务、在极端情况下兜底;手负责具体的工具调用、数据读写、流程执行。大脑层可以用闭源大模型 API,也可以用一个大参数开源模型;手层可以是一个或多个 4B Agent,按业务域拆成不同实例,比如订单 Agent、客服 Agent、运维 Agent。
这样做的好处有两个。第一,高频基础动作全部落在 4B Agent 上,成本低、速度快、可以按流量横向扩容;第二,真正需要推理深度的复杂请求才升级到大脑层,整体请求量中可能只有 10% 到 20% 需要走贵通道。很多团队以为 Agent 落地一定要先买一堆高端 GPU,但用这种分层架构,往往一台普通的 GPU 服务器就能撑起初期的全部流量。
4.4 国产开源生态对Agent开发的影响
这几年国产开源模型社区的变化,最直接的影响是 Agent 开发的学习门槛被大幅拉低了。过去做一个 Agent 原型,要选模型、写微调脚本、自己搓一套工具调用协议,光是把链路跑通就得花很多时间。现在开源社区里已经有了现成的模型底座、Agent 框架、工具调用评测集,不少项目还公开了完整的训练方法和数据清洗方案。开发者更像是在搭积木:拿一个开源 4B 底座,配一套 Agent 框架,定义好自己的工具,几天就能把一个可以演示的原型跑起来。
从热搜榜上“agent开发学习路线”“agent框架”“开源项目”这些词居高不下的热度也能看出来,大家不是只看热闹,是真的在找可以落地的方案。当一个只有 4B 的国产 Agent 项目敢于喊出“开源”,某种程度上也说明这个方向的技术栈已经成熟到可以批量复制了。
5. 使用体验中最值得注意的四个坑
5.1 提示词就是4B模型的“方向盘”
第一个坑,也是最容易被新手忽略的坑:4B 模型对提示词模板的敏感度,远高于大模型。我实际测试同一个任务,用两套提示词模板,一套是“请帮我调用工具查询天气”,另一套是“请根据下面的工具定义,输出对应的工具调用 JSON”,模型的表现天差地别。前者经常输出一段解释文字然后才给出 JSON,后者则能稳定输出严格的 JSON。
我最终固定下来的系统提示词大概是这样的:
你是Agent执行引擎。用户会给出一个任务,你需要从工具列表中选择合适的工具并生成调用参数。 要求: 1. 只输出一个JSON对象,不要输出任何解释、开场白或收尾语。 2. JSON格式必须符合工具定义的parameters结构。 3. 如果没有合适的工具,输出{"tool": "no_match", "params": {}}。这个模板不一定适合所有场景,但它说明了一个事实:用 4B 模型以前,先把提示词模板做成“可复用的标准件”,不要在每次运行时临时发挥。模板稳定了,行为稳定性才会有基本保障。
5.2 工具数量失控会让小模型精神涣散
第二个坑是工具列表给太多了。大模型可以一次从几百个工具里选一个合适的,小模型没这个能力。我把一个 Agent 的工具列表从 5 个一路加到 20 个,实测工具选择准确率出现了肉眼可见的下降。到了 15 个以后,它开始频繁出现选错工具、漏参、把参数填到另一个工具里这些现象。
解决思路是把工具按业务域拆分,让每个 Agent 只面对 5 到 8 个工具。如果业务域本身很大,可以再加一个“工具发现”机制,让模型先调用一个检索工具查询可用工具的元数据,再决定下一步调用谁。虽然链路多了一层,但对小模型来说反而更可靠,就像人一样,能专注选择的选项越少,越不容易犹豫和出错。
5.3 长上下文很难扛,断开式记忆更可靠
第三个坑是关于记忆的。4B 模型的上下文长度就算支持到 32K 或 64K,实际用起来也很难充分利用。我在一个 20 轮左右的多轮对话里发现,它逐渐开始忘记最开始几轮提到的关键信息,比如用户的默认收货地址、早就交代过的邮箱地址,到后面要么无视,要么自己编一个。
对策是把“当前对话上下文”和“长期记忆”分开:上下文只保留最近 3 到 5 轮对话,更早的重要信息通过外部摘要或向量数据库保存。例如每一轮结束后,先生成一个“到目前为止的关键信息摘要”,下一轮把摘要重新放回 prompt 开头。这样模型始终面对一个小而精的工作记忆区,表现明显比硬灌长历史稳定。同样的思路也适用于工具执行结果:不要把所有历史工具返回都堆在上下文里,只保留当前步骤需要的部分。
5.4 量化档位影响工具参数精度
最后一个是量化位宽的选择问题。4bit 量化让这个模型可以在 4GB 显存里跑起来,对小显存用户非常有吸引力,但这不是免费的:模型输出参数的精度会受到影响。我的实测体会是,简单工具、参数少的时候,INT4 和 FP16 几乎没有差别;但一旦工具定义里有嵌套 JSON、日期时间字符串、枚举值这些对格式要求严格的内容,INT4 偶尔会产出非法字段。
所以我的建议是:
| 工具复杂度 | 推荐加载方式 |
|---|---|
| 简单工具,1-3个字符串参数 | INT4/NF4量化,省钱省显存 |
| 中等工具,包含数组或嵌套结构 | Q5/Q6量化,兼顾体积与稳定 |
| 复杂工具,字段多且格式严格 | FP16,优先保证准确率 |
如果你要上线生产,最好准备一个覆盖典型任务的验证集,在不同量化档位下各跑一遍,用“工具调用成功率”这个指标做决定,而不是只看显存占用。毕竟一个字段写错的工具调用,在真实业务里可能比慢几秒钟要严重得多。
写到这里,我猜很多人的关注点已经从“4B 到底行不行”变成了“我该怎么把它用起来”。这两天的实测给我的最大体会,其实不是 4B 模型突然变强了,而是我开始重新审视什么是“够用”:那些高频、重复、边界清晰的流程性任务,真的不需要 70B 模型来表演聪明。让一个专精的小模型去当“执行引擎”,把复杂推理留给大模型,才是成本和质量同时兼顾的正解。
如果你手里正好有一块旧显卡、一台吃灰的树莓派,或者单位里有一台闲置的办公电脑,可以考虑把这个 4B Agent 做成一个私有任务机器人,先从几个简单工具开始接,比如文件整理、待办提醒、定时抓取页面状态。等到链路稳定了再逐步加工具,你很可能也会经历一遍我这种“从怀疑到惊艳”的过程。
最后再分享一个小技巧:部署完之后,优先把它的日志和工具调用结果记录下来。这一步看起来不起眼,但等你开始调优提示词,或者决定要不要换更大的模型时,这些日志就是最客观的决策依据。