面试应该会的agent知识
1.什么是agent,他的组成部分有哪些?
agent是一种能够自主感知环境,自主决策,自主执行动作,并持续迭代优化以完成目标的智能实体,大模型是大脑的话,agent就是带收带记忆有规划能力的完整智能体
agent可以分为5部分
-
感知模块(Perception)
- 从外部获取信息:用户输入、工具返回结果、环境状态等。
- 作用:理解当前任务和上下文。
-
决策 / 规划模块(Planning)
- 根据目标拆解任务、制定执行步骤、判断是否需要调用工具。
- 常见:ReAct 思维链、任务规划、子任务拆分。
-
执行 / 动作模块(Action)
- 调用外部工具完成实际操作:搜索、数据库查询、API、代码执行、文件操作等。
- 对应后端常说的 Function Call / Tool Calling。
-
记忆模块(Memory)
- 短期记忆:对话上下文、当前任务状态。
- 长期记忆:历史经验、知识库、向量库检索内容。
- 作用:避免重复思考,保持任务连贯性。
-
反思 / 迭代模块(Reflection)
- 执行后判断结果是否满足目标,失败则重试、修正步骤或重新规划。
- 是 Agent 比单纯大模型对话更 “智能” 的关键。
Agent 搭建完整流程

1. 明确任务场景(顶层设计)
先确定 Agent 要解决什么问题:
- 个人助手?
- 代码助手?
- 企业业务自动化?
- 数据分析?
- 客服机器人?
确定后,你就知道需要哪些:
- 输入输出
- 权限边界
- 可调用工具范围
- 安全限制
2. 选择 LLM 并开启 FunctionCall
FunctionCall 是 Agent 的大脑决策机制。
流程:
- 选一个支持函数调用的模型
- GPT-3.5/4
- Claude 3
- 通义千问、文心一言、GLM 等
- 给模型传入 tools 描述(JSON Schema)
- 模型输出结构化调用指令:
json
{ "name": "get_weather", "parameters": { "city": "北京" } } - 后端解析并执行
这一步就是:让模型会 “思考要调用什么”。
3. 设计并开发 Skill(核心能力封装)
Skill = 面向任务的能力单元。
一个 Skill 标准结构:
- 名称:如
航班查询技能 - 描述:告诉模型这是干嘛的
- 输入参数:出发地、目的地、日期
- 执行逻辑:
- 校验参数
- 调用航班查询 Tool
- 调用比价 Tool
- 整理结果返回
- 输出格式
Skill 是 Agent 的 “能力菜单”。
4. 开发或接入 Tool(真正执行)
Tool 是原子执行单元,例如:
- HTTP 请求
- 数据库查询
- 文件读写
- 代码执行
- 第三方 API
开发方式:
- 写函数
- 封装 API
- 接入第三方服务
Tool 只负责:接收参数 → 执行 → 返回结果
5. 接入 MCP 协议(标准化)
如果你要做可扩展、可插拔、多工具统一管理的 Agent,必须上 MCP。
MCP 做的事:
- Tool 自动注册发现
- 统一调用格式
- 权限控制
- 安全隔离
- 支持本地 / 远程工具
流程:
- 把每个 Tool 封装成 MCP Server
- Agent 作为 MCP Client 连接
- 通过标准协议调用所有工具
这一步让你的 Agent 从玩具变成工程化系统。
6. 编排、记忆、调度与测试(Agent 灵魂)
这是 Agent 区别于简单函数调用的关键。
(1)记忆模块
- 短期记忆(对话上下文)
- 长期记忆(向量库 / 数据库)
- 工具调用历史
(2)规划 / 编排
- ReAct 思维链
- 思考 → 行动 → 观察 → 再思考
- 多 Skill 自动调度
(3)循环执行
模型判断:
- 还需要调用工具吗?
- 结果够不够?
- 是否可以回答用户?
(4)测试
- 边界用例
- 参数错误
- 工具失败重试
- 安全校验
2.为什么要引用工具,单纯的大模型不行吗?
单纯的大模型本质只是语言生成模型,存在知识过时,计算不准,无法操作外部世界等问题,必须要通过调用工具(tool calling/function call)来弥补,大模型负责思考和决策,工具负责执行和落地。
3.工具给大模型扩展了怎么样的能力?
工具本质是给大模型装上感知、执行、计算、记忆、专业能力,让它从纯文本生成,变成能落地真实业务的智能体。例如实时信息获取能力,精准计算与逻辑推理能力,外部操作系统能力,专业领域增强能力,长期记忆与状态管理能力
4.了解tool吗?
Tool是能被模型调用的、具体可执行的外部能力单元
它不负责思考,只负责干活。
- 没有逻辑、没有规划
- 给参数 → 执行 → 返回结果
- 是模型与外部世界交互的手脚
典型例子:
- 联网搜索工具
- 数据库查询工具
- 文件读写工具
- 发送邮件工具
- 调用第三方 API
- 代码执行器
- 计算器
Tool 的核心特征
- 原子性一般只做一件事,不做复杂任务。
- 结构化必须有明确的入参、出参格式(JSON 结构)。
- 可被调用模型通过某种机制触发它运行。
- 无状态用完即走,不记住上下文。
怎么写好一个工具
写好一个工具,关键不在于接口本身多复杂,而在于让大模型能看懂、会调用、不出错。主要抓好三件事:
- 工具描述(提示词级别的说明)
- 清晰、简洁、必填明确的入参
- 结构化、语义明确的出参
1. 工具描述(给大模型看的 “提示词”)非常重要
这是模型判断要不要调用、怎么调用的唯一依据,写不好模型就乱调用或不调用。
书写原则
- 用途明确:一句话说明这个工具是干嘛的
- 场景清晰:什么情况下应该调用
- 边界清晰:不能干什么、不处理什么
- 语言简单:不用专业黑话,模型看不懂
- 避免歧义:不写模糊词汇,比如 “大概”“可能”“相关”
错误示例:
查询用户信息
正确示例:
根据用户 ID 查询该用户的姓名、手机号、注册时间,仅用于身份核验,不返回敏感信息如密码、支付信息。
2. 入参设计(决定模型会不会传错)
模型最容易错的就是参数名、参数类型、是否必填。
写好入参的要点
- 参数名语义化:userId、orderId、phone,不要 a1、p2、x
- 类型严格:int、string、bool 明确
- 必填标记清楚:模型必须知道哪些必须传
- 枚举尽量固定:如 status=0/1 要写明含义
- 参数示例:给模型一个示例,它正确率飙升
- 参数约束:长度、格式、范围(手机号 11 位、日期格式 YYYY-MM-DD)
3. 出参设计(决定模型能不能理解结果)
返回必须结构化、字段清晰、无冗余,否则模型会理解错误、产生幻觉。
出参原则
- JSON 结构化,不要纯文本
- 字段名简单明确:code、msg、data、success
- 状态码统一:0 成功,非 0 失败
- 失败信息可读:模型能看懂并告诉用户
- 不返回无用字段:减少上下文污染
- 敏感数据过滤:不返回密码、密钥等
5.了解Function call吗?
function call就是函数调用,是大模型厂商提供的一种结构化输出能力,让模型能够判断何时需要调用外部接口,并按照约定格式返回参数,由后端系统真正执行接口,再把结果返回给模型整理输出。
核心流程
- 定义工具清单:后端把接口信息(接口名、参数、用途)以 JSON 格式告诉大模型。
- 模型决策:模型判断是否需要调用工具、调用哪个、参数是什么。
- 结构化返回:模型不直接回答,而是返回固定格式的函数调用指令。
- 后端执行:Java 解析指令,真实调用接口 / DB / 第三方服务。
- 结果回传:把执行结果再传给模型,模型自然语言总结后返回用户。
6.了解skill吗?
Skill = 面向 “任务” 的可复用能力单元
你可以把它理解成:
- LLM 会的一项 “本事”
- 不是单个函数,也不是裸工具
- 是一段逻辑 + 一组工具调用 + 提示词模板的封装
简单类比:
- Tool = 螺丝刀、扳手(单个工具)
- FunctionCall = 拧螺丝这个动作
- Skill = 组装一台电脑(完整任务)
Skill 的标准结构
一个完整 Skill 通常包含:
- 名称与描述告诉 LLM 这个技能是干嘛的
- 输入参数用户需要提供什么
- 执行逻辑(Planning)先干嘛、后干嘛、要不要查资料、要不要重试
- 绑定的 Tools调用哪些底层工具
- 输出格式返回什么结果给用户
所以:Skill 是 Tool 的上层封装,Tool 是 Skill 的执行依赖。
Skill 核心特性
-
业务封装性不只是单个接口,而是完整业务能力。例如:“报销审核 Skill”“订单查询 Skill”“简历筛选 Skill”。
-
可复用性一次编写,多场景、多 Agent、多模型都能复用,避免每个任务重新写提示词和调用逻辑。
-
流程编排能力内置 SOP(标准作业流程),支持多步骤、多工具串联,比如:查询订单 → 校验状态 → 生成说明 → 发送通知。
-
自带约束与安全可控可以明确规定:
- 允许调用哪些工具
- 禁止哪些操作
- 权限范围、敏感数据处理规则比裸奔的 Function Call 更安全、更适合企业生产。
-
触发条件明确有清晰的触发意图:什么用户问题应该启动这个 Skill,避免模型乱调用、乱执行。
-
自带知识与上下文可以绑定领域知识、文档片段、示例话术,让 Agent 更专业,减少幻觉。
-
可组合、可扩展Skill 之间可以互相调用、嵌套组合。小 Skill 拼成复杂业务流程,类似微服务架构。
-
可观测、可迭代执行日志、成功率、失败原因可追踪,能单独优化某个 Skill,不影响整个系统。
7.了解MCP吗,说说MCP的组成?
Model Context Protocol (MCP) 是一个开放标准,用于连接 AI 应用与数据源。就像 USB-C 为设备连接提供了通用接口一样,MCP 为 AI 模型提供了访问外部数据和工具的标准化方式。
MCP 核心组成(C/S 架构,4 大组件)
MCP 采用客户端‑服务器(Client‑Server)架构,核心由 MCP Host、MCP Client、MCP Server、Resources/Tools 四部分组成:
1. MCP Host(主机)
- 角色:运行 LLM 的应用环境,是用户交互入口与任务编排中心。
- 职责:
- 接收用户请求,管理对话上下文
- 决策是否调用工具、调用哪个 Server
- 编排多个 Client,管理整体工作流
- 示例:Claude Desktop、Cursor IDE、Windsurf、VSCode 等。
2. MCP Client(客户端)
- 角色:Host 内置的协议通信模块,与 Server 建立 1:1 连接。
- 职责:
- 与 MCP Server 建立连接、握手、发现能力
- 将 Host/LLM 的指令转为 MCP 标准消息
- 解析 Server 返回结果,回传给 Host
- 定位:Host 与 Server 之间的 “翻译官 / 通信代理”。
3. MCP Server(服务器)
- 角色:封装外部能力的服务端,是 MCP 体系的核心能力提供方。
- 核心能力(三大类):
- Tools:可执行的函数 / 接口(如查询数据库、调用 API、执行代码)
- Resources:可访问的数据 / 内容(如文件、知识库、向量库、Git 仓库)
- Prompts:可复用的提示词模板 / 工作流
- 职责:监听请求、执行操作、返回结构化结果。
- 示例:GitHub Server、Slack Server、本地文件 Server、MySQL Server 等。
4. Resources & Tools(资源与工具)
- 角色:被 MCP Server 封装的真实外部能力与数据。
- 范围:数据库、API、文件系统、代码仓库、第三方服务、企业内部系统等。
MCP 核心流程
- 能力发现:Client 向 Server 发起握手,获取其提供的 Tools/Resources/Prompts 列表
- 请求发起:Host 决定调用,Client 按 MCP 格式发送结构化请求
- 执行与返回:Server 执行对应工具 / 资源操作,返回标准结果
- 结果处理:Client 解析结果,回传给 Host,LLM 整理后输出给用户

怎么开发一个mcp服务
开发 MCP 服务,先选框架(优先 FastMCP),再定义 Tools/Resources/Prompts,用 stdio/SSE 传输,接入 Claude/Cursor 等客户端,最后做安全、权限、监控。
8.tool,function call,skill,mcp对比
tool就是工具,是大模型调用工具的最原子执行单位,是外部能力的具体实现,只负责执行,而function call就是告诉大模型怎么去调用执行tool,许多特定的function call加一些规则约束提示词组成了可以完成一项特定任务的skill(例如扣子工作流),而mcp就是大模型调用工具这个过程中要遵守的协议
标准化:Tool 是模型可调用的外部能力单元,Function Call 是模型以结构化形式触发 Tool 的机制;多个 Tool 调用和推理流程可以封装为 Skill,而 MCP 则是规范模型如何发现、描述和调用这些工具的协议标准。
| 维度 | Tool(工具) | Function Call | Skill(技能) | MCP(协议) |
|---|---|---|---|---|
| 本质 | 实际可执行的外部能力 | 模型输出的结构化调用格式 | 面向业务的能力封装单元 | 模型与外部的标准化连接协议 |
| 通俗理解 | 螺丝刀、接口、API | 拧螺丝的一次指令 | 完整组装流程 + 工具包 | 通用插座 / USB 规范 |
| 核心作用 | 提供具体功能:查、算、写、操作 | 让模型告诉后端:调谁、传什么参数 | 完成一整项业务任务 | 统一连接所有工具 / 模型,解决碎片化 |
| 粒度 | 原子级:单接口、单功能 | 单次调用:一次函数执行 | 业务级:多步骤、多工具、SOP | 全链路级:发现 + 连接 + 调用 + 权限 |
| 由谁定义 | 后端开发 | 大模型厂商(OpenAI 等) | Agent 开发者 / 业务方 | 行业标准(Anthropic 主导) |
| 是否带业务逻辑 | ❌ 纯功能,无流程 | ❌ 仅调用,无逻辑 | ✅ 自带 SOP、规则、约束 | ❌ 纯协议,无业务 |
| 是否需要上下文 | 不需要 | 少量(参数描述) | 非常大(提示词 + 示例 + 流程) | 很小(协议结构) |
| 通用性 | 业务内部使用 | 模型私有,不跨模型 | 平台内可复用 | ✅ 跨模型、跨客户端通用 |
| 能力发现 | 无 | 无 | 内部可管理 | ✅ 支持自动发现工具 / 资源 |
| 与 LLM 关系 | 被调用方 | LLM 负责输出调用指令 | LLM 负责决策与执行 Skill | LLM 应用通过 MCP 统一接入 |
| 典型形态 | 接口、函数、第三方 API | JSON 结构(name/parameters) | Skill 文件、配置、流程编排 | Server + Client + JSON-RPC |
| 失败处理 | 后端抛异常 | 模型重新生成参数 | Skill 内部重试、反思、降级 | 协议层错误码、重连、超时 |
| 适用场景 | 单一功能调用 | 简单单次工具调用 | 复杂业务:订票、报销、代码开发 | 企业级多模型、多工具统一接入 |
| 后端类比 | Controller/Service 接口 | API 入参格式 | 微服务 / 业务模块 | RPC/HTTP 通信协议 |
9.mcp和skill哪个上下文占用比较大
1)MCP 上下文很小
MCP 做的事情:
- 定义通信格式:请求、响应、错误码
- 能力发现:有哪些工具、资源
- 传输结构化数据,不带业务逻辑
它更像HTTP 协议,只规定怎么传,不传业务文档。→ 给 LLM 的提示词里只需要塞极简协议格式,token 占用极低。
2)Skill 上下文非常大
Skill 本质是完整业务逻辑,必须塞进上下文:
- 技能用途、触发条件
- 详细 SOP 步骤
- 输入输出规则
- 约束、禁忌、权限
- 示例对话、示例调用
- 领域知识、注意事项
一个稍微复杂的 Skill,可能几百~几千 token,多加载几个 Skill,模型上下文直接吃满。
10 怎么写好提示词
提示词工程,就是用清晰、结构化、有约束的自然语言,把人的意图精准翻译给大模型,让它像可靠服务接口一样稳定输出。
- 明确角色先告诉模型它是谁:专家、助手、代码审查员、面试官、Agent 决策者。
- 明确任务清晰告诉它要做什么,不要模糊、不要多任务混杂。
- 明确约束限制输出格式、长度、风格、禁忌、敏感信息过滤。
- 提供上下文给足背景、历史、数据、文档片段,减少模型瞎猜。
- 给出示例(Few-shot)给 1~3 个输入输出示例,效果提升巨大。
- 指定输出格式强制 JSON、列表、分段、步骤,方便后端解析。
- 要求思考过程让模型先思考再输出,减少幻觉(ReAct 思想)。
11 什么是上下文工程
上下文工程,就是对传入大模型的所有上下文信息做结构化、精简、优先级排序、持久化与召回管理,在有限 token 限制下,保证模型推理准确、稳定、不溢出。
它解决几个核心痛点:
- 上下文窗口有限,不能无限塞历史
- 信息杂乱会导致模型混乱、幻觉
- 长对话、多轮 Agent 必须记住关键状态
- 外部知识库不能全塞进去,要精准召回
上下文工程核心做哪些事?
-
上下文裁剪 / 压缩
- 只保留关键信息,删除冗余对话
- 对旧信息做摘要,而不是全量保留
-
结构化管理记忆
- 短期记忆:最近几轮对话
- 长期记忆:摘要、关键实体、任务状态
- 外部记忆:向量库检索的知识片段
-
优先级调度
- 最新信息 > 重要任务信息 > 旧闲聊
- 保证关键数据一定在窗口内
-
防溢出控制
- 实时 token 估算
- 自动截断、滑动窗口、滚动上下文
-
外部知识召回(RAG 核心)
- 不把全量文档塞进去
- 只召回最相关的几条知识注入上下文
-
状态与变量提取
- 把用户姓名、订单号、任务目标抽成结构化字段
- 避免模型在长对话中 “失忆”
上下文过长怎么办?
上下文过长,核心就三件事:裁剪、压缩、召回,再配合窗口控制,保证不爆 token、不丢关键信息。
1. 滑动窗口(最常用、最简单)
- 只保留最近 N 轮对话,旧的直接丢掉
- 实现简单、性能好
- 缺点:很早的关键信息会丢失
2. 摘要压缩(最通用)
- 把早期对话丢给 LLM 生成精简摘要
- 只保留摘要 + 最新几轮完整对话
- 适合长对话、多轮 Agent 任务
3. 结构化抽取(效果最稳)
不从文本层面删,而是提取关键信息:
- 用户 ID、订单号、任务目标、关键决策
- 转成 KV 结构或极简列表
- you:
用户=小明,查询订单=123456,问题=物流状态 - 大幅降 token,信息几乎不丢
4. 向量库召回(RAG 思路)
- 把历史对话向量化存入向量库
- 每次只检索和当前问题相关的历史
- 不相关的历史完全不进上下文
- 适合超长对话、跨天记忆
5. 分层记忆(企业级标准方案)
- 短期记忆:最近几轮完整对话
- 中期记忆:摘要 + 关键事实
- 长期记忆:向量库存储
- 只把必要层塞进模型上下文
6. Token 估算 + 动态截断
- 实时计算 token 数
- 达到阈值自动触发压缩 / 摘要
- 防止直接触发模型 “上下文超限” 报错
7. 清理冗余信息
- 删除问候、客套、重复语句
- 去掉工具调用的冗余返回字段
- 只保留业务有效内容
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)