date
Mar 19, 2025
slug
2025-03-19-the-application-level-of-LLM
status
Published
tags
神经网络理论
LLM
summary
本系列文章的目标是从非AI从业者的角度出发,去尝试理解AI及其大模型在应用中的基本概念,争取通过对这些概念的深入理解和澄清,建立对大模型的工作机制流程以及应用框架方面的知识结构,从而在我们的生活和工作中更好的使用AI。
type
Post
category
AI
AI summary
本系列文章的目标是从非AI从业者的角度出发,去尝试理解AI及其大模型在应用中的基本概念,争取通过对这些概念的深入理解和澄清,建立对大模型的工作机制流程以及应用框架方面的知识结构,从而在我们的生活和工作中更好的使用AI。
LLM大语言模型在特定行业领域中的应用,大致可以分为下图所示的几种级别。其中,从头开始设计和构建大模型当然是难度和门槛最高的,而最简单的应用就是我们所谓的提示词工程(Prompt Engineering),即在向LLM大语言模型提问的时候,对提问问题的语言组织结构(提示词,Prompt)进行精心安排,使大模型的输出更符合自己的提问需求。

从头开始构建模型
对于从头开始构建大模型的应用而言,整个流程就如[[3. LLM大语言模型项目的典型开发流程详解]]所述,从项目需求分析和定义开始进行规划,选择合适的技术路线或者基于开源的大模型框架进行优化,针对模型和应用开发需求,提前准备训练数据,使用数据对模型的参数分别进行预训练和微调,最终部署到服务器上并推广给目标用户使用。
以上的全过程,对于团队能力、算力资源、数据、开发周期的要求都是非常高的。因此,这种开发模式也是大模型应用中门槛最高的类型。
私有化部署开源LLM后微调
这种方式相比从头进行大模型的开发而言,简单了一些,基本上是把已经完成预训练的开源LLM模型(这种已经完成预训练的模型也称为基础模型,Base Model)进行私有化部署,然后按照应用领域的微调需求,使用与该应用领域相对应的微调标注数据进行微调。微调之后的工作量与从头开始构建模型的模式差异不大。
这种开发模式,省去了大语言模型本身的设计开发,以及已经基于海量通用语义数据对模型进行了预训练,只需要进行微调即可,对于团队能力、算力资源的要求大大降低,因此这种开发模式对中小型团队和个人开发者而言比较友好。
指令微调LLM
首先解释一下基础大语言模型(Base LLM)和指令微调大语言模型(Instruction-Tuned LLM)。
- Base LLM 是一种通过大规模自监督学习(self-supervised learning)预训练的语言模型,主要依赖海量文本数据来学习语言结构和模式。这类模型虽然具备强大的文本生成能力,但在执行具体任务时往往缺乏明确的指令理解能力。也就是说,在[[3. LLM大语言模型项目的典型开发流程详解]]中完成了预训练,但是尚未进行微调的模型就是Base LLM,相当于这类模型具有对语言的语义规律和基础知识有充分的理解,但是缺乏对于用户输入指令的理解能力。
- 相比之下,Instruction-Tuned LLM 是在 Base LLM 的基础上进行了额外的指令微调,目的是使其更善于处理人类提供的任务指令,提高了实用性和交互体验。相比Base LLM Model,经过指令训练集进行指令微调以后,模型就具备了更强的任务执行能力,能够更准确地按照用户的需求生成符合用户预期的、有价值的内容。
基于Base LLM,对该模型进行指令数据集的微调之后,Base LLM就可以进化成为Instruction-Tuned LLM。指令数据集一般包含指令-上下文-响应的完整序列,因此指令微调对于数据的要求很高,一般包含人类标注员针对指令微调任务所编写的大量任务示例,用以训练模型理解任务指令并生成符合预期的响应。
下面是指令微调数据集的比较典型的例子:

- 用于指令微调的数据集对于数据的内容和格式有比较高的要求,databricks-dolly-15k是一个开源的指令微调数据集,其中包含由数千名 Databricks 员工生成的遵循指令的记录。可以从HuggingFace上下载该数据集。
经过以上的指令数据集对Base LLM的微调之后,模型就可以对用户所输入的指令进行识别、执行并输出更符合用户预期需求的答复。而为了进一步约束模型输出的答案,部分模型还会采用人类反馈强化学习(RLHF)的模式让模型生成的答案更加符合人类的价值观和伦理道德偏好。
- 这个过程在[[3. LLM大语言模型项目的典型开发流程详解]]中已经有详细的描述。
其实,微调的含义往往超过了此处重点介绍的指令微调,实际的应用中,我们也会针对具体行业领域和应用场景所需要的专业知识,整理出来针对性的微调训练数据,在Base LLM的基础上针对这些具体的行业领域场景进行微调,使之更适合应用于该领域。这部分微调的过程基本上与指令微调类似,都是在Base LLM的基础上进一步使用额外的训练数据进行训练,使之更加符合应用的要求和预期。
在此之上的部分,都可以称之为AI模型开发(AI Model Development);而在此之下的则可以称之为AI应用开发(AI Application Development)。
RAG/AI Agent
RAG和AI Agent是当前AI应用开发领域中最为火热的方向。
有关RAG部分的信息,在[[4. 一文说清楚RAG的工作流程以及与微调的区别]]一文中已经有非常详细的解释和描述,在此不再赘述。
有关AI Agent部分的信息,在[[5. AI Agent的框架与工作流程解析]]一文中已经有非常详细的解释和描述,在此不再赘述。
Prompt Engineering
下面的少样本提示和零样本提示都可以归纳入提示词工程(prompt engineering)的范畴。提示词工程就是我们精心设计、优化输入信息,从而引导AI生成高质量、准确、有针对性的回答的语言艺术。如果你写提示词的能力不够,那么AI给出的往往就像是用一堆正确的废话堆砌而成的文字垃圾;反之,它的回答会非常令人惊艳。所以,使用同样的大模型去查询相同的问题,大模型的输出质量与输入的提示词有非常强的关联。
提示词如何书写,并没有一个明确的答案,但是考虑到大语言模型进行输出信息推理的工作原理和流程,一个较好的提示词应该至少包含角色定义、提供上下文以及确定目标/提出问题这三部分信息。以下是参考资料三种提到的一种写好提示词的框架结构,按照这个框架对自己向LLM提出的问题和要求的描述进行精心组织,可以很有效的解决我们在工作和生活中的大量问题。

少样本提示
所谓的少样本提示(Few Shot Prompting),就是针对一些稍微复杂的问题,我们使用语言很难轻易的把需求清楚的表达出来的时候,我们就可以在向大模型提问的时候,给大模型提供一些样本,让模型自己去分析样本的结构、逻辑、语气表达形式等,并根据自己学到的东西,给我们生成类似的内容。
下面是一个少样本提示的很经典的例子。用户向大模型输入的提示词是:

以上提示词从模型返回的结果是:

零样本提示
零样本提示(Zero Shot Prompting),是指不需要在提示词中包含任何示例,大模型就能够完成用户所指示的任务。这种提示词一般是用于面向比较简单、目标和过程清晰的任务,而且也要求用户的提示词十分明确,大模型具有相当强的能力理解用户的需求。
总之,针对相对比较简单和目标清晰的任务,可以使用零样本提示词尽可能明确、清晰、详尽的定义自己要模型执行的任务,以方便模型理解。
参考资料
- 《大模型应用开发:动手做AI Agent》
- 《大模型RAG实战:RAG原理、应用和系统构建》
- 《AI效率手册:从ChatGPT开启高效能》