大模型应用开发基础 - Geniusning/AI GitHub Wiki
- 了解大模型能做什么
- 整体了解大模型应用开发技术栈
- 浅尝 OpenAI API 的调用
开始上课!
- 课程的设计初心
- 每次课能给你带来什么
- 做自己的选择,定自己的目标
我们相信,懂 AI、懂编程、懂业务的超级个体,会是 AGI 时代最重要的人。所以我们提出了「AI 全栈工程师」这个概念,让它显得不那么浮夸。
这门课的目标,就是培养「AI 全栈」。
- 「全栈」涉及的知识面非常广,区区一门课不可能全部涉及
- 我们能做到的是,在各个方向上都为大家打开一扇门,带大家入门
- 想走得更深更远,要靠大家自己,我们的社群,和 AI 的进化。
但是,「入门」并不代表简单、肤浅。我们的课程会在三个方向发力:
- 原理
- 实践
- 认知
不懂原理就不会举一反三,走不了太远。
不懂实践就只能纸上谈兵,做事不落地。
认知不高就无法做对决策,天花板太低。
这三样,都是「干货」。
强烈提醒!在剧烈变革的时代,千万别只拿代码当干货!
目前,行业共识是:两个确定一个不确定
- 确定未来 - AI 必然重构世界
- 确定进入 - 想收获红利,必须现在进入
- 不确定落地 - 解决什么需求,技术路线、产品策略都是什么,确定性还很低
等「不确定」确定了,代码的价值才是大的。
在图中找到自己的地盘。
有三类同学的学习体验不会完美:
学员 | 感受 | 建议 |
---|---|---|
没有实际工程经验,甚至不会编程 | 大量听不懂 | 把能听懂的多实践,凿实。别纠结暂时学不会的,可能只是机缘未到,慢慢来 |
已经自学过大模型,甚至实践过 | 有部分内容已知,获得感少 | 关注增量,别被存量绑架 |
带着项目目标前来 | 课程进度太慢,不能直接解决自己的问题 | 欢迎在群里讨论你的项目 |
建议取舍:
- 原理一定要用心学。除了 Fine-tuning 原理外,都不算难
- 认知一定要用心领悟。这是这门课最领先的地方
- 编程和工程经验不足,别对着实战太较劲。受些熏陶就是收获
别忘了,有一年的会员期可以持续跟学!
「深蓝」的创造者许峰雄博士说过:「AI is bullshit。深蓝没用任何 AI 算法,就是硬件穷举棋步。」
一种观点:基于机器学习、神经网络的是 AI,基于规则、搜索的不是 AI。
大模型,全称「大语言模型」,英文「Large Language Model」,缩写「LLM」。
现在,已经不需要再演示了。每人应该都至少和下面一个基于大模型的对话产品,对话过至少 100 次。
国家 | 对话产品 | 大模型 | 链接 |
---|---|---|---|
美国 | OpenAI ChatGPT | GPT-3.5、GPT-4 | https://chat.openai.com/ |
美国 | Microsoft Copilot | GPT-4 和未知 | https://copilot.microsoft.com/ |
美国 | Google Bard | Gemini | https://bard.google.com/ |
中国 | 百度文心一言 | 文心 4.0 | https://yiyan.baidu.com/ |
中国 | 讯飞星火 | 星火 3.5 | https://xinghuo.xfyun.cn/ |
中国 | 智谱清言 | GLM-4 | https://chatglm.cn/ |
中国 | 月之暗面 Kimi Chat | Moonshot | https://kimi.moonshot.cn/ |
中国 | MiniMax 星野 | abab6 | https://www.xingyeai.com/ |
本课第一个专业向要求:分清对话产品和大模型。
- 建议要有一个访问国外的「通道」,否则无法有顶级体验
- 如果不能访问 ChatGPT,不是 ChatGPT Plus 会员,会非常遗憾
- Microsoft Copilot 是 ChatGPT 免费平替,用的也是宇宙最强 GPT-4 大模型
注册 ChatGPT、Copilot 教程:https://agiclass.feishu.cn/docx/Jt8ydP0RroFCPaxcWGDcUzVrnnd#YtxodWqgdofsa8xb0GOcaD1nny5
但是,千万别以为大模型只是聊天机器人。它的能量,远不止于此。
- **舆情分析:**从公司产品的评论中,分析哪些功能/元素是用户讨论最多的,评价是正向还是负向
- **坐席质检:**检查客服/销售人员与用户的对话记录,判断是否有争吵、辱骂、不当言论,话术是否符合标准
- **知识库:**让大模型基于私有知识回答问题
- **零代码开发/运维:**自动规划任务,生成指令,自动执行
- **AI 编程:**用 AI 编写代码,提升开发效率
- 把大模型看做是一个函数,给输入,生成输出
- 任何问题,都可以用语言描述,成为大模型的输入,就能生成问题的结果
这当然还是美好的理想,但正在无限逼近。我们很幸运,能亲历这个过程。
当下,如何发挥大模型的现有能力呢?最大障碍是没有形成认知对齐。
- 从最熟悉的领域入手
- 让 AI 学最厉害员工的能力,再让 ta 辅助其他员工,实现降本增效
- 找「文本进、文本出」的场景
- 别求大而全。将任务拆解,先解决小任务、小场景(周鸿祎:「小切口,大纵深」)
其实,它只是根据上文,猜下一个词(的概率)……
OpenAI 的接口名就叫「completion」,也证明了其只会「生成」的本质。
下面用程序演示「生成下一个字」。你可以自己修改 prompt 试试。还可以使用相同的 prompt 运行多次。
from openai import OpenAI
from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv())
client = OpenAI()
prompt = "今天我很" # 改我试试
prompt = "下班了,今天我很"
prompt = "放学了,今天我很"
prompt = "AGI 实现了,今天我很"
response = client.completions.create(
model="gpt-3.5-turbo-instruct",
prompt=prompt,
max_tokens=512,
stream=True
)
for chunk in response:
print(chunk.choices[0].text, end='')
用不严密但通俗的语言描述大模型的工作原理:
- 大模型阅读了人类曾说过的所有的话。这就是「机器学习」,这个过程叫「训练」
- 把一串 token 后面跟着的不同 token 的概率存入「神经网络」。保存的数据就是「参数」,也叫「权重」
- 当我们给它若干 token,大模型就能算出概率最高的下一个 token 是什么。这就是「生成」,也叫「推理」
- 用生成的 token,再加上上文,就能继续生成下一个 token。以此类推,生成更多文字
Token 是什么?
- 可能是一个英文单词,也可能是半个,三分之一个
- 可能是一个中文词,或者一个汉字,也可能是半个汉字,甚至三分之一个汉字
- 大模型在开训前,需要先训练一个 tokenizer 模型。它能把所有的文本,切成 token
- AI 做对的事,怎么用这个原理解释?
- AI 的幻觉,一本正经地胡说八道,怎么用这个原理解释?
这套生成机制的内核叫「Transformer 架构」。但其实,transformer 已经不是最先进的了。
架构 | 设计者 | 特点 | 链接 |
---|---|---|---|
Transformer | 最流行,几乎所有大模型都用它 | OpenAI 的代码 | |
RWKV | PENG Bo | 可并行训练,推理性能极佳,适合在端侧使用 | 官网、RWKV 5 训练代码 |
Mamba | CMU & Princeton University | 性能更佳,尤其适合长文本生成 | GitHub |
OpenAI 首席科学家 Ilya Sutskever 说过:
数字神经网络和人脑的生物神经网络,在数学原理上是一样的。
所以,我们要:
把 AI 当人看。
把 AI 当人看。
我和凯文·凯利交流时,他说了类似的观点:「和人怎么相处,就和 AI 怎么相处。」
- 用「当人看」来理解 AI
- 用「当人看」来控制 AI
- 用「当人看」来说服用户正确看待 AI 的不足
这是贯彻整门课,甚至我们与 AI 为伴的生涯的心法。
大模型技术分两个部分:
- 训练基础大模型:全世界只需要 1000 人做这个
- 建造大模型应用:所有技术人,甚至所有人,都需要掌握
就像和一个人对话,你说一句,ta 回一句,你再说一句,ta 再回一句……
- Agent:AI 主动提要求
- Function Calling:AI 要求执行某个函数
- 场景举例:你问过年去哪玩,ta 先反问你有多少预算
- Embeddings:把文字转换为更易于相似度计算的编码。这种编码叫向量
- 向量数据库:把向量存起来,方便查找
- 向量搜索:根据输入向量,找到最相似的向量
- 场景举例:考试时,看到一道题,到书上找相关内容,再结合题目组成答案。然后,就都忘了
努力学习考试内容,长期记住,活学活用。
面对一个需求,如何选择技术方案?下面是个不严谨但常用思路。
值得尝试 Fine-tuning 的情况:
- 提高大模型的稳定性
- 用户量大,降低推理成本的意义很大
- 提高大模型的生成速度
基础模型选型,也是个重要因素。合规和安全是首要考量因素。
需求 | 国外大模型 | 国产大模型 | 开源大模型 |
---|---|---|---|
国内 2C | 🛑 | ✅ | ✅ |
国内 2G | 🛑 | ✅ | ✅ |
国内 2B | ✅ | ✅ | ✅ |
出海 | ✅ | ✅ | ✅ |
数据安全特别重要 | 🛑 | 🛑 | ✅ |
然后用测试数据,在可以选择的模型里,做测试,找出最优。
AI 全栈课程主要以 OpenAI 为例,少量介绍国产大模型,微调会讲开源大模型。因为:
- OpenAI 使用量最大,即便国内也是如此
- OpenAI 最好用,最先进,没有之一
- 其它模型都在追赶和模仿 OpenAI。学会 OpenAI,其它模型触类旁通;反之,不一定
AI 全栈课程的主打语言是 Python,因为:
- Python 和 AI 是天生的一对
- Python 是最容易学习的编程语言
在命令行执行:
pip install --upgrade openai
体验给大模型注入新知识的代码竟如此简单。
from openai import OpenAI
# 加载 .env 文件到环境变量
from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv())
# 初始化 OpenAI 服务。会自动从环境变量加载 OPENAI_API_KEY 和 OPENAI_BASE_URL
client = OpenAI()
# 消息
messages = [
{
"role": "system",
"content": "你是AI助手小瓜,是 AGI 课堂的助教。这门课每周二、四上课。" # 注入新知识
},
{
"role": "user",
"content": "周末上课吗?" # 问问题。可以改改试试
},
]
# 调用 GPT-3.5
chat_completion = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=messages
)
# 输出回复
print(chat_completion.choices[0].message.content)