大模型、知识库、数据库节点:核心功能的加持
在上一篇文章中,我们深入探讨了工作流的定义、特点及其在 Coze 平台中的应用。工作流是一种抽象的业务过程模型,通过将多个任务节点组合与协同,实现对复杂业务逻辑的自动化处理。
Coze 工作流中有三类节点起到了至关重要的作用,它们分别是:
- 大模型节点
- 知识库节点
- 数据库节点
本文将重点介绍这三类节点在 Coze 工作流中的功能特性、使用方法以及实际应用案例,帮助大家深入理解它们的运作机制与最佳实践。
大模型节点:赋予工作流智能处理能力
大模型节点是 Coze 工作流中的一类重要节点,通过大模型节点,工作流可以理解用户意图、分析非结构化数据、生成人类可读的内容等,从而实现更加智能化的任务处理。
在工作流中,大模型节点主要扮演以下角色:
- 理解用户输入:通过对用户提供的自然语言文本进行分析,提取关键信息和意图
- 处理非结构化数据:对文本、图像等非结构化数据进行分类、提取、生成等操作
- 生成人类可读内容:根据上下文信息和指定主题,自动生成文章、摘要、答复等内容
相比传统的规则引擎和模板匹配方法,大模型节点具有显著优势:
- 更强的语义理解能力,可以处理复杂的语言表达
- 更广泛的知识覆盖面,通过海量数据训练掌握了丰富的背景知识
- 更灵活的任务适应力,可以根据提示动态生成所需内容
在 Coze 工作流中,使用大模型节点一般包括以下几个步骤:
- 模型选择与参数配置
Coze 平台提供了多个大模型供用户选择,每个模型在任务类型、处理速度、生成质量等方面有所不同。用户可以根据具体任务需求,选择合适的模型。
具体的功能在前面第 4 篇文章中已经有详细介绍,这里就不再赘述了。
- 人设与回复逻辑、提示词设计
为了引导大模型生成所需的内容,我们需要好好设计一下人设与回复逻辑和提示词(Prompt)。
提示词最起码应包含以下信息:
- 任务目标:明确告知模型需要完成的任务,如
写一篇关于 xxx 的文章 - 上下文信息:提供必要的背景信息,帮助模型理解任务环境
- 格式要求:指定生成内容的格式,如
以 Markdown 格式输出,带有标题和段落
而人设与回复逻辑则是为了让模型更好地理解任务,设计出合理的回复逻辑,如:
- 语义理解:对用户输入进行语义解析,提取关键信息和意图
- 逻辑推理:根据任务要求,推理出合理的回复内容
- 回复生成:根据逻辑和语义,生成符合要求的回复内容
大家可能还是分不清这两个概念,那么我们来系统化地学习理解一下吧:
人设与回复逻辑、提示词原理解析
在 OpenAI 的 Playground 平台上,大模型概念中的 System 提示词和 User 提示词如下图所示:
而在 Coze 平台上,大模型概念中的 System 提示词和 User 提示词分别被定义为了人设与回复逻辑和(用户)提示词,这种定义更加贴近它们在实际应用中的作用。
在大模型的技术原理中,System 提示词是指大模型在对话开始时设定的一组规则和背景信息。它相当于给模型制定了一些“指导方针”,告诉它在整个对话过程中该如何表现。可以这样理解,System 提示词就像是在对话前给模型戴上了一副“角色扮演”的面具。
System 提示词的作用与特点:
-
设定背景:
System提示词可以告诉模型它在这次对话中扮演的角色,比如“你是一位经验丰富的医生”或者“你是一位耐心的老师”。这种设定可以帮助模型在回答问题时更有针对性和专业性。 -
设定语气:通过
System提示词,可以指定模型使用什么样的语气和风格。例如,“请用轻松幽默的语气回答问题”或者“请用正式的语言提供解释”。 -
设定目标:
System提示词还可以设定对话的目标,比如“帮助用户理解复杂的技术概念”或者“提供详细的操作指南”。
假设我们在与 AI 助手对话前设置了如下 System 提示词:
你是一位知识渊博且耐心的技术顾问,请用简洁明了的语言回答用户的问题。这个提示词就设定了模型的角色和回答风格,确保它在整个对话中始终如一地保持专业和耐心。
而 User 提示词则是用户在对话中提出的问题或指令。简单来说,就是用户想知道什么,想让模型做什么。与 System 提示词不同,User 提示词是对话进行中的具体内容。
User 提示词的作用与特点
-
提供问题:
User提示词是用户直接提出的问题,比如“什么是人工智能?”或“如何煮一杯咖啡?”。 -
提供指令:用户也可以通过
User提示词向模型下达指令,比如“请生成一段关于机器学习的介绍性文本”或“帮我写一封正式的电子邮件”。
假设用户向 AI 大模型提出如下User 提示词:
请解释一下大模型中的 system 提示词和 user 提示词有什么区别?这个 User 提示词就是模型需要直接回答的具体问题。
Bot 对话历史
在大模型节点输入区域,现在还有一个Bot 对话历史的勾选项在,这个选项是用来确定是否在大模型的提示词中加入之前的对话历史作为上下文信息,以帮助模型更好地理解用户的意图。
输出格式
在大模型节点中,我们还可以定义大模型节点的输出格式。Coze 支持以下几种常见的数据格式:
- 纯文本
- Markdown
- JSON
选择合适的输出格式,可以方便后续节点对生成内容进行解析和处理,比如可以通过输出不同的格式,来适配不同的下游节点:
- 纯文本:适合直接展示给用户阅读
- Markdown:适合用于生成网页、博客等富文本内容
- JSON:适合用于数据交换和后续处理
这里提醒一下,输出格式如果是
文本或者Markdown的话,其输出参数只能有一个output,而如果是JSON的话,其输出参数可以有多个。
实例演示
接下来我们就来举两个具体的例子,看看如何具体设计人设与回复逻辑和提示词:
1. 让大模型生成一段关于“机器学习”的介绍性文本
人设与回复逻辑
假设你是一位资深的科技记者,你的任务是用通俗易懂的语言,介绍机器学习的基本概念和应用场景。你可以从原理、算法、应用等方面进行阐述。
要求:
1. 语言通俗易懂,尽量避免专业术语
2. 介绍内容全面,涵盖机器学习的基本概念和应用场景
3. 文章结构清晰,逻辑严谨,易于理解
限制:
1. 生成的文本长度在 500 字以内
2. 文章应包含标题和若干段落提示词
请生成一段关于机器学习的介绍性文本。2. 让大模型生成一篇关于“人工智能在医疗领域的应用”的文章
这次我们顺便加上
输入区域的参数(变量)来动态修改提示词的内容:
人设与回复逻辑
假设你是一位医学专家,你的任务是用专业的语言,介绍人工智能在医疗领域的应用情况。你可以从疾病诊断、药物研发、医疗影像等方面进行阐述。
要求:
1. 语言专业严谨,使用医学术语
2. 介绍内容全面,涵盖人工智能在医疗领域的主要应用场景
3. 文章结构清晰,逻辑严谨,易于理解
限制:
1. 生成的文本长度在 1000 字以内
2. 文章应包含标题和若干段落提示词
请基于以下最新的新闻内容,来写一篇关于人工智能在医疗领域的应用的文章:
{{news_content}}
知识库节点:提供结构化知识支持
知识库是一种以结构化方式存储和管理领域知识的数据库。在 Coze 工作流中,知识库节点充当了 知识源 的角色,为其他节点提供必要的背景信息和专业知识,提升了工作流的整体智能水平。
Coze 提供了一个知识库管理功能,用户可以在其中创建和维护自己的知识库,然后直接给工作流的知识库节点来调用。
关于配置工作流的知识库节点这块,其实其操作绝大部分是跟之前的第 12 篇文章的介绍相似的,这里就不再赘述了。而在工作流中的知识库节点是不可以创建修改知识库的,我们只可以通过知识库节点来复用事前已经创建好的知识库,从而实现知识的检索和召回,如下图:
要注意的是,工作流的知识库节点只支持查看和搜索指定的一个到多个知识库,共用同一个检索召回等策略,不支持对知识库的增删改操作,如下图所示:
在输入区域中的Query参数是用来指定查询条件的,其实就是一句自然语言,比如“请找出关于流感的疾病知识”,而输出区域中的outputList参数则是用来输出查询结果的,之前跟大家说过,其实就是一个JSON格式的对象数组,在尽可能满足最大召回数量情况下,里面包含了多个知识匹配条目,用于输出到下游节点:
数据库节点:实现数据的持久化读写操作
除了大模型节点和知识库节点,Coze 工作流还提供了数据库节点。数据库节点允许工作流与你在平台创建的其他数据库系统进行交互,实现结构化数据的持久化存储与管理。具体的数据库操作详情可以看回第 10 篇文章内容。
这里提醒一下,在 Coze 平台中只能在特定的 Bot 编排界面中创建删除数据库和维护数据库表的设计,
配置数据库节点
数据库节点最常见的使用方式是执行 SQL 语句。用户可以在节点中配置需要执行的 SQL,包括数据查询(SELECT)、新增(INSERT)、更新(UPDATE)、删除(DELETE)等操作。
同时为了确保灵活性,SQL 语句中支持使用变量。变量的值可以通过节点的输入参数动态指定。当该节点被执行时,系统会自动将输入参数的值替换到 SQL 中的对应位置。
举个例子,假设我们有一张user表。现在需要根据提供的用户 ID,在数据库中查询该用户的姓名和邮箱。
对应的 SQL 查询语句为:
SELECT name, email FROM user WHERE id = {{user_id}}注意 SQL 中的{{user_id}},这就是一个变量。我们可以在节点的输入区域中定义同名参数:
当这个节点被前面的节点触发时,输入参数user_id会被自动传入并替换到 SQL 语句中。系统执行最终的 SQL 并返回查询结果。
如果技术小白实在不知道怎么写 SQL 语句,也不用担心,你可以直接点击SQL区域右上角的自动生成按钮,然后选择对应的 Bot,填写你查询目标的自然语言内容,最后点击自动生成按钮,就可以生成对应的 SQL 语句了,不满意了可以再修改查询目标再生成:
这里提醒下,在工作流中调试数据库时当前的工作流是有独立的一个临时数据库给你去调试的,我们作为 Bot 开发者来说,我们是不允许查看到数据库中真实的用户数据的,更多的是推荐你在 Bot 的编排调试界面或者在当前工作流中进行数据调试,推荐前者:
Bot 编排界面调试数据库:
当前工作流调试数据库(虽然能看到我之前插入的数据,但是不像前者那样直观):
数据库节点的结果输出
对于查询类的 SQL 语句,如 SELECT,执行的结果是一个结果集,包含了零到多条数据库记录。数据库节点会将结果集以 JSON 格式输出到outputList参数中,但是rowNum参数的值都会为 0,
为什么呢?rowNum这个参数其实含义就是这次SQL命令执行后有变更过数据的数据行数,这里查询的话很明显是不会变更数据的,所以为0。
比如下图的 SQL 查询结果:
{
"outputList": [
{
"address": "广东省xxxxxx",
"phone": "13220492302",
"id": "100",
"name": "andy"
},
{
"address": "广东省xxxxxx",
"phone": "13220492302",
"id": "100",
"name": "andy"
}
],
"rowNum": 0
}而对于非查询类的 SQL语句,如 INSERT、UPDATE、DELETE 等,即增删改等的操作,执行结果通常是数据库受影响的行数。此时节点会将受影响行数输出到rowNum参数中,而数组参数outputList的值都为空。
比如下图的 SQL 插入结果:
{
"outputList": [],
"rowNum": 1
}总结
本文介绍了 Coze 工作流中三种关键节点:大模型节点、知识库节点和数据库节点的功能、使用方法及应用案例。它们各自发挥专长,协同配合,让工作流真正拥有强大的智能化与数据处理能力:
- 大模型节点负责自然语言理解、知识推理和内容生成,让工作流拥有不亚于人的智能水平。
- 知识库节点提供了丰富的结构化领域知识,为其他节点补充必要的背景信息。
- 数据库节点打通了工作流与外部数据源的边界,支持灵活的数据持久化与查询分析。
这三类节点的引入,使得 Coze 工作流的应用范围大为拓宽,能够满足更多垂直领域、更加个性化的业务需求。我相信,Coze 工作流必将在智能自动化领域发挥越来越重要的作用。