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上下文 → 模型基于上下文回答。
优化检索效果的关键点:
分块策略:chunk_size不能太大也不能太小,一般512-1024tokens,重叠100-200tokens,保证语义完整性。
混合检索:不要只用向量检索,要结合关键词检索(BM25),用RRF(Reciprocal Rank Fusion)融合结果,命中率能提升30%以上。
查询重写:用户问"这个产品怎么样",直接检索效果差,要先改写成"产品优缺点分析"、"用户评价"等具体查询。
重排序(Rerank):检索回来20个片段,用交叉编码器重新打分,只取top-5送入模型,能显著提升答案质量。
HyDE(假设文档嵌入):让模型先生成一个假设答案,再用这个假设答案去检索,能解决语义鸿沟问题。
实际项目中,我一般会先搭建基础RAG链路,然后用Bad Case驱动优化,比如哪些问题答不好,是检索漏了还是注入了无关内容,针对性调整分块策略和检索参数。
【面试题】3. 在多智能体系统中,你如何设计Agent之间的通信协议?遇到过哪些坑?
【标准答案】多智能体通信的核心是"结构化输出+明确契约",不能让Agent自由发挥,否则调试会疯掉。
我常用的通信设计:
强制结构化输出:每个Agent的输出必须是JSON Schema定义的格式,用function calling或结构化输出API保证。比如Researcher Agent输出
{"findings": [...], "sources": [...], "confidence": 0.8},Writer Agent消费这个结构。消息队列+状态机:Agent之间不直接调用,通过消息队列(Redis Streams或RabbitMQ)通信,每个Agent有自己的状态机(IDLE、PROCESSING、WAITING、ERROR),避免死锁。
超时和重试机制:Agent调用必须有timeout,我一般设30秒,超时后走降级逻辑。重试用指数退避,最多3次。
踩过的坑:
- 循环调用:Agent A调用B,B又调用A,无限循环。解决方法是加调用深度限制,超过3层直接终止。
- 上下文膨胀:每个Agent都把历史消息传来传去,token成本爆炸。解决方法是用摘要Agent,定期压缩历史。
- 责任不清:任务失败了不知道是哪个Agent的锅。解决方法是每个消息带trace_id,用LangSmith或Phoenix做全链路追踪。
实际项目中,我会先画清楚Agent协作流程图,明确每个Agent的输入输出契约,再用代码实现,这样调试和维护都轻松很多。
【面试题】4. 你如何设计一个支持长会话的智能体记忆系统?有哪些技术方案?
【标准答案】长会话记忆系统的核心是"分层存储+智能召回",不能把所有历史都塞给模型。
我设计的内存系统分三层:
短期记忆(In-Context):最近3-5轮对话存在Prompt里,用MessagesPlaceholder管理,保证对话连贯性。超过窗口限制(比如8k tokens)就触发压缩。
中期记忆(工作记忆):用向量数据库(Chroma或Pinecone)存储,每次对话后将关键信息(用户偏好、决策点、待办事项)提取成摘要,向量化后存储。召回时用用户最新消息检索相关记忆。
长期记忆(持久化):结构化数据存在传统数据库(PostgreSQL+JSONB),比如用户画像、历史订单、知识库。非结构化数据(长文档、会议记录)存在向量库。
关键技术点:
- 记忆压缩:用另一个LLM定期将对话历史压缩成摘要,我一般用"提取决策、待办、偏好"的Prompt,把1k tokens压缩到200tokens。
- 记忆召回:不能只靠向量相似度,要结合时间衰减(越近期的记忆权重越高)和重要性打分(用模型判断哪条记忆重要)。
- 记忆冲突处理:用户前后说法不一致时(比如先说喜欢A,后说喜欢B),用时间戳解决,保留最新偏好。
实际落地时,我会先用LangChain的Memory模块快速验证,再用自研方案替换,因为LangChain的Memory在复杂场景下不够灵活。
【面试题】5. 在工具调用(Function Calling)场景中,你如何提升工具选择的准确率?
【标准答案】工具调用准确率直接影响用户体验,我一般从四个层面优化:
工具描述优化:这是最容易被忽视的。工具的name、description、parameters的description都要写得像"给模型看的文档",不能太简短也不能太啰嗦。我常用的模板:
"description": "工具功能概述。适用场景:xxx。不适用:xxx。参数说明:xxx。"负样本训练:收集工具调用失败的case,分析是因为描述不清、参数理解错误还是工具设计问题。如果是高频问题,直接优化工具定义;如果是长尾问题,考虑用Few-shot示例引导。
工具分组和动态加载:不要一次性把所有工具(比如50个)都传给模型,会根据对话上下文动态选择工具子集。比如用户问天气,只加载天气相关工具。我用向量检索做工具召回,用户问题向量化后检索最相关的5-10个工具。
并行调用和纠错:允许多个工具并行调用(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. 在多模态智能体中,你如何处理图像、音频、视频等不同模态的输入?技术难点是什么?
【标准答案】多模态智能体的核心是"模态对齐+统一表示",让不同模态的信息能在同一个语义空间里被模型理解。
技术架构设计
输入层:不同模态用专用预处理器
- 图像:用CLIP或BLIP做编码,提取视觉特征,或者直接把图像传给多模态模型(GPT-4V、Claude 3)
- 音频:用Whisper做语音转文字,用AudioMAE提取音频特征
- 视频:抽帧(每秒1-2帧)+ 用Whisper提取音频字幕,变成"图像序列+文本"的混合输入
对齐层:把所有模态转换成统一的token序列
- 图像用
<image_start>...<image_end>特殊token标记 - 音频转文字后直接当文本处理,或者保留
<audio>标记 - 用多模态模型的tokenizer做统一编码
- 图像用
推理层:用原生多模态模型(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)