动手学大模型开发
一,大模型简介
概念
大语言模型(英文:Large Language Model,缩写LLM),也称大型语言模型,是一种人工智能模型,旨在理解和生成人类语言。
通常,大语言模型 (LLM) 指包含数百亿(或更多)参数的语言模型,这些模型在大量的文本数据上进行训练,例如国外的有GPT-3 、GPT-4、PaLM 、Galactica 和 LLaMA 等,国内的有ChatGLM、文心一言、通义千问、deepseek等。
在这个阶段,计算机的“大脑”变得非常巨大,拥有数十亿甚至数千亿的参数。这就像是将计算机的大脑升级到了一个巨型超级计算机。这让计算机可以在各种任务上表现得非常出色,有时甚至比人类还要聪明。
为了探索性能的极限,许多研究人员开始训练越来越庞大的语言模型 ,例如拥有 1750 亿参数的 GPT-3 和 5400 亿参数的 PaLM 。尽管这些大型语言模型与小型语言模型(例如 BERT 的 3.3 亿参数和 GPT-2 的 15 亿参数)使用相似的架构和预训练任务,但它们展现出截然不同的能力,尤其在解决复杂任务时表现出了惊人的潜力,这被称为“涌现能力”。以 GPT-3 和 GPT-2 为例,GPT-3 可以通过学习上下文来解决少样本任务,而 GPT-2 在这方面表现较差。因此,研究界给这些庞大的语言模型起了个名字,称之为“大语言模型(LLM)”。而 LLM 的一个杰出应用就是 ChatGPT ,它是 GPT 系列 LLM 用于与人类对话式应用的大胆尝试,展现出了非常流畅和自然的表现。
能力
1,涌现能力(emergent abilities)
简单来说,涌现能力就是:当模型的规模(参数量、数据量)突破某个临界值时,模型突然 “学会” 了它在小规模时完全无法完成的任务。且这个临界值是无法预测的。
涌现能力的具体表现
1,上下文学习 (In-Context Learning)
通俗解释: “临时照猫画虎” 的能力。 比如你不需要教模型什么是 “防抖” 或 “节流” 的原理(不用训练),你只需要在对话框里给它看一段代码示例。你说: “这是一段防抖代码(贴代码),请按照这个格式,帮我写一个节流代码。”模型并没有真正 “学会” 新技能,它只是在当前的对话窗口里,识别出了你的 “输入输出模式”,然后模仿着写了出来。关掉对话,它就忘了。
2,指令遵循 (Instruction Following)
通俗解释: “听懂人话” 的能力。 比如以前的 AI(比如早期的 GPT-3),你问它 “怎么居中”,它可能会回你一堆
<center>标签的历史文档。现在的模型(ChatGPT 等),你直接用自然语言下命令。你说: “帮我用Flexbox写一个垂直水平居中的 div,并且加上淡入动画。”它能准确理解你指令里的意图(Flexbox、居中、动画),而不是像搜索引擎一样只匹配关键词。它是把自然语言翻译成了机器逻辑。
3,逐步推理 (Step-by-Step Reasoning)
通俗解释: “写复杂逻辑时的草稿纸” 能力。 比如你让模型直接写一个 “带权限控制、缓存管理和错误重试的 Axios 封装”,小模型可能直接崩了或者乱写。
但有了逐步推理能力,你可以让它(或者它自己)把大任务拆碎。你说: “我们要封装 Axios。第一步,先定义接口类型;第二步,处理请求拦截器;第三步,处理错误。一步步来。”它会先写类型,确认没问题,再写下一步。就像你写复杂算法时不能一步到位,必须先在草稿纸上画流程图一样。模型通过 “自言自语” 拆解步骤,避免了一步登天导致的逻辑混乱
2,作为基座模型支持多元应用的能力
通俗解释: “一个大框架搞定所有需求” 的能力。
- 前端场景:以前做项目,得给每个功能单独写工具(比如表单用 Formik、图表用 ECharts、动画用 Animate.css),又乱又费时间。
- LLM 这里:基座模型就是一个 “超级前端框架”(比如把 React+Vue+Angular 的能力全融进去),不管你要做聊天机器人、写代码、做翻译,都不用单独开发小模型,直接在这个大框架上改改就能用,省人力还统一。
3,支持对话作为统一入口的能力
通俗解释: “用聊天框代替所有按钮 / 界面” 的能力。
- 前端场景:以前用 App 得点各种按钮(比如点 “搜索” 按钮查天气、点 “设置” 按钮改字体),操作繁琐。
- LLM 这里:对话就是 “万能输入框”—— 你直接打字说 “查下明天北京的天气,顺便把字体调大”,模型能听懂这句话里的两个需求,直接帮你完成,不用再点多个界面。就像把所有功能都塞到一个聊天框里,用自然语言操作。
特点
- 巨大的规模: 像你电脑里装了个 “超级大的代码库”,包含了所有编程语言、框架的代码(参数 = 代码量)。
- 预训练和微调: 先学 “通用编程语法”(预训练,比如所有语言的变量、循环规则),再针对 “React 项目” 专门练(微调,只学 React 的组件、钩子)。
- 上下文感知: 模型能记住 “前文说过啥”,比如你先提 “我要做个登录页”,后面说 “把按钮改红”,它知道是改 “登录页的按钮”。
- 多语言支持: 管你用中文、英文还是其他语言和它交流,它都能理解,还能帮你翻译。
- 多模态支持: 模型不止能 “读文字、写文字”,还能看懂图片、听懂语音,相当于同时具备 “文字处理 + 图片识别 + 语音转写” 的功能。
- 涌现能力: 模型 “规模够大后”,会突然解锁之前不会的技能(比如小模型只会聊天,大模型突然会写代码了),是 “量变引发的质变”。
- 多领域应用: 模型不止能聊天,还能写文案、做翻译、写代码、当客服,相当于一个 “万能工具”。
- 伦理和风险问题: 模型可能会说假话、泄露隐私,或者被用来写有害内容,所以用的时候得 “小心把关”。
LangChain
你可以把 LangChain 理解成 LLM 界的 “前端工具集成库” —— 就像你用 React+Axios + 状态管理库搭复杂页面,LangChain 是帮你把 LLM(比如 GPT)和各种外部工具(数据库、API、本地文件)“串起来” 做实用应用的工具包,不是自己造 LLM,是 “让 LLM 更能干”。
1. LangChain 简介
你可以把它想成 “LLM 的插件平台 + 工作流引擎” :
- 比如你想做 “让 AI 读你本地的前端文档,然后回答你代码问题”——LangChain 就能帮你把 “读本地文件”“传给 LLM 分析”“返回回答” 这几步连起来,不用自己写一堆胶水代码。
- 核心作用:降低 “用 LLM 做复杂应用” 的门槛,像前端的脚手架 / 组件库一样省事儿。
2. LangChain 发展历史
- 2022 年底刚出来,因为当时大家发现 “只调用 LLM 接口不够用,得让它连外部数据 / 工具”,所以 LangChain 快速火起来;
- 后来迭代很快,现在已经是 LLM 开发里的 “标配工具之一”—— 类似前端里当年的 Vue Router,出来就成了生态必备。
3. LangChain 核心组件(对应前端类比)
| LangChain 最新核心组件 | 前端对应工具 / 概念 | 功能类比(一句话讲清) |
|---|---|---|
| Models(模型) | Axios 统一请求封装实例 | 统一封装不同 LLM / 嵌入模型的调用,像 Axios 封装不同后端接口的请求格式 |
| Prompts(提示) | React JSX 模板 / Vue 模板 | 就像前端的 JSX 模板,提前写好 “带变量的提问格式”,比如"请解释这段前端代码:{code}",不用每次手写重复内容。 |
| Chains(链) | 前端流程控制函数(如 Vue 组合式函数) | 串联多步骤(读文档→传 LLM→整理回答),像前端 “请求→处理数据→渲染” 的流程逻辑 |
| Agents(智能体) | 智能表单自动化逻辑 | 让 LLM 自主决策调用工具(如查官网版本),像表单自动触发对应验证 / 请求工具 |
| Memory(记忆) | Pinia/Redux 状态管理库 | 存储对话上下文,像状态管理库存页面交互的历史数据 |
| Document Loaders(文档加载器) | FileReader/Axios 数据拉取 | 读取本地 / 远程文档,像前端读本地文件或拉取接口数据 |
| Vector Stores(向量存储) | IndexedDB + 自定义索引 | 存储文档的向量格式并建索引,像前端存缓存数据并建索引方便查找 |
二,调用大模型API的一些基本概念
常用参数
Prompt
作为前端开发,你可以把 Prompt 理解为 「发给 LLM 接口的 content 参数值」,本质是一段结构化 / 半结构化的文本,用来告诉模型「你要做什么、怎么做、基于什么信息做」。
Temperature
控制模型输出随机性的核心参数,取值范围通常为 0 ~ 2(不同模型略有差异)。你可以把它理解为:模型生成回答时的「冒险程度」开关。
| 取值区间 | 核心特点 | 适用场景 |
|---|---|---|
| 0 | 完全确定性输出,每次回答几乎一致;只选概率最高的 Token | 固定格式输出、代码生成、精准信息查询 |
| 0.3~0.7 | 平衡随机性与准确性,输出稳定且略带灵活 | 大多数日常场景:技术咨询、问题解答、代码优化 |
| 1.0~1.5 | 随机性增强,输出更有创意,可能出现新颖观点 | 创意性内容生成、方案发散 |
| 1.5~2.0 | 极高随机性,输出可能天马行空,甚至出现逻辑错误 | 创意 brainstorming、趣味性生成 |
System Prompt
System Prompt(系统提示词)就是给大模型的 「全局初始化配置」,相当于在对话开始前,先给模型 “装个系统、定个人设”,让它在整个对话过程中都遵守这个设定。
{
"system prompt":"你是一个幽默风趣的个人知识库助手,可以根据给定的知识库内容回答用户的提问,注意,你的回答风格应是幽默风趣的",
"user prompt":"我今天有什么事务?" // 用户输入的
}
其他参数概念
1,核心输出控制参数
这些参数直接决定模型生成内容的长度、多样性和重复度,和之前了解的 Temperature 是 “搭档” 关系。
| 概念 | 通俗解释 |
|---|---|
| Max Tokens | 限制模型输出的最大 Token(词 / 子词)数量,防止输出过长或超出模型的「上下文窗口」容量 |
| Top P(核采样) | 和 Temperature 类似,但更 “可控”:模型只从概率总和前 N% 的候选词中选择(比如 Top P=0.9,只选概率累计前 90% 的词)。 |
| Presence Penalty / Frequency Penalty | 防止模型重复输出相同内容:Presence Penalty:降低「已经出现过的词」的概率,Frequency Penalty:降低「高频出现的词」的概率。 |
| Stop Sequences | 设定 “停止关键词”,模型遇到这些词就立刻停止生成。 |
2,对话上下文相关
这些是实现多轮对话连贯性的关键,前端做聊天类应用时一定会用到。
| 概念 | 通俗解释 |
|---|---|
| Messages 数组 | 多轮对话的「上下文容器」,包含每一轮的 role(角色)和 content(内容),需要把历史对话全部传给模型,它才能理解上下文 |
| Role 角色 | 除了 system(系统提示)和 user(用户提问),还有 assistant(模型之前的回复),用来标记每一条消息的来源 |
| Context Window(上下文窗口 | 模型能处理的「输入 + 输出」最大 Token 总量(比如 GPT-4o 是 128k Token),超出会自动截断输入 |
3,输出体验与格式
这些参数让你能更灵活地控制输出方式和格式,方便前端直接解析和展示。
| 概念 | 通俗解释 |
|---|---|
| Stream(流式输出) | 模型边生成内容边返回,而不是等全部生成完再一次性返回 |
| Format(强制输出格式) | 要求模型输出固定格式(如 JSON、Markdown、XML),避免额外解析成本 |
| Logprobs | 返回每个生成词的概率值,用于调试或评估输出的置信度 |
4,模型与能力相关
这些是选择和评估模型的基础,决定你能调用的 “工具” 有多强。
| 概念 | 通俗解释 |
|---|---|
| Model(模型选择) | 不同的模型对应不同的能力(如 GPT-4o 擅长复杂推理,GPT-3.5-turbo 擅长快速响应,Qwen-7B 适合本地部署 |
| Embeddings(嵌入向量) | 把文本转换成数值向量,用于语义搜索、相似度计算(比如判断两个问题是否相似),或者用于检索增强(RAG) |
| Seed(随机种子) | 设置固定种子后,相同输入会生成相同输出,用于复现结果 |
本地大模型部署Ollama
1,确认电脑配置
- 最低配置(能跑起来):Windows 10/11、macOS 12 + 或 Linux 系统,8GB 内存,10GB 可用存储。
- 推荐配置(用得流畅):16GB 以上内存,有 NVIDIA GPU(4GB 以上显存)或苹果 M 系列芯片,50GB 以上 SSD 存储。
2,下载安装
可以直接运行安装包,直接就安装了,不过直接运行安装包,Windows系统是默认安装在C盘目录下的。
如果需要更换默认路径则可以通过命令的方式将Ollama安装到其他盘的某个目录下。
OllamaSetup.exe /DIR="D:\Ollama" #DIR指定安装路径
执行上述命令后,会弹出OllamaSetup.exe安装窗体界面,此时我们点击Install按钮等待安装完成即可。
3,开源大模型的安装。
ollama软件安装完成后,可以直接在界面中安装开源大模型。如图:
也可以直接使用命令行安装。
ollama pull qwen3:0.6b
默认的模型安装地址,Windows也是在C盘中。如要更改安装目录,直接点开软件的设置,更改则可。如图: