随着大语言模型应用从早期的概念验证迈向大规模企业级落地,仅仅掌握提示词工程或简单的 API 封装已无法满足高级岗位的招聘需求,行业对 AI Agent 工程师的考核标准正经历着从“功能实现”到“系统架构”的深刻转型。如今的面试不再局限于考察候选人是否能够跑通一个对话 Demo,而是聚焦于在复杂且不可预测的真实业务场景中,如何构建高可用、低延迟且具备鲁棒性的智能系统。这要求开发者必须具备全链路的工程视野,不仅要精通从检索增强生成(RAG)中的混合检索与重排序策略,到多智能体(Multi-Agent)协作模式下的任务编排,更需深入理解长短期记忆机制的设计权衡以及工具调用中的状态管理。真正的技术分水岭在于对工程细节的极致掌控——即在有限的 Token 窗口预算与推理成本约束下,如何精准平衡检索召回率与端到端响应速度,以及在模型产生幻觉、逻辑死循环或外部工具调用失败时,设计出自动化的熔断、回退与自我修正机制。本文将剥离基础的概念背诵,深入剖析 Agent 系统设计中的“深水区”难题,通过梳理包含规划、执行、观测指标及全链路评估在内的核心追问清单,帮助开发者跳出“调包侠”的思维局限,建立起能够应对生产级挑战的架构师知识体系,从而在激烈的技术面试中展现出解决实际工程问题的核心竞争力。
面试全景图:从“调包侠”到 Agent 系统架构师
在 AI 应用开发的早期阶段,许多开发者的工作主要围绕着 OpenAI API 的简单封装与 Prompt 调试展开,这被戏称为“调包侠”阶段。然而,随着企业级应用对稳定性、准确率和复杂任务处理能力的要求提升,面试考察的重心已发生根本性转移。现在的 AI Agent 岗位面试,不再仅仅关注你是否会写 Prompt,而是考察你是否具备从 Demo 到生产级系统的架构能力。
1. 角色画像对比:初级 vs. 高级
面试官通常会通过几个关键维度来判断候选人的段位。你需要清晰地认知到自己目前所处的位置以及目标岗位的要求:
- 初级 LLM 开发者 (Junior):
- 核心技能:熟练使用 Prompt Engineering(提示词工程),能够通过 LangChain 或 SDK 调用 LLM API 实现简单的对话功能。
- 关注点:模型能跑通、Demo 能演示。
- 典型回答:“我使用 GPT-4 接口,配合少样本提示(Few-Shot Prompting)完成了文本分类任务。”
- 高级 Agent 工程师 / 架构师 (Senior):
- 核心技能:精通系统设计、状态管理(State Management)、复杂工具链编排、自动化评测(Eval)以及成本/延迟优化。
- 关注点:系统的鲁棒性、可观测性、失败恢复机制以及在有限 Token 窗口下的上下文管理。
- 典型回答:“为了解决长对话中的遗忘问题,我设计了一套分层记忆系统,结合了短期缓冲与长期向量检索,并引入了 ReAct 框架来动态调度外部工具,同时通过并发执行优化了 30% 的端到端延迟。”
2. Agent 工程化技能树
根据行业内的技术演进路径(参考 MIT CSAIL 分享的面试指南),我们可以将面试考察的知识体系划分为四个层级。本清单将重点覆盖 L2 至 L3 的核心工程难题:
- Level 1:基础原理与 Prompt
- Transformer 基础、Tokenization 机制、Context Window 限制。
- Prompt 优化技巧(CoT, ToT)。
- Level 2:RAG 工程化(检索增强生成)
- 从 Naive RAG 到 Advanced RAG(混合检索、重排序、HyDE)。
- 向量数据库选型与数据清洗策略。
- Level 3:Agent 架构与编排
- 规划(Planning):ReAct、Plan-and-Solve 等模式。
- 记忆(Memory):如何实现类似人类的短期与长期记忆交互。
- 工具(Tools):函数调用(Function Calling)的容错与参数校验。
- 多智能体(Multi-Agent):如 DeepLearning.AI 课程中提到的 角色分工与协作模式。
- Level 4:生产化与微调
- 模型微调(PEFT/LoRA)、私有化部署(vLLM)、全链路监控与安全围栏(Guardrails)。
3. 面试的核心差异:工程“颗粒度”
在高级职位的面试中,单纯背诵概念(如“什么是 ReAct”)已无法通过筛选。面试官更看重工程颗粒度(Engineering Nuance),即你在解决实际问题时的权衡与决策。
- 不仅是检索,更是精准度与成本的博弈:面试官不会只问“怎么做 RAG”,而是会问“当检索召回了 20 个文档但 Context 放不下时,你如何设计重排序(Rerank)策略以平衡延迟和准确率?”
- 不仅是调用工具,更是容错设计:当 Agent 连续三次调用搜索工具失败进入死循环时,你的系统有设计自动熔断或回退机制(Fallback)吗?
- 从单轮到多轮有状态:传统的 RAG 往往是单轮问答(Stateless),而 Agent 系统通常是多轮、有状态(Stateful)的复杂工作流。如何维护这些状态,防止幻觉随着对话轮数增加而累积,是系统设计的难点。
本清单后续章节将剥离纯理论的背诵,专注于这些“深水区”的工程追问,帮助你展现出架构师级别的技术视野。
模块一:RAG 工程化深水区(不仅是检索)
在当前的 Agent 工程面试中,RAG(检索增强生成)已不再是一个新鲜概念,而是考察候选人工程落地能力的“必考题”。然而,面试官的关注点早已从“什么是 RAG”转移到了“如何解决 RAG 的失效模式”。仅仅掌握“切片(Chunking)+ 向量数据库(Vector DB)+ 相似度搜索”的 Naive RAG 流程,已不足以通过高级岗位的筛选。
本模块将带你进入 RAG 的“深水区”。在这里,我们不再讨论基础的 API 拼接,而是聚焦于从Naive RAG 向 Modular RAG(模块化 RAG)演进过程中的工程权衡。面试中,高频追问往往集中在系统边界与极端情况的处理上:当语义检索失效时如何补救?如何平衡召回率(Recall)与系统延迟(Latency)?如何处理脏数据导致的检索噪声?
对于资深工程师而言,RAG 不仅仅是检索技术,更是一套涉及数据清洗、混合索引、重排序(Rerank)以及持续评估的完整工程链路。接下来的内容将拆解这些核心环节,帮助你从单纯的“调包侠”转变为能够设计高可用检索系统的架构师,并准备好用量化的优化结果来回答面试官的质疑。
追问点:混合检索与重排序策略 (Hybrid Search & Rerank)

在 RAG 工程面试中,面试官通常会通过这一环节考察候选人是否具备处理“生产环境长尾问题”的能力。简单的向量检索(Vector Search)往往无法处理专有名词精确匹配或低频词查询,而这正是混合检索与重排序策略发挥作用的深水区。
高频面试追问清单
面试官可能会抛出以下具体问题,旨在挖掘你对检索链路精细化控制的理解:
- “密集检索(Dense Retrieval)在什么场景下会彻底失效?”
- 考察点:是否意识到向量语义匹配的局限性,例如对序列号、SKU 编码、生僻人名或完全匹配(Exact Match)需求的无力。
- “在混合检索中,你如何确定稀疏检索(Sparse)与密集检索(Dense)的权重参数(Alpha)?”
- 考察点:是否具备工程调优经验。优秀的回答应包含基于验证集(Validation Set)的网格搜索(Grid Search)过程,而非凭感觉设定。
- “引入 Cross-Encoder 重排序模型会导致延迟飙升,你在工程上如何权衡精度与性能?”
- 考察点:系统设计能力。考察是否采用了“粗排 + 精排”的两阶段漏斗策略,以及对 Latency Budget(延迟预算)的敏感度。
核心概念对比:从单一模态到混合策略
为了清晰展示技术选型的权衡,建议在回答时构建如下对比框架,体现你对不同检索方式优劣势的深刻理解:
检索策略 | 核心算法/工具示例 | 优势 (Pros) | 劣势 (Cons) | 适用场景 |
|---|---|---|---|---|
关键词检索 (Keyword Search) | BM25, TF-IDF | 对专有名词、精确匹配(如错误代码、人名)极其敏感;可解释性强。 | 无法理解语义(如同义词“手机”与“移动电话”);受分词质量影响大。 | 搜索具体文档ID、错误日志、特定术语。 |
向量检索 (Vector Search) | OpenAI Embeddings, BERT | 捕捉语义关联,解决多语言和同义词问题;召回率(Recall)通常较高。 | 对精确匹配表现差;易受“幻觉”干扰(检索到语义相似但事实相反的内容)。 | 开放式问答、模糊搜索、跨语言检索。 |
混合检索 (Hybrid Search) | Elasticsearch, Weaviate (Reciprocal Rank Fusion) | 互补短板:结合语义理解与精确匹配,显著提升 Top-K 的召回质量。 | 系统复杂度增加;需要维护两套索引;参数调优难度大。 | 生产级 RAG 系统的标配。 |
工程经验提示:在实际项目中,单纯依赖向量检索往往会导致准确率瓶颈。根据 DataCamp 的高级 RAG 技术分析,混合检索通过结合稀疏和密集检索,能有效平衡精确率与召回率,特别是在处理复杂查询时表现更佳。
重排序(Rerank)的工程权衡
面试中最具区分度的部分在于对 重排序(Reranking) 的讨论。初级开发者往往止步于从向量数据库取回 Top-K,而资深工程师会引入“两阶段检索”架构。
- 两阶段架构(Two-Stage Retrieval):
- 第一阶段(Recall):使用计算成本较低的双塔模型(Bi-Encoder)或 BM25 快速从海量数据中召回 Top-100 文档。
- 第二阶段(Rerank):使用交叉编码器(Cross-Encoder,如 BGE-Reranker 或 Cohere)对这 100 个文档进行精细打分,最终截取 Top-5 给 LLM。
- 性能与精度的博弈:
- Cross-Encoder 虽然能显著提升精度(Precision),但推理速度极慢。面试中应提到具体的优化手段,例如限制重排序的文档数量(只重排前 50 个而非前 1000 个),或者使用 ColBERT 这种“晚期交互(Late Interaction)”模型,它在保留了近似 Cross-Encoder 精度的同时,大幅降低了计算延迟。
- 何时不需要 Rerank?
- 如果知识库规模极小(例如 <1000 个 Chunk),或者对延迟极其敏感(<100ms),则应跳过重排序步骤,直接优化 Embedding 模型本身。
通过这种层层递进的分析,你可以向面试官证明:你不仅懂 RAG 的定义,更懂得如何在受限的资源下构建高可用、高精度的检索系统。
追问点:复杂数据处理与索引优化
在 Agent 工程落地的过程中,RAG(检索增强生成)往往是第一个遇到的深水区。面试官通常会通过询问数据处理细节,来判断候选人是否有真实的生产环境经验,因为这里最容易出现“Garbage In, Garbage Out”(垃圾进,垃圾出)的问题。
1. 核心痛点:非结构化数据的解析
面试中常见的一个具体挑战是:“你是如何处理 PDF 文档中的跨页表格或多栏排版的?”
反面案例(初级回答):
“我使用 LangChain 的默认加载器或者 PyPDF 把文档读进去,然后按 500 个字符切分。”
这种回答暴露了缺乏实战经验。在真实的金融报表或技术文档中,简单的固定字符切分(Fixed-size Chunking)会切断上下文。例如,一个跨页的财务表格,如果表头在第一页,数据在第二页,切分后 LLM 检索到数据块时将丢失列名含义,导致无法回答“2023 年 Q4 的净利润是多少”这类问题。
进阶回答策略:
你需要展示对版面分析(Layout Analysis)的理解。
- 表格处理: 提及使用专门的解析工具(如 Unstructured 或基于视觉的模型)将表格转化为 Markdown 格式或 JSON,甚至为表格生成独立的摘要(Summary)进行索引,而非直接切分原始文本。
- 上下文保留: 强调在切分时必须尊重语义边界(如按段落、章节切分),而非机械地按字符数切分。
2. 索引优化策略:Small-to-Big (Parent Document Retriever)
为了解决“检索粒度”与“生成上下文”之间的矛盾,面试中应重点介绍 Small-to-Big(小索引,大内容) 的策略,在 LangChain 中通常被称为 Parent Document Retriever。
- 问题: 如果切分块太大,包含的语义过多,向量检索的精度会下降(语义稀释);如果切分块太小,检索虽然精准,但在生成答案时缺乏足够的上下文。
- 解决方案:
- 将文档切分为细粒度的“子块”(如一句话或一个小段落)进行向量化索引。
- 当检索命中该子块时,不直接返回子块,而是通过映射 ID 召回其所属的“父块”(如整个段落或整页内容)。
- 优势: 既保证了检索的高灵敏度,又为 LLM 提供了完整的上下文窗口。
3. 元数据过滤 (Metadata Filtering)
另一个区分初级与高级工程师的点是对元数据(Metadata)的利用。
在处理大规模知识库时,单纯依赖向量相似度搜索(Vector Search)往往效率低下且容易产生幻觉。例如,用户问“2024 年的差旅政策”,向量搜索可能会召回 2020 年的旧政策,因为它们的语义极度相似。
优化方案:
- 预过滤(Pre-filtering): 在进行向量搜索之前,先通过元数据(如
year=2024,category=HR,doc_type=policy)缩小搜索范围。 - 能够解决的问题: 这不仅提高了检索的准确性(避免时效性错误),还显著降低了计算开销。
面试话术总结:
“在处理复杂数据时,我不会只依赖基础的切分。对于结构复杂的 PDF,我会先做版面分析提取表格结构。在索引层面,我倾向于使用 Parent Document Retriever 策略,用小粒度的 Embedding 抓取语义细节,但召回大粒度的上下文给 LLM。同时,我会清洗并注入元数据,利用 Metadata Filtering 解决相似语义下的版本冲突问题。”
模块二:规划与执行 (Planning & Execution)
如果说 LLM 是 Agent 的“心脏”,那么规划(Planning)模块就是它的“大脑”。在面试中,这一部分是区分普通 Chatbot 开发者与高阶 Agent 架构师的分水岭。面试官不仅关注你是否了解 ReAct 或 Plan-and-Solve 等学术概念,更关注你是否具备在生产环境中权衡延迟(Latency)、成本(Cost)与任务复杂度的工程视野。
规划模块的核心职责是将用户的模糊指令拆解为可执行的步骤序列。正如 Alex Xu 关于 AI Agent 工作原理的分析 所述,推理(Reasoning)层负责接收目标并将其分解,随后指导工具调用(Tools)与记忆检索(Memory)。然而,在实际工程落地中,过度复杂的规划往往是系统性能的瓶颈。根据 HockeyStack 的生产环境经验,通用的全能型 Agent 往往表现不佳,而将任务拆解为更小、更具体的流程,甚至用代码逻辑替代部分 LLM 思考过程,可以显著降低延迟并减少 90% 以上的成本。
本模块将深入探讨 Agent 的核心推理架构,分析不同规划模式的适用场景,以及如何设计一个既聪明又高效的执行系统。
架构模式:ReAct vs. Plan-and-Solve vs. TOT

在 Agent 系统设计的面试中,面试官不仅关注你是否了解这些名词,更关注你是否具备根据业务场景选择合适架构(Trade-off Analysis)的能力。不同的推理模式直接决定了 Agent 的响应延迟、Token 消耗以及任务成功率。
1. 主流推理模式对比
面试中常被问到的三种核心模式,其适用场景有着明显的边界:
架构模式 | 核心机制 (Mechanism) | 适用场景 (Use Case) | 优缺点 (Pros/Cons) |
|---|---|---|---|
ReAct | Reason + Act。每一步行动前先推理,执行后根据观察结果(Observation)再进行下一步推理。 | 需要实时反馈的任务,如调用 API 查询天气、数据库查询。 | 优点:容错性强,能根据环境反馈调整路径。<br>缺点:容易陷入死循环;Token 消耗大,延迟高。 |
Plan-and-Solve | Plan then Execute。先生成完整的步骤计划,再一次性或分批执行,不再每一步都重新规划。 | 步骤明确的长链条任务,如“写一份包含3个章节的报告并发送邮件”。 | 优点:执行速度快,节省 Token,避免模型在中间步骤“跑偏”。<br>缺点:对中间步骤的错误适应性差(计划一旦制定较难动态修正)。 |
Tree of Thoughts (ToT) | BFS/DFS 搜索。在每一步生成多个可能的“想法”,评估后选择最佳路径,必要时回溯。 | 复杂的逻辑解谜、创意写作、策略游戏规划。 | 优点:能解决传统 Chain-of-Thought 无法处理的复杂探索问题。<br>缺点:极高的延迟和成本,通常不适合面向用户的实时应用。 |
2. 深度追问:ReAct 的“死循环”陷阱与工程解法
面试官经常会问:“当 ReAct Agent 陷入死循环(例如反复搜索同一个关键词但无果)时,工程上如何检测和恢复?”
这是生产环境中最常见的痛点。单纯依赖 Prompt(如“不要重复”)往往无效。你需要展示具体的工程手段:
- 最大迭代次数(Max Iterations):设置硬性阈值(如最多 15 步),防止无限消耗 Token。
- 思维链剪枝(Scratchpad Pruning):如果检测到 Agent 的
Action和Action Input与最近 N 步完全一致,强制抛出系统级错误提示(System Observation),告知 Agent “你已经尝试过此操作,请改变策略”,或者直接终止。 - 超时控制(Time-outs):参考 DeepLearning.AI 关于 Guardrails 的课程,在多 Agent 协作中,必须为每个 Agent 分配执行时间窗口,超时后强制进入“总结阶段”或“失败恢复流程”。
3. 实战模拟:设计一个“旅行规划 Agent”
面试题:“请设计一个能够帮助用户规划 7 天日本行程并预订酒店的 Agent 系统。你会选择哪种架构?为什么?”
高分回答策略:
不要直接回答“用 ReAct”,因为旅行规划涉及大量信息检索,单线程的 ReAct 很容易因为上下文过长(Context Window Explosion)而导致“迷失”。
推荐方案:分层架构(Hierarchical / Plan-and-Solve 变体)
- 顶层规划(Planner):使用 Plan-and-Solve 模式。
- 理由:旅行规划需要全局视角。先生成每一天的宏观安排(如“Day 1: 东京到达;Day 2: 浅草寺...”),这一步不需要调用工具,只需利用 LLM 的通用知识,速度快且逻辑连贯。
- 执行层(Executors):使用 ReAct 或专用的 Worker Agent。
- 理由:将具体的“查询 Day 1 东京酒店价格”作为一个子任务下发。子 Agent 只需要处理局部的搜索和比价,上下文更干净。
- 数据优化:
- 正如 HockeyStack 在多 Agent 延迟优化 中提到的,将复杂任务拆解为更小、范围更窄的 LLM 调用,可以显著降低延迟和成本。让一个通用 Agent 从头做到尾通常是低效的。
总结:在回答此类架构选择题时,核心逻辑应是 “规划层重逻辑(Plan),执行层重反馈(ReAct),复杂探索才用 ToT”。
多智能体协作 (Multi-Agent) 与路由设计
随着业务场景复杂度的提升,单体 Agent(Monolithic Agent)往往面临上下文窗口爆炸和指令遵循能力下降的问题。在面试中,从单智能体向多智能体系统的演进是考察架构能力的关键分水岭。面试官通常会关注你如何通过分治思想(Divide and Conquer)来提升系统的稳定性与准确率。
1. 核心模式:Orchestrator-Workers (指挥官-执行者)
这是最经典的多智能体协作模式。在工程实践中,我们不再试图用一个庞大的 Prompt 解决所有问题,而是将任务拆解。
- 设计理念:类似于微服务架构,每个 Agent 仅负责特定领域的任务。
- 典型案例:Coding Agent vs. Review Agent。
- 如果让同一个 LLM 既写代码又做 Code Review,它往往难以发现自己的逻辑漏洞(自我修正能力有限)。
- 拆分优势:通过引入一个独立的 Review Agent,配置不同的 System Prompt(如专注于安全性检查或性能优化)和独立的工具集,可以显著提升代码质量。
- 工业界实践:Anthropic 在其 多智能体研究系统 中分享过类似的架构:Lead Agent 分析用户查询并制定策略,随后生成并调度子 Agent 并行执行搜索和信息过滤,最后由 Lead Agent 汇总结果。这种“主从架构”能有效隔离上下文,防止幻觉扩散。
2. 路由设计 (Router Design)
多智能体系统的入口通常是一个 Router(路由器),它决定了用户的 Query 应该分发给哪个具体的 Sub-Agent。面试中常被问到的技术细节包括:
- 意图分类 (Intent Classification):
- 基于 LLM 的路由:利用一个小参数模型(如 GPT-3.5 或专门蒸馏过的模型)进行 Zero-shot 分类,输出 JSON 格式的目标 Agent 标识。
- 基于语义检索 (Embedding):将用户 Query 向量化,与预定义的 Agent 能力描述进行相似度匹配。这种方法延迟更低,适合工具数量众多的场景。
- 路由容错:如果用户的意图模糊或涉及多个领域,Router 应该具备“追问”能力,或者能够并行分发给多个 Agent 后进行结果融合(Map-Reduce)。
3. 状态管理:从 Chain 到 Graph
传统的 LangChain 早期设计多为有向无环图(DAG)或线性链(Chain),这在处理简单的“检索-生成”任务时足够有效,但在多智能体协作中显得力不从心。
- 循环与迭代 (Loops & Cycles):真实的协作往往需要多轮往返。例如,Writer Agent 写完文章,Editor Agent 提出修改意见,Writer 再次修改,直到满足条件。这种循环逻辑在硬编码的 Chain 中很难优雅实现。
- 图与状态机:现代框架如 LangGraph 引入了图论和状态机(State Machine)的概念。
- Shared State(共享状态):所有 Agent 读写同一个全局状态对象(State Schema),而非通过复杂的字符串传参。
- Conditional Edges(条件边):根据 Agent 的输出(如“任务完成”或“需要更多信息”)动态决定下一步流向,而非预设死路径。
4. 面试高频追问清单
在这一板块,面试官可能会针对以下场景进行压力测试:
- Q: 什么时候应该引入 Multi-Agent,而不是优化单个 Prompt?
- 参考回答思路:当任务涉及多个冲突的约束条件(如既要极富创意又要严格合规),或者上下文长度超过模型“有效注意力”窗口导致遗忘中间步骤时,应考虑拆分 Agent。
- Q: 如何防止多智能体陷入死循环(Infinite Loops)?
- 参考回答思路:必须在图定义中引入“最大迭代次数”或“最大步数”作为熔断机制(Time-to-live)。同时,Review Agent 应当具备“终止权”,当连续修改 N 次仍不达标时,强制降级或报错。
- Q: 多个 Agent 之间如何共享记忆?
- 参考回答思路:参考 DeepLearning.AI 关于 Multi-Agent 的课程 中的理念,区分短期记忆(当前对话的 Shared State)和长期记忆(存入向量数据库的过往经验)。不同角色的 Agent 应只有权限访问其任务相关的记忆切片,以减少 Token 消耗和干扰。
通过展示对 Orchestrator 模式、Router 精度控制 以及 Graph 状态管理 的深入理解,你可以向面试官证明自己具备构建复杂、高鲁棒性 Agent 系统的工程视野。
模块三:工具调用与失败恢复 (Tool Use & Recovery)
在 Agent 工程化面试中,工具调用(Tool Use / Function Calling) 往往是考察候选人是否具备生产环境经验的分水岭。如果说 RAG 解决了“幻觉”问题,那么工具调用则赋予了 Agent “手脚”,使其从单纯的文本生成器转变为能够执行任务的智能实体。
然而,这也是 Agent 系统中最脆弱(Fragile)的环节。面试官的核心关注点通常不在于你是否会调用 OpenAI 的 API,而在于你如何处理概率性的模型输出与确定性的代码逻辑之间的冲突。
本模块将深入探讨以下工程挑战,这些通常是高级岗位面试中的必考题:
- 接口契约的稳定性:当 LLM 输出的 JSON 格式错误、参数类型不匹配或凭空捏造参数(Hallucinated Parameters)时,系统如何防御?
- 错误处理与自愈(Self-Correction):当工具执行失败(如 API 超时、数据库连接中断)时,Agent 是直接崩溃,还是能够根据错误信息修正参数并重试?
- 安全边界:如何防止 Agent 调用未授权的敏感操作?
正如 Anthropic 的研究团队 所指出的,Agent 与工具之间的接口设计(Agent-Tool Interfaces)与人机交互界面(HCI)同等重要。一个设计糟糕的工具定义会导致模型频繁困惑,从而引发连锁的执行错误。接下来的小节将从定义最佳实践到运行时容错,逐一拆解这些考点。
Function Calling 的稳定性工程
在 Agent 工程面试中,面试官不仅关注你是否知道 Function Calling,更关注你如何解决 LLM 输出与代码执行之间的“阻抗不匹配”问题。模型是概率性的,而代码执行是确定性的,Function Calling 的稳定性工程本质上就是建立一套机制,确保模型输出的结构化数据(通常是 JSON)能够 100% 被业务逻辑安全解析和执行。
强类型约束与 Schema 设计
最基础也是最核心的稳定性保障来自于严谨的 Schema 定义。在 Python 生态中,Pydantic 已成为定义工具参数的事实标准。
面试中应强调,工具的 docstring 和参数描述不仅仅是文档,更是Prompt 的一部分。
- Docstring 即 Prompt:函数描述必须清晰界定工具的“能力边界”。例如,不要只写“搜索数据”,而要写“根据用户 ID 搜索最近 30 天的订单记录”。
- Pydantic 校验:利用 Pydantic 的
Field对参数进行细粒度限制(如正则表达式、最大最小值)。这能让大部分非法参数在进入业务逻辑前就被拦截。
正如 Anthropic 在其多智能体研究系统构建经验中所述,Agent 与工具的接口设计与人机交互界面(HCI)同等重要。如果 Agent 试图调用一个描述模糊的工具,或者参数类型不匹配,系统不仅会报错,还可能引发连锁的幻觉。
异常处理与自愈机制 (Self-Correction)
当模型输出无效 JSON 或幻觉参数时,工程化的处理方案是面试加分项。不要只回答“重新生成”,而应展示分层处理的策略:
- JSON 格式错误:如果模型输出的 JSON 缺少括号或格式非法,首先尝试使用基于规则的解析器(如
json_repair库)进行修复,而不是立即消耗 Token 重试。 - 参数校验失败:如果 Pydantic 抛出
ValidationError(例如参数缺失或类型错误),应捕获该错误,并将完整的错误堆栈作为 Observation 反馈给 LLM。
- 策略:这构成了一个“反思回路”。LLM 看到错误信息(如
Invalid argument: 'date' must be in YYYY-MM-DD format)后,通常能在下一次迭代中自我修正参数。
- 策略:这构成了一个“反思回路”。LLM 看到错误信息(如
- 幻觉参数:针对模型捏造不存在的参数名,需在工具执行层设置白名单过滤,或者严格报错,防止未知参数污染下游逻辑。
工具定义最佳实践清单 (Tool Definition Best Practices)
在系统设计环节,可以使用以下清单来展示你的工程经验:
- Few-Shot Examples(少样本示例):在工具的 docstring 中直接嵌入 JSON 格式的输入输出示例。这比单纯的文字描述更能指导模型生成复杂结构。
- 原子化设计:避免设计“万能工具”。一个接受 20 个参数的工具极易出错,应将其拆分为 3 个接受 5 个参数的原子工具。
- 容错性枚举:对于枚举类型(Enum)参数,尽量在 Prompt 中列出所有合法值,并在代码层做模糊匹配(Fuzzy Matching)以兼容模型可能输出的大小写差异。
- 防御性返回值:工具的返回值应包含状态码或明确的成功/失败信息,而不仅仅是原始数据。这有助于模型判断当前步骤是否真正完成。
自我修正 (Self-Correction) 与容错循环

在 Agent 工程化落地中,最能体现系统鲁棒性的并非“模型有多聪明”,而是“出错后能否自动恢复”。面试官常通过询问“如果工具调用失败了怎么办?”或“如何防止 Agent 陷入死循环?”来考察候选人对 容错机制 (Fault Tolerance) 和 自我修正 (Self-Correction) 的理解。
1. 核心模式:将错误作为观测 (Error as Observation)
传统的软件开发中,异常(Exception)通常会导致程序中断或抛出错误提示。但在 Agent 架构(如 ReAct 模式)中,工具调用的错误信息本身就是一种极具价值的反馈。
- 机制描述:当 Agent 生成的参数无法通过验证,或调用的 API 返回 400/500 错误时,系统不应直接向用户报错。相反,应捕获该异常(Catch Exception),将其转化为自然语言描述(例如
"Tool execution failed: Invalid JSON format"),并作为“Observation”回传给 LLM。 - 修正逻辑:LLM 接收到错误反馈后,会触发新的“Thought”环节,分析错误原因并尝试生成修正后的参数进行重试。
- 面试话术:你可以提到,“在生产环境中,我设计了一个
Reflective Loop(反思循环)。如果代码解释器抛出 SyntaxError,我将 Traceback 的最后三行回填给模型,模型通常能识别并修正代码中的语法错误,而无需人工干预。”
2. 工程化防御:熔断与降级 (Circuit Breakers & Fallbacks)
仅仅依靠 LLM 的自我修正是不够的,因为模型可能会陷入“尝试-失败-再尝试”的死循环,导致 Token 消耗激增且响应延迟过高。面试中需要展示你具备系统级的防御思维:
- 最大重试次数 (Max Retries):必须为自我修正设置硬性上限(例如 3 次)。如果超过次数仍未成功,应强制终止并请求人工接管,防止成本失控。
- 熔断机制 (Circuit Breaker):针对不稳定的外部 API,如果连续 N 次调用超时或失败,应暂时切断对该工具的访问,避免拖累整个 Agent 的响应速度。
- 降级策略 (Fallback Strategy):
- 模型降级:如果主模型(如 GPT-4)响应超时,可自动降级到响应更快的轻量模型进行兜底。
- 工具降级:如果“谷歌搜索”API 不可用,自动切换至“必应搜索”或内部知识库检索。
3. 面试高频追问:API 宕机与死循环
面试官可能会提出具体的故障场景,考察你的应对方案:
Q: “如果 Agent 调用的外部 API 彻底宕机了,模型却一直尝试调用,如何解决?”
参考回答策略:
- 检测层:说明会在工具执行层(Executor)捕获网络级错误(Connection Refused / Timeout)。
- 反馈层:不仅回传错误,还需在 System Prompt 或临时上下文中注入指令,明确告知 Agent 该工具当前不可用("Tool X is currently down"),强制其改变策略。
- 规划层:引入规划与执行的分离。如果执行层反馈工具不可用,规划层(Planner)应动态调整任务链,跳过该步骤或寻找替代方案,而不是盲目重试。
4. 避免“上下文污染”
在实现自我修正时,一个常见的工程陷阱是原始错误信息过长(例如 Python 的完整 Stack Trace),直接回填会挤占宝贵的上下文窗口(Context Window),甚至误导模型关注无关细节。
- 最佳实践:在回传错误前进行清洗(Sanitization)。只保留关键的错误类型和提示信息,去除冗余的路径信息或敏感数据。这既能帮助模型聚焦问题,又能节省 Token 成本。
模块四:记忆系统设计 (Memory)
在 Agent 工程化落地中,记忆(Memory)远不止是简单地保存对话历史(Chat History)。由于大语言模型(LLM)本质上是无状态(Stateless)的,记忆系统是赋予 Agent 跨会话连续性与个性化能力的唯一手段。从系统设计的角度来看,Memory 是一个关于状态管理(State Management)与上下文窗口优化(Context Optimization)的复杂架构问题。
面试中讨论记忆设计时,核心矛盾通常集中在“有限的上下文窗口(Context Window)”与“无限增长的交互数据”之间。优秀的 Agent 架构需要在以下三个维度之间寻找平衡:
- 召回准确率(Recall Accuracy):系统能否在正确的时间检索到关键信息?如果将所有历史信息一股脑塞入 Prompt,不仅会遇到上下文长度限制,还会导致模型的注意力分散(Lost in the Middle 现象),反而降低推理能力。
- 成本与延迟(Cost & Latency):每一次 API 调用都携带大量历史 Token 会导致推理成本指数级上升,并显著增加首字延迟(TTFT)。
- 信息持久性(Persistence):如何区分“短期工作记忆”与“长期知识沉淀”?例如,用户上一轮的指令属于短期记忆,而用户的饮食偏好或 API 的鉴权 Token 则属于长期记忆。
因此,记忆系统的设计不再是简单的列表追加(Append),而是一个包含存储(Storage)、索引(Indexing)、检索(Retrieval)与遗忘(Eviction)的完整生命周期管理系统。接下来的部分将深入探讨如何通过分层策略来解决这些工程挑战。
记忆分层策略:Buffer, Summary 与 Entity Memory

在面试中回答“如何解决 Agent 遗忘问题”时,仅仅提到“使用向量数据库(Vector DB)”已经无法满足高级岗位的要求。面试官希望看到你对记忆分层(Memory Hierarchies)的理解,即如何根据信息的生命周期和用途,权衡上下文窗口(Context Window)、检索成本与召回准确率。
一个成熟的记忆系统通常采用以下三种策略的组合:
1. 核心分层架构对比
记忆类型 | 技术实现 (Implementation) | 适用场景 | 优缺点分析 |
|---|---|---|---|
Buffer Memory<br>(Sliding Window) | 保留最近 | 处理当下的指代消解(如“它是什么?”)和紧密跟随的指令。 | 优点:信息无损,完全保真。<br>缺点:受限于 LLM 上下文长度,Token 消耗随对话轮数线性增长,无法持久化。 |
Summary Memory | 使用 LLM 周期性地将旧对话压缩为摘要(Summary)。 | 长期对话中的背景回顾,让 Agent 记住“上周我们讨论了什么话题”。 | 优点:极大节省 Token,保留长期脉络。<br>缺点:有损压缩(Lossy Compression),细节会丢失,且摘要过程本身可能产生幻觉。 |
Entity Memory<br>(Structured/Graph) | 提取关键实体与关系(如 | 存储用户画像、偏好设置、状态变更等事实性信息。 | 优点:确定性召回(Deterministic),不会因为语义模糊而遗忘。<br>缺点:构建成本高,需要专门的提取(Extraction)步骤。 |
面试高分话术:
“在设计系统时,我不会依赖单一的向量检索,而是采用混合策略:用 Sliding Window 保证短期交互的流畅性,用 Summarization 降低长上下文的 Token 成本,而对于关键的用户偏好,则必须使用结构化的 Entity Memory。”
2. 场景推演:伴侣型 Bot 的“跨月记忆”挑战
面试场景题:“设计一个伴侣 Bot,用户一个月前随口说了一句‘我对花生过敏’,今天用户让你推荐零食,Bot 必须能回忆起这点。请问如何设计?”
如果不使用分层策略,仅依赖传统的 RAG(向量检索),可能会遇到以下失效模式:
- 语义匹配失败:“推荐零食”的 Embedding 向量可能与“我对花生过敏”在语义空间上距离较远,导致检索不到相关片段。
- 时序混乱:向量数据库缺乏时间感知(Temporal Awareness)。如果用户以前喜欢花生,现在过敏了,向量搜索可能同时返回这两条冲突信息,LLM 难以判断哪条是当前状态。
解决方案(STAR 范式):
- Action:引入 Entity Memory。在对话流中挂载一个后台侧链(Sidechain)Agent,专门负责“信息提取”。当用户提到“过敏”时,系统自动更新结构化记录:
{ "entity": "User", "attribute": "allergy", "value": "peanuts", "timestamp": "2023-10-01" }。 - Result:当用户请求推荐零食时,系统首先查询 Entity Memory 中的硬性约束(Hard Constraints),将其作为 System Prompt 的一部分注入:“用户对花生过敏,请避开相关推荐。”这种方式比概率性的向量检索可靠得多。
3. 为什么仅有 Vector DB 是不够的?
在工程实践中,向量数据库常被用于语义召回,但它在作为“记忆”使用时存在显著局限性,这也是面试中体现你深度的地方:
- 缺乏精确性(Lack of Precision):Vector Search 是模糊匹配。对于“订单号”、“具体日期”或“布尔状态(开/关)”等精确信息,向量检索的效果远不如 SQL 或 Key-Value 查询。
- 状态更新困难(Mutability):人类的记忆是流动的。如果用户修正了之前的说法,向量数据库通常只是追加新的片段(Append-only),导致旧的错误信息依然存在于召回池中。结构化记忆则允许对特定字段进行 Update/Overwrite 操作。
- 上下文碎片化:向量检索返回的是切片(Chunks),往往丢失了对话的前后因果联系。
因此,理想的 Agent 记忆架构应当是 Vector DB(语义联想) + Graph/SQL(事实管理) + Context Buffer(短期工作流) 的复合体。
模块五:生产环境挑战——评估与观测 (Eval & Ops)
在 Agent 工程面试中,这是区分“Demo 开发者”与“生产级工程师”的分水岭。许多候选人能够通过 LangChain 快速搭建一个原型,但当面试官追问“你如何确定新版本的回答比旧版本更好?”或“生产环境中如何定位多步推理的断点?”时,往往由于缺乏系统性的工程经验而卡壳。
本模块的核心逻辑非常直接:“如果你无法度量它,你就无法改进它” (If you can't measure it, you can't improve it)。
在生产环境中,Agent 的稳定性远比单一功能的实现更具挑战性。我们将从两个维度深入探讨这一环节:
- 评估体系 (Evaluation):在上线前,如何利用 RAGAS、AgentBench 等框架建立科学的测试基准,从“凭感觉评估”转向数据驱动的质量控制。
- 可观测性 (Observability/Ops):在上线后,如何通过全链路追踪(Tracing)监控延迟、Token 消耗与工具调用成功率,平衡性能与成本。
评估体系:从 RAGAS 到 AgentBench
在 Agent 工程面试中,面试官最关心的往往不是你“跑通”了什么 Demo,而是你如何量化系统的表现。由于 LLM 输出的非确定性,传统的软件测试(Assert Equal)不再适用。你需要展示一套分层级的、科学的评估体系,通常围绕“LLM-as-a-Judge”理念构建。
核心指标定义 (Key Metrics)
评估 Agent 和 RAG 系统时,不能笼统地谈论“准确率”,必须将指标拆解为以下三个维度:
- 忠实度 (Faithfulness / Groundedness):
衡量生成的答案是否完全基于检索到的上下文(Context)。这是检测幻觉的核心指标。如果模型回答了正确的事实,但该事实并不在检索内容中,忠实度依然为低。
- 面试话术: “我们使用 RAGAS 等框架 来计算 Faithfulness Score,确保模型每一句话都能在 Retrieved Chunks 中找到支撑证据。”
- 答案相关性 (Answer Relevance):
衡量生成的答案是否直接回应了用户的问题。一个答案可能非常通顺且符合事实(高忠实度),但如果是答非所问,则此项得分为低。
- 参考标准: 根据 Patronus AI 的最佳实践,答案相关性、正确性和幻觉检测是评估生成器(Generator)性能的三大支柱。
- 工具调用准确率 (Tool Selection Accuracy):
这是 Agent 特有的指标。它评估 Agent 在面对特定意图时,是否选择了正确的工具(API),以及传递的参数(Arguments)是否符合 Schema 要求。
- 计算方式: 比较 Agent 生成的 Plan 与“标准答案(Golden Dataset)”中的工具链是否一致。
评估方法的三个层级 (The 3 Tiers of Evaluation)
在实际生产环境中,建议采用金字塔式的评估策略,成本由低到高,覆盖面由窄到宽:
- Tier 1: 确定性单元测试 (Deterministic Unit Tests)
这是最基础的防线,成本最低,运行最快。 - 测试内容: 检查输出格式是否为合法的 JSON,工具调用的参数类型是否匹配,以及是否包含了必须的关键词。
- 工具: Pytest, DeepEval (支持 G-Eval 及自定义指标)。
- Tier 2: 基于模型的评估 (Model-based Eval / LLM-as-a-Judge)
使用一个能力更强的模型(如 GPT-4)作为“裁判”,根据预定义的 Prompt 准则给较小模型(如 Llama-3 或微调模型)的输出打分。 - 主流框架:
- RAGAS: 专为 RAG 设计,提供 Context Precision(上下文精确度)和 Context Recall(上下文召回率)等开箱即用的指标。
- TruLens: 侧重于评估和跟踪实验,提供反馈函数(Feedback Functions)来量化 Groundedness 和安全性。
- 挑战: 需要注意“裁判模型”自身的偏见,以及评估成本(Token 消耗)。
- Tier 3: 人工评估与 A/B 测试 (Human Eval & Production Ops)
这是最终的真实性检验,但成本最高,无法高频进行。 - 方法: 在内部测试阶段组织“红队测试(Red Teaming)”;在上线后进行 A/B 测试,观察用户的隐式反馈(如“重新生成”的点击率、对话轮数、最终任务完成率)。
面试加分项: 提到建立Golden Dataset(金标准数据集)的重要性。你可以说:“评估的前提是有高质量的测试集。我们在开发初期就通过人工标注和 GPT-4 辅助生成的方式,积累了包含 200+ 个典型用户 Query - Context - Answer 三元组的评测集,作为 CI/CD 流程中的质量门禁。”
观测指标与成本/延迟优化

在 Agent 进入生产环境(Production)后,面试官的关注点会从“它能不能回答正确”迅速转移到“它是否足够快、足够便宜且可控”。这一部分的面试核心在于展示你对工程落地(Engineering Nuance)的深刻理解,特别是如何处理不可预测的 LLM 行为与现实资源限制之间的矛盾。
1. 全链路追踪 (Tracing) 与调试
传统的日志记录(Logging)在面对 Agent 的多步推理(Multi-step Reasoning)时往往力不从心。Agent 的一次用户交互可能包含多次 LLM 调用、工具执行和检索操作。如果缺乏可视化追踪,调试就像在黑盒中摸索。
- 面试关键点:强调Trace ID 的贯穿能力。你需要解释如何通过唯一的 Trace ID 将用户的原始 Query、Agent 的中间思考(Thought)、工具调用的参数与结果(Action & Observation)以及最终回复串联起来。
- 工具栈:提及业界常用的追踪工具能证明你的实战经验。例如,LangSmith 提供了对链式调用的可视化与回放功能,便于调试复杂的 ReAct 循环;而 Arize Phoenix 则在观测 LLM 输入输出的 Embedding 漂移方面表现出色。
- 常见陷阱:如果不做 Tracing,当 Agent陷入“死循环”(反复调用同一个工具报错)时,你很难快速定位是 Prompt 问题还是工具接口返回了误导性信息。
2. 延迟优化 (Latency Optimization)
Agent 系统通常比单一的 RAG 系统更慢,因为它们需要进行多轮“思考”。在面试中,你需要提出具体的优化策略来缓解这一痛点:
- 流式输出 (Streaming):区分 TTFT (Time to First Token) 和总生成时间。对于用户体验而言,快速展示第一个字符比等待整个答案生成完毕重要得多。
- 并行工具调用 (Parallel Tool Calling):这是高阶 Agent 设计的标志。如果一个任务需要查询“天气”和“股价”,低效的 Agent 会串行执行;而高效的系统会利用 LLM 的 Function Calling 能力一次性生成多个工具请求并行执行,从而显著降低端到端延迟。
- 模型路由 (Model Routing):并非所有步骤都需要 GPT-4 级别的模型。在规划阶段使用大模型,而在简单的文本总结或实体提取阶段路由到更小、更快的模型(甚至本地小模型),是平衡延迟与成本的经典架构决策。
3. 成本控制与熔断机制 (Cost & Circuit Breakers)
Token 消耗是 Agent 系统的主要成本来源,且容易失控。
- Token 监控与预算:不仅要监控总 Token 数,还要监控 Input/Output 的比例。RAG 系统中过长的 Context 召回会导致 Input Token 激增。
- 防失控熔断:Agent 最大的风险之一是陷入逻辑死循环(Infinite Loop),导致在几分钟内消耗数千美元的 API 额度。
- 策略:必须设置“最大迭代次数”(Max Iterations,如 LangChain 默认的 25 次)或“最大 Token 消耗上限”。一旦触达阈值,强制终止执行并返回兜底回复。
- 语义缓存 (Semantic Caching):对于重复的高频问题,利用向量相似度在缓存层直接返回答案,完全绕过 LLM 调用,这是降低成本和延迟的“双赢”手段。
总结:生产环境观测指标清单
在回答“你如何监控 Agent 状态”时,可以抛出以下分层指标体系,展示专业度:
指标维度 | 关键 Metric | 业务含义 |
|---|---|---|
性能 (Performance) | P95/P99 Latency, TTFT | 用户要等多久?是否卡顿? |
成本 (Cost) | Cost per Session, Token Usage | 商业模式是否成立? |
质量 (Quality) | TruLens Feedback Score, Retry Rate | 回答是否相关?是否经常需要重试? |
稳定性 (Stability) | Tool Error Rate, Loop Count | 工具是否经常挂掉?是否陷入死循环? |
终极准备:STAR 法则下的项目复盘
在掌握了工具调用、记忆管理、RAG 及观测指标等零散知识点后,面试成功的关键在于将这些技术细节封装成一个逻辑严密、有血有肉的工程故事。面试官不仅关注你“用了什么”,更关注你“解决了什么难题”以及“为什么这样解决”。
以下是专为 Agent 工程设计的 STAR 复盘框架、技术决策深度解析及面试中必须规避的“红灯区”。
1. Agent 项目专用 STAR 模板
传统的 STAR 法则在 AI 工程面试中往往失之于宽。针对 Agent 开发,你需要将重点放在不确定性管理、链路稳定性和成本/效果平衡上。
- Situation(背景):业务场景与痛点
- 描述:简述项目背景,明确 Agent 的角色(是 Copilot 辅助型还是 Autonomous 自主型)。
- 关键点:由业务痛点切入。例如,“我们需要构建一个自动化客服 Agent,但在处理复杂退款流程时,传统基于规则的系统维护成本过高,且无法灵活处理用户意图。”
- 量化现状:提及原有的基准数据(如:人工处理时长 15 分钟,或旧版机器人解决率仅 30%)。
- Task(任务):工程挑战与技术难点
- 描述:明确你要解决的核心技术难题。
- Agent 特有挑战:
- 长上下文丢失:多轮对话后 Agent 遗忘关键信息。
- 幻觉与指令遵循:模型在调用工具时参数生成错误,或捏造未提供的政策。
- 延迟与成本:全链路推理耗时过长,Token 消耗不可控。
- Action(行动):架构设计与关键优化
- 描述:这是面试的核心。不要只罗列技术栈(LangChain, VectorDB),要讲述工程动作。
- 高分叙述示例:
- 架构调整:“为了解决单体 Agent 处理复杂任务时的逻辑混乱,我们参考了 Anthropic 的多 Agent 研究系统,将任务拆解为‘主规划 Agent’与多个‘子执行 Agent’。主 Agent 负责生成策略,子 Agent 并行执行搜索和工具调用,显著提升了任务完成率。”
- 性能优化:“针对推理延迟高的问题,我们发现通用大模型在简单意图识别上是杀鸡用牛刀。根据 HockeyStack 的生产环境经验,我们将任务拆分为更细粒度的步骤,并在非推理环节(如格式化输出)使用更小、更快的模型或确定性代码,从而在保持准确率的同时将成本降低了 90%。”
- 稳定性保障:“实施了基于语义的缓存策略,并为所有工具调用增加了重试与参数校验层。”
- Result(结果):业务价值与技术指标
- 描述:用数据说话,对比 S/T 阶段的现状。
- 关键指标:
- 业务指标:任务解决率(Resolution Rate)、人工接管率(Hand-off Rate)。
- 工程指标:端到端延迟(P99 Latency)、单次任务 Token 成本、幻觉率降低百分比。
- 示例:“最终系统上线后,复杂查询的平均响应时间从 10 秒降至 3 秒,自动化解决率提升了 40%。”
2. 核心加分项:深挖技术选型的“为什么”
面试官最想听到的是你在技术分岔路口时的决策逻辑(Trade-off Analysis)。在复盘中,必须主动回答“为什么选择 A 而不是 B”。
- 为什么选择 Graph RAG 而非纯向量检索?
- 回答思路:向量检索擅长语义相似度匹配,但在处理跨文档的实体关系推理(Multi-hop reasoning)时表现不佳。我们引入图数据库是为了捕捉实体间的结构化关系,解决“A 公司的高管 B 之前在哪家公司任职”这类需要跳跃推理的问题。
- 为什么使用多 Agent 而非单一长 Chain?
- 回答思路:单一 Chain 在上下文过长时容易出现“注意力分散”(Lost in the Middle)。拆分为多 Agent 可以隔离上下文,让每个 Agent 专注特定领域的工具集(Tool Scoping),这不仅降低了 Prompt 复杂度,还便于独立评估和迭代。
- 为什么不仅用 LLM,还引入了确定性代码?
- 回答思路:LLM 是概率模型,不应承担所有工作。对于数学计算、固定格式转换等任务,使用 Python 代码工具比让 LLM “心算”更可靠且成本更低。
3. 警惕:面试官眼中的三大“红灯区”
在讲述项目时,如果表现出对以下问题的无视,可能会被判定为缺乏生产环境经验(Lack of Production Sense)。
- 无视安全与 Prompt Injection(提示注入)
- 红灯信号:直接将用户输入拼接到 SQL 查询或系统 Prompt 中,未做任何清洗或隔离。
- 正确姿势:提及在工具层实施了“人在回路”(Human-in-the-loop)确认机制,或者使用了专门的 Guardrails 模型来过滤恶意指令。
- 假设 LLM 是确定性的
- 红灯信号:代码中假设 LLM 返回的 JSON 格式永远完美,没有由
try-catch包裹的解析逻辑或重试机制。 - 正确姿势:展示你如何处理解析失败(Output Parsing Errors),以及如何设计容错流程(Fallback Mechanisms)。
- 红灯信号:代码中假设 LLM 返回的 JSON 格式永远完美,没有由
- 忽略死循环与成本爆炸风险
- 红灯信号:设计了两个 Agent 互相通信,却未设置最大轮次限制(Max Iterations)。
- 正确姿势:引用 SCB Tech X 的成本管理策略,强调在生产环境中必须设置“熔断机制”和预算监控,防止两个 Agent 因为互相纠正错误而陷入无限对话,导致 Token 费用在短时间内飙升。




