From ba0cfd85dcf98c4b798817b88778da36f292ec1c Mon Sep 17 00:00:00 2001 From: LiuWH <65588374+Weihong-Liu@users.noreply.github.com> Date: Wed, 26 Jul 2023 23:34:40 +0800 Subject: [PATCH 1/3] =?UTF-8?q?Update=208.=E6=90=AD=E5=BB=BA=E4=B8=80?= =?UTF-8?q?=E4=B8=AA=E5=B8=A6=E8=AF=84=E4=BC=B0=E7=9A=84=E7=AB=AF=E5=88=B0?= =?UTF-8?q?=E7=AB=AF=E9=97=AE=E7=AD=94=E7=B3=BB=E7=BB=9F=20Evaluation.ipyn?= =?UTF-8?q?b?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ºä¸€ä¸ªå¸¦è¯„估的端到端问答系统 Evaluation.ipynb | 48 +++++++++++++------ 1 file changed, 33 insertions(+), 15 deletions(-) diff --git a/docs/content/C2 Building Systems with the ChatGPT API/8.æ­å»ºä¸€ä¸ªå¸¦è¯„估的端到端问答系统 Evaluation.ipynb b/docs/content/C2 Building Systems with the ChatGPT API/8.æ­å»ºä¸€ä¸ªå¸¦è¯„估的端到端问答系统 Evaluation.ipynb index 8f4212f..d1b66c7 100644 --- a/docs/content/C2 Building Systems with the ChatGPT API/8.æ­å»ºä¸€ä¸ªå¸¦è¯„估的端到端问答系统 Evaluation.ipynb +++ b/docs/content/C2 Building Systems with the ChatGPT API/8.æ­å»ºä¸€ä¸ªå¸¦è¯„估的端到端问答系统 Evaluation.ipynb @@ -12,19 +12,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "在本章中,我们将æ­å»ºä¸€ä¸ªå¸¦è¯„估的端到端问答系统,这个系统综åˆäº†ä¹‹å‰å¤šèŠ‚è¯¾çš„å†…å®¹ï¼Œå¹¶åŠ å…¥äº†è¯„ä¼°è¿‡ç¨‹ã€‚\n", + "在这一章节中,我们将会构建一个集æˆè¯„估环节的完整问答系统。这个系统将会èžåˆæˆ‘们在å‰å‡ èŠ‚è¯¾ä¸­æ‰€å­¦åˆ°çš„çŸ¥è¯†ï¼Œå¹¶ä¸”åŠ å…¥äº†è¯„ä¼°æ­¥éª¤ã€‚ä»¥ä¸‹æ˜¯è¯¥ç³»ç»Ÿçš„æ ¸å¿ƒæ“作æµç¨‹ï¼š\n", "\n", - "1. 检查输入,确认其是å¦èƒ½é€šè¿‡å®¡æ ¸ API 的审核。\n", + "1. 对用户的输入进行检验,验è¯å…¶æ˜¯å¦å¯ä»¥é€šè¿‡å®¡æ ¸ API 的标准。\n", + "2. 若输入顺利通过审核,我们将进一步对产å“目录进行æœç´¢ã€‚\n", + "3. è‹¥äº§å“æœç´¢æˆåŠŸï¼Œæˆ‘ä»¬å°†ç»§ç»­å¯»æ‰¾ç›¸å…³çš„äº§å“ä¿¡æ¯ã€‚\n", + "4. 我们使用模型针对用户的问题进行回答。\n", + "5. 最åŽï¼Œæˆ‘们会使用审核 API 对生æˆçš„å›žç­”è¿›è¡Œå†æ¬¡çš„æ£€éªŒã€‚\n", "\n", - "2. 如果通过了审核,我们将查找产å“列表。\n", - "\n", - "3. 如果找到了产å“,我们将å°è¯•查找它们的相关信æ¯ã€‚\n", - "\n", - "4. 我们使用模型回答用户æå‡ºçš„问题。\n", - "\n", - "5. 我们将通过审核 API 对生æˆçš„答案进行审核。\n", - "\n", - "如果没有被标记为有害的,我们将把答案返回给用户。" + "如果最终答案没有被标记为有害,那么我们将毫无ä¿ç•™åœ°å°†å…¶å‘ˆçŽ°ç»™ç”¨æˆ·ã€‚" ] }, { @@ -34,6 +30,28 @@ "## 二ã€ç«¯åˆ°ç«¯å®žçŽ°é—®ç­”ç³»ç»Ÿ" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "在我们的探索之旅中,我们将实现一个完整的问答系统,一ç§èƒ½ç†è§£å¹¶å›žåº”人类语言的人工智能。在这个过程中,我们将使用 OpenAI 的相关API并引用相关函数,æ¥å¸®åŠ©æˆ‘ä»¬å¿«é€Ÿæ­å»ºä¸€ä¸ªé«˜æ•ˆä¸”ç²¾å‡†çš„æ¨¡åž‹ã€‚ç„¶è€Œï¼Œæˆ‘ä»¬éœ€è¦æ³¨æ„到,在中文的ç†è§£å’Œå¤„ç†æ–¹é¢ï¼Œç”±äºŽæ¨¡åž‹çš„特性,我们å¯èƒ½ä¼šå¶å°”é‡åˆ°ä¸ç†æƒ³çš„ç»“æžœã€‚åœ¨è¿™ç§æƒ…况下,你å¯ä»¥å¤šå°è¯•几次,或者进行深入的研究,以找到更稳定的方法。\n", + "\n", + "让我们先从一个函数开始,它的å称是 `process_user_message_ch`,该函数主è¦è´Ÿè´£å¤„ç†ç”¨æˆ·è¾“入的信æ¯ã€‚è¿™ä¸ªå‡½æ•°æŽ¥æ”¶ä¸‰ä¸ªå‚æ•°ï¼Œç”¨æˆ·çš„è¾“å…¥ã€æ‰€æœ‰çš„历å²ä¿¡æ¯ï¼Œä»¥åŠä¸€ä¸ªè¡¨ç¤ºæ˜¯å¦éœ€è¦è°ƒè¯•的标志。\n", + "\n", + "在函数的内部,我们首先使用 OpenAI çš„ Moderation API æ¥æ£€æŸ¥ç”¨æˆ·è¾“入的åˆè§„性。如果输入被标记为ä¸åˆè§„,我们将返回一个信æ¯ï¼Œå‘ŠçŸ¥ç”¨æˆ·è¯·æ±‚ä¸åˆè§„。在调试模å¼ä¸‹ï¼Œæˆ‘们将打å°å‡ºå½“å‰çš„进度。\n", + "\n", + "接下æ¥ï¼Œæˆ‘们利用 `utils_zh.find_category_and_product_only` 函数(详细请è§é™„录代ç ï¼‰æŠ½å–出用户输入中的商å“和对应的目录。然åŽï¼Œæˆ‘们将抽å–的信æ¯è½¬åŒ–为一个列表。\n", + "\n", + "在获å–到商å“列表åŽï¼Œæˆ‘们将查询这些商å“的具体信æ¯ã€‚之åŽï¼Œæˆ‘们生æˆä¸€ä¸ªç³»ç»Ÿæ¶ˆæ¯ï¼Œè®¾å®šä¸€äº›çº¦æŸï¼Œä»¥ç¡®ä¿æˆ‘ä»¬çš„å›žåº”ç¬¦åˆæœŸæœ›çš„æ ‡å‡†ã€‚\n", + "\n", + "接下æ¥ï¼Œæˆ‘们将生æˆçš„æ¶ˆæ¯å’Œåކå²ä¿¡æ¯ä¸€èµ·é€å…¥ `get_completion_from_messages` 函数,得到模型的回应。\n", + "\n", + "之åŽï¼Œæˆ‘们冿¬¡ä½¿ç”¨ Moderation API 检查模型的输出是å¦åˆè§„。如果输出ä¸åˆè§„,我们将返回一个信æ¯ï¼Œå‘ŠçŸ¥æ— æ³•æä¾›è¯¥ä¿¡æ¯ã€‚\n", + "\n", + "最åŽï¼Œæˆ‘们让模型自我评估是å¦å¾ˆå¥½åœ°å›žç­”äº†ç”¨æˆ·çš„é—®é¢˜ã€‚å¦‚æžœæ¨¡åž‹è®¤ä¸ºå›žç­”æ˜¯æ»¡è¶³è¦æ±‚的,我们则返回模型的回答;å¦åˆ™ï¼Œæˆ‘们会告知用户,他们将会被转接到人工客æœè¿›è¡Œè¿›ä¸€æ­¥çš„帮助。" + ] + }, { "cell_type": "code", "execution_count": 6, @@ -230,7 +248,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "实现一个å¯è§†åŒ–界é¢" + "为了æŒç»­ä¼˜åŒ–用户和助手的问答体验,我们打造了一个å‹å¥½çš„å¯è§†åŒ–界é¢ï¼Œä»¥ä¿ƒè¿›ç”¨æˆ·ä¸ŽåŠ©æ‰‹ä¹‹é—´çš„ä¾¿æ·äº’动。" ] }, { @@ -307,11 +325,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "通过监控系统在更多输入上的质é‡ï¼Œæ‚¨å¯ä»¥ä¿®æ”¹æ­¥éª¤ï¼Œæé«˜ç³»ç»Ÿçš„æ•´ä½“性能。\n", + "通过监控该问答系统在更多输入上的回答效果,您å¯ä»¥ä¿®æ”¹æ­¥éª¤ï¼Œæé«˜ç³»ç»Ÿçš„æ•´ä½“性能。\n", "\n", - "也许我们会å‘现,对于æŸäº›æ­¥éª¤ï¼Œæˆ‘们的æç¤ºå¯èƒ½æ›´å¥½ï¼Œä¹Ÿè®¸æœ‰äº›æ­¥éª¤ç”šè‡³ä¸å¿…è¦ï¼Œä¹Ÿè®¸æˆ‘们会找到更好的检索方法等等。\n", + "我们å¯èƒ½ä¼šå¯Ÿè§‰ï¼Œåœ¨æŸäº›çŽ¯èŠ‚ï¼Œæˆ‘ä»¬çš„ Prompt å¯èƒ½æ›´å¥½ï¼Œæœ‰äº›çŽ¯èŠ‚å¯èƒ½å®Œå…¨å¯ä»¥çœç•¥ï¼Œç”šè‡³ï¼Œæˆ‘们å¯èƒ½ä¼šæ‰¾åˆ°æ›´å¥½çš„æ£€ç´¢æ–¹æ³•等等。\n", "\n", - "我们将在下一章中进一步讨论这个问题。 " + "对于这个问题,我们将在接下æ¥çš„章节中进行更深入的探讨。" ] }, { From aba9746a43877523c6fa177eab613ebd5d6b3ed6 Mon Sep 17 00:00:00 2001 From: LiuWH <65588374+Weihong-Liu@users.noreply.github.com> Date: Sat, 29 Jul 2023 18:27:03 +0800 Subject: [PATCH 2/3] =?UTF-8?q?Update=208.=E6=90=AD=E5=BB=BA=E4=B8=80?= =?UTF-8?q?=E4=B8=AA=E5=B8=A6=E8=AF=84=E4=BC=B0=E7=9A=84=E7=AB=AF=E5=88=B0?= =?UTF-8?q?=E7=AB=AF=E9=97=AE=E7=AD=94=E7=B3=BB=E7=BB=9F=20Evaluation.ipyn?= =?UTF-8?q?b?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../8.æ­å»ºä¸€ä¸ªå¸¦è¯„估的端到端问答系统 Evaluation.ipynb | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/docs/content/C2 Building Systems with the ChatGPT API/8.æ­å»ºä¸€ä¸ªå¸¦è¯„估的端到端问答系统 Evaluation.ipynb b/docs/content/C2 Building Systems with the ChatGPT API/8.æ­å»ºä¸€ä¸ªå¸¦è¯„估的端到端问答系统 Evaluation.ipynb index d1b66c7..cc10e65 100644 --- a/docs/content/C2 Building Systems with the ChatGPT API/8.æ­å»ºä¸€ä¸ªå¸¦è¯„估的端到端问答系统 Evaluation.ipynb +++ b/docs/content/C2 Building Systems with the ChatGPT API/8.æ­å»ºä¸€ä¸ªå¸¦è¯„估的端到端问答系统 Evaluation.ipynb @@ -38,16 +38,10 @@ "在我们的探索之旅中,我们将实现一个完整的问答系统,一ç§èƒ½ç†è§£å¹¶å›žåº”人类语言的人工智能。在这个过程中,我们将使用 OpenAI 的相关API并引用相关函数,æ¥å¸®åŠ©æˆ‘ä»¬å¿«é€Ÿæ­å»ºä¸€ä¸ªé«˜æ•ˆä¸”ç²¾å‡†çš„æ¨¡åž‹ã€‚ç„¶è€Œï¼Œæˆ‘ä»¬éœ€è¦æ³¨æ„到,在中文的ç†è§£å’Œå¤„ç†æ–¹é¢ï¼Œç”±äºŽæ¨¡åž‹çš„特性,我们å¯èƒ½ä¼šå¶å°”é‡åˆ°ä¸ç†æƒ³çš„ç»“æžœã€‚åœ¨è¿™ç§æƒ…况下,你å¯ä»¥å¤šå°è¯•几次,或者进行深入的研究,以找到更稳定的方法。\n", "\n", "让我们先从一个函数开始,它的å称是 `process_user_message_ch`,该函数主è¦è´Ÿè´£å¤„ç†ç”¨æˆ·è¾“入的信æ¯ã€‚è¿™ä¸ªå‡½æ•°æŽ¥æ”¶ä¸‰ä¸ªå‚æ•°ï¼Œç”¨æˆ·çš„è¾“å…¥ã€æ‰€æœ‰çš„历å²ä¿¡æ¯ï¼Œä»¥åŠä¸€ä¸ªè¡¨ç¤ºæ˜¯å¦éœ€è¦è°ƒè¯•的标志。\n", - "\n", "在函数的内部,我们首先使用 OpenAI çš„ Moderation API æ¥æ£€æŸ¥ç”¨æˆ·è¾“入的åˆè§„性。如果输入被标记为ä¸åˆè§„,我们将返回一个信æ¯ï¼Œå‘ŠçŸ¥ç”¨æˆ·è¯·æ±‚ä¸åˆè§„。在调试模å¼ä¸‹ï¼Œæˆ‘们将打å°å‡ºå½“å‰çš„进度。\n", "\n", "接下æ¥ï¼Œæˆ‘们利用 `utils_zh.find_category_and_product_only` 函数(详细请è§é™„录代ç ï¼‰æŠ½å–出用户输入中的商å“和对应的目录。然åŽï¼Œæˆ‘们将抽å–的信æ¯è½¬åŒ–为一个列表。\n", - "\n", - "在获å–到商å“列表åŽï¼Œæˆ‘们将查询这些商å“的具体信æ¯ã€‚之åŽï¼Œæˆ‘们生æˆä¸€ä¸ªç³»ç»Ÿæ¶ˆæ¯ï¼Œè®¾å®šä¸€äº›çº¦æŸï¼Œä»¥ç¡®ä¿æˆ‘ä»¬çš„å›žåº”ç¬¦åˆæœŸæœ›çš„æ ‡å‡†ã€‚\n", - "\n", - "接下æ¥ï¼Œæˆ‘们将生æˆçš„æ¶ˆæ¯å’Œåކå²ä¿¡æ¯ä¸€èµ·é€å…¥ `get_completion_from_messages` 函数,得到模型的回应。\n", - "\n", - "之åŽï¼Œæˆ‘们冿¬¡ä½¿ç”¨ Moderation API 检查模型的输出是å¦åˆè§„。如果输出ä¸åˆè§„,我们将返回一个信æ¯ï¼Œå‘ŠçŸ¥æ— æ³•æä¾›è¯¥ä¿¡æ¯ã€‚\n", + "在获å–到商å“列表åŽï¼Œæˆ‘们将查询这些商å“的具体信æ¯ã€‚之åŽï¼Œæˆ‘们生æˆä¸€ä¸ªç³»ç»Ÿæ¶ˆæ¯ï¼Œè®¾å®šä¸€äº›çº¦æŸï¼Œä»¥ç¡®ä¿æˆ‘ä»¬çš„å›žåº”ç¬¦åˆæœŸæœ›çš„æ ‡å‡†ã€‚我们将生æˆçš„æ¶ˆæ¯å’Œåކå²ä¿¡æ¯ä¸€èµ·é€å…¥ `get_completion_from_messages` 函数,得到模型的回应。之åŽï¼Œæˆ‘们冿¬¡ä½¿ç”¨ Moderation API 检查模型的输出是å¦åˆè§„。如果输出ä¸åˆè§„,我们将返回一个信æ¯ï¼Œå‘ŠçŸ¥æ— æ³•æä¾›è¯¥ä¿¡æ¯ã€‚\n", "\n", "最åŽï¼Œæˆ‘们让模型自我评估是å¦å¾ˆå¥½åœ°å›žç­”äº†ç”¨æˆ·çš„é—®é¢˜ã€‚å¦‚æžœæ¨¡åž‹è®¤ä¸ºå›žç­”æ˜¯æ»¡è¶³è¦æ±‚的,我们则返回模型的回答;å¦åˆ™ï¼Œæˆ‘们会告知用户,他们将会被转接到人工客æœè¿›è¡Œè¿›ä¸€æ­¥çš„帮助。" ] From db698d4e255a30cbbf2e9947b5190ed000b06969 Mon Sep 17 00:00:00 2001 From: LiuWH <65588374+Weihong-Liu@users.noreply.github.com> Date: Sat, 29 Jul 2023 21:27:30 +0800 Subject: [PATCH 3/3] =?UTF-8?q?Update=209.=E8=AF=84=E4=BC=B0=EF=BC=88?= =?UTF-8?q?=E4=B8=8A=EF=BC=89=20Evaluation-part1.ipynb?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../9.评估(上) Evaluation-part1.ipynb | 97 +++++++++++-------- 1 file changed, 56 insertions(+), 41 deletions(-) diff --git a/docs/content/C2 Building Systems with the ChatGPT API/9.评估(上) Evaluation-part1.ipynb b/docs/content/C2 Building Systems with the ChatGPT API/9.评估(上) Evaluation-part1.ipynb index 1a98d52..9bdd919 100644 --- a/docs/content/C2 Building Systems with the ChatGPT API/9.评估(上) Evaluation-part1.ipynb +++ b/docs/content/C2 Building Systems with the ChatGPT API/9.评估(上) Evaluation-part1.ipynb @@ -13,42 +13,28 @@ }, { "cell_type": "markdown", - "id": "c768620b", + "id": "c9ea000a", "metadata": {}, "source": [ - "在之å‰çš„章节中,我们展示了如何使用 LLM 构建应用程åºï¼ŒåŒ…括评估输入ã€å¤„ç†è¾“入以åŠåœ¨å‘用户显示输出之å‰è¿›è¡Œæœ€ç»ˆè¾“出检查。\n", + "在过去的章节里,我们å‘你展示了如何借助 LLM 构建应用程åºï¼ŒåŒ…括评估输入,处ç†è¾“入,以åŠåœ¨å‘ˆçŽ°ç»“æžœç»™ç”¨æˆ·ä¹‹å‰è¿›è¡Œæœ€åŽçš„结果检查。然而,在构建出这样的系统åŽï¼Œæˆ‘们应如何确知其è¿è¡ŒçŠ¶å†µå‘¢ï¼Ÿæ›´ç”šè€…ï¼Œå½“æˆ‘ä»¬å°†å…¶éƒ¨ç½²å¹¶è®©ç”¨æˆ·å¼€å§‹ä½¿ç”¨ä¹‹åŽï¼Œæˆ‘们åˆè¯¥å¦‚何追踪其表现,å‘现å¯èƒ½å­˜åœ¨çš„问题,并æŒç»­ä¼˜åŒ–它的回答质é‡å‘¢ï¼Ÿåœ¨æœ¬ç« é‡Œï¼Œæˆ‘们将å‘你分享一些评估LLM输出的最佳实践。\n", "\n", - "构建这样的系统åŽï¼Œå¦‚何知é“它的工作情况?甚至在部署åŽå¹¶è®©ç”¨æˆ·ä½¿ç”¨å®ƒæ—¶ï¼Œå¦‚何跟踪它的è¿è¡Œæƒ…况,å‘现任何缺陷,并æŒç»­æ”¹è¿›ç³»ç»Ÿçš„答案质é‡ï¼Ÿ\n", + "构建基于LLM的应用程åºä¸Žæž„建传统的监ç£å­¦ä¹ åº”ç”¨ç¨‹åºæœ‰æ‰€ä¸åŒã€‚因为你å¯ä»¥å¿«é€Ÿåœ°æž„建出基于LLM的应用程åºï¼Œæ‰€ä»¥è¯„估通常ä¸ä»Žæµ‹è¯•集开始。相åï¼Œä½ ä¼šé€æ¸åœ°å»ºç«‹èµ·ä¸€ä¸ªæµ‹è¯•样例的集åˆã€‚\n", "\n", - "在本章中,我们想与您分享一些最佳实践,用于评估 LLM 的输出。\n", + "在传统的监ç£å­¦ä¹ çŽ¯å¢ƒä¸‹ï¼Œä½ éœ€è¦æ”¶é›†è®­ç»ƒé›†ã€å¼€å‘集,或者留出交å‰éªŒè¯é›†ï¼Œåœ¨æ•´ä¸ªå¼€å‘过程中都会用到它们。然而,如果你能够在几分钟内定义一个 Prompt ï¼Œå¹¶åœ¨å‡ å°æ—¶å†…得到å馈结果,那么åœä¸‹æ¥æ”¶é›†ä¸€åƒä¸ªæµ‹è¯•样本就会显得æžä¸ºç¹ç。因为现在,你å¯ä»¥åœ¨æ²¡æœ‰ä»»ä½•训练样本的情况下得到结果。\n", "\n", - "构建基于 LLM 的应用程åºä¸Žä¼ ç»Ÿçš„监ç£å­¦ä¹ åº”ç”¨ç¨‹åºæœ‰æ‰€ä¸åŒã€‚由于å¯ä»¥å¿«é€Ÿæž„建基于 LLM 的应用程åºï¼Œå› æ­¤è¯„估方法通常ä¸ä»Žæµ‹è¯•集开始。相åï¼Œé€šå¸¸ä¼šé€æ¸å»ºç«‹ä¸€ç»„测试示例。\n", + "因此,在使用LLMæž„å»ºåº”ç”¨ç¨‹åºæ—¶ï¼Œä½ å¯èƒ½ä¼šç»åކ以䏋æµç¨‹ï¼šé¦–å…ˆï¼Œä½ ä¼šåœ¨ä¸€åˆ°ä¸‰ä¸ªæ ·æœ¬çš„å°æ ·æœ¬ä¸­è°ƒæ•´ Prompt ,å°è¯•使其在这些样本上起效。éšåŽï¼Œå½“你对系统进行进一步测试时,å¯èƒ½ä¼šé‡åˆ°ä¸€äº›æ£˜æ‰‹çš„例å­ï¼Œè¿™äº›ä¾‹å­æ— æ³•通过 Prompt 或者算法解决。这就是使用 ChatGPT API 构建应用程åºçš„å¼€å‘者所é¢ä¸´çš„æŒ‘æˆ˜ã€‚åœ¨è¿™ç§æƒ…况下,你å¯ä»¥å°†è¿™äº›é¢å¤–çš„å‡ ä¸ªä¾‹å­æ·»åŠ åˆ°ä½ æ­£åœ¨æµ‹è¯•çš„é›†åˆä¸­ï¼Œæœ‰æœºåœ°æ·»åŠ å…¶ä»–éš¾ä»¥å¤„ç†çš„例å­ã€‚æœ€ç»ˆï¼Œä½ ä¼šå°†è¶³å¤Ÿå¤šçš„è¿™äº›ä¾‹å­æ·»åŠ åˆ°ä½ é€æ­¥æ‰©å¤§çš„å¼€å‘集中,以至于手动è¿è¡Œæ¯ä¸€ä¸ªä¾‹å­ä»¥æµ‹è¯• Prompt å˜å¾—有些ä¸ä¾¿ã€‚\n", "\n", - "在传统的监ç£å­¦ä¹ çŽ¯å¢ƒä¸­ï¼Œéœ€è¦æ”¶é›†è®­ç»ƒé›†ã€å¼€å‘集或ä¿ç•™äº¤å‰éªŒè¯é›†ï¼Œç„¶åŽåœ¨æ•´ä¸ªå¼€å‘过程中使用它们。\n", + "ç„¶åŽï¼Œä½ å¼€å§‹å¼€å‘一些用于衡é‡è¿™äº›å°æ ·æœ¬é›†æ€§èƒ½çš„æŒ‡æ ‡ï¼Œä¾‹å¦‚å¹³å‡å‡†ç¡®åº¦ã€‚这个过程的有趣之处在于,如果你觉得你的系统已ç»è¶³å¤Ÿå¥½äº†ï¼Œä½ å¯ä»¥éšæ—¶åœæ­¢ï¼Œä¸å†è¿›è¡Œæ”¹è¿›ã€‚实际上,很多已ç»éƒ¨ç½²çš„应用程åºå°±åœ¨ç¬¬ä¸€æ­¥æˆ–第二步就åœä¸‹æ¥äº†ï¼Œè€Œä¸”它们è¿è¡Œå¾—éžå¸¸å¥½ã€‚\n", "\n", - "然而,如果能够在几分钟内指定 Promptï¼Œå¹¶åœ¨å‡ ä¸ªå°æ—¶å†…得到相应结果,那么暂åœå¾ˆé•¿æ—¶é—´åŽ»æ”¶é›†ä¸€åƒä¸ªæµ‹è¯•样本将是一件æžå…¶ç—›è‹¦çš„事情。因为现在,å¯ä»¥åœ¨é›¶ä¸ªè®­ç»ƒæ ·æœ¬çš„æƒ…å†µä¸‹èŽ·å¾—è¿™ä¸ªæˆæžœã€‚\n", - "\n", - "因此,在使用 LLM æž„å»ºåº”ç”¨ç¨‹åºæ—¶ï¼Œæ‚¨å°†ä½“会到如下的过程:\n", - "\n", - "é¦–å…ˆï¼Œæ‚¨ä¼šåœ¨åªæœ‰ä¸€åˆ°ä¸‰ä¸ªæ ·æœ¬çš„å°æ ·æœ¬ä¸­è°ƒæ•´ Prompt,并å°è¯•让 Prompt 在它们身上起作用。\n", - "\n", - "ç„¶åŽï¼Œå½“系统进行进一步的测试时,您å¯èƒ½ä¼šé‡åˆ°ä¸€äº›æ£˜æ‰‹çš„例å­ã€‚Prompt 在它们身上ä¸èµ·ä½œç”¨ï¼Œæˆ–者算法在它们身上ä¸èµ·ä½œç”¨ã€‚\n", - "\n", - "这就是使用 ChatGPT API 构建应用程åºçš„å¼€å‘者所ç»åŽ†çš„æŒ‘æˆ˜ã€‚\n", - "\n", - "åœ¨è¿™ç§æƒ…况下,您å¯ä»¥å°†è¿™äº›é¢å¤–的几个示例添加到您正在测试的集åˆä¸­ï¼Œä»¥æœºä¼šä¸»ä¹‰åœ°æ·»åŠ å…¶ä»–æ£˜æ‰‹çš„ç¤ºä¾‹ã€‚\n", - "\n", - "æœ€ç»ˆï¼Œæ‚¨å·²ç»æ·»åŠ äº†è¶³å¤Ÿçš„è¿™äº›ç¤ºä¾‹åˆ°æ‚¨ç¼“æ…¢å¢žé•¿çš„å¼€å‘集中,以至于通过手动è¿è¡Œæ¯ä¸ªç¤ºä¾‹æ¥æµ‹è¯• Prompt å˜å¾—æœ‰äº›ä¸æ–¹ä¾¿ã€‚\n", - "\n", - "ç„¶åŽï¼Œæ‚¨å¼€å§‹å¼€å‘在这些å°ç¤ºä¾‹é›†ä¸Šç”¨äºŽè¡¡é‡æ€§èƒ½çš„æŒ‡æ ‡ï¼Œä¾‹å¦‚å¹³å‡å‡†ç¡®æ€§ã€‚\n", - "\n", - "è¿™ä¸ªè¿‡ç¨‹çš„ä¸€ä¸ªæœ‰è¶£æ–¹é¢æ˜¯ï¼Œå¦‚果您觉得您的系统已ç»è¶³å¤Ÿå¥½äº†ï¼Œæ‚¨å¯ä»¥éšæ—¶åœåœ¨é‚£é‡Œï¼Œä¸å†æ”¹è¿›å®ƒã€‚事实上,许多已部署的应用程åºåœåœ¨ç¬¬ä¸€æˆ–第二个步骤,并且è¿è¡Œå¾—éžå¸¸å¥½ã€‚\n", - "\n", - "éœ€è¦æ³¨æ„çš„æ˜¯ï¼Œæœ‰å¾ˆå¤šå¤§æ¨¡åž‹çš„åº”ç”¨ç¨‹åºæ²¡æœ‰å®žè´¨æ€§çš„风险,å³ä½¿å®ƒæ²¡æœ‰ç»™å‡ºå®Œå…¨æ­£ç¡®çš„答案。\n", - "\n", - "但是,对于部分高风险应用,如果存在åè§æˆ–ä¸é€‚当的输出å¯èƒ½å¯¹æŸäººé€ æˆä¼¤å®³ï¼Œé‚£ä¹ˆæ”¶é›†æµ‹è¯•集ã€ä¸¥æ ¼è¯„估系统的性能ã€ç¡®ä¿åœ¨ä½¿ç”¨ä¹‹å‰å®ƒèƒ½å¤Ÿåšæ­£ç¡®çš„äº‹æƒ…ï¼Œå°±å˜å¾—更加é‡è¦ã€‚\n", - "\n", - "ä½†æ˜¯ï¼Œå¦‚æžœæ‚¨åªæ˜¯ä½¿ç”¨å®ƒæ¥æ€»ç»“æ–‡ç« ä¾›è‡ªå·±é˜…è¯»ï¼Œè€Œä¸æ˜¯ç»™åˆ«äººçœ‹ï¼Œé‚£ä¹ˆå¯èƒ½é€ æˆçš„å±å®³é£Žé™©æ›´å°ï¼Œæ‚¨å¯ä»¥åœ¨è¿™ä¸ªè¿‡ç¨‹ä¸­æ—©æ—©åœæ­¢ï¼Œè€Œä¸å¿…去花费更大的代价去收集更大的数æ®é›†ã€‚" + "值得注æ„çš„æ˜¯ï¼Œå¾ˆå¤šå¤§åž‹æ¨¡åž‹çš„åº”ç”¨ç¨‹åºæ²¡æœ‰å®žè´¨æ€§çš„风险,å³ä½¿å®ƒæ²¡æœ‰ç»™å‡ºå®Œå…¨æ­£ç¡®çš„答案。但是,对于一些高风险的应用,如若存在åè§æˆ–ä¸é€‚当的输出å¯èƒ½å¯¹æŸäººé€ æˆä¼¤å®³ï¼Œé‚£ä¹ˆæ”¶é›†æµ‹è¯•集ã€ä¸¥æ ¼è¯„估系统的性能,以åŠç¡®ä¿å®ƒåœ¨ä½¿ç”¨å‰èƒ½åšå¯¹äº‹æƒ…,就显得尤为é‡è¦ã€‚ç„¶è€Œï¼Œå¦‚æžœä½ ä»…ä»…æ˜¯ç”¨å®ƒæ¥æ€»ç»“æ–‡ç« ä¾›è‡ªå·±é˜…è¯»ï¼Œè€Œä¸æ˜¯ç»™å…¶ä»–人看,那么å¯èƒ½å¸¦æ¥çš„风险就会较å°ï¼Œä½ å¯ä»¥åœ¨è¿™ä¸ªè¿‡ç¨‹ä¸­æ—©æ—©åœ°åœæ­¢ï¼Œè€Œä¸å¿…付出收集大规模数æ®é›†çš„巨大代价。" + ] + }, + { + "cell_type": "markdown", + "id": "f0c89bda", + "metadata": {}, + "source": [ + "çŽ°åœ¨è®©æˆ‘ä»¬è¿›å…¥æ›´å®žé™…çš„åº”ç”¨é˜¶æ®µï¼Œå°†åˆšæ‰æ‰€å­¦çš„ç†è®ºçŸ¥è¯†è½¬åŒ–为实践。让我们一起研究一些真实的数æ®ï¼Œç†è§£å…¶ç»“构并使用我们的工具æ¥åˆ†æžå®ƒä»¬ã€‚在我们的案例中,我们获å–一组分类信æ¯åŠå…¶äº§å“å称。让我们执行以下代ç ï¼Œä»¥æŸ¥çœ‹è¿™äº›åˆ†ç±»ä¿¡æ¯åŠå…¶äº§å“åç§°" ] }, { @@ -116,6 +102,22 @@ "## ä¸€ã€æ‰¾å‡ºç›¸å…³äº§å“和类别åç§°" ] }, + { + "cell_type": "markdown", + "id": "59867e0e", + "metadata": {}, + "source": [ + "åœ¨æˆ‘ä»¬è¿›è¡Œå¼€å‘æ—¶ï¼Œé€šå¸¸éœ€è¦å¤„ç†å’Œè§£æžç”¨æˆ·çš„输入。特别是在电商领域,å¯èƒ½ä¼šæœ‰å„ç§å„样的用户查询,例如:\"æˆ‘æƒ³è¦æœ€è´µçš„电脑\"。我们需è¦ä¸€ä¸ªèƒ½ç†è§£è¿™ç§è¯­å¢ƒï¼Œå¹¶èƒ½ç»™å‡ºç›¸å…³äº§å“和类别的工具。下é¢è¿™æ®µä»£ç å®žçŽ°çš„åŠŸèƒ½å°±æ˜¯è¿™æ ·ã€‚\n", + "\n", + "首先我们定义了一个函数`find_category_and_product_v1`,这个函数的主è¦ç›®çš„æ˜¯ä»Žç”¨æˆ·çš„输入中解æžå‡ºäº§å“和类别。这个函数需è¦ä¸¤ä¸ªå‚数:`user_input`代表用户的查询,`products_and_category`是一个字典,其中包å«äº†äº§å“类型和对应产å“的信æ¯ã€‚\n", + "\n", + "在函数的开始,我们定义了一个分隔符`delimiter`,用æ¥åœ¨å®¢æˆ·æœåŠ¡æŸ¥è¯¢ä¸­åˆ†éš”å†…å®¹ã€‚éšåŽï¼Œæˆ‘们创建了一æ¡ç³»ç»Ÿæ¶ˆæ¯ã€‚è¿™æ¡æ¶ˆæ¯ä¸»è¦è§£é‡Šäº†ç³»ç»Ÿçš„è¿ä½œæ–¹å¼ï¼šç”¨æˆ·ä¼šæä¾›å®¢æˆ·æœåŠ¡æŸ¥è¯¢ï¼ŒæŸ¥è¯¢ä¼šè¢«åˆ†éš”ç¬¦`delimiter`分隔。系统会输出一个Python列表,列表中的æ¯ä¸ªå¯¹è±¡éƒ½æ˜¯Json对象。æ¯ä¸ªå¯¹è±¡ä¼šåŒ…å«'类别'å’Œ'åç§°'两个字段,分别对应产å“的类别和å称。\n", + "\n", + "我们创建了一个å为`messages`的列表,用æ¥å­˜å‚¨è¿™äº›ç¤ºä¾‹å¯¹è¯ä»¥åŠç”¨æˆ·çš„æŸ¥è¯¢ã€‚最åŽï¼Œæˆ‘们使用`get_completion_from_messages`函数处ç†è¿™äº›æ¶ˆæ¯ï¼Œè¿”回处ç†ç»“果。\n", + "\n", + "通过这段代ç ï¼Œæˆ‘们å¯ä»¥çœ‹åˆ°å¦‚何通过对è¯çš„æ–¹å¼ç†è§£å’Œå¤„ç†ç”¨æˆ·çš„æŸ¥è¯¢ï¼Œä»¥æä¾›æ›´å¥½çš„用户体验。" + ] + }, { "cell_type": "code", "execution_count": 4, @@ -499,7 +501,9 @@ "id": "2af63218", "metadata": {}, "source": [ - "当您è¦è°ƒæ•´çš„å¼€å‘集ä¸ä»…仅是一å°éƒ¨åˆ†ç¤ºä¾‹æ—¶ï¼Œå¼€å§‹è‡ªåŠ¨åŒ–æµ‹è¯•è¿‡ç¨‹å°±å˜å¾—有用了。" + "当我们的应用程åºé€æ¸æˆç†Ÿï¼Œæµ‹è¯•çš„é‡è¦æ€§ä¹Ÿéšä¹‹å¢žåŠ ã€‚é€šå¸¸ï¼Œå½“æˆ‘ä»¬ä»…å¤„ç†å°‘釿 ·æœ¬ï¼Œæ‰‹åЍè¿è¡Œæµ‹è¯•并对结果进行评估是å¯è¡Œçš„。然而,éšç€å¼€å‘é›†çš„å¢žå¤§ï¼Œè¿™ç§æ–¹æ³•å˜å¾—æ—¢ç¹çåˆä½Žæ•ˆã€‚此时,就需è¦å¼•å…¥è‡ªåŠ¨åŒ–æµ‹è¯•æ¥æé«˜æˆ‘ä»¬çš„å·¥ä½œæ•ˆçŽ‡ã€‚ä¸‹é¢å°†å¼€å§‹ç¼–å†™ä»£ç æ¥è‡ªåŠ¨åŒ–æµ‹è¯•æµç¨‹ï¼Œå¯ä»¥å¸®åŠ©æ‚¨æå‡æ•ˆçŽ‡å¹¶ç¡®ä¿æµ‹è¯•的准确率。\n", + "\n", + "以下是一些用户问题的标准答案,用于评估 LLM 回答的准确度,与机器学习中的验è¯é›†çš„作用相当。" ] }, { @@ -616,6 +620,14 @@ "## å…«ã€é€šè¿‡ä¸Žç†æƒ³ç­”案比较æ¥è¯„估测试用例" ] }, + { + "cell_type": "markdown", + "id": "b5aba12b", + "metadata": {}, + "source": [ + "我们通过以下函数`eval_response_with_ideal`æ¥è¯„ä¼° LLM 回答的准确度" + ] + }, { "cell_type": "code", "execution_count": 17, @@ -767,9 +779,18 @@ "height": 30 }, "source": [ - "## ä¹ã€åœ¨æ‰€æœ‰æµ‹è¯•用例上è¿è¡Œè¯„估,并计算正确的用例比例\n", + "## ä¹ã€åœ¨æ‰€æœ‰æµ‹è¯•用例上è¿è¡Œè¯„估,并计算正确的用例比例\n" + ] + }, + { + "cell_type": "markdown", + "id": "4fa148ce", + "metadata": {}, + "source": [ + "䏋颿ˆ‘们æ¥å¯¹æµ‹è¯•用例中的全部问题进行验è¯ï¼Œå¹¶è®¡ç®— LLM 回答正确的准确率\n", "\n", - "注æ„:如果任何 API 调用超时,将无法è¿è¡Œ" + "\n", + "> 注æ„:如果任何 API 调用超时,将无法è¿è¡Œ" ] }, { @@ -863,17 +884,11 @@ "id": "5d885db6", "metadata": {}, "source": [ - "使用 Prompt 构建应用程åºçš„工作æµç¨‹ä¸Žä½¿ç”¨ç›‘ç£å­¦ä¹ æž„建应用程åºçš„工作æµç¨‹éžå¸¸ä¸åŒã€‚\n", + "使用 Prompt 构建应用程åºçš„工作æµç¨‹ä¸Žä½¿ç”¨ç›‘ç£å­¦ä¹ æž„建应用程åºçš„工作æµç¨‹éžå¸¸ä¸åŒã€‚因此,我们认为这是需è¦è®°ä½çš„一件好事,当您正在构建监ç£å­¦ä¹ æ¨¡åž‹æ—¶ï¼Œä¼šæ„Ÿè§‰åˆ°è¿­ä»£é€Ÿåº¦å¿«äº†å¾ˆå¤šã€‚\n", "\n", - "因此,我们认为这是需è¦è®°ä½çš„一件好事,当您正在构建监ç£å­¦ä¹ æ¨¡åž‹æ—¶ï¼Œä¼šæ„Ÿè§‰åˆ°è¿­ä»£é€Ÿåº¦å¿«äº†å¾ˆå¤šã€‚\n", + "如果您并未亲身体验,å¯èƒ½ä¼šæƒŠå¹äºŽä»…有手动构建的æžå°‘样本,就å¯ä»¥äº§ç”Ÿé«˜æ•ˆçš„评估方法。您å¯èƒ½ä¼šè®¤ä¸ºï¼Œä»…有 10 个样本是ä¸å…·å¤‡ç»Ÿè®¡æ„义的。但当您真正è¿ç”¨è¿™ç§æ–¹å¼æ—¶ï¼Œæ‚¨å¯èƒ½ä¼šå¯¹å‘å¼€å‘é›†ä¸­æ·»åŠ ä¸€äº›å¤æ‚样本所带æ¥çš„æ•ˆæžœæå‡æ„Ÿåˆ°æƒŠè®¶ã€‚这对于帮助您和您的团队找到有效的 Prompt 和有效的系统éžå¸¸æœ‰å¸®åŠ©ã€‚\n", "\n", - "如果您并未亲身体验,å¯èƒ½ä¼šæƒŠå¹äºŽä»…有手动构建的æžå°‘样本,就å¯ä»¥äº§ç”Ÿé«˜æ•ˆçš„评估方法。您å¯èƒ½ä¼šè®¤ä¸ºï¼Œä»…有 10 个样本是ä¸å…·å¤‡ç»Ÿè®¡æ„义的。但当您真正è¿ç”¨è¿™ç§æ–¹å¼æ—¶ï¼Œæ‚¨å¯èƒ½ä¼šå¯¹å‘å¼€å‘é›†ä¸­æ·»åŠ ä¸€äº›å¤æ‚样本所带æ¥çš„æ•ˆæžœæå‡æ„Ÿåˆ°æƒŠè®¶ã€‚\n", - "\n", - "这对于帮助您和您的团队找到有效的 Prompt 和有效的系统éžå¸¸æœ‰å¸®åŠ©ã€‚\n", - "\n", - "在本章中,输出å¯ä»¥è¢«å®šé‡è¯„ä¼°ï¼Œå°±åƒæœ‰ä¸€ä¸ªæœŸæœ›çš„输出一样,您å¯ä»¥åˆ¤æ–­å®ƒæ˜¯å¦ç»™å‡ºäº†è¿™ä¸ªæœŸæœ›çš„输出。\n", - "\n", - "åœ¨ä¸‹ä¸€ç« ä¸­ï¼Œæˆ‘ä»¬å°†æŽ¢è®¨å¦‚ä½•åœ¨æ›´åŠ æ¨¡ç³Šçš„æƒ…å†µä¸‹è¯„ä¼°æˆ‘ä»¬çš„è¾“å‡ºã€‚å³æ­£ç¡®ç­”案å¯èƒ½ä¸é‚£ä¹ˆæ˜Žç¡®çš„æƒ…况。" + "在本章中,输出å¯ä»¥è¢«å®šé‡è¯„ä¼°ï¼Œå°±åƒæœ‰ä¸€ä¸ªæœŸæœ›çš„输出一样,您å¯ä»¥åˆ¤æ–­å®ƒæ˜¯å¦ç»™å‡ºäº†è¿™ä¸ªæœŸæœ›çš„è¾“å‡ºã€‚åœ¨ä¸‹ä¸€ç« ä¸­ï¼Œæˆ‘ä»¬å°†æŽ¢è®¨å¦‚ä½•åœ¨æ›´åŠ æ¨¡ç³Šçš„æƒ…å†µä¸‹è¯„ä¼°æˆ‘ä»¬çš„è¾“å‡ºã€‚å³æ­£ç¡®ç­”案å¯èƒ½ä¸é‚£ä¹ˆæ˜Žç¡®çš„æƒ…况。" ] }, {