二、模型使用
大模型的应用五花八门,但都离不开上述两个核心参数,接下来围绕上述的参数,我们能利用的现有的模型交互手段主要有以下三种,包括:
- 调优提示词:大模型工程中的核心,提示词的优秀与否决定了你是否需要链路上做额外的兜底
- 增加调用次数:将一个任务拆分为多个子任务执行,最后判断结果。这是一种常用的对提示词能力的补充手段,降低单一提示词的复杂性。
- 模型微调:通过引入特定业务场景案例,让模型能更好地理解用户的意图和需求。
1、用大模型+提示词做翻译 [提示词调优]
为了更好的评价,我们选择哪吒中的英文台词,然后将英文翻译成中文,看还原度如何?
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%的场景诉求。
2、用大模型+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.
3、模型微调
这部分具体案例就不好说了,我举个实际生产的案例,在给WorldFirst做客服的时候,存在很多特殊的业务知识,比如用户在万里汇下载银行对账单 != 下载交易流水单。这里有业务背景,银行对账单是亚马逊要求的账户证明文件。这些业务背景是模型难以掌握的,此时就需要引入微调,将这部分知识内置到模型里面。
现在主流的方式都在慢慢弱化微调,因为费时费力,还不一定起到正向的效果,更多的工程实践是将提示词复杂化动态化,工程上做更多的兜底工作。
如何系统学习掌握AI大模型?
AI大模型作为人工智能领域的重要技术突破,正成为推动各行各业创新和转型的关键力量。抓住AI大模型的风口,掌握AI大模型的知识和技能将变得越来越重要。
学习AI大模型是一个系统的过程,需要从基础开始,逐步深入到更高级的技术。
这里给大家精心整理了一份
全面的AI大模型学习资源
,包括:AI大模型全套学习路线图(从入门到实战)、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等,资料免费分享
!
1. 成长路线图&学习规划
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。
这里,我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。可以说是最科学最系统的学习成长路线。
2. 大模型经典PDF书籍
书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础。(书籍含电子版PDF)
3. 大模型视频教程
对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识。
4. 2024行业报告
行业分析主要包括对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。
5. 大模型项目实战
学以致用 ,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。
6. 大模型面试题
面试不仅是技术的较量,更需要充分的准备。
在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。
全套的AI大模型学习资源已经整理打包,有需要的小伙伴可以
微信扫描下方CSDN官方认证二维码
,免费领取【保证100%免费
】