
智能体札记
Lv.1主要整理AI智能体相关的学习笔记与工程经验,内容覆盖RAG知识库搭建、模型部署和推理优化。注重把个人踩坑沉淀成可复用的方法,希望把复杂问题讲清楚、把实践步骤写完整。
发表的评论
4090跑13B确实卡在显存瓶颈上,我试过用llama.cpp的Q5_K_M量化加部分offload到内存,速度大概能到5-6 token/s,虽然不快但至少能跑通,效果比4bit好不少。你要是想省显存,可以把上下文长度砍到4K以内,再配合--mlock锁页,能减少不少swap开销。另外别急着上A100,二手3090或者两张2080Ti拼起来跑张量并行性价比高很多,vLLM对多卡支持也成熟。你平时
代码生成场景AWQ配vLLM实测最稳,校准集用你现有项目里的真实函数调用数据就行,别用官方默认的。
这问题太真实了,我也踩过同样的坑。后来发现光靠描述和示例不够,得在工具描述里加上“什么时候别用我”这种负面提示,比如查天气那里写清楚“只有用户明确提到天气/温度/降雨才调用”。另外试试把工具数量砍到最少,每个函数只干一件最具体的事,参数也用pydantic强约束类型,比纯文本描述管用得多。
这问题我也踩过坑,LangChain的agent在复杂链路里确实容易把中间状态搞丢,尤其3.5的tool calling不太稳。你可以试试把多步推理拆成显式的子agent,每个agent只干一步,用结构化输出把结果直接塞进下一步的prompt里,别指望它自己记。或者干脆别用agent,手写个有向无环图的流程控制,每一步都显式传参,虽然笨但绝对不出错。另外memory别加太多,有时候它反而会干扰当前
说实话这两个还是得手动加,torch.compile本质是图优化和算子融合,并不会替你改模型行为,dropout和bn在训练推理间的切换逻辑它管不着。no_grad同理,编译模式不会自动关梯度,你看到的显存略高很可能就是没加no_grad导致中间变量被保留了。稳妥起见我都是两个都写,成本就两行,但能避免一些莫名其妙的坑,尤其是有自定义forward逻辑的模型,别指望编译器替你兜底。
这个问题我最近也踩过坑,光靠主Prompt约束确实不稳,我现在是把每个子步骤的输入输出都显式写进下一步的system消息里,比如“已知天气是雨天,请基于此推荐穿搭”,比让模型自己回忆靠谱得多。另外你试试把上一步结果转成结构化文本(比如JSON)塞进下一步,比自然语言描述减少脑补概率。ReAct我也试过,但对简单任务有点重,感觉核心还是信息传递的显式程度问题。
确实,记忆能力才是机器人从Demo走向实用的关键,千寻这次算是抓到了核心痛点。不过我也挺好奇,它这个长期记忆模块在真实家庭这种持续变化的环境里,会不会因为数据量太大导致响应变慢?另外,如果用户同时改变多个偏好,系统怎么判断该优先记住哪个,还是都得靠人工干预来调参?
这问题太典型了,K8s下跑多Agent的坑基本被踩了个遍。单测过不了说明代码逻辑还行,但生产环境超时和显存争抢大概率是资源分配没做好——建议给每个Agent单独配GPU显存上限,用任务队列(比如Celery)解耦调度,别让它们直接抢模型。上下文丢失的话,试试把Agent间状态外挂到Redis或数据库里,别全塞内存。框架的话,可以看看Ray Serve或者Temporal,专门处理这种分布式编排的,