Update 8.搭建一个带评估的端到端问答系统 Evaluation.ipynb
This commit is contained in:
@ -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",
|
||||
"我们将在下一章中进一步讨论这个问题。 "
|
||||
"对于这个问题,我们将在接下来的章节中进行更深入的探讨。"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user