Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

整理一些AI Agent岗的面试常见的问题和比较合适的回答。

Agent

Q:Agent和工作流有什么区别?

Anthropic的解释( https://www.anthropic.com/engineering/building-effective-agents ):

At Anthropic, we categorize all these variations as agentic systems, but draw an important architectural distinction between workflows and agents:

  • Workflows are systems where LLMs and tools are orchestrated through predefined code paths.
  • Agents, on the other hand, are systems where LLMs dynamically direct their own processes and tool usage, maintaining control over how they accomplish tasks.

  • workflow 是 LLM 和工具按照预先写好的代码路径执行;

  • agent 则是 LLM 根据目标动态决定下一步怎么做、用什么工具、什么时候停止。

LangChain/LangGraph文档也强调,agent 相比 workflow 有更高自主性,适合问题路径不确定、需要持续反馈循环的场景。


回答:

我认为 Agent 和工作流最大的区别是自主性,workflow 更像“固定流程自动化”,而 agent 更像“带目标的自主执行系统”

工作流是由工程师预先定义好步骤和分支,LLM 只是其中一个节点,整体执行路径比较确定;它的优点是稳定、可控、可观测、适合生产环境。缺点是灵活性有限,遇到流程外的问题就比较难处理。

而 Agent 是给模型一个目标、工具和约束,让模型根据当前上下文动态决定下一步做什么、调用哪个工具、是否需要继续执行。但Agent 灵活的同时但也带来不可控、成本高、可观测性和评估更难的问题。

举个例子,一个 RAG 问答流程通常是典型 workflow:先 query rewrite,再检索,再 rerank,再生成答案。但如果是一个研究型 Agent,它可能会先拆解问题,决定查哪些资料,发现信息不足后继续搜索,甚至调用代码或数据库工具做验证。

所以在工程落地上,我不会认为 Agent 一定比 workflow 高级。对于确定性强、合规要求高、链路清晰的任务,我会优先用 workflow,因为它更稳定、可控、好评估;对于开放式、多步骤、路径不确定的任务,比如复杂研究、数据分析、代码修复、跨系统操作,才更适合用 Agent。同时生产环境里常见的做法是混合式:外层用 workflow 做权限、状态管理和 guardrails,内部某些不确定节点交给 Agent 来决策。

Q:Prompt和Skills的区别是什么?

Prompt和Skill的区别主要在于抽象层级和可复用性。Prompt 是用户在一次任务里给模型的自然语言指令,通常解决的是当前这一次怎么回答、用什么格式、遵守什么限制。

Skill 则更像是面向 Agent 的可复用能力模块。它不只是一个提示词,而是可以包含任务说明、操作步骤、few-shot 示例、模板、脚本、工具调用方式、参考文件和业务规则。Agent 在遇到相关任务时,可以动态加载对应 skill,并按照里面定义的方法完成任务。

举个例子,让模型“用正式语气写一封邮件”是 prompt;但把公司邮件规范、审批流程、常用模板、敏感词检查、收件人规则封装起来,让 Agent 每次写邮件都自动遵守,这就是 skill。

所以 prompt 更适合一次性、轻量级的控制;skill 更适合重复性强、专业化、需要标准化执行的任务。在生产环境中,我会把经常复用的高质量 prompt、流程规范、工具使用方法和示例沉淀成 skill,而不是每次都靠用户重新描述。

ReAct

Q:ReAct框架是什么?

RAG

Q:什么是RAG

RAG 全称是 Retrieval-Augmented Generation,检索增强生成

简单说,RAG 是让大模型在回答前,先从外部知识库里检索相关资料,再基于检索到的内容生成答案。它解决的是大模型只依赖训练参数回答时容易出现的两个问题:知识过期幻觉。RAG 会把 LLM 和外部知识源结合起来,让回答基于权威、可更新的数据,而不是只依赖模型训练时学到的知识。

通常 RAG 包含两个核心部分:Retriever 检索器Generator 生成器。检索器负责从文档、数据库、网页、知识库里找相关内容;生成器通常是 LLM,负责基于这些内容组织答案。

典型流程是:

用户提问
→ 对问题做 query rewrite / embedding
→ 从向量库、全文索引或数据库中检索相关 chunks
→ 可能经过 rerank 筛选最相关内容
→ 把检索结果放进 prompt
→ LLM 基于上下文生成答案
→ 返回答案,最好附带引用来源

Q:RAG的过程

RAG 的过程一般会分成离线和在线两部分。

离线阶段主要是构建知识库。首先收集原始文档,比如 PDF、网页、产品文档、FAQ 或数据库记录;然后做解析和清洗,去掉噪声内容;接着按照语义结构或 token 长度进行 chunking,并设置合适的 overlap;之后用 embedding 模型把每个 chunk 转成向量,存入向量数据库,同时保留 metadata,比如标题、来源、时间、权限信息等。

在线阶段是用户提问后的检索和生成流程。系统收到 query 后,可能会先做 query rewrite 或意图识别,然后通过向量检索、BM25 或 hybrid search 找到相关 chunk。为了提高准确性,通常还会用 reranker 对候选结果重排,选出最相关的上下文。然后把用户问题、检索到的证据和回答约束一起构造成 prompt,交给 LLM 生成答案。最后返回答案,并最好带上 source citation。

我认为 RAG 的核心不是简单地把文档塞给大模型,而是要保证“检索到正确的内容,再让模型基于证据回答”。所以实际效果取决于文档质量、chunk 策略、embedding、召回、rerank、prompt 设计和评估体系。如果检索环节失败,生成环节很难补救。

  • 普通RAG:模型不决定文件,系统自动检索
  • Agentic RAG:LLM 可能会参与规划,让模型告知该调用什么命令查询什么信息,然后再把查询到的结果返回给模型。

Q:RAG中如何判断一个环节中是检索还是生成出问题?

可以把 RAG 的问题定位拆成两层:先判断 retrieval 有没有拿到正确证据,再判断 generation 有没有基于证据正确回答。

第一层看检索。对于一条 bad case,我会直接检查 top-k retrieved chunks:这些 chunk 是否包含回答所需信息?相关 chunk 的排名是否靠前?有没有被 metadata filter 或权限过滤掉?如果正确答案根本没被召回,或者排在很后面,那就是 retrieval 问题。可以进一步看 recall@k、MRR、hit rate、context recall、context precision 等指标。

第二层看生成。如果 top-k context 里已经包含正确答案,但最终回答仍然错误、幻觉、遗漏关键条件,或者没有遵守引用来源,那就是 generation 问题。此时我会看 faithfulness、groundedness、answer relevance,也会检查 prompt 是否要求模型只能基于上下文回答,是否有冲突信息,context 是否太长导致模型忽略关键段落。

所以判断标准很简单:context 没有答案,是检索问题;context 有答案但回答错,是生成问题;context 有一部分答案但不完整,可能是检索召回不足,也可能是生成整合能力不足,需要进一步做 ablation。

Q:RAG里文档如何chunk的?如果预输入不是md,而且不同的文档类别的上下文格式不一样,需要怎么处理?

MCP

Q:MCP是什么?

MCP 全称是 Model Context Protocol,模型上下文协议

简单来说,MCP 是一个开放标准,用来统一 AI Agent / LLM 应用连接外部工具、数据源和系统的方式

其他

Q:如何控制模型输出JSON格式的内容?

分几个层面:

  1. 首先在Prompt里说明输出格式;
  2. 检查输出格式;
  3. 如果失败,就利用函数来尝试提取出输出里的JSON;
  4. 如果还是不行,就将错误格式的输出返回给模型,让它修复。

Q:压缩算法是什么?怎么做的?在哪一个步骤做的?

股票预测RNN

Q:注意到你用了macro F1,那你有测过micro F1吗?

纯陷阱题。

先复习一下True Positive,False Positive,False Negative,True Negative等概念:

Precision(预测正确的c的数量/实际的c的数量)和Recall(预测正确的c的数量/总预测的c的数量):

普通的F1:

Micro F1:先把所有类别的TP、FP、FN加起来,再统一计算Precision、Recall和F1。

Macro F1:先分别计算每个类别的F1,然后对所有类别的F1取平均。

注意:在单标签多分类任务里,Micro F1等于 Accuracy。比如每个样本只能属于一个类别:猫、狗、鸟。模型每预测错一个样本,就会同时造成一个 FP 和一个 FN,也就是说Micro的Precision等于Micro的Recall。所以最后 Micro F1和 Accuracy会相同:

Q:为什么macro F1能提升这么多?

Macro-F1提升主要是因为优化目标和评价目标更一致了。Majority class baseline 永远预测训练集中最多的类别,所以它在 imbalanced dataset 上可以拿到不错的 accuracy,但它几乎完全牺牲 minority classes,导致 macro-F1 很低。我的 weighted GRU 使用 class-weighted cross entropy,让少数类错误在训练中受到更大惩罚,因此模型不再只偏向 majority class,而是更愿意在 down、flat、up 三类之间做更均衡的预测,所以 macro-F1 提升明显。

另外,这个任务本身是时间序列任务。每个样本不是单个静态 feature vector,而是 30 个交易日的技术指标序列。GRU/RNN 这类模型可以利用时间顺序中的动量、波动率、趋势变化等 temporal patterns;相比 majority class 这种完全不看输入的 baseline,它有机会学到一些和未来 5 日方向相关的动态信息。因此,sequential architecture 也帮助提升了表现。

The macro-F1 improved mainly because the baseline and the GRU optimize very different objectives. The majority-class baseline is essentially the best constant classifier under unweighted accuracy: it predicts the most frequent class and therefore performs reasonably on accuracy, but it gives very poor recall for the minority classes, which hurts macro-F1. In contrast, the weighted GRU was trained with class-weighted cross entropy, so mistakes on minority classes were penalized more. That made the model less biased toward the majority class and improved the per-class F1 scores, which is exactly what macro-F1 measures.

The second reason is that the input is sequential: each sample contains a 30-day history of stock-level technical features. A GRU can model temporal patterns such as momentum, volatility changes, and short-term trend behavior, while the majority baseline ignores all features. So the improvement comes from both using a sequence model and aligning the training loss with the macro-F1-oriented evaluation. I would be careful not to say RNNs are automatically better for stocks, because financial prediction is noisy; in this project, the strongest evidence is that the class-weighted GRU improved class-balanced performance, not simply accuracy.