Skip to content

LLM Agent 面试题

内容整理自学习笔记,仅供面试备考参考;不构成录用、培训或考试承诺。

一、什么是 LLM Agent?

LLM Agent 是一种超越简单文本生成的人工智能系统。它以大型语言模型(LLM)作为核心计算引擎,使其能够进行对话、执行任务、推理并展现一定程度的自主性。简而言之,Agent 是一个具有复杂推理能力、记忆和执行任务手段的系统。

LLM Agent 主要利用大模型的推理(Reasoning)模仿(Few-shot Learning)规划(Planning) 能力,再结合函数调用来实现工具使用(Tool Use)。


二、LLM Agent 的核心组成

在 LLM 赋能的自主 Agent 系统中,LLM 充当"大脑"角色,并与以下关键组件协作:

2.1 规划(Planning)

一项复杂任务通常包含多个步骤,Agent 需要了解这些步骤是什么并提前规划。

2.1.1 拆解子目标和任务分解

Agent 能够将大型任务分解为较小、易于管理的子目标,从而高效地处理复杂任务。

主要方法:

方法描述
Chain of Thought (CoT)模型被要求"think step by step",将困难任务分解为更小、更简单的步骤,并阐释思维过程
Tree of Thoughts (ToT)在 CoT 基础上扩展,每一步探索多种推理可能性,创造树形结构;搜索过程可采用 BFS 或 DFS,每个状态由分类器或多数投票决定
Graph of Thoughts (GoT)同时支持多链、树形以及任意图形结构的 Prompt 方案,支持聚合、回溯、循环等复杂操作;将问题建模为操作图(Graph of Operations),以 LLM 为引擎自动执行
LLM+P借助外部经典 Planner 进行长序列整体规划,使用 PDDL(Planning Domain Definition Language)作为中间接口,LLM 负责问题翻译和结果解释,Planner 负责求解

本质理解:无论是 CoT 还是 ToT,本质上都是通过精心设计的 Prompt,激发模型的多步推理与规划能力,而不是直接跳到最终答案。

任务分解的其他实现方式:

  • 给 LLM 简单提示词,如 "Steps for XYZ.\n1." 或 "What are the subgoals for achieving XYZ?"
  • 使用针对具体任务的指令(如写小说时先给 "Write a story outline.")
  • 用户直接输入分解步骤

2.1.2 模型自我反省(Self-Reflection)

Agent 能够对过去的动作进行自我批评和自我反省,从错误中吸取教训并改进,从而提高最终结果的质量。

主要方法:

ReAct(Reasoning + Acting)

  • 将 Action Space 扩展为特定任务的离散动作和语言空间的组合,在 LLM 内部整合推理和行动
  • 推理(Reasoning):通过提示词让 LLM 用自然语言生成推理过程(如逐步思考)
  • 行动(Action):使 LLM 能够与环境交互(如调用 Wikipedia Search API、计算器等工具)
  • 标准格式:Thought: ... → Action: ... → Observation: ...(循环重复)

Reflexion

  • 让 Agent 具备动态记忆和自我反思能力的框架
  • 采用标准 RL 设置,奖励模型提供简单二进制奖励
  • 在每一个 Action 后,Agent 计算启发式函数,根据自我反思结果决定是否重置环境开始新循环
  • 启发式函数判断轨迹是否低效(耗时长却未成功)或包含幻觉(一连串相同动作导致相同观察结果)
  • 自我反思通过 Two-shot 示例创建(失败轨迹 + 理想反思),反思内容被添加到工作记忆中(最多三个)

2.2 记忆(Memory)

  • 短期记忆:上下文学习即是利用模型的短期记忆学习
  • 长期记忆:为 Agent 提供保留和召回长期信息的能力,通常利用外部向量存储和检索实现

2.3 工具使用(Tool Use)

  • 对模型权重中缺失的信息,Agent 学习调用外部 API 获取额外信息
  • 包括:当前信息获取、代码执行能力、专有信息源访问等

三、LLM Agent 代码实现思路

3.1 实例一:利用大模型判断做选择

通过构造选择题让大模型从多个选项中选择适合的工具。Prompt 设计示例:

请针对用户问题,选择一个适合的工具去回答,用 A、B、C 的选项字母告诉我答案。如果都不适合,选 D。
工具:
A. 商品导购和推荐工具
B. 订单查询工具
C. 退换货政策查询工具
D. 都不适合

3.2 实例二:工具选择 + JSON 格式化输出

将选项替换为函数名称,要求模型按固定 JSON 格式输出,通过正则表达式提取并解析:

python
# Agent prompt 核心逻辑
agent_prompt = """Answer the following questions as best you can.
You have access to the following tools:
Search Order: 查询订单信息的工具,参数是订单id
Recommend product: 商品推荐导购工具,参数是商品类型

Use the following format:
Question: the input question
Thought: you should always think about what to do
Action: ```json {"action": $TOOL_NAME, "action_input": $INPUT}```
Observation: the result of the action
... (Thought/Action/Observation can repeat N times)
Thought: I now know the final answer
Final Answer: the final answer to the original input question
"""

3.3 实例三:LangChain Agent 集成

使用 LangChain 的 initialize_agent 配合 ZERO_SHOT_REACT_DESCRIPTION 类型,将自定义工具注册到 Agent 中:

python
from langchain.agents import initialize_agent, AgentType

tools = [
    Tool(name="Search Order", func=search_order, description="查询订单信息"),
    Tool(name="Recommend product", func=recommend_product, description="商品推荐导购"),
]

agent_tools = initialize_agent(
    tools=tools, llm=chat,
    agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True
)
result = agent_tools.run("我想买一件衣服,有什么好推荐吗")

四、如何给 LLM 注入领域知识?

方法描述
检索 + LLM先用问题在领域数据库里检索候选答案,再用 LLM 对答案进行加工
领域知识微调把领域知识构建成问答数据集,用 SFT 让 LLM 学习这部分知识

五、常见 LLM Agent 框架

框架简介地址
AutoGPT自主 AI Agent,可自动分解目标并执行github.com/Significant-Gravitas/AutoGPT
AutoGen微软出品,多 Agent 对话协作框架github.com/microsoft/autogen
ChatDev模拟软件公司多角色协作开发github.com/OpenBMB/ChatDev
XAgent超自主 Agent,支持复杂任务自动解决github.com/OpenBMB/XAgent
GPT-Engineer根据自然语言描述生成完整代码库github.com/gpt-engineer-org/gpt-engineer