Skip to content

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

面向1-3年经验岗位 | 涵盖技术基础、架构设计、工具使用、项目落地、场景实操、面试情景问答


【面试题】1. 在实际项目中,你如何选择合适的Agent框架?比如LangChain、CrewAI、Dify等,它们的核心差异是什么? ​

【标准答案】选择框架主要看三个维度:定制化程度、团队协作需求、部署复杂度。

LangChain适合需要深度定制的场景,它的链条式编排和LCEL语法让你可以精确控制每个环节,但学习曲线陡峭,适合有经验的团队。

CrewAI更适合多智能体协作场景,它的Agent、Task、Crew抽象非常清晰,特别适合需要多个角色协作完成复杂任务的场景,比如研究报告生成、竞品分析等。

Dify适合快速原型和业务落地,可视化工作流编排让非技术人员也能参与,API接口完善,适合需要快速迭代和多人协作的团队。

实际选型时,我会先问:这个项目的核心复杂度在哪?如果需要高度定制化的工具调用和记忆管理,选LangChain;如果是多角色协作任务,选CrewAI;如果需要快速上线且团队有非技术人员,选Dify。很多时候也会混合使用,比如用LangChain做核心引擎,Dify做前端编排。


【面试题】2. 请解释RAG系统中的"检索增强"具体是怎么工作的?如何优化检索效果? ​

【标准答案】RAG的核心是把大模型从"记忆驱动"变成"检索驱动",解决知识时效性和幻觉问题。

具体工作流程:用户提问 → 向量化查询 → 检索相似文档片段 → 将片段注入Prompt上下文 → 模型基于上下文回答。

优化检索效果的关键点:

  1. 分块策略:chunk_size不能太大也不能太小,一般512-1024tokens,重叠100-200tokens,保证语义完整性。

  2. 混合检索:不要只用向量检索,要结合关键词检索(BM25),用RRF(Reciprocal Rank Fusion)融合结果,命中率能提升30%以上。

  3. 查询重写:用户问"这个产品怎么样",直接检索效果差,要先改写成"产品优缺点分析"、"用户评价"等具体查询。

  4. 重排序(Rerank):检索回来20个片段,用交叉编码器重新打分,只取top-5送入模型,能显著提升答案质量。

  5. HyDE(假设文档嵌入):让模型先生成一个假设答案,再用这个假设答案去检索,能解决语义鸿沟问题。

实际项目中,我一般会先搭建基础RAG链路,然后用Bad Case驱动优化,比如哪些问题答不好,是检索漏了还是注入了无关内容,针对性调整分块策略和检索参数。


【面试题】3. 在多智能体系统中,你如何设计Agent之间的通信协议?遇到过哪些坑? ​

【标准答案】多智能体通信的核心是"结构化输出+明确契约",不能让Agent自由发挥,否则调试会疯掉。

我常用的通信设计:

  1. 强制结构化输出:每个Agent的输出必须是JSON Schema定义的格式,用function calling或结构化输出API保证。比如Researcher Agent输出{"findings": [...], "sources": [...], "confidence": 0.8},Writer Agent消费这个结构。

  2. 消息队列+状态机:Agent之间不直接调用,通过消息队列(Redis Streams或RabbitMQ)通信,每个Agent有自己的状态机(IDLE、PROCESSING、WAITING、ERROR),避免死锁。

  3. 超时和重试机制:Agent调用必须有timeout,我一般设30秒,超时后走降级逻辑。重试用指数退避,最多3次。

踩过的坑:

  • 循环调用:Agent A调用B,B又调用A,无限循环。解决方法是加调用深度限制,超过3层直接终止。
  • 上下文膨胀:每个Agent都把历史消息传来传去,token成本爆炸。解决方法是用摘要Agent,定期压缩历史。
  • 责任不清:任务失败了不知道是哪个Agent的锅。解决方法是每个消息带trace_id,用LangSmith或Phoenix做全链路追踪。

实际项目中,我会先画清楚Agent协作流程图,明确每个Agent的输入输出契约,再用代码实现,这样调试和维护都轻松很多。


【面试题】4. 你如何设计一个支持长会话的智能体记忆系统?有哪些技术方案? ​

【标准答案】长会话记忆系统的核心是"分层存储+智能召回",不能把所有历史都塞给模型。

我设计的内存系统分三层:

  1. 短期记忆(In-Context):最近3-5轮对话存在Prompt里,用MessagesPlaceholder管理,保证对话连贯性。超过窗口限制(比如8k tokens)就触发压缩。

  2. 中期记忆(工作记忆):用向量数据库(Chroma或Pinecone)存储,每次对话后将关键信息(用户偏好、决策点、待办事项)提取成摘要,向量化后存储。召回时用用户最新消息检索相关记忆。

  3. 长期记忆(持久化):结构化数据存在传统数据库(PostgreSQL+JSONB),比如用户画像、历史订单、知识库。非结构化数据(长文档、会议记录)存在向量库。

关键技术点:

  • 记忆压缩:用另一个LLM定期将对话历史压缩成摘要,我一般用"提取决策、待办、偏好"的Prompt,把1k tokens压缩到200tokens。
  • 记忆召回:不能只靠向量相似度,要结合时间衰减(越近期的记忆权重越高)和重要性打分(用模型判断哪条记忆重要)。
  • 记忆冲突处理:用户前后说法不一致时(比如先说喜欢A,后说喜欢B),用时间戳解决,保留最新偏好。

实际落地时,我会先用LangChain的Memory模块快速验证,再用自研方案替换,因为LangChain的Memory在复杂场景下不够灵活。


【面试题】5. 在工具调用(Function Calling)场景中,你如何提升工具选择的准确率? ​

【标准答案】工具调用准确率直接影响用户体验,我一般从四个层面优化:

  1. 工具描述优化:这是最容易被忽视的。工具的name、description、parameters的description都要写得像"给模型看的文档",不能太简短也不能太啰嗦。我常用的模板:"description": "工具功能概述。适用场景:xxx。不适用:xxx。参数说明:xxx。"

  2. 负样本训练:收集工具调用失败的case,分析是因为描述不清、参数理解错误还是工具设计问题。如果是高频问题,直接优化工具定义;如果是长尾问题,考虑用Few-shot示例引导。

  3. 工具分组和动态加载:不要一次性把所有工具(比如50个)都传给模型,会根据对话上下文动态选择工具子集。比如用户问天气,只加载天气相关工具。我用向量检索做工具召回,用户问题向量化后检索最相关的5-10个工具。

  4. 并行调用和纠错:允许多个工具并行调用(parallel_function_calls),提升效率。如果模型选错工具或传错参数,用"纠错Agent"拦截,它会分析错误原因并自动修正,不用打断用户。

实际案例:我做过一个智能客服Agent,初期工具调用准确率只有65%,优化工具描述+动态加载后提升到88%,再加纠错Agent后到95%。关键是持续收集bad case,迭代工具定义。


【面试题】6. 如果让你从0到1设计一个"AI代码审查助手",你会怎么规划技术架构? ​

【标准答案】AI代码审查助手是个很好的Agent落地场景,我会分四个模块设计:

1. 代码理解模块

  • 用AST解析器(tree-sitter)提取代码结构(函数、类、依赖关系)
  • 用向量数据库存储代码库知识,比如内部规范、历史bug模式
  • 大模型用Claude 3.5 Sonnet或GPT-4,代码理解能力强

2. 审查规则引擎

  • 静态规则:用SonarQube或ESLint做基础检查(语法、风格)
  • AI规则:设计专门的Prompt,让模型从"安全性、性能、可维护性、业务逻辑"四个维度审查
  • 自定义规则:允许团队上传自己的规范文档,RAG检索后注入Prompt

3. Agent编排

  • 用LangGraph做状态机编排:代码解析 → 静态检查 → AI审查 → 结果聚合 → 生成报告
  • 多Agent协作:一个Agent专门查安全漏洞,一个查性能问题,一个查业务逻辑,最后由汇总Agent生成综合报告

4. 集成和反馈

  • GitHub/GitLab webhook触发,PR提交时自动审查
  • 评论直接发到PR里,支持"解释这段代码"、"给出修改建议"等交互
  • 用人类反馈微调Prompt,形成持续迭代闭环

关键技术选型:

  • 框架:LangChain(工具调用成熟)+ LangGraph(复杂流程编排)
  • 向量库:Qdrant(支持代码专用的embedding模型)
  • 部署:Docker容器化,用FastAPI做接口层

MVP版本2周可以上线,先支持Python和JavaScript,后续逐步扩展。


【面试题】7. 你如何处理大模型API调用的限流和成本控制?有哪些实战经验? ​

【标准答案】API限流和成本控制是生产环境必须面对的问题,我一般从四个维度应对:

1. 限流处理

  • 重试策略:用tenacity库实现指数退避重试,遇到429错误自动重试,最大重试3次,初始延迟1秒。
  • 多Key轮转:准备多个API Key,用负载均衡器(比如APIWrapper)自动切换,避免单Key限流。
  • 请求合并:批量任务(比如处理100个文档)用batch API(OpenAI支持),比单个调用便宜且不易限流。

2. 成本控制

  • 缓存策略:对相同输入的结果做缓存(用Redis),我用LangChain的CacheBackedEmbedder,向量化结果缓存后,重复查询直接返回,能省30-50%成本。
  • 模型降级:简单任务用GPT-3.5或Claude Haiku,复杂任务才用GPT-4或Claude Opus。我设计了一个"路由Agent",根据用户问题复杂度自动选择模型。
  • Prompt压缩:用LLMLingua等工具压缩Prompt,去掉冗余token,能在精度损失不大的情况下省20-30%成本。

3. 监控和告警

  • 用LangSmith或Helicone监控每次调用的token消耗和成本,设置日预算上限(比如$50/天),超预算自动降级到便宜模型。
  • 对异常高频调用(比如单个用户1分钟调用100次)做限流,防止恶意刷API。

4. 自建模型

  • 当天气量超过$1000/月时,考虑自建开源模型(Llama 3、Qwen),用vLLM推理引擎,成本能降到API的1/10。但初期投入大,需要GPU资源和技术团队。

实际案例:我负责的项目初期用OpenAI API,月成本$800,优化缓存+模型降级后降到$300,后期部分场景切到自建Qwen-72B,月成本降到$80(主要是GPU租用费)。


【面试题】8. 在多模态智能体中,你如何处理图像、音频、视频等不同模态的输入?技术难点是什么? ​

【标准答案】多模态智能体的核心是"模态对齐+统一表示",让不同模态的信息能在同一个语义空间里被模型理解。

技术架构设计

  1. 输入层:不同模态用专用预处理器

    • 图像:用CLIP或BLIP做编码,提取视觉特征,或者直接把图像传给多模态模型(GPT-4V、Claude 3)
    • 音频:用Whisper做语音转文字,用AudioMAE提取音频特征
    • 视频:抽帧(每秒1-2帧)+ 用Whisper提取音频字幕,变成"图像序列+文本"的混合输入
  2. 对齐层:把所有模态转换成统一的token序列

    • 图像用<image_start>...<image_end>特殊token标记
    • 音频转文字后直接当文本处理,或者保留<audio>标记
    • 用多模态模型的tokenizer做统一编码
  3. 推理层:用原生多模态模型(GPT-4o、Claude 3.5 Sonnet、Qwen-VL)做推理,它们已经做好了模态对齐,比自己拼接特征效果好。

技术难点和解决方案

  • 难点1:图像分辨率限制。GPT-4V一张图只能看2048x2048,超了会裁剪或压缩,丢失细节。解决方案:用tile策略,把大图切成9宫格,分别传给模型,让模型"先看全景再看细节"。

  • 难点2:视频理解的成本。1分钟视频抽60帧,每帧都传给模型成本爆炸。解决方案:用关键帧提取(场景切换检测),只传重要帧,其余用字幕代替。

  • 难点3:模态冲突。用户上传一张图说"这个产品不好用",图和文字意思可能不一致。解决方案:让模型分别分析图和文字,再做交叉验证,如果冲突就问用户"您是指图片里的问题,还是文字描述的问题?"

实际项目经验:我做过一个电商客服多模态Agent,用户上传商品照片+文字描述问题,Agent能识别商品瑕疵、比对订单信息、给出退款建议。关键是把图像理解和业务系统(订单数据库、退款政策)打通,不能只做"看图说话"。


【面试题】9. 你如何评估一个智能体系统的"智能程度"?有哪些量化指标? ​

【标准答案】评估智能体的"智能程度"不能只看模型能力,要从"任务完成质量、自主性、适应性"三个维度量化。

1. 任务完成质量指标

  • 成功率(Success Rate):在真实场景或测试集上,智能体成功完成任务的比例。比如"帮用户订机票",成功标准是"订单创建且支付完成"。
  • 人工评估分数:用Likert量表(1-5分)让人工评估答案质量,覆盖准确性、完整性、有用性三个维度。
  • 幻觉率(Hallucination Rate):用事实核查工具(比如用另一个模型验证输出是否基于给定上下文)检测,目标<5%。

2. 自主性指标

  • 平均工具调用次数:完成一个任务需要调用多少次工具,越少说明规划能力越强。
  • 人工干预率:多少比例的任务需要人工介入才能完成,目标<10%。
  • 错误自愈率:遇到错误(比如API调用失败)后,智能体自己修正并完成任务的比例,目标>70%。

3. 适应性指标

  • 跨任务泛化:在训练/调优时没有见过的新任务上,智能体的表现下降幅度,目标<20%。
  • 用户反馈评分:用户对智能体回答的点赞/点踩比例,目标>80%正面反馈。
  • 持续学习曲线:随着使用次数增加,智能体在特定场景的表现是否持续提升(比如通过记忆系统积累领域知识)。

4. 工程和成本指标

  • 平均响应时间:从用户发问到给出答案的时间,目标<3秒(简单任务)或<30秒(复杂任务)。
  • Token成本 per 任务:完成一个任务平均消耗多少token,目标根据场景设定,比如客服场景<$0.01/对话。
  • 系统可用性:智能体服务正常运行的时间比例,目标>99.5%。

实际落地时,我会先定义清楚"成功"的标准(比如客服场景的成功是"用户问题得到解决且满意度>4分"),再用自动化测试+人工抽样结合的方式持续监控。关键是把指标和业务流程对齐,不能为了优化指标而优化指标。


【面试题】10. 在智能体部署上线后,你如何做监控和迭代?有什么实战经验分享? ​

【标准答案】部署上线只是开始,监控和迭代才是决定智能体能否持续创造价值的关键。我一般搭建"三层监控体系":

1. 技术监控层

  • API调用监控:用LangSmith或Helicone追踪每次调用的延迟、成本、错误率,设置告警阈值(比如错误率>5%自动告警)。
  • 工具调用监控:记录每个工具的成功率、平均耗时,比如向量检索慢了,可能是索引需要优化。
  • 日志聚合:用ELK或Loki收集所有日志,关键字段(trace_id、user_id、session_id)要做结构化,方便排查问题。

2. 业务监控层

  • 任务完成率:实时计算"用户发起任务 → 任务成功完成"的转化率,如果突然下降,可能是Prompt或工具出了问题。
  • 用户满意度:每次对话结束弹"这次回答有帮助吗?",用点赞/点踩数据做A/B测试,比如新Prompt上线后满意度是否提升。
  • Bad Case漏斗:每天自动抽取100个对话,用另一个模型做质量打分,把低分对话推给人工review,形成bad case库。

3. 迭代优化流程

  • 每周迭代节奏:周一review上周bad case,周二优化Prompt或工具,周四上线新版本,周五做A/B测试对比。
  • Prompt版本管理:用LangChain的PromptTemplate做版本控制,每次修改都记录"改了什么、为什么改、效果如何",方便回滚。
  • 自动化测试集:维护一个"回归测试集"(比如100个典型问题),每次改Prompt都跑一遍,确保没有引入新bug。

实战经验分享

  • 案例1:我负责的一个客服Agent,上线后前两周满意度85%,第三周突然掉到70%。查监控发现是"退款政策"那段Prompt被误删了,导致模型乱回答退款问题。从此我们加了"关键Prompt片段检测",每次上线自动检查必需片段是否存在。

  • 案例2:智能体的token成本逐周上涨,从$0.01/对话涨到$0.05。排查发现是记忆系统出问题,历史消息无限累积。加了"对话轮次限制+记忆压缩"后成本回到$0.015,满意度还提升了(因为模型不会被超长上下文搞晕)。

  • 关键教训:监控要做"leading indicator"(领先指标),比如工具调用失败率上升,比用户满意度下降早1-2天,能提前预警。不要只看最终结果,要监控中间环节的健康度。


生成时间:2026-06-12 03:02
题目数量:10道(技术基础×2 + 架构设计×2 + 工具使用×2 + 项目落地×2 + 场景实操×1 + 面试情景×1)