part1模型扫盲


什么是大模型

大模型,LLM(large Language ),大语言模型

token

Token是大模型处理文本的”基本单位”,它既不是一个字,也不是一个词,你可以理解为把文字”切碎”后的一个个
小碎片。

比如”我今天心情很好”,不是一个字是一个token,而是”我”、“今天”、“心情”、“很好”对应1~2个token

上下文窗口

大模型每次对话时,能看到的内容总量上线,用token来衡量
就像黑板,没有记忆的话,之前讨论的东西就记不住了
除非压缩,即把写过的内容精简

无记忆

大模型不会记忆,它之所以给人记住了的感觉,是因为应用层的代码负责记忆,应用都会把你们之前的所有历史对话,给AI看

对话的角色结构

system、user、assistant
既然多轮对话是靠传历史列表实现的,那这个列表长什么样?

调用大模型 API 时,你传入的不是一段裸文字,而是一个有结构的消息列表,每条消息都有一个角色(role):

  • system:系统提示,给模型的身份设定和行为规则。比如「你是一个 OnCall 助理,只能回答和系统故障相关的问题,回答必须简洁」。这部分用户看不见,但模型会严格遵守
  • user:用户的输入,就是你说的话
  • assistant:模型之前的回复,多轮对话时,把历史回复也打包进来,模型才知道「之前说了什么」

用伪代码表示,大概长这样:

1
2
3
4
5
6
messages = [
{ "role": "system", "content": "你是一个 OnCall 助理,回答必须简洁" },
{ "role": "user", "content": "昨晚数据库报警是什么原因?" },
{ "role": "assistant", "content": "是慢查询导致的连接池耗尽。" },
{ "role": "user", "content": "怎么预防?" } // 当前问题
]

模型看到这整个列表,才能知道「用户在问什么、之前说过什么、我应该怎么回答」。

这个结构非常重要,后面学 Prompt 的时候,我们会专门讲怎么用好 system 角色,它是控制模型行为最核心的手段

这个角色就像是我们在写提示词的时候为什么要经常给AI说,你是什么什么,然后怎么怎么样,看到这里似乎我了解的更深了一点了

大模型不能做什么

能做什么我们丰富的工程经验已经很了解了
不能做什么?
1.没有执行能力,不能和外部世界交互。这个时候就需要很多的这个tool,MCP这些呀
2.知识有保质期,还容易瞎编,也就是它不知道的情况下不一定会说我不知道,而是可能瞎编,也就是我们说的幻觉
3.上下文窗口邮上线,内容太长了就记不住
我们RAG就是要解决这个问题,不把全部内容塞进窗口,而是按需检索最关键的片段

什么是prompt

prompt,这个概念应该是我24年刚高考完建立的,当时用mid画画那个,每次要画图都要先输入下/prompt

写好prompt的6个核心原则

1
2
3
4
5
6
1.首先就是前面说的,你要和AI说你是什么什么身份
2.要做什么比不要做什么更加适合
3.多给大模型业务背景信息之类的
4.指定输出格式,比如是json、md还是什么格式
5.给几个示例,胜过写一堆规则
6.可以让大模型先试试写出思考逻辑或者说梳理关键条件步骤,然后给出结论

在agent开发中,只有一个行为能控制大模型,就是prompt

什么是agent

我的理解是大模型,或者说几年前看到的那种AI,就是对话式的,只能回答问题,好的能生成图片视频啥的。更多方面的生产上还是没有用到
agent,用上了工具,可以在我们电脑本地写word或者网页直接上手写东西,都是一点问题没有的

agent的四个组件
1.LLM,大模型
2.tools,工具
3.Memory,记忆
4.Loop执行循环,不断重复思考,行动,观察这个循环,直到任务完成

agent的工具原理,ReAct,推理,观察,再推理的这样一个过程

agent的另外一个工作原理,Plan and execute
之前的这样一个逻辑是说,ReAct是边想边做,任务多了容易迷路,然后
token消耗的也比较多等等问题

ReAct=边开车边看导航:每走到一个路口,才决定下一步拐哪。灵活,但如果最开始方向就偏了,容易绕很
多冤枉路
PlanandExecute=出发前规划好完整路线:先打开地图,把走哪条路、哪里转弯、预计几点到全部规划
好,再出发。执行时按路线走,不用每个路口重新想

所以这个PlanandExecute就有两个阶段,一个是设定目标,另一个是执行

任务步骤少,就是ReAct
多就是PlanandExecute
再复杂就是PlanandExecute做外嵌,每个子任务内部跑ReAct

workflow(工作流),就是提前写好一个确定的流程

tool

这个可能就按照字面意思理解可能就足够了的

Function Call

一个工具就是:函数本体+名称+描述+参数定义,大模型靠工具描述来判断要不要调这个工具
但是大模型只会说话,agent调用工具的话就必须知道调哪个工具,什么参数

Function Call的本质是一套大模型和agent之间的标准化工具调用协议
用一套固定的json结构返回调用命令

大模型根据我们开发者写的文档,决定要不要调用某工具之类的

然后大模型调用的时候就会严格按照格式调用传参

然后工具返回结果,agent把结果回传给大模型

MCP

我初步的一个理解是,agent要用到浏览器或者BP抓包的时候,要配置个这玩意

这个就是类似type-c,现在手机充电都是这玩意,以前苹果有自己的,安卓有自己的,菠萝有自己的
然后又要有对应的线,电脑上又得支持这么多线

MCP就是统一起来了的。工具写一个MCP server 。然后AI应用各写一次MCP clicet,然后一个工具就只要一个了。就像只要一个type-c的线,各种手机都能冲上电了

MCP server的三种能力,其实也就像我觉得,用MCP连接上浏览器,确实有点像一个工具了

1.tools
2.resources
3.prompts

有无MCP对比
每个工具自己写Function Call
有就是直接接入已有MCP server,工具现成可用

skills

应该这样说,prompt是skill的灵魂,但不是全部。因为skills会有脚本啥的也算在其中呀,就肯定多了对应情况直接调用脚本的这个

RAG

我现在的理解就是先检索,再回答
中间的四个步骤也算是比较清楚
就是
1.加载文档
2.文本切块
3.向量化
4.存入向量数据库

没有RAG,无法访问,模型只有通用知识
有RAG,可以基于私有知识

向量数据库

这个就需要比较深厚的基础知识了

对比维度 普通数据库(MySQL) 向量数据库(Milvus/Pinecone…)
核心用途 结构化数据存储和精确查询 向量存储和相似度搜索
索引结构 B+ 树(适合精确匹配/范围查询) ANN 索引,如 HNSW(适合近邻搜索)
查询类型 id = 5、age > 18、LIKE 匹配 找 top-k 个最相似向量
向量相似度查询 不支持(只能暴力全表扫描) 原生支持,毫秒级
百万级向量查询速度 数秒(暴力遍历,不可用) 毫秒级(ANN 索引加速)
数据形式 表格(行列结构) 向量 + 元数据
适合 RAG 吗 存能存,查不行 专为这个场景设计

harness

prompt,更像是塑造模型的概率空间
context,管理上下文
harness,让模型在真实执行中,持续做对。
Prompt是Context的一部分,Context是Harness的一部分。

理解的话,就像是这个单词本来的一个意思,限制,马缰的这么个意思
模型就像是下线,然后Harness就像是下线

驾驭工程,从原来的提示词把问题讲清楚,到把信息搜队,再到让模型在真实环境中持续做对

之前模型没有做对,我们往往从提示词出发,可以再考虑说agent.md加一条规则,补一个自动化测试等等

loop

也像这个单词的字面意思
循环
发现任务,布置任务,检查结果,决定下一步
这一套流程设计成一个能自己运转的循环
一个提示词是本次得到的答案变好了,loop,收益是,之后每一次循环都变好


文章作者: wuk0Ng
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 wuk0Ng !
评论
  目录