Skip to content

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

【面试题】1. LangChain的Chain和Agent有什么区别?实际项目中你如何选择? ​

【标准答案】 Chain是固定流程,按预设步骤执行,适合流程明确的场景,比如固定三步:检索→组装Prompt→生成。 Agent是自主决策,模型根据用户输入动态选择工具和执行顺序,适合需要灵活判断的场景,比如智能客服需要决定是查订单还是退换货。

选择原则:流程固定用Chain,需要模型自主决策用Agent。实际项目中我经常组合使用——用Chain处理主流程,在需要灵活判断的节点嵌入Agent。

【面试题】2. 如何设计一个支持多轮对话的智能客服Agent?需要考虑哪些核心模块? ​

【标准答案】 核心四模块:

  1. 记忆管理:用ConversationBufferMemory或ConversationSummaryMemory维护上下文,避免重复询问
  2. 意图识别:每轮先用小模型分类用户意图,决定是走FAQ、查订单还是转人工
  3. 工具调用:对接订单系统、物流API、知识库检索
  4. 状态管理:用JSON记录会话状态(如"已提供订单号"、"等待确认退款")

关键技术点:用LangChain的MessagesPlaceholder注入历史消息,设置max_token限制避免超出上下文窗口。

【面试题】3. 使用LangChain调用大模型API时,如何处理Token限制和成本控制? ​

【标准答案】 三层策略:

  1. 提示词优化:用Few-shot代替长篇描述,删除冗余示例,压缩系统提示词
  2. 上下文管理:用ConversationSummaryMemory自动摘要历史对话,而非全量传入
  3. 模型分级:简单任务用GPT-3.5/ChatGLM便宜模型,复杂推理才用GPT-4/Claude

成本监控:在LangChain中接入Callbacks,记录每次调用的Token消耗,定期分析高成本对话优化提示词。

【面试题】4. 从0到1搭建一个RAG知识库问答系统,关键步骤有哪些? ​

【标准答案】 六步落地:

  1. 文档切分:用RecursiveCharacterTextSplitter,chunk_size=500-1000,overlap=50-100
  2. 向量化:用text-embedding-ada-002或M3E embeddings,注意维度匹配
  3. 存储:Chroma做原型验证,Milvus/Pinecone做生产环境
  4. 检索优化:Hybrid Search(向量+关键词),用MMR避免相似文档扎堆
  5. 重排序:用Cohere Re-rank或BGE reranker对Top-K结果二次排序
  6. 评估:用Ragas框架测Recall、Precision、Faithfulness

避坑:切分时不要切断表格和代码块,用MarkdownHeaderTextSplitter保留结构。

【面试题】5. 如何设计一个能够调用外部API的工具增强Agent? ​

【标准答案】 用LangChain的Tool类封装三步:

  1. 定义工具:@tool装饰器,写清楚name、description(模型靠这个决定是否调用)、args_schema
  2. 异常处理:try-except包裹API调用,返回友好错误信息而非Stack Trace
  3. 异步支持:用async def + Toolkits,避免串行调用拖慢响应

实战技巧:description要写"什么场景用这个工具",比如"当用户询问天气时调用此工具",模型才能正确触发。

【面试题】6. 你之前做过最复杂的Agent项目是什么?遇到过什么技术难点?怎么解决的? ​

【标准答案】 (示例回答)做过一个Code Review Agent,难点是让模型理解整个代码仓库的上下文。

难点1:代码文件太多,超出上下文窗口 解决:用Repo Map技术(参考Aider),只提取函数签名和调用关系,不传全文

难点2:模型生成的Review意见太泛,不够具体 解决:在Prompt中加入项目的历史Bug数据作为Few-shot,让模型学会找类似问题

难点3:误报率高,开发人员投诉 解决:加入置信度阈值,低置信度问题只给提示不报错,逐步收集反馈微调Prompt

【面试题】7. 向量数据库的相似度检索原理是什么?如何优化检索效果? ​

【标准答案】 原理:将文档和查询都转成向量,计算余弦相似度,返回Top-K最相似的文档。

优化四板斧:

  1. Embedding模型选型:中文用M3E/BGE,代码用CodeBERT,别用通用模型
  2. 检索参数调优:调大top_k(20-50)+ 用MMR增加多样性,避免返回雷同内容
  3. Hybrid Search:向量检索+BM25关键词检索,加权融合结果
  4. Query Rewrite:对用户问题做同义词扩展、实体识别,提升召回率

【面试题】8. 多智能体协作场景下,如何设计Agent之间的通信机制? ​

【标准答案】 三种模式:

  1. 中心化路由:用一个Manager Agent接收任务,拆解后分发给Worker Agents,适合任务边界清晰的场景
  2. 消息队列:Agents通过Redis/RabbitMQ异步通信,适合耗时任务(如一个Agent爬数据,另一个做分析)
  3. 共享黑板:Agents读写同一个状态文件/数据库,适合需要共享中间结果的场景

实战选择:CrewAI适合中心化路由,LangGraph适合状态机式协作,AutoGen适合开放式对话协作。

【面试题】9. Dify的工作流编排功能相比LangChain有什么优势和劣势? ​

【标准答案】 优势:

  1. 可视化编排,产品经理也能改流程,不用改代码
  2. 内置RAG、工具调用、条件分支,开箱即用
  3. 版本管理和A/B测试更友好

劣势:

  1. 复杂逻辑(如动态循环次数)不如LangChain灵活
  2. 自定义工具需要写Docker镜像,调试不如本地代码方便
  3. 黑盒化,出问题不好排查

选择建议:MVP阶段用Dify快速验证,复杂业务逻辑还是用LangChain写代码可控。

【面试题】10. Agent系统上线后,如何做性能监控和持续优化? ​

【标准答案】 监控三件套:

  1. 调用链追踪:用LangSmith或Helicone记录每次Agent调用的耗时、Token消耗、工具调用次数
  2. 质量评估:人工标注10%的对话,评估任务完成率、用户满意度
  3. 异常告警:设置Token超阈值、工具调用失败率、响应超时告警

持续优化闭环:

  • 每周看失败案例,分析是Prompt问题还是工具问题
  • 用Bad Case反推改进Prompt或增加工具
  • A/B测试不同Prompt版本,数据驱动迭代

生成时间:2026-06-12 02:30 题目数量:10道 覆盖知识点:LangChain、RAG、向量数据库、多智能体、Dify、性能优化等