AI智能体应用开发面试题
生成时间:2026-06-16 23:56 适用岗位:1-3年经验 AI Agent 开发岗
【面试题】1. 大模型API调用在生产环境中,你如何设计限流、超时和重试机制?
【标准答案】 核心是靠三层防护:
重试层:用指数退避,遇到429或5xx自动重试,间隔1s→2s→4s,最多3次。用tenacity库最方便。
限流层:用Semaphore控制并发数,避免突发流量打爆配额;高频相同问题加语义缓存,命中直接返回,能省60%+调用量。
超时层:connect timeout设10s,read timeout设60s;超过就断,不能让用户一直转圈。
关键是把每次调用的token消耗、延迟、成功/失败都打日志,方便后续分析和优化。我们项目里还会对高消耗用户做告警,防止异常调用把配额耗完。
【面试题】2. 请描述一下你做过的RAG系统,召回率和准确率不高时你是怎么优化的?
【标准答案】 我一般按"召回→重排→生成"三阶段来优化:
召回阶段
- Chunk策略:语义切分比固定字数切分效果好,重叠10-20%保留上下文
- 混合检索:向量检索+BM25关键词检索融合,召回率明显提升
- 查询改写:用户问"这个东西怎么样",先让LLM改写成"XX产品优缺点分析",再去做检索
重排阶段
- 用CrossEncoder做Rerank,Top-20召回→Top-5送入LLM,噪音少很多
- 还会过滤相似度低于阈值的片段,避免"为了有上下文而塞垃圾"
生成阶段
- Prompt里明确说"仅基于以下资料回答,不确定就说不知道"
- 要求输出引用来源,方便溯源,也倒逼模型别乱编
用RAGAS跑指标,看Context Precision和Faithfulness,哪个低就针对性调哪个环节。
【面试题】3. 多智能体系统设计中,你如何选择通信机制和任务编排模式?
【标准答案】 通信和编排是多Agent系统的两个核心决策:
通信机制
- 简单场景:共享消息列表,每个Agent读上一家的输出,像流水线
- 复杂场景:用Redis做状态总线,每个Agent独立运行,通过状态变化触发下游
- 需要回溯:用LangChain的MessageHistory,保留完整对话树
编排模式
- 顺序执行:任务有强依赖,A的输出是B的输入,用Supervisor统一调度
- 并行执行:任务可拆分,用asyncio.gather并发跑,最后汇总
- 动态路由:让Router Agent根据任务类型决定发给谁,灵活但难调试
实际落地建议:先单Agent跑通全流程,确认瓶颈在哪再拆多Agent,别一开始就搞复杂。我们之前一个项目,拆了3个Agent后发现维护成本太高,又合回去了。
【面试题】4. 智能体的工具调用(Tool Use / Function Calling)失败率高的话,你从哪几个方向排查?
【标准答案】 工具调用失败我一般按"模型→参数→执行→环境"四层排查:
模型层
- LLM有没有理解工具的用途?Tool描述写清楚"什么时候用、参数是什么格式",比写100行代码管用
- 复杂工具拆小,一个Tool做一件事,别让LLM困惑
参数层
- LLM输出的JSON可能不合法,应用层必须做参数校验和类型转换
- 必填参数缺失时,别直接报错,把缺失信息反馈给LLM,让它补全
执行层
- 工具本身有没有Bug?加try-catch,执行失败把错误信息返回给LLM,让它决定重试还是换方案
- 涉及写操作的工具,加二次确认或权限校验
环境层
- API限流、网络超时、依赖服务挂了,这些要在工具外部处理,别让LLM背锅
我们项目里会给每个工具调用打日志:成功率、平均耗时、常见错误,每周复盘一次。
【面试题】5. 如果让你从零设计一个代码审查智能体,你会怎么架构?
【标准答案】 我会按"理解→分析→建议→报告"四个模块来设计:
代码理解模块
- 用AST解析器(如tree-sitter)提取函数调用关系、变量依赖
- 把代码片段和上下文(imports、类定义)一起送给LLM,它才能看懂
问题分析模块
- 静态检查:接ESLint/SonarQube,先过滤语法和风格问题
- 逻辑检查:让LLM对比类似开源项目的实现,找潜在Bug
- 安全检查:用专门的安全扫描Tool,别指望LLM发现所有漏洞
建议生成模块
- 别只说"这里有问题",要给具体修改方案和理由
- 用Few-shot示例训练输出格式:问题描述+严重程度+修改建议+示例代码
报告模块
- 按文件/函数聚合问题,优先级排序
- 生成Markdown报告,支持在PR评论里直接展示
关键是先跑通一个语言(如Python),验证效果后再扩展多语言支持。
【面试题】6. LangChain的LangGraph和CrewAI你更推荐哪个?各自适合什么场景?
【标准答案】 两个工具定位不同,没有绝对好坏:
LangGraph适合
- 需要复杂状态流转的场景,比如"用户可能随时改变需求,Agent要动态规划下一步"
- 需要精细控制每一步的逻辑,LangGraph的图结构让你能精确控制状态转移
- 团队有较强Python能力,能接受较陡的学习曲线
CrewAI适合
- 快速搭建多角色协作系统,概念清晰(Agent/Task/Crew),代码量少
- 原型验证阶段,2天能跑通一个多Agent Demo
- 团队希望快速交付,不愿意在框架细节上花太多时间
我们的选择
- 生产级复杂系统用LangGraph,灵活性够
- 内部工具快速落地用CrewAI,交付快
- 两个都用的话,CrewAI做原型,验证可行后迁移到LangGraph
关键看团队能力和项目周期,别为了用新框架而用新框架。
【面试题】7. 智能体系统的记忆机制,你如何平衡上下文长度和记忆质量?
【标准答案】 核心是"分层记忆+智能压缩":
分层策略
- 最近3-5轮对话放Context Window,保证流畅
- 历史对话做摘要,压缩后作为长期记忆
- 关键信息(用户偏好、已完成的任务)结构化存储,按需查询
压缩策略
- 用LLM对长对话做摘要,提取核心信息,能压缩80%以上
- 摘要质量关键在Prompt:明确告诉LLM"保留决策、偏好、未完成的任务,去掉寒暄和重复"
- 定期合并旧摘要,避免摘要本身变得太长
检索策略
- 长期记忆存向量库,需要时语义检索相关片段
- 用Time-weighted召回,最近的信息权重更高
- 用户显式说"记住这个"的信息永久保存,不受压缩影响
实际落地,上下文长度够用(如32K+)就别过度压缩,信息损失比token成本更贵。
【面试题】8. 你如何评估一个智能体是否需要引入人类反馈(Human-in-the-Loop)机制?
【标准答案】 三个信号告诉我需要加Human-in-the-Loop:
高风险操作
- 涉及资金、合同、敏感数据修改的操作,必须人工确认
- 我们项目里,退款超过500元、修改用户手机号,都会暂停让人工审核
低置信度场景
- LLM输出做结构化解析后,置信度低于阈值(如0.7)自动转人工
- 用另一个轻量模型做Fact Check,发现不一致就触发人工
新场景冷启动
- 系统刚上线,覆盖场景有限,人工介入能积累Bad Case
- 我们会让人工标注"模型哪里做错了",这些数据用来优化Prompt和工具
实现方式
- 简单场景:让用户在最终执行前点"确认"
- 复杂场景:用LangChain的HumanApprovalCallback,暂停执行等人工反馈
- 异步场景:把待审核任务推到企微/钉钉,人工处理完再继续
关键是别把所有决策都交给人工,那还不如不用AI;也别完全自动化,高风险场景必须留后门。
【面试题】9. 向量数据库选型时,你考虑哪些因素?Chroma、Milvus、Qdrant各自适合什么场景?
【标准答案】 选型我看四个维度:数据规模、部署复杂度、功能需求、团队熟悉度。
Chroma
- 适合:小规模(百万级以下向量),本地部署,快速原型
- 优势:开箱即用,Python友好,不需要额外基础设施
- 劣势:分布式能力弱,大规模检索性能下降
- 我们用它做本地开发和POC验证
Milvus
- 适合:大规模(亿级向量),需要水平扩展的生产环境
- 优势:性能好,支持混合检索(向量+标量过滤),社区活跃
- 劣势:部署复杂,需要K8s或Docker Compose,运维成本高
- 我们生产环境用Milvus,数据量千万级,检索延迟<100ms
Qdrant
- 适合:中等规模,需要丰富过滤功能的场景
- 优势:Rust实现性能好,过滤语法灵活,单机部署简单
- 劣势:分布式能力不如Milvus成熟
- 适合做垂直场景的智能客服、知识库检索
选型建议
- POC阶段用Chroma,快速验证
- 生产环境数据量大(>千万)用Milvus
- 中等规模、需要复杂过滤用Qdrant
- 别只看性能指标,团队能不能运维起来同样重要
【面试题】10. 智能体系统上线后,你如何建立监控和迭代闭环?
【标准答案】 上线只是开始,持续迭代才是关键。我一般建三个闭环:
数据监控闭环
- 核心指标:任务完成率、人工接管率、用户满意度(👍👎)
- 打点:每轮对话记录意图识别结果、工具调用成功/失败、LLM响应时间
- 异常告警:成功率低于95%、P95延迟超5s,自动告警
Bad Case分析闭环
- 每天自动拉取失败案例(人工接管、用户点👎、工具调用失败)
- 每周复盘Top 10失败原因,分类:Prompt问题/工具Bug/知识库缺失/模型能力边界
- 针对性优化:Prompt问题改Few-shot,工具Bug修代码,知识库缺失补文档
模型迭代闭环
- 收集高质量对话数据,做SFT或继续预训练(如果有资源)
- 用RAGAS或人工标注评估优化效果,避免"感觉效果好"这种主观判断
- A/B测试:新Prompt或新模型小流量灰度,数据好再全量
关键是"可量化+快速迭代",别等一个月再复盘,那时候用户可能已经跑了。
本题库由AI智能体应用开发面试题生成器自动生成,仅供学习交流使用。