From 9cc70831dce56f2285e133be558d9f95510c961c Mon Sep 17 00:00:00 2001 From: Yixin Zhang Date: Mon, 10 Jul 2023 23:56:38 +0800 Subject: [PATCH] updated appendix.1 --- content/Prompt Engineering/9. 总结.md | 4 +- .../附1-使用ChatGLM进行学习.ipynb | 117 ++++++++++++------ 2 files changed, 80 insertions(+), 41 deletions(-) diff --git a/content/Prompt Engineering/9. 总结.md b/content/Prompt Engineering/9. 总结.md index a64a26e..660fc46 100644 --- a/content/Prompt Engineering/9. 总结.md +++ b/content/Prompt Engineering/9. 总结.md @@ -1,4 +1,4 @@ -恭喜你完成了这门短期课程。 +**恭喜你完成了这门短期课程。** 总的来说,在这门课程中,我们学习了关于prompt的两个关键原则: @@ -11,7 +11,7 @@ 我们希望你能想出一些应用程序的想法,并尝试自己构建它们。请尝试一下并让我们知道你的想法。你可以从一个非常小的项目开始,也许它具有一定的实用价值,也可能完全没有实用价值,只是一些有趣好玩儿的东西。请利用你第一个项目的学习经验来构建更好的第二个项目,甚至更好的第三个项目等。或者,如果你已经有一个更大的项目想法,那就去做吧。 -大型语言模型非常强大,作为提醒,我们希望大家负责任地使用它们,请仅构建对他人有积极影响的东西。在这个时代,构建人工智能系统的人可以对他人产生巨大的影响。因此必须负责任地使用这些工具。 +大型语言模型非常强大,作为提醒,我们希望大家**负责任地**使用它们,请仅构建对他人有**积极影响**的东西。在这个时代,构建人工智能系统的人可以对他人产生巨大的影响。因此必须负责任地使用这些工具。 现在,基于大型语言模型构建应用程序是一个非常令人兴奋和不断发展的领域。现在你已经完成了这门课程,我们认为你现在拥有了丰富的知识,可以帮助你构建其他人今天不知道如何构建的东西。因此,我希望你也能帮助我们传播并鼓励其他人也参加这门课程。 diff --git a/content/Prompt Engineering/附1-使用ChatGLM进行学习.ipynb b/content/Prompt Engineering/附1-使用ChatGLM进行学习.ipynb index 14faaf4..9db90e4 100644 --- a/content/Prompt Engineering/附1-使用ChatGLM进行学习.ipynb +++ b/content/Prompt Engineering/附1-使用ChatGLM进行学习.ipynb @@ -7,11 +7,26 @@ "tags": [] }, "source": [ - "# ChatGPT与ChatGLM对比\n", + "# 附1 ChatGPT与ChatGLM对比\n", "\n", - "国产大模型有很多,比如文心一言、通义千问、星火、MOSS和ChatGLM等等,但现在明确可以部署在本地并且开放api的只有MOOS和ChatGLM。MOOS由于需要的GPU显存过大(不量化的情况下需要80GB,多轮对话还是会爆显存),但ChatGLM可以在笔记本电脑部署(int4版本只需要6GB显存即可)。所以本文采用ChatGLM与ChatGPT做对比,看看国产模型的优点和缺点。\n", + "国产大模型有很多,比如文心一言、通义千问、星火、 MOSS 和 ChatGLM 等等,但现在明确可以部署在本地并且开放 api 的只有 MOSS 和 ChatGLM 。MOSS 由于需要的GPU显存过大(不量化的情况下需要 ```80GB``` ,多轮对话还是会爆显存),但 ChatGLM 可以在笔记本电脑部署( ```int4``` 版本只需要 ```6GB``` 显存即可)。所以本文采用 ChatGLM 与 ChatGPT 做对比,看看国产模型的优点和缺点。\n", "\n", - "本文会选取本教程的各个方面进行对比,最后会总结ChatGPT与ChatGLM各自的优缺点。另外本文也适用于没有 OpenAI api key的读者,部署好chatglm-6B之后,使用后续介绍的函数也可以学完整个课程。" + "本文会选取本教程的各个方面进行对比,最后会总结 ChatGPT 与ChatGLM各自的优缺点。另外本文也适用于没有 OpenAI api key 的读者,部署好 ``` ChatGLM-6B``` 之后,使用后续介绍的函数也可以学完整个课程。" + ] + }, + { + "cell_type": "markdown", + "id": "f5debf6b", + "metadata": {}, + "source": [ + "
\n", + "
" ] }, { @@ -19,7 +34,15 @@ "id": "9be808ea-5284-4399-b832-5205c2745d13", "metadata": {}, "source": [ - "## ChatGLM环境配置" + "## 一、环境配置" + ] + }, + { + "cell_type": "markdown", + "id": "1553056f", + "metadata": {}, + "source": [ + "### 1.1 ChatGLM环境配置" ] }, { @@ -29,7 +52,7 @@ "source": [ "  ChatGLM环境配置可以参考DataWhale的这篇文章:[ChatGLM-6B 本地部署指南!](https://mp.weixin.qq.com/s/545Z4DTB78q_sLqBq6dC1A)\n", "\n", - "  部署好了之后,运行项目中的`api.py`文件即可。下面是使用ChatGLM的api封装的类似chatgpt一样的`get_completion`函数,只需要传进去prompt参数即可。" + "  部署好了之后,运行项目中的`api.py`文件即可。下面是使用ChatGLM的api封装的类似 ChatGPT 一样的`get_completion`函数,只需要传进去prompt参数即可。" ] }, { @@ -48,7 +71,7 @@ "id": "0fe69c47-ccc4-47db-a0f5-21e273b35fcb", "metadata": {}, "source": [ - "如果你没有openai的key的话,部署好chatglm-6B之后,使用此函数也可以学完整个课程,加油~" + "如果你没有 OpenAI 的 key 的话,部署好 ChatGLM -6B 之后,使用此函数也可以学完整个课程,加油~" ] }, { @@ -110,7 +133,7 @@ "id": "e4c608de-2293-48df-bb0e-491686e427af", "metadata": {}, "source": [ - "## ChatGPT环境配置" + "### 1.2 ChatGPT环境配置" ] }, { @@ -168,6 +191,14 @@ "get_completion_gpt('你好')" ] }, + { + "cell_type": "markdown", + "id": "61f99c24", + "metadata": {}, + "source": [ + "## 二、文本理解" + ] + }, { "cell_type": "markdown", "id": "c807a1f5-bdf2-46ab-a77f-59985374e647", @@ -175,7 +206,7 @@ "tags": [] }, "source": [ - "## 文本理解" + "### 2.1 文本总结与条件检测" ] }, { @@ -183,7 +214,7 @@ "id": "b1925a9e-54d9-4f75-a625-a1698b95e268", "metadata": {}, "source": [ - "有步骤的文本" + "#### 2.1.1 有步骤的文本(满足输入条件)" ] }, { @@ -277,7 +308,7 @@ "id": "4b43edb5-37b5-4d43-9e16-d2a9b558ef73", "metadata": {}, "source": [ - "**注**:这里可以看出,提供的文本是有步骤的文本。chatglm给出了步骤,但在最后说了`未提供步骤`。但chatgpt给出步骤,而且步骤要比chatglm的完整,而且回答正确。" + "**注**:这里可以看出,提供的文本是有步骤的文本。 ChatGLM 给出了步骤,但在最后说了`未提供步骤`。但 ChatGPT 给出步骤,而且步骤要比 ChatGLM 的完整,而且回答正确。" ] }, { @@ -285,7 +316,7 @@ "id": "37727f9a", "metadata": {}, "source": [ - "无步骤文本" + "#### 2.1.2 无步骤的文本(不满足输入条件)" ] }, { @@ -367,7 +398,7 @@ "id": "ca4a5d02-0284-48fb-a22e-19b9d343ef65", "metadata": {}, "source": [ - "**注:** 提供的是一个无步骤文本,但chatglm回答了一个步骤,在最后说了无步骤,这跟上面的有步骤文本回答几乎一样。chatgpt则是直接给出`未提供步骤`的回答。" + "**注:** 提供的是一个无步骤文本,但 ChatGLM 回答了一个步骤,在最后说了无步骤,这跟上面的有步骤文本回答几乎一样。 ChatCPT 则是直接给出`未提供步骤`的回答。" ] }, { @@ -375,7 +406,7 @@ "id": "198f0fb0", "metadata": {}, "source": [ - "提供少量示例的文本" + "### 2.2 提供少量示例的文本续写(Few-shot)" ] }, { @@ -451,7 +482,7 @@ "id": "524d968f-41da-4f68-beef-a50800944254", "metadata": {}, "source": [ - "**注:** 让你模仿,没让你超越啊!可以看出chatglm的回答与提供的少量示例文本几乎毫无关系,而chatgpt则是按照提供的示例模型续写。chatgpt薄纱chatglm。" + "**注:** 让你模仿,没让你超越啊!可以看出 ChatGLM 的回答与提供的少量示例文本几乎毫无关系,而 ChatGPT 则是按照提供的示例模型续写。 ChatGPT 薄纱 ChatGLM 。" ] }, { @@ -459,7 +490,7 @@ "id": "6bdbe63f", "metadata": {}, "source": [ - "关注点侧重" + "### 2.3 关注点侧重" ] }, { @@ -528,7 +559,7 @@ "id": "abe00c2a-f8e6-4531-8077-33b50de7dba7", "metadata": {}, "source": [ - "**注:** 让它侧重运输,chatglm甚至把运输的内容放在了回答的最后,chatgpt倒是把运输的部分放到了最前,表示侧重。" + "**注:** 让它侧重运输, ChatGLM 甚至把运输的内容放在了回答的最后, ChatGPT 倒是把运输的部分放到了最前,表示侧重。" ] }, { @@ -536,7 +567,7 @@ "id": "6b64ec6e", "metadata": {}, "source": [ - "关键信息提取" + "### 2.4 关键信息提取" ] }, { @@ -598,7 +629,7 @@ "id": "4cc52af4-bf0e-4592-9292-ed238233a195", "metadata": {}, "source": [ - "**注:** 不错,不错,chatglm和chatgpt都把运输信息提取出来了,chatglm甚至还多说了点。" + "**注:** 不错,不错, ChatGLM 和 ChatGPT 都把运输信息提取出来了, ChatGLM 甚至还多说了点。" ] }, { @@ -606,13 +637,13 @@ "id": "e07bb807-0a6e-43e6-b8a8-a597c42a6753", "metadata": {}, "source": [ - "### 总结\n", + "### 2.5 总结\n", "\n", - "- 文本理解方面,chatglm与chatgpt的差距有点大。首先是步骤文本,无论提供的文本是否有步骤,chatglm都给出了步骤。而chatgpt则是有步骤给步骤,没步骤就不给。\n", + "- 文本理解方面, ChatGLM 与 ChatGPT 的差距有点大。首先是步骤文本,无论提供的文本是否有步骤, ChatGLM 都给出了步骤。而 ChatGPT 则是有步骤给步骤,没步骤就不给。\n", "\n", - "- 示例文本续写方面,chatglm本着模仿就要超越的原则,直接舍弃提供的少量示例,放飞自我。chatgpt则是按照提供的少量示例给出了答案。\n", + "- 示例文本续写方面, ChatGLM 本着模仿就要超越的原则,直接舍弃提供的少量示例,放飞自我。 ChatGPT 则是按照提供的少量示例给出了答案。\n", "\n", - "- 关键信息提取,chatglm表现差强人意,不太行。chatgpt倒是符合我的要求。" + "- 关键信息提取, ChatGLM 表现差强人意,不太行。 ChatGPT 倒是符合我的要求。" ] }, { @@ -620,7 +651,15 @@ "id": "8852532a-d1fb-44eb-87d5-8f95aa3e1606", "metadata": {}, "source": [ - "## 结构化输出" + "## 三、结构化输出" + ] + }, + { + "cell_type": "markdown", + "id": "8a9370dc", + "metadata": {}, + "source": [ + "### 3.1 示例1" ] }, { @@ -711,7 +750,7 @@ "id": "c3b6f8c4-e649-4dd5-9b1c-46d724f92f7b", "metadata": {}, "source": [ - "**注:** 可以看出,chatglm完全忽略了prompt中的`输出json对象`, 而且这个输出的摘要像是重新说了一遍,翻译也有些中文没有完全翻译。chatgpt的回答是符合要求的。" + "**注:** 可以看出, ChatGLM 完全忽略了 Prompt 中的`输出json对象`, 而且这个输出的摘要像是重新说了一遍,翻译也有些中文没有完全翻译。 ChatGPT 的回答是符合要求的。" ] }, { @@ -719,7 +758,7 @@ "id": "edd7c59f", "metadata": {}, "source": [ - "从客户的评论中提取结构化信息" + "### 3.2 从客户的评论中提取结构化信息" ] }, { @@ -797,7 +836,7 @@ "id": "c9bd113e-2ffb-4828-a03a-a7d1c78b82d8", "metadata": {}, "source": [ - "**注:** chatglm提取信息成功!口头表扬一次,但是并没有按照json对象输出,口头批评一次。chatgpt做的很好,表扬一次。" + "**注:** ChatGLM 提取信息成功!口头表扬一次,但是并没有按照json对象输出,口头批评一次。 ChatGPT 做的很好,表扬一次。" ] }, { @@ -805,7 +844,7 @@ "id": "10edd035", "metadata": {}, "source": [ - "一次提取多条信息" + "### 3.3 一次提取多条信息" ] }, { @@ -883,7 +922,7 @@ "id": "aff470ae-7110-4e97-8e8b-45835af17df4", "metadata": {}, "source": [ - "**注:** chatglm提取信息确实是提取的没问题,但是吧,还是没有转化为json对象输出。并且`Anger`没有给出布尔值,扣分项。" + "**注:** ChatGLM 提取信息确实是提取的没问题,但是吧,还是没有转化为json对象输出。并且`Anger`没有给出布尔值,扣分项。" ] }, { @@ -891,9 +930,9 @@ "id": "163f5442-9b64-4e0a-a370-b34f51067c3a", "metadata": {}, "source": [ - "### 总结\n", + "### 3.4 总结\n", "\n", - "提取信息+结构化输出,chatglm基本只能做到提取信息,并没有实现输出json对象。能力有待加强,不知道chatglm-130B的版本如何?希望能更好些,加油~" + "提取信息+结构化输出, ChatGLM 基本只能做到提取信息,并没有实现输出json对象。能力有待加强,不知道 ChatGLM -130B的版本如何?希望能更好些,加油~" ] }, { @@ -901,7 +940,7 @@ "id": "d0085689-c1f1-4cfa-ae1c-714731c02a3a", "metadata": {}, "source": [ - "## 翻译" + "## 四、翻译与转换" ] }, { @@ -909,7 +948,7 @@ "id": "ff6b817b", "metadata": {}, "source": [ - "多语种翻译" + "### 4.1 多语种翻译" ] }, { @@ -976,7 +1015,7 @@ "id": "6422cb54-6153-4bf5-bdbe-c87d0780cfb6", "metadata": {}, "source": [ - "**注:** 本人知识浅薄,法语和西班牙语翻译是用有道翻译检验的。chatglm和chatgpt的翻译都正确。大胜利!" + "**注:** 本人知识浅薄,法语和西班牙语翻译是用有道翻译检验的。 ChatGLM 和 ChatGPT 的翻译都正确。大胜利!" ] }, { @@ -984,7 +1023,7 @@ "id": "5aeb18fc", "metadata": {}, "source": [ - "翻译+正式语气" + "### 4.2 翻译+正式语气" ] }, { @@ -1052,7 +1091,7 @@ "id": "dc886170-3b7d-484a-b79c-e7cad453109d", "metadata": {}, "source": [ - "**注:** 两种语气,chatglm和chatgpt都回答的不错,都加分。" + "**注:** 两种语气, ChatGLM 和 ChatGPT 都回答的不错,都加分。" ] }, { @@ -1060,9 +1099,9 @@ "id": "a07fd232-34fa-4c04-80db-ac6698740f20", "metadata": {}, "source": [ - "### 总结\n", + "### 4.3 总结\n", "\n", - "在翻译这块,chatglm做的和chatgpt相差无几,甚至可以说有些超越。换个角度想想,本地部署一个chatglm-int4专门用来翻译也不错啊,起码本地部署的api不收费!" + "在翻译这块, ChatGLM 做的和 ChatGPT 相差无几,甚至可以说有些超越。换个角度想想,本地部署一个 ChatGLM -int4专门用来翻译也不错啊,起码本地部署的api不收费!" ] }, { @@ -1070,7 +1109,7 @@ "id": "5d5a0225", "metadata": {}, "source": [ - "## 逻辑推理" + "## 五、逻辑推理" ] }, { @@ -1182,7 +1221,7 @@ "id": "2a313cd9-647e-4639-aa06-e28dd2df7827", "metadata": {}, "source": [ - "**注:** 实际上学生的解决方案是不正确的,维护费用每平方英尺是10美元,在学生的解答中错误的将其写成了100美元,chatglm发现这个错误,但它没有指出学生解答中的错误。相反chatgpt发现了错误,并给出了正确解法。" + "**注:** 实际上学生的解决方案是不正确的,维护费用每平方英尺是10美元,在学生的解答中错误的将其写成了100美元, ChatGLM 发现这个错误,但它没有指出学生解答中的错误。相反 ChatGPT 发现了错误,并给出了正确解法。" ] } ],