1.1 这节课会带给你
- 通俗了解大模型的工作原理,秒赢99%其他人的认知
- 了解指令工程的强大,不只是“说人话”那么简单
- 浅尝OpenAI API调用
开始上课!
1.2这门课面向哪些人
- 程序员
- 有编辑基础的学生
建议
- 会编辑几乎是唯一要求,但并不用特别擅长。
- AI的强大,使得用好它的门槛也低了很多。
- Python是课程主语言。不熟悉也没关系,都看得明白。需要上手编时,正好用AI帮忙。
学了这门课能干啥?
- 用好AI解决实际工作中的问题
- 训练自己的AI大(小)模型
- 不能把你变成AI科学家
1.3FAQ
1.用好AI需要很多数学知识吗?
以前真需要,以后可能不那么需要了
2.有的知识太深,我理解不了怎么办
“用到再讲、学以致用”是我们的教学理念。很多知识,用着用着就理解了
少部分基础数学知识主要在数据和模型训练部分,可以根据自身情况选择性理解。不理解,也不太影响使用
3.感觉讲的太浅了,没学到的知识怎么办
尽量在每节课里的涉及一少部分有深度的知识
如果感觉不解渴,欢迎积极提问
4.课听懂了,实际工作中还是不会用怎么办
- NLP的实际问题通常不是端到端由一个算法解决的,我们把拆解问题的思路融入课程中,用心体会
- 解决实际问题的方法论会贯穿始终
- 问指导老师
建议
- 本课由达人首创,发行不久,且AI领域日新周异高速迭代,必有大量不足之处
- 课程会不断改进,欢迎随时提出意见和建议
2 什么是AI
课程设计者曾和【深蓝】创造者许峰雄博士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的视角,怎么定义我遇到的业务问题
首先,我们从三个角度来看待一个业务问题
- 输入是什么:文本、图像、语音信号……
- 输出是什么:标签、数值、大段文字(包括代码、指令等)……
- 怎么量化衡量输出的对错/好坏?
业务问题分类
绝大多数业务问题,都可以归入如下至少一类。
分类问题
笼统的说,输出是标签。输出的标签是个有限集。输出的标签是预先定义好的有限集。
例如:分析一段评价是正向还是负向,是典型的分类问题。输出是两个标签之一:“正向”或“负向”。
更复杂的分类,比如,输入一篇新闻,输出的是“政治”、“经济”、“体育”、“娱乐”、“科技”之一(或多个标签)。
聚类问题
没法提前规定有多少种标签,只能把同一类事物聚合在一起,到底能聚出多少类,是数据本身决定的。
例如:自动收集客户经常问到的问题。(我们无法预知客户有多少问题,只能把同一个意思的问题聚合在一起)
回归问题(return)
输出是一个数值,更重要的是,评价输出好坏的所附文件误差大小,而不是二元的对错。
举例:根据专车司机每天工作的时段、时长、跑的公里数,预估他一天的净利润。
决策问题
输出是连续的一系列动作,每一步动作都有代价或收益。每一步的动作本身没有对错,而是要最大化最终的收益。
举例:打游戏、下棋、无人驾驶、对话、量化投资
概率密度估计
超纲了,本门课不讲。提一下就是为了严谨。
复杂问题的两个视角
- 信息抽取、实体识别,内容生成本质上都是分类问题
- 在ChatGPT时代,上述很多问题都可以从文本生成的角度解决
划重点
把ChatGPT看做是一个函数,给输入,**生成**输出
任何业务问题,都可以用语言描述,成为ChatGPT的输入
就能**生成**业务问题的结果
4.以上问题,ChatGPT能解决哪些,不能解决哪些?
试一下就知道了
4.1分类问题实验:
✅成功
4.2聚类问题实验
✅成功
4.3回归问题实验:
❌失败
4.4决策问题实验:
✅成功 or ❌失败?
4.5特别擅长任务规划
4.6 遇到ChatGPT解决不了的问题怎么办?
- 学好后面自己训练模型的那几节课(有些深度)
- 真学会了,身份倍增。加油!
5.它是怎么生成结果的?
其实,它只是根据上文,猜下一个词(的概率)……
OpenAI的接口名就叫“completion”,也证明了其只会“生成”的本质。
下面用程序演示“生成下一个字”。你可以自己修改prompt试试,还可以使用相同的prompt运行多次。
import openai
import os
import time
from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv())
openai.api_key = os.getenv('OPENAI_API_KEY')
prompt='今天我很'
response = openai.Completion.create(
model="text-davinci-003",
prompt=prompt,
max_tokens=40,
temperature=0,
stream=True
)
#print(response.choices[0].text)
for chunk in response:
print(chunk.choices[0].text, end='')
time.sleep(0.2)
开心
I’m very happy today.
划重点: 我们用不严密但通俗的语言描述 ChatGPT 的工作原理:
- GPT「大模型」阅读了人类曾说过的所有的话。这就是「学习」
- 把一串词后面跟着的不同词的概率记下来。记下的就是「参数」,也叫「权重」
- 当我们给它若干词,GPT 就能算出概率最高的下一个词是什么。这就是「生成」
- 用生成的词,再加上上文,就能继续生成下一个词。以此类推,生成更多文字
思考:
你用 ChatGPT 做过的事,是不是都能用这个原理解释?
5.1 大语言模型(LLM):GPT,Transformer
6.OpenAI API初探
6.1、安装Python库
pip install --upgrade openai
6.2、查看可调用的模型
import openai
import os
# 加载 .env 文件
from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv())
# 从环境变量中获得你的 OpenAI Key
openai.api_key = os.getenv('OPENAI_API_KEY')
# 模型列表
models = openai.Model.list()
for model in models.data:
print(model.id)
6.3、发一条消息
# 消息格式
messages=[
{
"role": "system",
"content": "你是AI助手小瓜.你是AGIClass的助教。这门课每周二、四上课。"
},
{
"role": "user",
"content": "你是干什么的?什么时间上课"
},
]
# 调用ChatGPT-3.5
chat_completion = openai.ChatCompletion.create(model="gpt-3.5-turbo", messages=messages)
# 输出回复
print(chat_completion.choices[0].message.content)
我是一个AI助手,专门为学生和教师提供帮助和支持。我是AGIClass的助教,这门课每周二和周四上课。如果你有关于这门课的问题,我会很乐意帮助你。
彩蛋
我们开发的大模型提效利器:ChatALL。某前端工程师用后表示:「1 小时的调试工作缩短到 5 分钟」。
作业
为保证后续课程能正常跟进,请完成如下作业:
- 能正常使用 ChatGPT 或 Bing Chat 至少之一
- 下载安装 ChatALL,通过它体验 ChatGPT 或/和 Bing Chat
- 在 GitHub 给 ChatALL 加个星星(此条自愿完成😁)