1.1 这节课会带给你

  1. 通俗了解大模型的工作原理,秒赢99%其他人的认知
  2. 了解指令工程的强大,不只是“说人话”那么简单
  3. 浅尝OpenAI API调用

开始上课!

1.2这门课面向哪些人

  1. 程序员
  2. 有编辑基础的学生

建议

  1. 会编辑几乎是唯一要求,但并不用特别擅长。
  2. AI的强大,使得用好它的门槛也低了很多。
  3. Python是课程主语言。不熟悉也没关系,都看得明白。需要上手编时,正好用AI帮忙。

学了这门课能干啥?

  1. 用好AI解决实际工作中的问题
  2. 训练自己的AI大(小)模型
  3. 不能把你变成AI科学家

1.3FAQ

1.用好AI需要很多数学知识吗?

以前真需要,以后可能不那么需要了

2.有的知识太深,我理解不了怎么办

“用到再讲、学以致用”是我们的教学理念。很多知识,用着用着就理解了
少部分基础数学知识主要在数据和模型训练部分,可以根据自身情况选择性理解。不理解,也不太影响使用

3.感觉讲的太浅了,没学到的知识怎么办

尽量在每节课里的涉及一少部分有深度的知识
如果感觉不解渴,欢迎积极提问

4.课听懂了,实际工作中还是不会用怎么办

  1. NLP的实际问题通常不是端到端由一个算法解决的,我们把拆解问题的思路融入课程中,用心体会
  2. 解决实际问题的方法论会贯穿始终
  3. 问指导老师

建议

  1. 本课由达人首创,发行不久,且AI领域日新周异高速迭代,必有大量不足之处
  2. 课程会不断改进,欢迎随时提出意见和建议

2 什么是AI

1.什么是AI - 图1

课程设计者曾和【深蓝】创造者许峰雄博士1v1交流数小时。许说:“AI is bullshit。深蓝没有任何AI算法,就是硬件穷举棋步。”

思考

你觉得哪些应用算是AI

3 ChatGPT能干什么?

  • 写文章
  • 写邮件
  • 出面试题
  • 写代码
  • 回答问题
  • 陪聊天
  • … …

我们来试试:https://chat.openai.com/

建议:
  • 一定要有一个访问国外的「通道」,否则无法访问、实操本课大量资源。通道举例:Just My Socks
  • 尽量找国外朋友帮忙认证 ChatGPT 手机号(一个手机号可以认证多次),不得已再从贩子手里买号
  • Bing Chat 也可以,邮箱注册就能用,且免费使用的模型就是宇宙最强的 GPT-4

3.1 既然是通用AI,我怎么用它解决业务问题?

案例:从文字中识别快递地址、收件人、电话
实验1

“帮我寄到北京市朝阳区亮马桥外外交办公大楼,写文理收就行,电话是18988889999”
提取出上述信息中的收件人(name),地址(Address)和电话号码(phone),并以JSON格式输出,Key用英文,value用原谅中的语言。直接输出结果。

代码都能写,写JSON当然不在话下!

更多案例

  • 舆情分析:从公司产品的评论中,分析哪些功能/元素是用户讨论最多的,评价是正向还是负向
  • 坐席质检:检查客服/销售人员与用户的对话记录,判断是否有争吵、辱骂、不当言论,话术是否符合标准
  • 故障解释:根据系统报错信息,给出方便非技术人员阅读的故障说明
  • 零代码开发/运维:自动规划任务,生成指令,自动执行
  • 生成业务逻辑:自定义一套业务描述语言(DSL),直接让ChatGPT写业务逻辑代码

思考

你的业务中,有哪些问题可以用AI解决?

3.2 从AI的视角,怎么定义我遇到的业务问题

首先,我们从三个角度来看待一个业务问题

  1. 输入是什么:文本、图像、语音信号……
  2. 输出是什么:标签、数值、大段文字(包括代码、指令等)……
  3. 怎么量化衡量输出的对错/好坏?

业务问题分类

绝大多数业务问题,都可以归入如下至少一类。
分类问题

笼统的说,输出是标签。输出的标签是个有限集。输出的标签是预先定义好的有限集。
例如:分析一段评价是正向还是负向,是典型的分类问题。输出是两个标签之一:“正向”或“负向”。
更复杂的分类,比如,输入一篇新闻,输出的是“政治”、“经济”、“体育”、“娱乐”、“科技”之一(或多个标签)。

聚类问题

没法提前规定有多少种标签,只能把同一类事物聚合在一起,到底能聚出多少类,是数据本身决定的。
例如:自动收集客户经常问到的问题。(我们无法预知客户有多少问题,只能把同一个意思的问题聚合在一起)

回归问题(return)

输出是一个数值,更重要的是,评价输出好坏的所附文件误差大小,而不是二元的对错。
举例:根据专车司机每天工作的时段、时长、跑的公里数,预估他一天的净利润。

决策问题

输出是连续的一系列动作,每一步动作都有代价或收益。每一步的动作本身没有对错,而是要最大化最终的收益。
举例:打游戏、下棋、无人驾驶、对话、量化投资

概率密度估计

超纲了,本门课不讲。提一下就是为了严谨。

复杂问题的两个视角

  • 信息抽取、实体识别,内容生成本质上都是分类问题
  • 在ChatGPT时代,上述很多问题都可以从文本生成的角度解决

划重点

  1. ChatGPT看做是一个函数,给输入,**生成**输出
  2. 任何业务问题,都可以用语言描述,成为ChatGPT的输入
  3. 就能**生成**业务问题的结果

4.以上问题,ChatGPT能解决哪些,不能解决哪些?

试一下就知道了

4.1分类问题实验

1.简介-AI大模型全栈工程师培养计划 - 图2 ✅成功

4.2聚类问题实验

1.简介-AI大模型全栈工程师培养计划 - 图3 ✅成功

4.3回归问题实验:

1.简介-AI大模型全栈工程师培养计划 - 图4 未标题-1.png ❌失败

4.4决策问题实验

2.png ✅成功 or ❌失败?

4.5特别擅长任务规划 3.png

4.6 遇到ChatGPT解决不了的问题怎么办

  • 学好后面自己训练模型的那几节课(有些深度)
  • 真学会了,身份倍增。加油!

5.它是怎么生成结果的?

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

1.简介-AI大模型全栈工程师培养计划 - 图8

OpenAI的接口名就叫“completion”,也证明了其只会“生成”的本质。
下面用程序演示“生成下一个字”。你可以自己修改prompt试试,还可以使用相同的prompt运行多次。

  1. import openai
  2. import os
  3. import time
  4. from dotenv import load_dotenv, find_dotenv
  5. _ = load_dotenv(find_dotenv())
  6. openai.api_key = os.getenv('OPENAI_API_KEY')
  7. prompt='今天我很'
  8. response = openai.Completion.create(
  9. model="text-davinci-003",
  10. prompt=prompt,
  11. max_tokens=40,
  12. temperature=0,
  13. stream=True
  14. )
  15. #print(response.choices[0].text)
  16. for chunk in response:
  17. print(chunk.choices[0].text, end='')
  18. time.sleep(0.2)

开心
I’m very happy today.

划重点: 我们用不严密但通俗的语言描述 ChatGPT 的工作原理:

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

思考

你用 ChatGPT 做过的事,是不是都能用这个原理解释?

5.1 大语言模型(LLM):GPT,Transformer

1.简介-AI大模型全栈工程师培养计划 - 图9

6.OpenAI API初探

6.1、安装Python库

  1. pip install --upgrade openai

6.2、查看可调用的模型

  1. import openai
  2. import os
  3. # 加载 .env 文件
  4. from dotenv import load_dotenv, find_dotenv
  5. _ = load_dotenv(find_dotenv())
  6. # 从环境变量中获得你的 OpenAI Key
  7. openai.api_key = os.getenv('OPENAI_API_KEY')
  8. # 模型列表
  9. models = openai.Model.list()
  10. for model in models.data:
  11. print(model.id)

6.3、发一条消息

  1. # 消息格式
  2. messages=[
  3. {
  4. "role": "system",
  5. "content": "你是AI助手小瓜.你是AGIClass的助教。这门课每周二、四上课。"
  6. },
  7. {
  8. "role": "user",
  9. "content": "你是干什么的?什么时间上课"
  10. },
  11. ]
  12. # 调用ChatGPT-3.5
  13. chat_completion = openai.ChatCompletion.create(model="gpt-3.5-turbo", messages=messages)
  14. # 输出回复
  15. print(chat_completion.choices[0].message.content)

我是一个AI助手,专门为学生和教师提供帮助和支持。我是AGIClass的助教,这门课每周二和周四上课。如果你有关于这门课的问题,我会很乐意帮助你。

彩蛋

我们开发的大模型提效利器:ChatALL。某前端工程师用后表示:「1 小时的调试工作缩短到 5 分钟」。

作业

为保证后续课程能正常跟进,请完成如下作业:

  1. 能正常使用 ChatGPT 或 Bing Chat 至少之一
  2. 下载安装 ChatALL,通过它体验 ChatGPT 或/和 Bing Chat
  3. 在 GitHub 给 ChatALL 加个星星(此条自愿完成😁)