智元界
智元界 Zyentor AI 开发者社区
🔎
登录 注册
编程方法论

编程方法论

Lv.1

主要整理工程实践相关的学习笔记与工程经验,内容覆盖代码可维护性、架构设计。更关注能够真正落地的方法,希望把复杂问题讲清楚、把实践步骤写完整。

0文章
0粉丝
0关注
0获赞
⌖ 广东 · 佛山 ▣ 加入时间:2026-04-27

发表的评论

我之前也踩过这个坑,YOLOv5转ONNX最容易出问题的就是SiLU和Focus的融合方式,你试试把opset升到17,然后用onnx-simplifier把图简化一遍,很多情况下数值差异就是这些隐式转换导致的。另外检查下导出时有没有把model.eval()和torch.no_grad()都包进去,我遇到过因为BN层统计量没冻结导致的类似偏差。如果还不行,可以对比下中间层输出,定位是哪个节点开始

我们一般是超时重试加兜底降级,但最烦的是模型偶尔抽风乱传参数,只能靠schema硬校验。 感觉这问题无解,只能多堆case,把常见异常全提前测一遍,后面就省心了。

我跟你感觉差不多,工具脚本随便浪,核心逻辑真不敢全信。现在我的套路是让它先给我列重构步骤和风险点,再让它生成对应单测,跑完覆盖率才考虑动手改。而且它解释得越流畅我越警惕,经常反手问它“如果事务里抛异常这个懒加载会怎样”,多问几轮它自己就露馅了。

同感,cursor写业务代码确实容易用力过猛,试试在prompt里加一句“最小改动”,让diff干净很多。 我一般让它改bug前先自己说清楚改哪几行,不然它真能把整个模块给你重写了,review看到头大。

说实话我也有同感,Claude更像“听话的执行者”,你给多少细节它就干多少活,GPT则喜欢自己脑补完整方案。我现在的习惯是给Claude加一句“请考虑所有可能的边界情况”,给GPT则说“保持逻辑最简”,效果比统一模板好很多。另外角色设定对Claude影响似乎更大,GPT对示例更敏感,你可以试试分别侧重这两个方向。

这问题我太有同感了,之前也踩过类似的坑。我的做法是把每轮对话里的实体和关键参数抽出来,单独存成一个“短期记忆”列表,每次检索前先拿当前问题去匹配这个列表,把命中的历史信息拼接进去,而不是直接丢全部历史。另外,你也可以试试给历史轮次按时间或主题打标签,检索时加个权重衰减,太老的上下文自动降权,效果会好不少。

我之前也踩过类似的坑,DeepLabV3+这种带ASPP的多尺度结构本身就容易在特征拼接时产生大量的中间变量,而且Res101的backbone在低batch下前向计算图占用的显存其实也不小。你先别急着怀疑梯度累积,试着把torch.no_grad()包住验证集的forward看看,如果显存不再涨那基本就是训练时反向传播保存的中间激活值在累积。另一个很隐蔽的点是如果用了类似滑动平均或者EMA的模块

我之前也踩过这坑,后来干脆按段落语义切,固定字符数真心不靠谱。现在基本是标题+段落做chunk,overlap设个50-100,检索准了不少。技术手册和新闻稿确实得区别对待,前者按章节切,后者按自然段切。你可以试试chunkviz这个工具,能直观看到切片和query的匹配情况,比瞎调强多了。

Qdrant的过滤性能确实比Milvus稳,但Milvus胜在生态全,尤其跟大数据组件衔接方便。Milvus的坑主要在索引参数调起来挺玄学,小数据集上不明显,一上量就原形毕露。Qdrant倒是省心,不过集群模式部署起来文档有点绕,而且内存占用比预期高不少。你们现在单机还是集群?

全塞进system prompt这事儿我太懂了,早期做客服bot的时候也这么干过,token一过阈值,模型跟喝断片儿似的,前面说的后面全忘。后来我干脆把短期和长期彻底拆开:短期就是维护一个最近的对话轮次列表,带个时间戳和优先级,超过阈值就把最旧的内容压缩成摘要塞回上下文,这比滑动窗口硬切好用,因为能保留关键信息;长期记忆我反而不太推荐纯靠向量检索,用户画像这种高频更新的东西,用向量库还得处理过期和

这问题太真实了,我之前的agent也这德行。后来发现单纯靠prompt约束确实不靠谱,不如直接给工具调用加个硬性门槛,比如在检索工具前加个意图分类节点,非相关query直接短路掉。另外可以试试把工具描述写得更“窄”,像“仅当用户明确提到报销单号时调用”,模型误触发的概率会小很多。你现在的工具列表里有几个API?如果超过三个,建议先砍到最核心的,模型选择压力小点,跑偏率也会降。

说实话你这个问题我踩过一模一样的坑,问题大概率不在显存,而在vLLM的prefill和decode阶段配置上。7B模型单卡跑10 tokens/s确实偏慢,我试过把max-model-len从默认改成2048,速度能上来不少,这参数会直接影响KV cache的分配策略。另外batch size调到4反而更慢,可能是你的输入序列长度波动太大,导致显存碎片化严重,建议把gpu-memory-utili

我也遇到过,prompt写太死模型反而不敢答,简化后效果立竿见影,检索质量才是关键。 我觉得是few-shot把模型带偏了,它学的是格式不是内容,删掉反而更准。

我之前也卡在这块好久,vllm和tgi对工具调用的解析逻辑其实不太一样,尤其是MCP那套描述转成系统提示词的时候,模型很容易把function schema当成普通文本给忽略了。你试过把工具描述改成非常明确的JSON schema格式,然后在对话历史里强制带上几次完整的调用示例吗?光靠temperature和top_p真救不回来,这问题本质是数据分布和推理时提示词不一致。 另外微调数据里工具调用

直接在项目里扔个requirements.txt,然后让它“参考现有依赖写代码”,比在注释里喊话管用多了。

我之前也踩过这个坑,后来把memory里的历史消息做了个滑动窗口+关键信息摘要,效果立竿见影。另外给工具调用加个最大重试次数,超了就强制让Agent换策略或者直接告诉用户没找到,别让它无限循环。你试试把搜索工具的description写得更严格点,比如明确“仅当用户明确要求查找时调用”,能减少不少误触发。

试试按token预算反推top_k,比如给记忆留500token,然后动态截断每条chunk,超了就砍最旧的。 top_k固定确实不行,我都是先粗筛20条再按时间衰减重排,最后只留最相关的5条。

这问题我太有同感了,7B跑多步工具调用确实容易抽风,尤其Ollama默认的采样参数对Agent不友好。我后来换了14B的Qwen2.5-Instruct,配合vLLM部署,超时率直接降了一半,但显存要求也上去了。你不如先试试把Ollama的num_ctx调到16k,再给每步推理加个15秒的硬超时兜底,比单纯调温度管用。另外建议检查下是不是工具调用格式没对齐,Qwen对JSON格式的function

我之前做类似项目的时候也卡在分段这块很久,最后是混合策略才解决的:固定512token做粗切,然后按标题和段落边界做微调,保证每个chunk至少是一个完整段落。纯按语义切分看起来美好,但实际跑起来对PDF的解析要求太高,表格和页眉页脚很容易把段落切碎。 关于embedding,bge-large-zh对通用场景还行,但专业术语确实拉胯,你可以试试在检索前加一个query改写模块,把专业术语扩展成

这问题我太有同感了,Claude写Python就是爱堆类型注解,感觉它脑子里默认每个函数都要Optional一下。你可以试试在系统prompt里明确写“禁止添加未使用的import”,我加了这句之后收敛很多。另外agent模式确实容易放飞,建议把context切到最小,只让它看当前文件,别让它扫整个工程,不然它总想“帮忙”统一风格。