大模型应用开发基础 - Geniusning/AI GitHub Wiki

大模型应用开发基础

💡 这节课会带给你

  1. 了解大模型能做什么
  2. 整体了解大模型应用开发技术栈
  3. 浅尝 OpenAI API 的调用

开始上课!

一、怎样学好这门课

  1. 课程的设计初心
  2. 每次课能给你带来什么
  3. 做自己的选择,定自己的目标

1.1、我们的初心

我们相信,懂 AI、懂编程、懂业务的超级个体,会是 AGI 时代最重要的人。所以我们提出了「AI 全栈工程师」这个概念,让它显得不那么浮夸。

这门课的目标,就是培养「AI 全栈」。

  • 「全栈」涉及的知识面非常广,区区一门课不可能全部涉及
  • 我们能做到的是,在各个方向上都为大家打开一扇门,带大家入门
  • 想走得更深更远,要靠大家自己,我们的社群,和 AI 的进化。

但是,「入门」并不代表简单、肤浅。我们的课程会在三个方向发力:

  1. 原理
  2. 实践
  3. 认知

不懂原理就不会举一反三,走不了太远。

不懂实践就只能纸上谈兵,做事不落地。

认知不高就无法做对决策,天花板太低。

这三样,都是「干货」。

强烈提醒!在剧烈变革的时代,千万别只拿代码当干货!

目前,行业共识是:两个确定一个不确定

  1. 确定未来 - AI 必然重构世界
  2. 确定进入 - 想收获红利,必须现在进入
  3. 不确定落地 - 解决什么需求,技术路线、产品策略都是什么,确定性还很低

等「不确定」确定了,代码的价值才是大的。

1.2、知识体系

在图中找到自己的地盘。

structure

1.3、学习方法

有三类同学的学习体验不会完美:

学员 感受 建议
没有实际工程经验,甚至不会编程 大量听不懂 把能听懂的多实践,凿实。别纠结暂时学不会的,可能只是机缘未到,慢慢来
已经自学过大模型,甚至实践过 有部分内容已知,获得感少 关注增量,别被存量绑架
带着项目目标前来 课程进度太慢,不能直接解决自己的问题 欢迎在群里讨论你的项目

建议取舍:

  1. 原理一定要用心学。除了 Fine-tuning 原理外,都不算难
  2. 认知一定要用心领悟。这是这门课最领先的地方
  3. 编程和工程经验不足,别对着实战太较劲。受些熏陶就是收获

别忘了,有一年的会员期可以持续跟学!

二、什么是 AI?

ai-timeline

「深蓝」的创造者许峰雄博士说过:「AI is bullshit。深蓝没用任何 AI 算法,就是硬件穷举棋步。」

思考:你觉得哪些应用算是 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

但是,千万别以为大模型只是聊天机器人。它的能量,远不止于此。

3.1、按格式输出

gpt-ner

3.2、分类

gpt-classification

3.3、聚类

gpt-clustering

3.4、更多举例

  • **舆情分析:**从公司产品的评论中,分析哪些功能/元素是用户讨论最多的,评价是正向还是负向
  • **坐席质检:**检查客服/销售人员与用户的对话记录,判断是否有争吵、辱骂、不当言论,话术是否符合标准
  • **知识库:**让大模型基于私有知识回答问题
  • **零代码开发/运维:**自动规划任务,生成指令,自动执行
  • **AI 编程:**用 AI 编写代码,提升开发效率
思考:你的业务中,有哪些问题可以用 AI 解决?

3.7、可能一切问题,都能解决,所以是 AGI(Artificial General Intelligence)

划重点:
  1. 把大模型看做是一个函数,给输入,生成输出
  2. 任何问题,都可以用语言描述,成为大模型的输入,就能生成问题的结果

这当然还是美好的理想,但正在无限逼近。我们很幸运,能亲历这个过程。

当下,如何发挥大模型的现有能力呢?最大障碍是没有形成认知对齐。

landing

找落地场景的思路:
  1. 从最熟悉的领域入手
  2. 让 AI 学最厉害员工的能力,再让 ta 辅助其他员工,实现降本增效
  3. 找「文本进、文本出」的场景
  4. 别求大而全。将任务拆解,先解决小任务、小场景(周鸿祎:「小切口,大纵深」)

四、大模型是怎么生成结果的?

4.1、通俗原理

其实,它只是根据上文,猜下一个词(的概率)……

lm-autoregressive

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='')

4.2、略深一点的通俗原理

用不严密但通俗的语言描述大模型的工作原理:

  1. 大模型阅读了人类曾说过的所有的话。这就是「机器学习」,这个过程叫「训练
  2. 把一串 token 后面跟着的不同 token 的概率存入「神经网络」。保存的数据就是「参数」,也叫「权重
  3. 当我们给它若干 token,大模型就能算出概率最高的下一个 token 是什么。这就是「生成」,也叫「推理
  4. 用生成的 token,再加上上文,就能继续生成下一个 token。以此类推,生成更多文字

Token 是什么?

  1. 可能是一个英文单词,也可能是半个,三分之一个
  2. 可能是一个中文词,或者一个汉字,也可能是半个汉字,甚至三分之一个汉字
  3. 大模型在开训前,需要先训练一个 tokenizer 模型。它能把所有的文本,切成 token
思考:
  1. AI 做对的事,怎么用这个原理解释?
  2. AI 的幻觉,一本正经地胡说八道,怎么用这个原理解释?

4.3、再深一点点

这套生成机制的内核叫「Transformer 架构」。但其实,transformer 已经不是最先进的了。

架构 设计者 特点 链接
Transformer Google 最流行,几乎所有大模型都用它 OpenAI 的代码
RWKV PENG Bo 可并行训练,推理性能极佳,适合在端侧使用 官网RWKV 5 训练代码
Mamba CMU & Princeton University 性能更佳,尤其适合长文本生成 GitHub

五、用好 AI 的核心心法

OpenAI 首席科学家 Ilya Sutskever 说过:

数字神经网络和人脑的生物神经网络,在数学原理上是一样的。

所以,我们要:

把 AI 当人看。
把 AI 当人看。
把 AI 当人看。

我和凯文·凯利交流时,他说了类似的观点:「和人怎么相处,就和 AI 怎么相处。」

  1. 用「当人看」来理解 AI
  2. 用「当人看」来控制 AI
  3. 用「当人看」来说服用户正确看待 AI 的不足

这是贯彻整门课,甚至我们与 AI 为伴的生涯的心法。

六、大模型应用架构

大模型技术分两个部分:

  1. 训练基础大模型:全世界只需要 1000 人做这个
  2. 建造大模型应用:所有技术人,甚至所有人,都需要掌握
大模型应用技术特点:门槛低,天花板高。

6.1、技术架构

纯 Prompt

就像和一个人对话,你说一句,ta 回一句,你再说一句,ta 再回一句……

prompt_arch

Agent + Function Calling

  • Agent:AI 主动提要求
  • Function Calling:AI 要求执行某个函数
  • 场景举例:你问过年去哪玩,ta 先反问你有多少预算

func_arch

RAG(Retrieval-Augmented Generation)

  • Embeddings:把文字转换为更易于相似度计算的编码。这种编码叫向量
  • 向量数据库:把向量存起来,方便查找
  • 向量搜索:根据输入向量,找到最相似的向量
  • 场景举例:考试时,看到一道题,到书上找相关内容,再结合题目组成答案。然后,就都忘了 embeddings_arch

Fine-tuning

努力学习考试内容,长期记住,活学活用。

tech_arch

6.3、如何选择技术路线

面对一个需求,如何选择技术方案?下面是个不严谨但常用思路。

tech_solution

值得尝试 Fine-tuning 的情况:

  1. 提高大模型的稳定性
  2. 用户量大,降低推理成本的意义很大
  3. 提高大模型的生成速度

基础模型选型,也是个重要因素。合规和安全是首要考量因素。

需求 国外大模型 国产大模型 开源大模型
国内 2C 🛑
国内 2G 🛑
国内 2B
出海
数据安全特别重要 🛑 🛑

然后用测试数据,在可以选择的模型里,做测试,找出最优。

AI 全栈课程主要以 OpenAI 为例,少量介绍国产大模型,微调会讲开源大模型。因为:

  1. OpenAI 使用量最大,即便国内也是如此
  2. OpenAI 最好用,最先进,没有之一
  3. 其它模型都在追赶和模仿 OpenAI。学会 OpenAI,其它模型触类旁通;反之,不一定

七、体验编程调用 OpenAI API

AI 全栈课程的主打语言是 Python,因为:

  1. Python 和 AI 是天生的一对
  2. Python 是最容易学习的编程语言

7.1、安装 OpenAI Python 库

在命令行执行:

pip install --upgrade openai

7.2、发一条消息

体验给大模型注入新知识的代码竟如此简单。

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)
⚠️ **GitHub.com Fallback** ⚠️