ai agent面试题
ai agent与普通LLm chat的本质区别是什么,核心组件有哪些 ai agent与普通LLm chat的本质区别 普通 LLM Chat(对话大模型) 与 AI Agent(智能体) 的本质区别,在于从“被动的文本生成器”向“主动的任务执行者”的跨越。 如果用一个公式来概括,现代 AI Agent 的标准定义…
作者:lh
ai agent与普通LLm chat的本质区别是什么,核心组件有哪些
1.ai agent与普通LLm chat的本质区别
普通 LLM Chat(对话大模型) 与 AI Agent(智能体) 的本质区别,在于从“被动的文本生成器”向“主动的任务执行者”的跨越。
如果用一个公式来概括,现代 AI Agent 的标准定义为:
一、 本质区别:被动生成 vs. 自主驱动
| 维度 | 普通 LLM Chat (对话系统) | AI Agent (人工智能智能体) |
| 核心定位 | 知识库与语言交互终端 | 目标驱动的自主任务执行实体 |
| 执行机制 | 单次线性响应:输入文字\rightarrow预测接下来的 Token \rightarrow 输出文字 | 循环迭代回路:感知环境 \rightarrow 思考规划 \rightarrow 决定行动 \rightarrow观察结果 \rightarrow 再决策 |
| 环境交互 | 封闭在聊天框内,无法对外部世界产生实际影响 | 通过 API、数据库操作、代码执行等工具,直接读写并影响外部环境 |
| 错误处理 | 发生错误或幻觉时,依赖人类用户重新修改提示词(Human-in-the-loop) | 具备**自我反思(Reflection)**与纠错能力,能根据系统报错或执行反馈自主重试 |
| 复杂任务 | 需要人类自行拆解步骤,通过多轮对话逐步引导 | 只需输入最终目标,Agent 自主拆解子任务并全流程调度执行 |
2.核心组件
一个完整而成熟的 Agent 系统,通常以大语言模型为中央大脑,环绕部署以下四大基础组件:
1. 大语言模型(LLM Brain — 大脑与中央控制器)
LLM 是整个系统的核心计算引擎。它不再仅仅负责文字润色或问答,而是承担语义理解、逻辑推理、调度任务和最终决策的职责。它的推理能力(Reasoning)直接决定了智能体能处理多复杂的任务。
2. 规划与决策(Planning — 思考与拆解)
面对复杂的非结构化目标(例如“整理近期 AI 论文并写一篇概要发送到我的邮箱”),Agent 需要具备强大的战略规划能力:
-
子任务拆解(Task Decomposition): 将宏观目标分解为时间有序的、可执行的小步骤(常应用思维链 CoT 或思维树 ToT)。
-
反思与自我纠错(Reflection & Self-Correction): 在每一步执行完后,评估实际结果与预期是否吻合。如果走入死胡同或遇到 API 报错,能够动态调整后续路径(典型的应用如 ReAct 模式:Reason + Act)。
3. 记忆系统(Memory — 知识与经验库)
为了保证在长周期任务中不迷失方向,Agent 必须具备结构化的记忆模块:
-
短期记忆(Short-term Memory): 即当前的上下文窗口(Context Window),记录本轮任务中的阶段性推理过程、环境反馈和最近几步的操作记录。
-
长期记忆(Long-term Memory): 通过向量数据库(Vector DB)或外部知识图谱实现的持久化存储(如 RAG 架构)。它允许 Agent 跨会话检索历史经验、用户个性化偏好或专业行业知识。
4. 工具与行动(Tools & Action — 四肢与感官)
LLM 的知识受限于训练数据的截止日期,且天生缺乏计算和执行能力。工具组件为 Agent 赋予了真正的“物理/数字抓手”:
-
工具调用(Function Calling / Tool Use): 使 Agent 能够调用网络搜索引擎、执行 Python 代码(沙盒环境)、读写 SQL 数据库、操作本地文件系统或对接第三方行业 API。
-
环境感知(Observation): 执行动作后,捕获环境返回的真实状态(如代码运行的结果、网页抓取的具体内容),将其作为下一轮思考的输入。
ReAct(Reasoning+Acting)范式的工作流程,ThoughtAction->Observation 如何循环
ReAct (Reasoning + Acting) 范式是目前 AI Agent 最核心的底层运行机制之一,由普林斯顿大学和 Google Research 在 2022 年共同提出。
如果要用一句话概括它的本质:将“大模型的内部推理(Chain of Thought)”与“外部工具调用(Tool Execution)”紧密交织在一起,形成一个可以动态自我修正的交互回路。
一、 Thought \rightarrow Action \rightarrow Observation 三步循环机制
在 ReAct 范式中,Agent 处理任何复杂的任务,都会在以下三个节点之间不断循环迭代,直到达成最终目标:
+-------------------------------------------------------------+
| 大语言模型 (LLM Brain) |
| |
| +-------------------+ +------------------+ |
| | Thought (思考) | ------------>| Action (行动) | |
| +-------------------+ +------------------+ |
| ^ | |
+-------------|---------------------------------|-------------+
| | (调用外部工具)
| (反馈执行结果) v
+-------------------------------------------------------------+
| Observation (环境观察) |
| [ 搜索引擎 / 数据库 / 代码沙盒 / API 等 ] |
+-------------------------------------------------------------+
1. Thought(思考与推理)
这是大模型内部的“认知独白”,通常在输出中体现为 Thought: 标签,但不会作为指令提交给外部工具。
-
核心功能: 分析当前目标、拆解复杂的步骤、评估上一轮带来的新信息、诊断发生的错误,并最终逻辑决定下一步需要采取什么具体的行动。
-
价值所在: 让 Agent 具备全局视野和战略规划力,避免盲目调用工具。
2. Action(行动与工具调用)
这是大脑做出决定后的“物理抓手”,通常体现为 Action: ToolName[Parameter] 或现代 LLM 的标准 Function Calling 格式。
-
核心功能: 将“思考”的结果转化为具体的操作命令。例如:发出一条 SQL 查询、调用外部的 Google 搜索 API、在沙盒环境中运行一段 Python 代码,或者发出
Finish[Answer]宣布任务终止。 -
价值所在: 打破 LLM 静态权重的限制,让系统能干预并获取外部数字世界的最新状态。
3. Observation(观察与反馈)
这是外部环境执行完 Action 后返回的客观客变结果,体现为 Observation: ...。
-
核心功能: 将真实世界的 API 响应、数据库返回的数据、或是代码运行报错的 Traceback 文本,作为客观事实重新抓取回来。
-
循环触发: 这一次的
Observation会被自动追加到大模型的历史上下文窗口(Context Window)中,直接触发下一轮新的Thought。
二、 为什么 ReAct 比单纯的 CoT 或 Acting 更强大?
在 ReAct 出现之前,大模型解决复杂问题主要有两种单向策略,而 ReAct 正好融合了双方的优势并弥补了各自的致命缺陷:
| 范式类型 | 工作模式 | 核心痛点 / 局限性 | ReAct 如何解决 |
| 纯思维链 (CoT Only) | 基本提示 -> 连续思考 -> 输出答案 |
封闭系统幻觉 (Hallucination):只依赖训练数据,无法实时上网验证或更新事实,容易一本正经地胡说八道。 | 引入 Action/Observation,通过外部事实强制校准内部思维。 |
| 纯行动 (Acting Only) | 输入指令 -> 连续调用工具 -> 获得结果 |
缺乏战略统筹 (Blind Execution):没有深入思考为什么这么做,极易陷入死循环,或者在多步API调用中迷失方向。 | 引入 Thought,每次调用前必先进行逻辑规划和可行性评估。 |
| ReAct 协同 | 思考 -> 行动 -> 观察 -> 再思考 |
动态平衡 | 思考指导行动,行动修正思考:互为闭环,抗错能力大幅提升。 |
三、 实战拆解:经典多步任务的 ReAct 运行轨迹
假设我们向 Agent 提出一个多步推理问题:
用户提示词: "请问苹果公司现任 CEO 出生地目前的城市总人口是多少?"
Agent 内部完整的 ReAct 循环日志如下:
第 1 轮循环:定位目标人物
-
Thought 1:用户想知道苹果公司现任 CEO 出生地的人口。我首先需要确认苹果公司现任 CEO 是谁。 -
Action 1:Search["苹果公司 现任 CEO"] -
Observation 1:(搜索引擎返回) 蒂姆·库克(Tim Cook),自 2011 年起担任苹果公司首席执行官。
第 2 轮循环:追溯出生地点
-
Thought 2:现在我知道 CEO 是蒂姆·库克(Tim Cook)。接下来我需要查询蒂姆·库克是在哪个城市出生的。 -
Action 2:Search["蒂姆·库克 出生地 城市"] -
Observation 2:(维基百科摘录) 蒂姆·库克出生于美国阿拉巴马州的莫比尔(Mobile, Alabama),并在附近的罗伯茨代尔长大。
第 3 轮循环:获取数据结果
-
Thought 3:库克的出生地是阿拉巴马州莫比尔(Mobile)。现在我需要查询阿拉巴马州莫比尔目前的最新的城市人口数据。 -
Action 3:Search["Mobile Alabama city population latest"] -
Observation 3:(美国人口普查局数据) 截至近期统计,阿拉巴马州莫比尔市的人口约为 187,000 人。
第 4 轮循环:总结与终结
-
Thought 4:我已经拥有了所有信息:CEO是蒂姆·库克,出生地是莫比尔,目前总人口约为 18 万 7 千人。任务完成,可以向用户输出最终答案。 -
Action 4:Finish["苹果公司现任 CEO 蒂姆·库克出生于美国阿拉巴马州莫比尔,该城市目前的总人口约为 187,000 人。"]
意图识别在Agent系统里怎么做一用LLMRouter,规则分类还是微调分类器,各有什么优势
在构建 AI Agent 系统时,意图识别(Intent Classification)是决定系统入口和工作流分流的关键模块。Agent 必须准确识别用户的意图,才能将其精准分流到特定的子智能体(Sub-agent)、特定的工具链,或者选择触发 ReAct 循环。
在实际工程落地中,意图识别通常有三种主流实现方案:LLM 路由器(LLM Router)、规则与关键词匹配(Rule-based Classifier)、以及微调专用分类器(Fine-tuned Classifier)。
我们通过一个对比来剖析它们的底层原理、落地方式与各自的优势。
一、 三种方案的核心原理与实现路径
+------------------------+
| 用户输入 |
+------------------------+
|
+----------------------+----------------------+
| | |
v v v
+---------------+ +---------------+ +-------------------+
| LLM Router | | 规则分类器 | | 微调分类器 |
| (大模型路由器) | | (正则/向量匹配)| | (BERT/轻量级LLM) |
+---------------+ +---------------+ +-------------------+
| | |
+----------------------+----------------------+
|
v
+------------------------+
| 精准分流到不同 Agent |
+------------------------+
1. LLM Router (大模型路由器)
-
实现方式: 编写系统提示词(System Prompt),将所有可选的意图(或工具列表)作为候选集,并辅以少量示例(Few-shot)。让大模型以 JSON 格式或指定的 Tool/Function Calling 格式输出匹配的类别标签。
-
适用引擎: 直接调用现成的商业 API(如 GPT-4o、Claude 3.5 Sonnet)或性能较好的开源模型(如 Qwen2.5-14B/72B-Instruct)。
2. 规则与关键词分类 (Rule & Keyword Classifier)
-
实现方式:
-
经典规则: 基于正则表达式(Regex)、关键词表、前缀匹配等硬规则进行硬分流。
-
语义规则(向量检索): 将典型意图表示为“标准问/标准语料”,利用轻量级 Embedding 模型(如
bge-m3)计算用户输入与标准问的余弦相似度(Cosine Similarity)。当相似度大于设定阈值(如 $0.85$)时,命中对应意图。
-
3. 微调专用分类器 (Fine-tuned Classifier)
-
实现方式: 收集并标注一批意图数据集(如包含 $10 \sim 50$ 个意图,每个意图几百条语料)。
-
传统方案: 基于中小型双向 Encoder 架构(如 BERT、RoBERTa)进行多分类(Multi-class Classification)任务训练。
-
小模型微调方案: 基于 1.5B/3B/7B 大小的开源生成式模型(如 Qwen2.5-1.5B/7B-Instruct),通过 LLaMA-Factory 等框架进行 LoRA 或 Full Fine-Tuning,训练其输出特定的 JSON 意图。
-
二、 方案优势对比与痛点分析
在 Agent 架构设计中,没有绝对完美的方案,只有根据场景折中的权衡(Trade-offs)。
| 评估维度 | LLM Router (大模型路由) | 规则与向量分类 | 微调分类器 (BERT/轻量级LLM) |
| 推理延迟 (Latency) | 高 (300 \text{ms} \sim 1500 \text{ms}) | 极极低 (5 \text{ms} \sim 20 \text{ms}) | 极低 (10 \text{ms} \sim 80 \text{ms}) |
| 开发与上线速度 | 最快(分钟级,只需改 Prompt) | 快(配置规则与向量库即可) | 慢(需收集数据、标注并训练部署) |
| 复杂意图理解力 | 极强(能理解双关语、潜台词和隐式意图) | 弱(字面不符或没有覆盖标准问就容易漏识别) | 强(深度拟合了业务数据集的特有语境) |
| 冷启动成本 | 零成本 | 极低 | 高(每个意图需要至少几十条标注数据) |
| 输出稳定性 | 有幻觉风险(可能格式崩坏或编造意图) | 100% 稳定(硬编码返回,无幻觉) | 极高且确定(分类任务无幻觉风险) |
| 硬件/部署成本 | 高(消耗昂贵的 API Token 或大卡) | 极低(几乎不占显存,CPU 即可跑) | 低(1xT4 显卡或轻量级 CPU 实例即可支持高并发) |
LangChain 中 Chain、 Agent、 Tool,Memory各自职责,LCEL的基本链路是怎样的
一、 四大核心组件的职责
1. Chain(链):静态的“流水线”
-
核心职责: 按预定义的顺序,将多个组件(Prompt、Model、Parser 等)组合成一个固定的工作流。
-
特点: 它是静态、确定性的。数据从一端输入,按照写好的代码逻辑一步步流向下一端,LLM 在其中只充当翻译器、生成器或提取器,不决定工作流的方向。
-
典型场景: 结构化数据提取、文本翻译流水线、固定格式的文章生成。
2. Agent(智能体):动态的“决策大脑”
-
核心职责: 作为中央决策者,利用 LLM 的推理能力,根据用户输入动态决定下一步执行什么操作、调用什么工具。
-
特点: 它是动态、非确定性的。Agent 不遵循固定的步骤,而是进入一个“思考-行动-观察(ReAct)”的闭环。它会评估当前的上下文和目标,自主判断任务是否完成。
-
典型场景: 自动化数据分析、智能客服助理、能够联网搜索并写报告的个人助理。
3. Tool(工具):智能体的“四肢”
-
核心职责: 对外部能力的封装(API、数据库、本地代码沙盒等),提供给 Agent 调用。
-
特点: LLM 本身没有与真实世界交互的能力(无法联网、无法直接计算复杂的数学题、无法读取本地文件)。通过定义 Tool,我们将这些能力包装成大模型能看懂的“说明书”(包含工具名、描述和参数 schema),大模型通过 Function Calling 来选择并执行它们。
-
典型场景: 谷歌搜索引擎、Python 代码执行器、SQL 数据库查询工具。
4. Memory(记忆):状态的“存储器”
-
核心职责: 跨多轮对话保存和加载上下文状态。
-
特点: 由于 LLM 交互天生是无状态(Stateless)的(每次 API 请求都是独立的),Memory 的职责就是在每次用户发送新消息时,自动把历史对话记录提取出来并“塞进”当前的 Prompt 中,在交互结束后再把新对话保存下来。
-
典型场景: 记住用户名字的闲聊机器人、能够承接上文的上下文感知搜索。
二、 LCEL(LangChain 表达式语言)的基本链路
LCEL(LangChain Expression Language) 是 LangChain 推出的一种声明式语言,旨在以最简练、最直观的方式连接各种组件。
1. 核心设计:管道符 |
LCEL 的灵感来自于 Unix 的管道命令。它重载了 Python 的按位或运算符 |,实现组件之间的数据流式传递。
2. 经典基本链路
一条最基础的 LCEL 链路如下所示:
Python
# 核心 LCEL 链
chain = prompt | model | output_parser
在底层,这个链路的执行逻辑和数据流向如下:
-
Input(输入): 用户传入字典数据,例如
{"topic": "人工智能"}。 -
Prompt Template(提示词模板): 接收输入,将变量填充到模板中,输出一个
PromptValue(包含格式化后的 System/User 消息)。 -
Model(大语言模型): 接收
PromptValue,将其发送给大模型,生成并返回一个BaseMessage(包含大模型生成的原始文本内容)。 -
Output Parser(输出解析器): 接收
BaseMessage,根据预设规则对其进行解析。例如将其转为纯文本字符串、Markdown、或者结构化的 JSON 对象,并最终输出。
3. LCEL 的底层优势
LCEL 不仅仅是“语法糖”,它在底层实现了统一的接口规范(Runnable 协议),这赋予了它以下强大特性:
-
天然支持流式传输(Streaming): 数据只要有一部分产生,就会立刻通过管道向下游流动,用户能以极低延迟看到逐字输出。
-
原生异步支持(Async): 所有 LCEL 链都可以直接使用
ainvoke、astream等异步方法,非常适合高并发的 Web 服务。 -
自动并行化(Parallelism): 如果链路中存在并行的分支(使用
RunnableParallel),LangChain 会利用多线程自动并行执行这些步骤。
三、 架构可视化与 LCEL 执行流模拟
为了帮你更直观地理解 LCEL 静态链路的工作原理 以及它与 Agent 动态循环 的本质区别,你可以通过下方的交互式流程图,亲自运行并观察数据的流转状态: