Skip to content

AI智能体应用开发面试题 - 2026-06-15 ​

【面试题】1. 在实际项目中,你是如何处理大模型API调用时的限流(Rate Limit)和超时问题的?请描述具体方案。 ​

【标准答案】 我从三个层面处理: 第一,客户端限流:用令牌桶算法(如guava RateLimiter或Python的tenacity)控制请求频率,避免触发平台限流。 第二,重试机制:实现指数退避重试(exponential backoff),第一次失败等1秒,第二次2秒,最多重试3-5次,同时区分可重试错误(429/500)和不可重试错误(401/400)。 第三,超时与降级:设置合理的timeout(通常30-60秒),超时后降级到备用模型或返回缓存结果。生产环境还会做多地域部署+多个API Key轮询,进一步提升可用性。


【面试题】2. LangChain和CrewAI在智能体开发上各有什么优缺点?什么场景选哪个? ​

【标准答案】 LangChain:生态最成熟,组件丰富(Chains、Agents、Memory、Retrievers),适合需要高度定制化的场景,比如复杂RAG系统、多步骤工作流。缺点是抽象层级多,学习曲线陡,调试不太直观。 CrewAI:专注多智能体协作,角色分工(Agent/Task/Crew)概念清晰,适合需要多个专业Agent协同完成任务的场景(比如调研报告生成:一个Agent搜资料,一个Agent写初稿,一个Agent审核)。缺点是生态相对小,单智能体场景用它会显得重。 选型建议:单智能体+复杂工具调用用LangChain;多角色协作任务用CrewAI;如果要快速落地+可视化,直接上Dify。


【面试题】3. 请描述你做过的一个RAG系统架构,包括文档切分策略、向量化方案、检索优化手段。 ​

【标准答案】 我之前做的企业知识库RAG,架构是这样的: 文档切分:用递归字符切分(RecursiveCharacterTextSplitter),块大小512token,重叠50token;对代码文件用特殊分隔符切分,对表格保留完整结构不切散。 向量化:用text-embedding-ada-002或国内模型(如bge-large-zh),向量维度1024,存入Milvus,建HNSW索引。 检索优化:

  1. 混合检索(向量+BM25),RRF融合排序;
  2. 查询改写(用LLM把用户问题改写成多个变体再检索);
  3. 重排序(Reranker模型,Top20候选精排取Top5);
  4. 引用溯源,把原文chunk带回去,方便用户核验。

【面试题】4. 智能体的"记忆系统"有哪些实现方式?各适合什么场景? ​

【标准答案】 三类记忆,各司其职: 短期记忆(In-context):直接塞进Prompt,适合会话内上下文,最简单,但受窗口限制。我一般保留最近10轮对话。 中期记忆(向量检索):把历史对话/文档向量化存库,需要时检索 relevant 片段塞进Prompt,适合超长会话场景,核心是要做好metadata过滤(按时间/主题/用户)。 长期记忆(结构化存储):重要信息抽取成结构化数据(用户画像、项目关键信息)存数据库,定期由Agent主动更新,适合个性化助手场景。 实战组合:短期记忆做实时上下文,向量检索做知识召回,结构化记忆存核心事实,三层叠加效果最好。


【面试题】5. 描述一个你用多智能体协作(Multi-Agent)解决实际问题的案例,包括角色分工和协作机制。 ​

【标准答案】 案例:自动化竞品分析系统。 角色分工:

  • 搜索Agent:负责调用搜索API+爬取网页,收集竞品信息;
  • 分析Agent:负责提取结构化信息(价格、功能点、用户评价);
  • 对比Agent:负责生成对比表格和分析结论;
  • 审核Agent:负责检查输出质量,不达标打回重写。 协作机制:用CrewAI的Sequential Process,上一个Agent输出作为下一个输入;关键节点用人工审核卡点,避免错误传播。整个流程从触发到出报告约15分钟,原来人工要半天。

【面试题】6. 工具调用(Function Calling)失败时,你一般怎么排查和处理? ​

【标准答案】 排查分三步: 第一步:看请求格式:确认tools参数格式符合模型要求(name/description/parameters),JSON Schema不能有additionalProperties这种模型不支持的字段。 第二步:看模型返回:用langsmith或日志抓模型原始返回,看是模型没触发tool_call(概率问题,调temperature或换模型),还是触发了但参数解析失败(通常是JSON格式问题)。 第三步:看工具执行:工具本身是否抛异常,超时时间是否够。 处理策略:解析失败时用output parser重试;模型不触发tool_call时转成普通Prompt强制调用;工具执行失败返回友好错误信息让模型自行修正(Self-Correction),最多修正2次,避免死循环。


【面试题】7. 智能体处理长文档(比如100页PDF)时,有哪些工程化方案?各有什么tradeoff? ​

【标准答案】 三种主流方案: 方案一:RAG切分检索:把文档切chunk建向量索引,按需检索。优点是内存友好,适合问答场景;缺点是全局理解能力差(看不到全文),适合"这篇文档里某某内容是什么"类问题。 方案二:长上下文模型直接塞:用Gemini 1.5 Pro(100万token)或Claude(200K)直接把全文塞进去。优点是全局理解好;缺点是贵,延迟高,不适合高并发。 方案三:Map-Reduce摘要:先把文档按章节用模型分别摘要,再把摘要聚合。优点是兼顾全局理解和成本;缺点是信息有损,适合"总结这篇文档"类任务。 实战:我一般组合用,先RAG做精准问答,用户需要全文理解时切换到长上下文模型,成本可控。


【面试题】8. 描述一下你怎么设计一个"可中断、可恢复"的智能体工作流?比如用户中途退出,下次进来还能继续。 ​

【标准答案】 核心是状态持久化+事件驱动: 状态设计:工作流每个节点执行完后,把当前状态(已完成的步骤、中间结果、待办列表)存到数据库(我用Redis+MySQL双写,Redis做实时状态,MySQL做持久化)。 中断处理:用户退出时,捕获中断信号,把状态标记为"暂停";恢复时从数据库读状态,重新初始化Agent,把中间结果注入上下文继续跑。 实现工具:用LangGraph的checkpointer(支持PostgreSQL/Redis后端),天然支持断点续跑;或者Temporal/Cadence这种工作流引擎,自带状态管理和重试。 关键点:每个步骤要幂等,避免重复执行产生副作用(比如已经发过的API请求不能重发)。


【面试题】9. 智能体系统上线后,你通过哪些指标监控它的"健康度"?发现模型回答质量下降怎么处理? ​

【标准答案】 监控指标:

  • 技术指标:API成功率、P95延迟、Tool调用成功率、成本/千次请求;
  • 质量指标:用户点赞率、人工抽检打分、回答长度分布(异常波动预警);
  • 业务指标:任务完成率(比如RAG场景的引用准确率)。 质量下降处理:
  1. 先定位:是模型版本更新导致的,还是prompt漂移,还是知识库过期;
  2. 知识库过期→触发增量更新流水线;
  3. Prompt漂移→回滚到上一个稳定版本,同时在测试集上跑回归;
  4. 模型问题→切换到备用模型,同时收集badcase标注,用来做后续的SFT或few-shot优化。

【面试题】10. 如果让你从0到1落地一个"智能客服Agent",你会怎么规划技术选型和迭代路线? ​

【标准答案】 第一阶段(MVP,2周):用Dify搭建,接入公司FAQ知识库做RAG,跑通"用户提问→检索知识库→模型回答"基本闭环,快速验证效果。 第二阶段(1个月):加上工具调用(查订单、查物流),接入企微/钉钉,做多轮对话支持,加人工兜底(回答置信度低时转人工)。 第三阶段(2个月):做多智能体分工(售前Agent、售后Agent、投诉Agent),加用户画像记忆,做个性化回复;同时建标注反馈闭环,持续收集badcase。 技术选型:Dify(快速落地)→ LangChain(需要深度定制时)→ 自研(规模上去后控成本)。关键是每个阶段都要有可量化的评价指标,避免盲目堆功能。


生成时间:2026-06-15题目数量:10道覆盖方向:技术基础、架构设计、工具使用、项目落地、场景实操