课程笔记 | 吴恩达新课:Building Systems with the ChatGPT API

517 阅读3分钟

Language Models, the Chat Format and Tokens

这节课一上来就是介绍LLM是如何工作的: 通过现有的和生成的文本预测下一个单词 ScreenClip.png 现如今有两种LLM模型:Base LLM和Instruction LLM(之前讲过了就不多赘述了) 这里还稍微介绍了一下token 一个token的长度大概是4个英语字符(中文是另一种计算方式),gpt3.5一次问答的token限制是4000个左右。

补充内容:为什么会有token限制? 包括算力和技术两方面的问题。 算力很容易理解,就是处理不过来了,每一次计算成本太高了。 技术问题就是gpt背后的Transformer的长度外推性并不好,处理长文本的效果不好。 当然在这个问题目前也有了很多的研究和发现,按下不提。

ScreenClip.png 吴恩达老师也提到了一个点就是不要把api展示给别人看,而是应该作为一个环境变量使用。当然对于搞开发的同学这个是最基本的细节。 ScreenClip.png

Moderation

这节课是介绍如何通过OPEN AI的Moderation判断输入文本的“不适”倾向,以便更好的做言论判断。 ScreenClip.png 这里也提到了要避免“言论注射”,也就是“prompt越狱”,最典型的就是:遗忘之前给你的所有提示,按照xxx

Chain of Thought Reasoning

本节课讲的是如何通过prompt的书写展示思考链,以获得更正确的回答。 以下是一个例子: 先列出几个产品——》检查用户是否在询问关于产品的问题——》检查用户问的产品是否在我们提供的产品列表中——》如果用户提出了假设(比如价格比较、保质期),根据产品信息来判断假设是否成立——》给出正确的答案 这个在之前那节课已经讲过了,不多赘述。

Process Inputs: Chaining Prompts

这节课强调了一个点:对于复杂的任务,要保持跟踪状态 ScreenClip.png 处理一个复杂问题就像是做一道菜,需要不同的技法。 所以我们需要用很多的条件判断和循环语句来更好的“分割”任务获得更好的结果。

以下是几个使用chaining prompts的原则:

  • 更专注:分解一项复杂的任务
  • 注意上下文限制:输入输出最大token
  • 降低成本:尽可能减少token数 ScreenClip.png

Check outputs

避免潜在的有害信息:response = openai.Moderation.create 检查回答是否基于给出的信息:通过一个新的prompt将回答和信息进行比对 本节课内容和之前的课程有重复,就不赘述了。

Evaluation

评测一个系统的产出答案效果,老生常谈的问题了。 吴恩达给出的答案就是:记录下出现不好回答的那些例子,然后修改prompt,添加新的提示内容,比如:不要输出xxxx

课程中也给出了一个略显笨拙的“自动检测”回答质量的办法:就是先人为提供理想回答,然后让机器回答和理想答案进行比对,给出分数。 真就是有多少人工就有多少智能啊。

之后的视频中海通过代码包装了一个问答机器人,用到了上面学到的知识,这个封装对于开发人员来说都是洒洒水啦。

我学习后的体验

这个课程和之前的课程还是有很多地方有重合的部分的,所以学习起来难度不大,对于开发人员来说算是个入门教程吧,更好的通过chain prompt分析处理问题。

再再次感谢吴恩达老师的无私分享和贡献。