Update 8.搭建一个带评估的端到端问答系统 Evaluation.ipynb

This commit is contained in:
LiuWH
2023-07-26 23:34:40 +08:00
parent c69cdd2d87
commit ba0cfd85dc

View File

@ -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",
"我们将在下一章中进一步讨论这个问题。 "
"对于这个问题,我们将在接下来的章节中进行更深入的探讨。"
]
},
{