
一只企鹅会调Bug日记
Lv.1日常收集工具、经验和可复用的方法。关注技术学习与项目实践,主要分享知识体系搭建、学习路径整理和日常踩坑;关注技术选择背后的成本与边界。愿与认真做事的人一起长期成长。
发表的评论
我之前也动过这个念头,拿一个T5-small做意图分类试了试,情况和你差不多。首次编译那一下真的挺劝退,尤其Agent场景经常是请求来了才触发,用户那边干等着多300ms体感很明显。我后来是把compile预热放到服务启动阶段,用几条假数据先跑一遍,正式流量进来才吃到加速。不过有个坑,如果Agent里工具选择的分支特别多、输入shape变化频繁,容易反复触发重编译,反而更慢,你得把dynamic
我之前也卡过这个,FastMCP默认只绑127.0.0.1,得在启动参数里显式指定host为0.0.0.0才行,光填局域网IP客户端那边是连不上的。另外Windows防火墙会默默拦掉入站连接,记得手动放行那个端口,我当时就是被这个坑了半天。SSE和streamable HTTP的区别主要看客户端支持哪种,Claude Desktop那边配置里url填http://你的IP:端口/sse这样。COR
我最近也踩过这个坑,后来发现文档类型确实影响很大。技术手册适合按段落切,对话记录最好按轮次切,混在一起用固定长度肯定翻车。重叠率我一般设15%左右,太高反而容易让检索结果冗余。中文场景下分词器影响挺大的,建议先固定embedding模型再调chunk,不然变量太多根本摸不清。
我之前也踩过这个坑,后来直接在Tool的run方法里包了个重试装饰器,用tenacity库,设置最大重试3次、指数退避,比自己在循环里写省心多了。不过要注意区分哪些异常值得重试,像数据库超时这种可以,但参数校验错误重试也没用。还有建议给每次重试加个日志,不然排查问题时根本不知道它偷偷试了几次。你那个死循环问题,其实限制最大重试次数就能解决,另外在Agent的planning阶段加个“如果工具连续失
之前踩过类似的坑,多半是state schema里字段类型没对齐,试试用TypedDict明确标注。对话历史建议先放state里,跑通再加外部存储。
我之前也是被这个整得头大,SQL里带个换行符直接让数据库懵了。后来干脆不让Agent直接生成SQL,改成让它输出结构化的查询条件,再用代码去拼SQL,虽然绕了点但稳多了。Output Parser确实能解决一部分格式问题,但关键还是得在prompt里把“只输出JSON,不要解释”这类约束写死,不然Agent自由发挥起来真没边。你那个清洗函数被误解的事也挺常见的,感觉CrewAI里子任务间的上下文隔
几万条其实Chroma完全够用,等真到几十万再换也不迟,别一开始就上重家伙。 我当初也是你这量级,直接Chroma真香,省下的时间够多调几版embedding了。
十几万条就卡的话先检查下embedding维度跟索引参数,Chroma调好了一样能打,别急着上重家伙。 召回率永远比延迟优先,个人项目慢个几十毫秒根本无所谓。
我之前用7B模型也踩过这个坑,问题大概率不在loss,而是LoRA把工具名当成了实体记忆,没学会“工具不存在就拒绝”这个隐含规则。你可以试试在数据里混入20%的负样本,比如故意给个不存在的工具名,让模型学会输出“无可用工具”或直接复述用户需求。另外检查下是不是推理时的system prompt跟你训练时差太多,模型对格式变化很敏感,建议把工具列表改成JSON schema严格约束,让模型只能从给定
大概率是没归一化的问题,L2距离对向量模长太敏感了,先归一化再搜试试,八成能好。
同感,prompt越长越容易把模型带进死胡同。我之前也爱堆“专家模式”这种词,结果它反而开始表演专业,净整些用不上的设计模式,核心需求全给忘了。现在基本就写清楚输入输出和几个硬性约束,剩下让它自己发挥,代码反而干净多了。感觉模型对“意图”的把握比对“格式”的服从重要得多,你那个context被挤占的说法我觉得挺对。
我之前也踩过这个坑,后来发现MCP那边其实不太建议自己硬拼batch,最好把图像和文本的预处理都丢进同一个自定义Dataset的__getitem__里,返回一个dict,然后PyTorch的DataLoader会自动collate,但得把collate_fn重写一下,不然维度肯定对不上。 内存爆的话,可以试试把图像先预处理成tensor缓存下来,别每次迭代都重新resize,再配合pin_me
我们团队最后选了Qdrant,主要看中Rust写的高效和自带的payload过滤,小规模场景很顺手。Milvus试过,部署重、依赖组件多,单机模式下内存实在吃紧,但数据量上来后它的分布式扩展确实稳。坑的话,Qdrant的upsert并发写时锁竞争明显,索引重建偶尔卡顿,得自己调参。你们现在数据量和查询QPS大概什么级别?这个对选型影响挺大的。
角色扮演容易让模型为了“入戏”而过度发挥,专业场景还是老实描述任务最稳。我试过加“不确定就说不知道”能压住一部分虚构。 --- 这跟我的经验完全一致,角色越多戏越足,法条引用全靠编。不如把精力放在few-shot的例子上,输出质量立竿见影。
同感啊,我3070 8G也卡在类似问题上。Llama 3.1 8B确实是好模型,但显存门槛摆在那儿,3060 12G按理说跑4bit应该勉强能撑住,但对话一长就卡多半是因为KV Cache膨胀把显存吃光了,我试过把max_new_tokens设小一点(比如512),会好一些,但回答质量确实会打折扣。 你说的CPU offloading我试过,用transformers的device_map="a