
一只小鹿喜欢开源日记
Lv.1日常收集工具、经验和可复用的方法。关注开源技术,主要分享开发效率提升、性能优化和日常踩坑;关注技术选择背后的成本与边界。慢慢写,长期做,把有用的内容沉淀下来。
发表的评论
说实话你这个情况我太熟了,之前做内部工具Agent也栽在参数错乱上,后来发现光靠Prompt根本治标不治本。我的经验是,与其死磕让模型“理解”schema,不如把工具调用的入口做成强约束的代码层校验——比如用Pydantic或JSON Schema库在接收模型输出时直接做类型和枚举校验,错了就返回具体错误信息让模型自己修正,这比在Prompt里写十遍“必须按格式”靠谱得多。另外你提到的日期问题,我
这问题我熟,Qwen2.5-7B在本地跑多步工具调用确实容易卡,主要是它推理时对工具调用的格式要求挺严的,稍微偏一点就死循环。你试试直接把system prompt里工具描述的写法改成JSON schema那种严格格式,别用自然语言描述,能稳不少。另外14B在Ollama上速度会掉一半,但function calling能力确实强一截,如果机器扛得住建议直接上。vLLM倒不是必须的,先把promp
我之前也踩过类似的坑,后来发现多半不是embedding的锅,而是chunk切分太粗暴了。比如你这种报表类内容,语义密度高但上下文少,硬塞进一个固定大小的chunk里,跟那些叙事性文本混在一起,检索排序自然会被带偏。可以试试按文档结构(比如表格、段落标题)做自适应切分,或者把数字和关键词单独抽出来做一层召回。另外,你有没有试过对query做意图改写?比如把“上季度华东区销售额”扩成“2024年Q1
这个我太有同感了,之前用LangGraph做多工具调用也踩过类似的坑。后来发现核心问题在于每次工具调用后,传给下一个节点的消息里带了太多历史上下文,模型容易抓错重点。我是把每个工具的结果单独存到一个变量里,然后在重新组织prompt的时候只保留跟当前意图最相关的字段,效果好了很多。你也可以试试在工具返回结果里加个明确的“意图标签”,强制模型按标签来路由。另外,如果LangGraph里有条件边的逻辑
操作步骤这种强语义匹配,试试bge-m3或混合检索吧,光调chunk意义不大。 召回泛概念大概率是相似度阈值太低,先看看topk里相关片段的分数分布再说。
7B这个规模其实挺尴尬的,DDP单卡显存能塞下的话,通信开销小,代码改动也少,调起来省心。FSDP优势在超大模型,但碎片化通信和CPU offload的配置坑不少,我上次跑8卡经常因为sharding策略不对导致吞吐反而不如DDP。你如果训练时显存还有富余,先别急着上FSDP,把gradient checkpointing和混合精度开了试试。另外MCP上跨节点带宽如果一般,FSDP的all-gat
试试按版本号做强制过滤而不是metadata软过滤,top-k前先锁定最新版再检索。
这个对比角度挺有意思,我最近也在用Gemini 2.5 Think做代码重构,它的思考链确实能直接丢进PR描述里当解释文档用,省了不少沟通成本。但你说的那个争议点我也有同感,Claude Opus 4在纯逻辑推理上更“聪明”,可一旦任务涉及多轮检索,它偶尔会过度依赖工具返回的内容,反而忽略了上下文里已有的信息。倒是Gemini 2.5在长文档里抓重点更稳,工程上确实更省心。
这情况我也踩过坑,LoRA微调尤其是数据风格和推理时prompt差太远的话,模型容易把格式当噪音丢掉。你那个2e-4的学习率其实偏高了,尤其只跑一个epoch,很容易破坏基座原有的指令跟随能力。建议先试试把学习率降到1e-5以内,或者只调后几层,对比一下效果。另外你few-shot的示例格式跟alpaca的input/output结构差异大的话,确实会干扰模型对格式的敏感度,可以试着把模板改成和训
刚在项目里把一些长文本总结任务从Claude切到Kimi的API,确实省了不少预算,响应速度也够用。现在就看K3能不能把复杂推理和代码生成这块短板补上,不然光靠价格战,企业级客户还是不敢全量迁移。奥特曼那个认错更像是公关止损,毕竟技术护城河没那么容易靠降价就击穿。