AI 基础概念
LLM(Large Language Model)大语言模型,几乎都是基于 Transoformer 训练而成,简称大模型。大模型本质上是一个庞大的数学函数,跑着一些复杂的矩阵运算。它在工作过程中接受的是数字,返回的也是数字,所以人类与大模型之间需要有工具进行编解码,这个编解码器就是 Tokenizer。
当我们向大模型提问时,Tokenizer 会对问题进行切分并映射为一个数字,这个数字就是 Token ID,而切分出的每一部分文字则是 Token,Tokenizer 将编码后的数字传给大模型,大模型会每次返回一个 Token(因为每次只返回一个,所以不需要切分)Tokenizer 再将 Token 进行解码映射得到文本,不断重复这个过程得到完整回复(所以大模型回答问题时会一个词一个词的输出)。
Token 是大模型处理文本的基本单位,但并不一定是单独的一个词(例如程序员就可能被拆分为 程序 和 员 两个 Token, helpful 也可能被拆分为help 和 ful),平均来讲 1 个 Token 大约为 0.75个英文单词 或 1.5~2个汉字。
平时我们和大模型交流时大模型可以结合之前的回复,原因是我们不只发送了当前的问题,还会把之前的对话也一起发送过去,这也引出了 Context(上下文)的概念,代表每次大模型处理任务时所接受到的信息总合(问题、历史对话都是其中的一部分,还包括工具列表,输出的 Token, System Prompt等)。Context 是有限制的,用 Context Window (能容纳的最大 Token 数量)来衡量,现在主流大模型的 Context Window 一般都不低于 100w。
假如我们需要大模型基于某个 PDF 中的内容进行回复,把整个 PDF 传入并没有必要,RAG 可以从文档中抽出与问题相匹配的部分片段,这样就既避免 Context Window 的限制,又节省了成本。
Prompt(提示词)即大模型接收的具体问题或指令,一个好的 prompt 应该是清晰的、具体的、明确的,基于此引出了 Prompt Engineering(提示词工程),研究如何更精准的让大模型理解提问者的意图。有的时候我们不只希望告诉大模型需要做什么,也希望告诉它以什么身份来做这个事,这引出了两种不同的 Prompt,即 User Prompt 和 System Prompt。
System Prompt(系统提示词)由开发者在后台配置,例如对大模型配置:你是一个耐心的数学老师,当学生问你问题时,不要直接给答案,要进行提示引导学生思考。
User Prompt(用户提示词)即用户输入的问题,当大模型配置了 System Prompt,就会结合 System Prompt 对问题进行回答。
在大模型工作时无法感知外界环境(例如实时定位,实时天气),因为它是根据训练数据来预测词的,这就需要 Tool(工具、大模型用来感知和影响外界的函数) 了,例如天气函数输入城市和日期,返回温度、风力等信息,但大模型只能生成文本,无法直接和工具进行交流,只能通过平台传递信息。以下是一个向大模型咨询天气的示例:
bash
用户 平台 大模型 天气工具
-----------> 上海今天天气怎么样
-------------------------> 上海今天天气怎么样(和工具列表)
调用天气查询(参数)<------------------
------------------------------------------------------------------> 调用
返回结果<-----------------------------------------------------------
------------------------------>返回结果
天气信息如下...<--------------------
天气信息如下...<-------
- 大模型的作用就是选择合适的工具并生成对应参数,以及对结果进行归纳总结。
- 工具的作用就是完成对应的职责。
- 平台的作用是串联起整个流程。
平台要把工具列表传给大模型,并支持调用工具,因此需要先把工具接入到平台里,MCP(Model Context Protocol)模型上下文协议为统一的接入标准。
当我们对大模型发出如下的问题:告诉我今天的天气,如果有雨的话为我推荐最近的商店去买伞。
bash
思考 -------> 调用定位工具 --------------> 获取结果 ----
----> 思考 ----------> 根据定位调用天气 -----------> 获取结果(有雨)-----
----> 思考 ----------> 调用工具查询商店 -----------> 获取结果 ----------
----> 思考 ----------> 给出最终答案
上述的流程中大模型已经有了一定程度的规划能力,我们称这种能自主规划,自主调用工具直至完成用户任务的系统为 Agent,目前包括 Claude、Codex、Gemini CLI 等,使用的构建模式包括 ReAct 和 Plan And Execute。
在没有任何设定的情况下,询问大模型 "我要出门,该带些什么" 时得到的回复可能是手机、身份证等,假如我希望在我询问这个问题时大模型首先调用天气工具,接着结合天气和我的习惯(例如下雨带伞,污染指数高戴口罩)给我一个特定格式的输出,只能每次提问都带上一堆的习惯甚至示例。Agent Skill 就是解决这个问题的,它的本质就是提前写好塞给 Agent 的说明文档,按照特定的格式编写好后放入指定位置,Agent 在启动时就会读取对应的 Skill。
内容总结于视频:从 LLM 到 Agent Skill