一、热点事件
- 2022 年 11 月 30 日,OpenAI 正式发布了其面向消费用户的产品——ChatGPT。
- 2023 年 2 月 6 日,谷歌宣布将推出一款聊天机器人——Bard,2 月 9 日,谷歌 Bard 发布会试演翻车,回答内容出现错误,当日市值暴跌1000亿美元。
- 2023 年 2 月 24 日,Meta 官宣 SOTA 大语言模型 LLaMA,对非商用的研究用例开源。
- 2023 年 3 月 14 日,斯坦福发布了一个由 LLaMA 7B 微调的模型 Alpaca,性能和 GPT-3.5 不相上下
- 2023 年 3 月 14 日,OpenAI 发布 GPT-4。
- 2023 年 3 月 16 日,百度举办“百度文心一言新闻发布会”,正式发布文心一言
- 2023 年 4 月 11 日,阿里在阿里云峰会上,正式宣布推出大语言模型通义千问
- 2023 年 7 月 18 日,Meta 官宣发布 LLaMA2。
- 2023 年 10 月 17 日,百度在 2023 年的百度世界大会上宣布发布文心 4.0
二、GPT到底是什么
全称 Generative Pretrained Transformer,一种基于预训练Transformer架构,用于处理自然语言的模型,给模型一些文本输入,可以返回相应的输出,例如文本分类、总结、机器翻译等
chatGPT是通过大数据训练让电脑学会根据上个字接下个字的方法进行训练
四个字概括ChatGPT的实质功能:词语接龙
✅ GPT通过一句话如何理解所说的意思
在理解句子时,GPT使用了自然语言处理的多种技术,包括词嵌入、循环神经网络、注意力机制、上下文理解等
词嵌入:对于一个给定的句子,GPT首先将其分解为单词,然后通过词嵌入将每个单词转换为向量表示。这样句子就被表示为由多个单词向量组成的矩阵
循环神经网络:GPT采用循环神经网络,如长短时记忆网络或门控循环单元,对单词序列进行编码。通过处理整个序列,循环神经网络可以获得对序列中每个单词的上下文理解,使其能够捕捉到句子中的语义关系和逻辑
注意力机制:为了处理更长的句子,GPT使用了注意力机制将句子的不同部分聚焦在一起,放大它们对整个句子的贡献
上下文理解:使用Transformer架构,通过自注意力机制来理解句子中的每个词与上下文中其他词的关系。在生成新的句子时,GPT将当前生成的单词作为输入,然后生成下一个单词,并以此类推,直到句子结束或达到预设的最大长度。>
三、LLM(Large Language Model)
大语言模型(LLM,Large Language Model)是用于处理自然语言的模型,给模型一些文本输入,它可以返回相应的输出,例如文本分类、文本总结、机器翻译等。它可以理解和生成自然语言文本。在语言理解方面,大模型能够理解自然语言中的实体、关系和逻辑,并从中提取出关键信息。其次,在语言生成方面,大模型能够根据预先设定的上下文和语境,生成自然流畅的语言表达。此外,大模型还能够进行自然语言推理,从文本中推断出未知信息。
大语言模型需要通过大量文本数据进行无监督学习,以GPT3为例,训练数据包含多个互联网文本语料库,包含各种文章,论坛,论文等,一共700多GB
其实模型就类似人脑,你给他投喂的数据越多,他的知识库就越丰富
✅ LLM 使用方式
✅ 大模型发展一览
✅ 实现原理Tokens
作为一种生成模型,LLM是通过文本输入来预测概率最高的下一个词元(token)来实现文本生成的,就是说他不是一次性输出一句话,而是通过词元为基本单元进行预测输出的
Tokens(分词) 是 LLM AI 处理文本或代码的基本单位(最小语义单元) 。Tokens 可以是字符(characters)、单词(words)、子单词(subwords)或其他文本段落(segments of text)或代码段落(segments of code),tokens 的具体内容取决于所选的 token 化(tokenization)算法和方法。Tokenization 算法和 tokenizer 是 LLM 的基础组件。
tokens转成词嵌入的过程
✅ Embedding
将Token转化为向量的技术
在机器学习和自然语言处理中,embedding 是指将高维度的数据(例如文字、图片、音频)映射到低维度空间的过程。
Embedding 向量通常是一个由实数构成的向量,它将输入的数据表示成一个连续的数值空间中的点。
✅ 获取 Embedding
可以根据 Embedding-V1 API 文档 的介绍,来获取基于百度文心大模型的字符串 Embedding。
还可以使用 列表 12.5 的方式来获取相同的基于文心大模型的 Embedding。
// 使用安全认证AK/SK鉴权,替换下列示例中参数,安全认证Access Key替换your_iam_ak,Secret Key替换your_iam_sk
const client = new Embedding({ QIANFAN_ACCESS_KEY: 'your_iam_ak', QIANFAN_SECRET_KEY: 'your_iam_sk' });
async function main() {
const resp = await client.embedding({
input: ['介绍下你自己吧', '你有什么爱好吗?'],
}, 'Embedding-V1');
const rs = resp.data;
rs.forEach((data) => {
console.log(data.embedding);
})
}
main();
响应结果:
[0.13463850319385529, -0.010635782964527607, 0.024348171427845955...]
[0.06406816840171814, 0.04901014640927315, -0.021046847105026245, ...]
✅ 微调
背景:
对于 ChatGPT 或者 文心 这些大模型而言,对其进行预训练的成本非常大,整个训练需要数千个 GPU 并行处理才可以解决海量数据的算力问题。而仅 GPU 的成本就可能就高达数百万美元。根据 OpenAI 的 GPT-3 技术概述,每次训练至少需要价值 500 万美元的GPU。基于对成本的考虑,因此,预训练一个大模型并非是人人都可以做到的事情。
微调(SFT:Supervised Fine Tuning)
是一种机器学习技术,涉及对预训练模型进行小的调整,以提高其在特定任务中的性能。因为模型已经对世界有了很好的了解,并且可以利用这些知识更快地学习新任务,因此微调比从头开始训练模型更有效,通常也会产生更好的结果。从成本的角度看,微调的成本也会比预训练大模型的成本要低的多。虽然微调也需要成本,但我们基本可以承担这些成本。
✅ 如何微调
不同平台的微调方式各不相同,所以微调的方式需要参考具体使用的平台:
-
百度文心大模型微调方式:SFT 文档
-
GPT 大模型微调方式:Fine-tuning 文档
✅ 幻觉
ChatGPT作为基于大型语言模型的人工智能聊天机器人,
幻觉在这里指的是模型生成的不准确、不符合事实或逻辑上不一致的响应。
幻觉现象主要源于其训练方式、数据基础以及模型本身的局限性。
产生幻觉的几种情况:
- 数据偏差
- 上下文缺失
- 语言模糊性
- 逻辑与事实推理的局限性
✅ 大模型的不足以及解决方案
问题:
🔰 强语言弱认知:大模型的幻觉
🔰 实时信息更新慢,新旧知识难以区分
🔰 逻辑推理不靠谱:本质上是预测下一个词语
🔰 无法为领域问题,提供专业靠谱的答案
解决方案:
🔰通过“微调”技术,在LLM基础上 灌入行业数据,实现行业模型
🔰 提示词工程,通过一定技巧设计Prompt,引导AI回答你想得到的答案
四、 提示词工程
提示词工程(Prompt Engineering)一种通过输入文本指令让模型按照要求输出期望结果的技术。
这项技术的核心在于精心设计输入语句——即我们称之为“提示词”——以引导AI模型产生特定的、高质量的输出。
不同的提示词不同的答案
✅ 提示词基本编写原则
1、直接了当的说明你的要求(不要用询问句,不要客气)
2、说清楚你想干的事
3、告诉模型,它生成的东西对你来说有多么重要
4、让模型深度思考后再做出回复
| 错误的示例 | 正确的示例 |
|---|---|
| 写一个会议纪要 | 写一个会议纪要,会议纪要应该包含会议名称、会议时间、会议地点、参会人员、会议内容、会议结论这几部分,你需要按我说的顺序依次输出。 另外,请你记住,你写出的会议纪要将对我的工作产生重要影响,所以你必须把这份会议纪要写好。 此外,你有充分的回答时间,你要深度思考后再进行回复,不要着急给出答案。 |
✅ 提示词原则解析 - 角色扮演
提问 - 如何提问一个减肥计划 ?
指令:制定一个减肥计划,针对一个26岁的男性,身高178cm, 体重75kg
正确指令:我想让你扮演一个专业的私人教练,你需要利用你专业的运动科学知识,营养建议等因素为你的客户制定专业的计划,针对一个26岁的男性,身高178CM,体重75kg
提问 - 如何提问前端面试题
指令:请提几个关于前端开发岗位的面试题
正确指令:假设你是一个有着多年工作经验的前端开发工程师,请提几个关于前端开发岗位的面试题
给AI设定成行业专家的角色,它能提供更专业的回答 !
✅ 提示词原则解析 - 提供明确例子
指令:前端开发实现水平垂直居中的方案
明确指令:前端开发实现水平垂直居中,使用flexbox方案
同样的实现效果,有不同的实现方式,可以明确指定某种方式让AI实现,提高效率
✅ 提示词原则解析 - 知之为知之,不知为不知
- 当模型知道答案时,它应该提供准确的信息;当模型不确定或不知道答案时,它应该诚实地表达出这一点。
- 这种做法可以避免模型在不清楚或没有准确信息的情况下强行回答,从而减少误导和虚假信息的传播。
- 模型的系统级提示词有类似 【模型是用来全心全意无条件帮助人类 】的条款约束,所以在“强迫”模型回复时可能会产生幻觉。(目前GPT4模型已经结合搜索)
模拟指令:“告诉我明天北京的详细天气情况。”
错误回复:“明天北京的天气将是晴朗的,气温大约在25度左右。”(错误在于模型并不能预知具体的未来天气)
模拟指令:“告诉我明天北京的详细天气情况。你的回复必须基于事实,如果你知道,那么就输出相关内容。如果不知道,就要诚实的说明自己并不懂。”
正确回复:“我无法提供最新的天气信息,因为我的训练数据只更新到了2023年4月,并且我无法访问互联网来获取实时数据。要了解明天北京的详细天气情况,建议查询可靠的天气预报服务或使用天气应用。”(正确地表达了模型的知识限制,避免了提供虚假信息)
✅ 提示词原则解析 - 遵循特定语法格式
正确指令:
按以下格式编写一份公司年度报告总结:
# 公司年度报告大纲
## 1. 绪论
- 公司简介
- 年度报告目的和范围
## 2. 市场分析
- 行业趋势
- 竞争对手分析
- 市场机遇与挑战
## 3. 财务表现
- 收入概述
- 成本和支出
- 利润分析
## 4. 业务成就
- 重要项目和成果
- 客户和合作伙伴关系
- 创新和技术发展
## 5. 员工和组织发展
- 员工结构
- 培训和职业发展
- 组织文化和工作环境
## 6. 未来规划与展望
- 短期目标
- 长期战略
- 风险管理和应对策略
## 7. 附录
- 财务报表
- 市场研究数据
- 管理层声明
五、 AI插件开发体验 - 通义灵码
1、用汉语注释的形式写代码
3、补全代码,沉浸式体验写代码
4、代码建议,优化代码
5、生成注释
6、生成测试用例、读代码解释逻辑……
六、 langchain框架实战
LangChain是一个开源框架,旨在简化使用大语言模型构建端到端应用程序的过程
✅ langchain能做什么
🔰 是解决大模型各种问题的提示词工程方案之一
🔰 提供了与LLMS交互的各种组件,极大提高开发效率
🔰 可以以文件方式加载提示词,链等,方便共享提示词和做提示词版本管理
🔰 提供了丰富的链式工具箱
✅ 快速入门 - 构建语言模型应用程序
Models:使用大语言模型生成文本prompt:使用提示模板管理模型提示chain:使用链组合模型与提示完成多步工作流Tools:使用工具处理任务Agents使用代理动态执行任务Memory:让链与代理有记忆