笔记《程序员的 AI 第一课》开篇词与基础篇

73 阅读5分钟

开篇

AI 时代程序员依然有用,社会进入 AI 时代,需要程序员将优秀的算法和模型结与现实生活结合起来,有大量的工程性工作。这些工作恰恰是程序员的强项。程序员的重点不全是打造 AI 的全新应用,而是用 AI 重塑产品能力。基于大模型应用开发开发我们需要有不同的编程模式。

这门课就是来介绍大模型应用开发的。

课程内容核心如下:

  • 了解大模型基础

  • 应用开发

    • OpenAI 和 langchain
    • 2 种应用类型:RAG 和 Agent
      • RAG: 帮助模型扩展知识边界,了解它训练时还不知道的知识
      • Agent: 帮助模型执行复杂任务,扩展模型能力边界
  • 模型能力

    • 开源模型
    • 微调

大模型基础

用户视角 LLM 基础知识

LLM 是什么?

  • 它是模型,是 AI 能力的核心。
  • 它是语言模型,其核心能力在于语言能力。
  • 它是大语言模型,与传统模型相比,它最大的特点就是“大”。

理解 LLM,先从用户视角出发。

用户视角,LLM:

  • 知识丰富:在 AI 领域中,一个模型能力强弱很大程度上取决于其训练数据量的多寡。大语言模型的“大”主要是指数据量大。
  • 知人晓事:理解人类语言,支持个性化,能根据不同人的立场和背景,给出不同的解答
  • 知错就改:指出错误后,能自我调整
  • 知法守法:合规

技术视角的 LLM 基础知识

大模型到底做了些什么。本质是一次选择一个词(token),通过概率预测。

大模型接收输入,编码成一个个 token, 然后通过概率预测下一个 token。

Token 的概念在大模型编程中是非常重要的,现在各大厂商的竞争中,有一个很重要的指标就是上下文窗口(Context Window)的大小。

在随机性方面,则是通过 temperature 参数来控制。越大随机性越强,越小确定性越强。

输入字符串时如何编码成 token?

两个步骤:OneHot 编码(现在已经不是了)和压缩。One-Hot 编码就是将离散的分类值转换为二进制向量。向量中存在大量的 0,需要做压缩得到最终的 embedding。

获取 embedding 有 2 种方法:降维和把 Embedding 训练成神经网络。降维的技术有很多,比如主成分分析(Principal component analysis)。但在大模型中,通常使用把 Embedding 训练成神经网络的方法,也就是把我们前一步得到的向量送给一个神经网络,得到最终的压缩过的向量。具体如何训练是一个更为复杂的过程,这不是我们这里关注的重点。

经过这个处理之后,一个硕大的向量就会压缩成一个固定大小的向量。比如,在 GPT 3 中,每个 Token 都由 768 个数字组成的向量表示。

我们知道了大模型的核心任务是每次添加一个词,经过了上面的学习,你应该清楚,更准确的说法是每次添加一个 Token。Token 在大模型编程中非常重要,上下文窗口的大小决定了大模型一次可以处理多少个 Token,大模型通常是用 Token 进行计费的。

提示词

与大模型沟通的要点在于:

  • 定义任务目标,越清晰越好
  • 给大模型下达指令
  • 根据生成的结果进行调整

在提示词上,重点掌握:提示词 = 定义角色 + 背景信息 + 任务目标 + 输出要求。

定义角色包括:大模型的角色和我们的角色。

提示工程

提示工程,顾名思义,就是研究怎么写提示词。提示工程并非是因大模型浪潮而诞生。早在 NLP 领域,提示词就已经存在。 人们发现给 AI 适当引导,AI 能更准确地理解我们的意图。

从技术本质上说,我们为大模型提供的背景信息越多,越有助于大模型理解我们的意图,而我们给大模型提供信息的方式就是提供提示词。

几个经典的提示词技术

  • 零样本提示(Zero-Shot Prompting):用于通用的任务。
  • 少样本提示(Few-Shot Prompting):用于特定的简单任务。
  • 思维链提示(Chain of Thought Prompting):引入推理过程,可以与零样本提示和少样本提示结合。而思维链提示给出的答案则是带有完整的思考过程,是一个“慢下来”的答案,于是得到了一个正确的答案。你现在明白了,所谓思维链,就是这个思考过程。既然有少样本思维链,那是不是有零样本思维链,还真有。只要提示词里添加 Let’s think step by step 就行,很明显,它就是告诉大模型慢下来,一步一步想。 OpenAI 发布了 o1,其核心原理就是将思维链引入了大模型的处理过程中,大幅度提升了模型的推理能力。如果能够理解思维链,我们即便使用的是能力稍弱一些的大模型也依然能达到不错的推理效果。
  • ReAct 框架:将大模型推理和一些行动能力结合起来,超越大模型自身的限制。

ReAct 框架

上述的提示词技术都是在说大模型自身的推理过程,而 ReAct 框架则是在说大模型与外界的交互过程,从而帮我们完成更复杂的任务。 ReAct 框架就是在这个想法下诞生的。ReAct 实际上是两个单词的缩写:Reasoning + Acting,也就是推理 + 行动。

ReAct 框架的每个任务都会经历思考(Thought)、行动(Action)、观察(Observation)三个阶段。

总结:提示工程是为了引导大模型给出更好的答案。

附录

课后学习:

towardsdatascience.com/inside-gpt-…

towardsdatascience.com/inside-gpt-…

developers.google.com/machine-lea…

ReAct 论文

langchain 示例的 ReAct 模板