Agent相关问题整理学习
1、什么是MCP?和Function call区别是什么?Function call是点对点的私有接口适配让大模型调用本地的工具函数。MCP是一个通用协议开发一次能被多个模型客户端调用。在项目中最初使用Function call但每次换模型(比如从qwen换到deepseek)都要改prompt格式所以引入了mcp。比如做了一个桌面txt统计工具通过mcp的ListTools接口模型可以直接发现list_desktop_txt_files工具。这种标准化让agent具备了插件能力用户可以随意安装新的MCP Server程序无需修改代码即可动态新增工具能力2、处理多文件或海量文档时如何解决 Context Window 限制1、分级存储策略将信息按使用场景分层避免一次性加载所有内容短期记忆用内存List维护当前会话上下文随用随丢仅保留当前对话的关键信息长期记忆引入外部存储(Elasticsearch / 向量库)将海量文档持久化存储通过检索按需加载到模型上下文。2、轻量化无向量库方案(中小规模场景)针对几百份PDF级别的中小规模知识库无需复杂向量库即可快速部署1、用docparser解析文件为纯文本并缓存hash文件避免重复解析2、在文件系统层面构建倒排索引通过BM25算法实现关键词检索快速定位目标文档片段3、企业级优化ES混合检索(BM25 向量检索的混合)单纯向量检索关键词丢失、单纯BM25检索语义不足1、先用BM25锁定包含关键词的具体条款实现精确匹配2、再用向量检索检索补充语义相关的案例3、最后把相关的少量片段送入LLM3、你上线前怎么测试Agent?RAG的效果如何量化?1、测试集定义构建带标注的测试集定义明确的Input Expected Output覆盖正常、边界和异常场景。2、自定义评估器不仅评估最终答案是否正确更要评估 Agent 的决策路径是否合理。为此我会基于 LangSmith/LangFuse 搭建自动化测试流水线实现指标的自动采集与评估。关键指标之一是自定义的ProcessingMode评估器比如用户问 “查余额” 这种简单问题如果 Agent 调用了复杂的 Planner 链路而非直接走 API 查询即使答案正确在测试中也会判定为失败因为这浪费了 Token 和时间影响系统整体效率。我要求 Agent 在路由阶段的ProcessingMode准确率达到 95% 以上才允许上线以此控制Token消耗和系统延迟。4、你的Agent如何实现自我修复?设计了一个while循环当Code Interpreter 返回 Error时不直接把错误抛给用户而是把错误信息 之前的代码重新喂给LLM提示它这段代码报错了请分析原因并重写。设置了max_retries 3在测试中80%的Pandas数据类型错误(如字符串转数字失败)都能通过这种机制自动修复用户无感知。5、设计Agent工具时原子性怎么把可控?工具不能太万能也不能太细碎。1、一个工具只做一件事2、参数尽量少最好不要超过3个3、不要做全能工具4、LLM调用成功率显著提升比如最开始我设计了一个巨大的工具叫analyze_data(file_path)结果LLM不知道怎么传参数。后来拆分为原子工具:load_csv()get_column_names(),calculate_correlation()这样LLM的调用率显著提高6、如何降低Agent的Token消耗?没必要杀鸡用牛刀采用了模型分级策略1、意图识别/简单路由用Qwen-flash(便宜、快)2、核心推理/代码生成用Qwen-Max或Qwen-plus(聪明、贵)3、总结/润色用小模型还优化了SystemPrompt把几页纸的文档精简为Markdown表格减少了40%的Context的输入成本7、如果Agent一直在这个任务里死循环了怎么办?Agent有时会陷入打开网页--失败--重试--失败的死循环。在架构层加了一个死循环检测器每次Agent行动前我会计算当前Action与过去3次Action的语义相似度如果3次都在做及其相似的操作且没有产出新结果程序会强制打断。并向Agent发送一条系统提示你似乎卡住了请尝试换一种策略或者直接向用户求助。if (连续3次动作高度相似) AND (环境状态无变化):判定为死循环打断执行发送提示你似乎卡住了请换策略或求助8、如果Agent响应很慢你是怎么排查的?Agent的慢通常有俩块LLM推理慢Token多、思考步骤长、模型本身慢工具执行慢网络、数据库、爬虫、第三方API需要查看Trace调用链路。项目中接入了langfuse进行全链路监控有一次用户反馈响应要30秒。我查看Trace发现LLM思考花了3秒但是search_tool花了25秒!!!原因爬虫卡在了某个网站的重试机制上。优化给工具加了timeout5s的限制并发调用多个搜索源避免单点拖慢整体如果不看Trace可能会认为模型太慢。9、Agent思考时间长怎么优化前段用户体验?既然不能让模型变快就让用户觉得没那么慢。实现了Stream流式输出和透明化思考。打字机效果LLM生成一个字前段显示一个字不让用户盯着空白加载圈干等透明化思考当Agent在调用工具(如查数据库、搜向量)前端实时展示状态可见性缓解用户的等待焦虑觉得Agent真的在干活而不是卡死。本质把黑盒等待 变成 可见的工作流10、什么时候应该微调模型什么时候用RAG?RAG解决不知道的问题(缺乏特定数据实时性数据)成本低更新快缺数据 → 外挂知识库成本低、易更新。Fine-tuning解决学不会、做不好的问题成本高更新慢格式乱、语气飘、输出不专业、逻辑不规范 → 用微调 “教它怎么写”。RAG First优先外挂知识库不动模型权重只有当风格、格式、输出范式怎么提示都不达标时再上微调