大模型应用开发入门指南:从零开始,轻松掌握!
本文系统性地剖析了大模型的核心技术范式与应用方法论。首先揭示了大模型交互的基本原理:通过messages数组实现对话记忆(RAG范式)和tools参数执行外部工具(ReAct范式)。文章通过翻译案例展示了提示词工程的三重优化路径:基础提示、思维链(COT)引导和动态少样本学习(fewshot);以计算器场景为例演示了多步调用的Agent模式。最后指出大模型应用需结合业务本质,避免技术神话,并提供了
前言
大模型作为新兴领域,不断地冒出来新的专有术语和新的概念,让大家觉得很神秘,捉摸不透。但是大部分复杂性的背后都会有一个极其简单便于理解的模型,本次分享最主要就是大模型的基本范式,通过范式将这些神秘感去除。
大模型虽然很厉害,很神秘,但作为使用人员,门槛是非常非常非常低的。
模型基础
虽然市面上的大型语言模型(LLMs)种类繁多,但在使用层面大家平等的都是API调包侠
,因此从接口层面来剖析大模型有哪些能力。LLM的接口通常都遵循或类似于 OpenAI 的规范。这里我们以 OpenAI 的接口为例进行说明。
在与大型模型交互时,除了控制模型输出随机性的参数外,最核心的参数只有两个:messages
和 tools
。可以说,市面上各种各样的大模型应用,都是基于这两个参数的基础上设计而来。
messages-大模型是怎么实现记忆的?
-
messages是一个对话数组,其中角色主要有:
-
system:代表当前对话的系统指令,一般放提示词
-
user:用户指令
-
assistant:LLM的回复
-
...:不同厂商会有不同的扩展定义
大模型所谓的对话记忆实际上就是依赖该数组做信息传递,如下图所示,第一轮我告诉我的名字叫屈定,第二轮的时候在问他是谁,他已经知道了我的名字,之所以知道因为我在messages的上下文中传递给了他这个信息。
-
使用user传递用户的对话
-
使用system设置系统指令
-
提示词的不稳定容易被指令注入攻击
三张图看完,先总结下:
-
大模型为什么能记住之前的对话?
只是因为后台系统给了他之前的对话,并不是他自己记住。大模型的请求调用就是一个无状态的,取决于每次给的对话内容。
-
大模型的提示词有什么用?
大模型的提示词可以进一步控制(覆盖)模型的行为,具备高优先级,但存在不稳定性。
接下来我们就可以来理解第一个重要的大模型范式:检索增强生成,也就是RAG(Retrieval Augmented Generation)。
直白的理解为用检索到的知识,来增量生成答案的质量。比如我有一个关于数仓各种问题处理的Q&A,想要做一个问答机器人,这个问答机器人要基于我的Q&A回复用户。这个 检索Q&A -> 基于检索到的Q&A回复用户,这个流程就是一个典型的RAG链路。也显而易见,RAG的最终目标是生成靠谱的答案给到用户。
RAG链路的搭建是很简单,但是效果却很难,从流程里面我们能发现两个关键点:
1.知识库检索召回:这里要解决如何召回最靠谱的答案。
2.LLM基于知识回答:这里要解决的是如何让模型在一堆知识中给出自信准确的回答。
这些都是业界在不断探索的东西,没有所谓的标准答案,只有适合当前业务的最佳方案。
tools-大模型能执行任何工具?
经常有同学会问一些大模型是否能查询odps,或者大模型能够把数仓数据导入到ob之类的问题。这些问题的背后是对LLM存在错误的理解,也就是tools参数的理解。
tools也是一个数组,包含了一堆工具集合,核心为工具的作用描述,和工具需要的参数,如下图天气工具的定义。
接下来就是使用工具,基于工具的回答至少要两次大模型请求调用:
1.将用户的对话和工具一起给到大模型,大模型需要执行的工具以及工具参数;
2.后端系统依据大模型选择结果,去执行对应的工具,拿到结果;
3.再次请求大模型,此时上下文中给到了工具执行结果,大模型基于信息回复;
先总结下:
1.大模型并不能够执行任何工具,但是大模型能够选择接下来要执行的工具。选择后工具由配合的系统来执行获取结果。
接下来我们就可以来理解第二个重要的大模型范式ReAct(Reason+Act)。
这里需要强调下,大模型的很多范式都是对生活中人类行为的模拟,因此我们也是从生活中的案例来理解大模型。
案例主题:老板让写一份调研外部大模型框架的报告
工具:互联网搜索,PPT,思维导图
思考 (Reasoning): 需要调研外部大模型框架,明确调研目标是了解行业内的主要框架、特点和应用场景。需要先明确有哪些主流框架,然后针对性地收集资料。
行动 (Acting):
行动: 使用互联网搜索“主流大模型框架 2024/2025”、“开源大模型框架”。
观察 (Observation):
观察: 搜索结果显示:PyTorch、TensorFlow、JAX等是主流框架,还有一些新兴框架如MindSpore、Paddle等。
思考 (Reasoning): 我已经拿到了想要的资料,接下来使用思维导图搭建汇报思路
行动 (Acting):
行动: 使用思维导图工具,搭建报告的初步框架,包括:框架名称、开发语言、主要特点、优势、劣势、应用场景。
观察 (Observation):
观察: 初步框架包括:框架名称、开发语言、主要特点(动态图/静态图、分布式训练支持等)、优势、劣势、应用场景(NLP、CV等)。
思考 (Reasoning): 信息基本收集完毕,需要将所有信息整理成结构化的报告,并使用PPT进行总结和分析。
行动 (Acting):
行动: 使用PPT工具,将思维导图中的内容整理成PPT,并撰写文字说明。
观察 (Observation):
观察: 完成了PPT初稿,内容比较全面,但需要进行排版美化。
这个思考的流程就是ReAct,后面有实际案例,这里先理解这个概念。
模型使用
大模型的应用五花八门,但都离不开上述两个核心参数,接下来围绕上述的参数,我们能利用的现有的模型交互手段主要有以下三种,包括:
-
调优提示词:大模型工程中的核心,提示词的优秀与否决定了你是否需要链路上做额外的兜底
-
增加调用次数:将一个任务拆分为多个子任务执行,最后判断结果。这是一种常用的对提示词能力的补充手段,降低单一提示词的复杂性。
-
模型微调:通过引入特定业务场景案例,让模型能更好地理解用户的意图和需求。
用大模型+提示词做翻译 [提示词调优]
为了更好的评价,我们选择哪吒中的英文台词,然后将英文翻译成中文,看还原度如何?
The prejudice in people's hearts is like a mountain. No matter how hard you try, you can't move it.
Looking back on it, three years isn't that long.
Be quick to obey my command
I'm the captain of my destiny, not heaven.
If you ask me whether people can change their own destiny, I don't know. But defying fate is Nezha's destiny.
方案一:直接使用提示词进行翻译
## Role and Goal:
你是一个翻译专家,尤其擅长英文到中文的翻译,接下来我给你多段英文台词,帮我翻译成中文.
## Constraints
- 翻译时保持译文格式不变
## Background:
原文来自《哪吒》系列电影的第二部中的台词,讲述了天劫之后,哪吒、敖丙的灵魂保住了,但很快会魂飞魄散。太乙真人打算用七色宝莲给二人重塑肉身,但是在重塑肉身的过程中却遇到重重困难,哪吒、敖丙的命运将迎来更多的挑战。
## Guidelines:
1. 结合背景将文本直接翻译成中文,保持原始格式,不省略任何信息。
## Source:
- The prejudice in people's hearts is like a mountain. No matter how hard you try, you can't move it.
- Looking back on it, three years isn't that long.
- Be quick to obey my command
- I'm the captain of my destiny, not heaven.
- If you ask me whether people can change their own destiny, I don't know. But defying fate is Nezha's destiny.
## Output:
{译文}
绝大多数情况下,直接使用提示词能做到的效果就已经能达到60%了(现在的模型确实强大了),下方的问题在于一些短的语句翻译不够传神。
模型 |
方案一翻译结果: |
gemini-2.0-flash |
|
方案二:提示词中引入COT(Chain-of-Thought)
COT被称为思维链,简单点来说是要告诉模型针对问题的思考步骤是什么,引导模型去按照特定思维解决问题。概念很抽象,以翻译为例,我们思考一般人是如何进行翻译的?
1.先直接翻译
2.结合上下文再审视这个翻译是否合理,有哪些改进点
3.针对改进点再斟酌修改
那么我们也让模型按照这个思路来执行翻译。
## Role and Goal:
你是一个翻译专家,尤其擅长英文到中文的翻译,接下来我给你多段英文台词,帮我翻译成中文.
## Constraints
- 翻译时保持译文格式不变
- 严格按照output中定义的范式输出
## Background:
原文来自《哪吒》系列电影的第二部中的台词,讲述了天劫之后,哪吒、敖丙的灵魂保住了,但很快会魂飞魄散。太乙真人打算用七色宝莲给二人重塑肉身,但是在重塑肉身的过程中却遇到重重困难,哪吒、敖丙的命运将迎来更多的挑战。
## Guidelines:
翻译的过程分为三部分:
1. 直译:结合背景将文本直接翻译成中文,保持原始格式,不省略任何信息。
2. 评估和反思:结合背景道教封神,主人公对命运反抗,识别直接翻译中的具体问题,例如:
- 非母语常用的中文表达,
- 笨拙的措辞
- 过于口语化的表达
- 等等
提供解释,但不要添加或省略内容或格式。
3. 意译:根据字面翻译和已识别的问题,重新解释翻译,确保它保持与原始输入格式一致,不要删除任何内容。
## Source:
- The prejudice in people's hearts is like a mountain. No matter how hard you try, you can't move it.
- Looking back on it, three years isn't that long.
- Be quick to obey my command
- I'm the captain of my destiny, not heaven.
- If you ask me whether people can change their own destiny, I don't know. But defying fate is Nezha's destiny.
## Output:
### 直译
{直译}
***
### 评估和反思
{评估和反思}
***
### 意译
{意译}
该方案取得了意想不到的效果,针对长句翻译成短句组合形式, 相比官方的来看,更像是修道者的口吻,但针对一些特殊短句用法,仍然不够理想。
模型 |
方案一翻译结果: |
方案二翻译结果: |
gemini2.0 flash |
|
|
方案三:引入动态few shot
few shot指的是提示词中的少样本技巧,动态就是将这部分样本抽离到一个知识库,每一次走翻译前先去知识库里面召回TOP最相关的,然后放入到提示词的Example中。
假设我的知识库中召回了如下两句:
Item1: 原文:Be quick to obey my command
意译:急急如律令
Item2: 原文:Life is not long, but it's not short either.
意译:人生,说长不长,说短不短。
结合后提示词如下:
## Role and Goal:
你是一个翻译专家,尤其擅长英文到中文的翻译,接下来我给你多段英文台词,帮我翻译成中文.
## Constraints
- 翻译时保持译文格式不变
- 严格按照output中定义的范式输出
## Background:
原文来自《哪吒》系列电影的第二部中的台词,讲述了天劫之后,哪吒、敖丙的灵魂保住了,但很快会魂飞魄散。太乙真人打算用七色宝莲给二人重塑肉身,但是在重塑肉身的过程中却遇到重重困难,哪吒、敖丙的命运将迎来更多的挑战。
## Guidelines:
翻译的过程分为三部分:
1. 直译:结合背景将文本直接翻译成中文,保持原始格式,不省略任何信息。
2. 评估和反思:结合背景道教封神,主人公对命运反抗,识别直接翻译中的具体问题,例如:
- 非母语常用的中文表达,
- 笨拙的措辞
- 过于口语化的表达
- 等等
提供解释,但不要添加或省略内容或格式。
3. 意译:根据字面翻译和已识别的问题,重新解释翻译,确保它保持与原始输入格式一致,不要删除任何内容。
## Example:
1. 原文:Be quick to obey my command
意译:急急如律令
---
2. 原文:Life is not long, but it's not short either.
意译:人生,说长不长,说短不短。
## Source:
- The prejudice in people's hearts is like a mountain. No matter how hard you try, you can't move it.
- Looking back on it, three years isn't that long.
- Be quick to obey my command
- I'm the captain of my destiny, not heaven.
- If you ask me whether people can change their own destiny, I don't know. But defying fate is Nezha's destiny.
## Output:
### 直译
{直译}
***
### 评估和反思
{评估和反思}
***
### 意译
{意译}
模型 |
方案一翻译结果: |
方案二翻译结果: |
方案三翻译结果: |
gemini2.0 flash |
|
|
|
few shot这种开卷考试方法是大模型链路中一种重要的优化手段,few shot是提示词中为数不多能够动态变化的部分,且对模型整体效果影响较小,更为可控。此外业务流量一般都是符合2:8分布的,且是可收敛的,可能只需要20%的few shot案例,就能满足80%的场景诉求。
用大模型+Agent做计算器 [增加调用次数]
大家应该都看过下面的案例,大模型是很不擅长数学计算的,那么用大模型直接做计算器就非常容易出问题。
这里使用llama_index的agent框架做演示:
1.定义了三个工具函数,乘法,加法,减法
2.构建一个Agent执行模式
import os
from dotenv import load_dotenv
from llama_index.core.agent import ReActAgent
from llama_index.core.tools import FunctionTool
from llama_index.llms.azure_openai import AzureOpenAI
def multiply(a: int, b: int) -> int:
"""Multiply two integers and returns the result integer"""
return a * b
def add(a: int, b: int) -> int:
"""Add two integers and returns the result integer"""
return a + b
def subtract(a: int, b: int) -> int:
"""subtract two integers and returns the result integer"""
return a - b
# 加载 .env 文件
load_dotenv()
# 初始化工具
multiply_tool = FunctionTool.from_defaults(fn=multiply)
add_tool = FunctionTool.from_defaults(fn=add)
subtract_tool = FunctionTool.from_defaults(fn=subtract)
llm = AzureOpenAI(model="gpt-4o", # 或者 gpt-4
engine='gpt-4o',
deployment_name="gpt-4o",
api_key=os.getenv('AZURE_KEY'),
azure_endpoint="https://ilm-dev.openai.azure.com",
api_version="2023-07-01-preview")
# 初始化Agent
agent = ReActAgent.from_tools([multiply_tool, add_tool, subtract_tool], llm=llm, verbose=True)
response = agent.chat("What is 60-(20+(2*4))? Calculate step by step ")
> Running step cba1a160-74c3-4e34-bcc4-88e6a678eaf9. Step input: What is 60-(20+(2*4))? Calculate step by step
Thought: The current language of the user is: English. I need to use a tool to help me answer the question.
To solve the expression \(60 - (20 + (2 * 4))\) step by step, I will first calculate the multiplication inside the parentheses.
Action: multiply
Action Input: {'a': 2, 'b': 4}
Observation: 8
> Running step 5455108e-ac53-4115-8712-68f2457a9b82. Step input: None
Thought: Now that I have the result of the multiplication, I can proceed to the next step, which is to add 20 and 8.
Action: add
Action Input: {'a': 20, 'b': 8}
Observation: 28
> Running step 4d8fae00-83bd-4205-9993-f0e0119f408d. Step input: None
Thought: Now that I have the result of the addition, I can proceed to the final step, which is to subtract 28 from 60.
Action: subtract
Action Input: {'a': 60, 'b': 28}
Observation: 32
> Running step ce5d1075-ff11-47a2-b286-d7a715dc40ba. Step input: None
Thought: I can answer without using any more tools. I'll use the user's language to answer.
Answer: The result of the expression \(60 - (20 + (2 * 4))\) is 32.
上次有同学问,那么大模型在这种链路里面到底发挥了什么作用?大模型最大的能力就是自然语言理解,我们可以尝试把规则再复杂化,输入改成张三代表减法,李四代表加法,王二代表乘法,What is 60张三(20李四(2王二4))? Calculate step by step
,表现仍然可以,这就带来了对自然语言的容错,会像人一样去思考,而不是固定死的逻辑。
Thought: The current language of the user is English. I need to use a tool to help me answer the question. The expression given is 60张三(20李四(2王二4)), which translates to 60 - (20 + (2 * 4)). I will calculate step by step.
First, I need to calculate the multiplication part: 2王二4, which is 2 * 4.
Action: multiply
Action Input: {'a': 2, 'b': 4}
Observation: 8
> Running step 48262cb8-5c3a-47b7-b13b-449787c27078. Step input: None
Thought: The result of 2王二4 is 8. Now, I need to calculate the addition part: 20李四8, which is 20 + 8.
Action: add
Action Input: {'a': 20, 'b': 8}
Observation: 28
> Running step 1cccd5c6-3d96-4014-a579-1c997765a1da. Step input: None
Thought: The result of 20李四8 is 28. Now, I need to calculate the subtraction part: 60张三28, which is 60 - 28.
Action: subtract
Action Input: {'a': 60, 'b': 28}
Observation: 32
> Running step 65d33d20-1009-4482-a6d2-7af20333640c. Step input: None
Thought: I can answer without using any more tools. I'll use the user's language to answer.
Answer: The result of 60张三(20李四(2王二4)) is 32.
模型微调
这部分具体案例就不好说了,我举个实际生产的案例,在给WorldFirst做客服的时候,存在很多特殊的业务知识,比如用户在万里汇下载银行对账单 != 下载交易流水单。这里有业务背景,银行对账单是亚马逊要求的账户证明文件。这些业务背景是模型难以掌握的,此时就需要引入微调,将这部分知识内置到模型里面。
现在主流的方式都在慢慢弱化微调,因为费时费力,还不一定起到正向的效果,更多的工程实践是将提示词复杂化动态化,工程上做更多的兜底工作。
一些感想
大模型能带来很大的工作和问题思考方式的革新,让一些问题解决方式变成取决于你的想象力,但对客的业务的效果并非完全取决于大模型。很多同学认为有了LLM,业务效果,开发效率,交付质量都能很方便解决,什么都往LLM上靠拢,这是很大的误区。
以笔者参与的客服场景感想,最早都认为客服是非常适合大模型的场景,笔者同样也是这样认为。实际深入后,并非如此,尤其是在对专业度和准确率有明确要求的场景。客服作为售后,用户是带着问题带着情绪来的,他需要的是明确的解决方案,不需要机械式的安抚和吐答案。因此业办能力 + 拟人化是客服成功的两大主要因素,确定主要因素后,再去思考LLM在这些因素点上能带来什么,接着思考构建你的方案,这样的应用才是靠谱的方式。
一、大模型风口已至:月薪30K+的AI岗正在批量诞生
2025年大模型应用呈现爆发式增长,根据工信部最新数据:
国内大模型相关岗位缺口达47万
初级工程师平均薪资28K
70%企业存在"能用模型不会调优"的痛点
真实案例:某二本机械专业学员,通过4个月系统学习,成功拿到某AI医疗公司大模型优化岗offer,薪资直接翻3倍!
二、如何学习大模型 AI ?
🔥AI取代的不是人类,而是不会用AI的人!麦肯锡最新报告显示:掌握AI工具的从业者生产效率提升47%,薪资溢价达34%!🚀
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
1️⃣ 提示词工程:把ChatGPT从玩具变成生产工具
2️⃣ RAG系统:让大模型精准输出行业知识
3️⃣ 智能体开发:用AutoGPT打造24小时数字员工
📦熬了三个大夜整理的《AI进化工具包》送你:
✔️ 大厂内部LLM落地手册(含58个真实案例)
✔️ 提示词设计模板库(覆盖12大应用场景)
✔️ 私藏学习路径图(0基础到项目实战仅需90天)
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
* 大模型 AI 能干什么?
* 大模型是怎样获得「智能」的?
* 用好 AI 的核心心法
* 大模型应用业务架构
* 大模型应用技术架构
* 代码示例:向 GPT-3.5 灌入新知识
* 提示工程的意义和核心思想
* Prompt 典型构成
* 指令调优方法论
* 思维链和思维树
* Prompt 攻击和防范
* …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
* 为什么要做 RAG
* 搭建一个简单的 ChatPDF
* 检索的基础概念
* 什么是向量表示(Embeddings)
* 向量数据库与向量检索
* 基于向量检索的 RAG
* 搭建 RAG 系统的扩展知识
* 混合检索与 RAG-Fusion 简介
* 向量模型本地部署
* …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
* 为什么要做 RAG
* 什么是模型
* 什么是模型训练
* 求解器 & 损失函数简介
* 小实验2:手写一个简单的神经网络并训练它
* 什么是训练/预训练/微调/轻量化微调
* Transformer结构简介
* 轻量化微调
* 实验数据集的构建
* …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
* 硬件选型
* 带你了解全球大模型
* 使用国产大模型服务
* 搭建 OpenAI 代理
* 热身:基于阿里云 PAI 部署 Stable Diffusion
* 在本地计算机运行大模型
* 大模型的私有化部署
* 基于 vLLM 部署大模型
* 案例:如何优雅地在阿里云私有部署开源大模型
* 部署一套开源 LLM 项目
* 内容安全
* 互联网信息服务算法备案
* …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
更多推荐
所有评论(0)