agent智能体介绍

74 阅读6分钟

围绕 [具体场景,如智能客服 / 代码助手],用 LLM 做决策,结合工具(Function Call)+ 记忆(短期对话 + 长期知识库(向量数据库等))实现任务的智能体

名词介绍:

LLM:

主要擅长于推理,但是对于一些特地领域,缺少对应的训练的数据,可能会存在幻觉问题;解决方法:1、模型微调;2、RAG索引增强;

Function Call:

由于大模型并不是一个全能选手,比如上网,订机票这种场景无法实现,便有了工具去辅助大模型去实现,即是符合MCP协议的工具方法,本质也是一个函数,定义类大模型调用的入参,返回参数,具体逻辑根据业务实现;分为MCP client,server,即调用端,服务端;

Token:

是文本处理的基础语义单元,是模型理解、生成和处理语言的最小 “砖块” ,它的拆分规则由分词策略决定,常见情况:

  • 单词级:简单词可能直接成 Token,如 “hello” 作为 1 个 Token 。
  • 子词级:复杂词会拆成子词,像 “unsmiling” 拆成 “un” + “smil” + “ing” ;像 GPT 系列用 BytePair Encoding(BPE),依据字符对频率合并生成子词 。
  • 字符级:特殊场景(如低资源语言)按字符拆分,比如 “cat” 拆成 “c”“a”“t”
粒度类型单位示例应用场景
Utterance“今天下午开会。”对话系统、多轮交互分析
句子(Sentence)“她喜欢读书,也喜欢运动。”文本摘要、机器翻译
词(Word)“苹果”“跑步”词向量模型、词性标注
篇章(Document)一篇完整文章文档分类、主题模型

简单说,分词器把输入文本拆成一个个 Token ,模型基于 Token 序列理解语义、生成内容,输出时再转回人类可读文本 。

向量数据库:

向量数据库是专门存储、管理高维向量数据的系统,核心通过向量相似性(如余弦相似度、欧氏距离)实现检索。它将文本、图像、音频等非结构化数据,经模型(如大语言模型)转换为 “向量嵌入”(高维数字数组,可分为不同维度,维度越大,运算量越大),再存储这些向量并为其建立索引,支持快速相似性搜索

核心指标:

  1. 检索性能

    • Top-K 召回率 = (\frac{R}{M})(衡量 Top-K 结果覆盖了多少真正相关数据)。
    • Top-K 准确率 = (\frac{R}{K})(衡量 Top-K 结果中有多少是真正相关的)
    • 查询延迟:从发起查询到返回结果的时间,直接影响用户体验(实时推荐场景需亚秒级响应)。
  2. 存储能力

    • 向量规模:支持存储的向量总量(如亿级、十亿级),决定系统对数据增长的承载能力。
    • 压缩效率:通过量化(如 PQ 压缩)等技术减少存储占用,平衡精度与成本。

度量方式(即向量坐标相似度的计算)

数据类型推荐度量原因
文本 / 语义向量余弦相似度关注语义方向,忽略词频差异(长度)。
空间坐标 / 数值特征欧氏距离、曼哈顿距离关注绝对位置或线性差异。
二进制编码 / 哈希向量汉明距离直接计算二进制位差异。
高维稀疏向量余弦相似度、曼哈顿距离避免高维下欧氏距离的 “维度灾难”。
记忆
  • 短期存对话窗口(如最近 5 轮,粒度是 utterance),用列表 / 缓存;大模型本身具有上下文,但是限于token限制,时间维度长了之后,自己本身无法筛选有效信息,可以利用列表筛选符合自己的上下文;或者记录对应的历史动作,通过提示词传入
  • 长期存向量库(Embedding 历史关键信息),检索相似上下文辅助决策。
  • 总结为如下:
场景类型纯依赖大模型上下文手动实现短期记忆推荐方案
闲聊机器人✅ 简单可用❌ 没必要列表缓存
多轮任务协作❌ 超窗口会断逻辑✅ 需精准控制历史结构化记忆
高成本场景(如 GPT-4)❌ Token 费爆炸✅ 压缩历史降低成本向量压缩
提示词

指如何与大模型沟通的原则,说的越好,越理解你的需求,主要原则如下

  1. System 定位清晰:需明确具体功能定位,如 “你是一个关键词生成器”“你是一个摘要提取工作者” ,避免模糊表述(如 “你是一个智能助手” )。
  2. 输入信息有明确介绍:要清晰说明输入内容,像 “输入文件 XXX.txt 记录了用户的属性信息”“目前两份埋点设计资料 sheet,第一个埋点事件属性 sheet 为分场景及业务下的埋点方案,第二个场景通用 sheet 为系统预置的通用埋点” ,不能简单说 “这是输入文件” 。
  3. 详细具体的学习步骤:需明确学习及后续操作步骤,例如 “请你学习以上资料和 sheet 文件,后面你将根据资料进行埋点设计,设计步骤如下:步骤 1:提炼关键词并挖掘可能发生的事件信息;步骤 2:关联学习文档并挑选关联埋点数据;步骤 3:根据关联埋点数据,输出埋点设计方案” ,避免步骤模糊(如 “请你根据历史文件和业务描述提炼本次业务中可能涉及的埋点信息” )。
  4. 详细的输出方式和样式:明确输出格式要求,如 “根据关联埋点数据,输出 JSON 格式的埋点方案” ,而非笼统说 “根据关联埋点数据,输出埋点设计方案” 。
  5. 重要内容 “举例说明” :对输出等重要内容,需举例清晰说明格式,如说明输出 JSON 格式埋点方案时,列举 “行业:xxx,板块:xxx,事件名:xxx(事件名命名参照大蛇模式命名法),事件显示名:xxx,属性名:xxx(蛇形命名法(snake case,属性显示名:XXX,属性类型:xxx)的 JSON 格式。其中输出必须包含行业、板块、事件名、事件显示名、属性名,属性显示名,属性类型” ,不能仅说 “根据关联埋点数据,输出 JSON 格式的埋点方案” 。
  6. 英语提示优于中文提示效果:如功能定位用 “You are a Keyword Generator” 比 “你是一个关键词生成器” 效果好 。
所以一个智能体调用的大致逻辑为

输入--->查询向量数据||调用tool--->筛选向量数据,生成提示词--->输入给大模型--->返回结果

当然这个链可以非常多节点,节点的输出可以作为下个节点的输入;有兴趣可以看看LangChain框架