在当今人工智能迅猛发展的时代,AI Bot 的开发需求日益增长。无论是企业的客户服务、智能助手,还是个人开发者的创意实践,都需要一个高效、便捷且功能强大的开发平台。Coze 作为新一代一站式 AI Bot 开发平台,应运而生,为不同编程水平的开发者提供了一个理想的解决方案。本指南将深入介绍 Coze 的特点、使用方法、与其他产品的对比,以及进阶使用技巧,帮助您全面了解和掌握 Coze 的应用。
(一)平台简介
Coze 是新一代一站式 AI Bot 开发平台,其最大的优势在于对开发者编程基础的包容性。无论您是经验丰富的程序员,还是零基础的初学者,都能在 Coze 平台上快速搭建基于 AI 模型的各类问答 Bot。这些 Bot 不仅可以解决简单的问答问题,还能处理复杂逻辑的对话。此外,您还可以将搭建好的 Bot 发布到各类社交平台和通讯软件上,与平台上的用户进行互动,极大地拓展了 Bot 的应用范围。
(二)平台功能特点
多样化的开发支持:Coze 不仅仅局限于对话式 Bot 的开发,还擅长各种 AI 任务的编排。例如,它可以轻松搭建 RAG 系统、AIGC 生产 pipeline 等,满足不同场景下的开发需求。
丰富的插件资源:Coze 自带大量插件,国内版有 60 多个插件,国外版更是多达 110 + 插件,涵盖了各种搜索引擎(如头条、bing、google)、多模态工具(如图像理解、text2image、text2video)以及各种垂类信息获取工具(如查快递、天气预报、arxiv)等。在使用时,只需一键添加想要的插件,即可在对话时自动使用,为开发带来了极大的便利。
良好的生态开放性:支持一键部署到飞书、微信、豆包、discord 等平台,同时支持 API 调用,方便开发者将 Coze 与其他系统进行集成,实现更广泛的应用。
(一)GPTs
优势:GPTs 是允许自定义的 ChatGPT 新功能,使用自然语言即可轻松创建基于 ChatGPT 功能的新系统,无需编码和专业知识,非工程师也能轻松上手。它支持通过对话指定功能、上传文件作为知识库以及调用外部 API 等功能。
劣势:只能在 chatgpt 网站使用,无法迁移到自己的应用;安全性较差,Prompt 容易被套取和泄漏;GPTs 商店的收益只对 US 地区用户开放。
(二)LangChain
优势:是一个用于开发由语言模型支持的应用程序的框架,包含 LangChain 库、模板、LangServe 和 LangSmith 等组件。LangChain 库提供了大量组件的接口和集成,以及链和代理的现成实现;模板适用于各种任务的快速部署;LangServe 可将 LangChain 链部署为 REST API;LangSmith 则可用于调试、测试、评估和监控基于任何 LLM 框架构建的链。
劣势:还未推出 1.0 正式版,代码更新频繁且很多不能向后兼容;自带工具在实际使用中效果不佳,常需重写部分代码;官方只支持 JS 和 Python,对 Go 开发者不友好。
(三)Langflow
优势:是原型 LangChain 流程的简易实现方法,具有拖拽功能,允许快速且毫不费力地进行实验,内置的聊天界面便于实时互动。它还提供了编辑提示参数、创建链条和代理、跟踪思维过程以及导出流程的选项。
劣势:相比 Coze,其功能的全面性和易用性存在一定差距,在处理复杂任务和实现多样化功能方面略显不足。
(四)Coze 优势总结
与上述产品相比,Coze 具有开箱即用的特点,无需考虑模型接入、数据库接入、数据切片编码、agent 设计、输出格式控制和解析等复杂问题。其界面友好,支持可视化拖拽实现低代码流程编排,即使是没有编程经验的用户也能快速上手。同时,丰富的插件资源和良好的生态开放性,使其在开发效率和应用范围上具有明显优势。
(一)一分钟开发一个 AI 智能体
在个人工空间,点击创建 Bot,输入名称、描述,AI 会自动生成图标,即可完成一个 Bots 的创建。进入 Bots 后,通过以下配置选项可快速实现一个智能体:
人设与回复逻辑:编写 Bot 的提示词,明确告诉大语言模型需要执行的任务,设定 Bot 的角色和目标。提示词越清晰明确,Bot 的回应就越准确。
模型选择:支持选择 chatgpt、seed 等系列模型,根据实际需求灵活选择合适的模型。
开场白设置:设计开场白,使用户能够快速了解和使用 Bots。
预览与调试:通过在线对话,对 Bots 的效果进行调试,确保其能够准确回应用户问题。
(二)两分钟开发一个 RAG 问答系统
大模型的幻觉问题一直是困扰开发者的难题,而 RAG(检索增强生成)是一种低成本的解决方案。在 Coze 平台上,开发 RAG 问答系统非常简单:
知识库配置:在个人空间 - 知识库,点击创建知识库。知识库分为三个维度,从大到小依次为知识库(一整套领域知识,是 Bot 加载的最小单位)、单元(知识库的一部分,用户上传的最小单位,如 TXT、PDF、CSV 文件、网页)和分段(一个单元切分成多个分段,模型查询的最小单位)。
文件上传与处理:创建好知识库后,上传文件,可一键进行分段和编码。
导入与实现:在 Bot 开发界面选择导入知识库,即可实现 RAG 对话,有效避免大模型胡说、知识不足等问题。
(三)一键搞定大模型联网
Coze 自带丰富的插件,类似 LangChain 中的 Tools,使 LLM 可以使用各种外部工具。国内版有 60 多个插件,国外版有 110 + 插件(如 DALLE3、GPT4V 等)。使用时,只需一键添加想要的插件,在对话时系统会自动调用,为大模型提供更广泛的信息来源。
(四)长期记忆,定制你的私人秘书
利用记忆模块里的数据库,可实现类似私人秘书的长期记忆功能。数据库是一个可持久化的二维表格,使用前需指定数据的格式,例如一个简单的日程工具需要时间、任务、其他信息这三个字段。通过自然语言对话就可以进行 CRUD 操作,并且可以随时查看表格里的信息。同时,还可以使用变量记录特定值,如心情值变量,使 Bot 能够根据用户的心情调整对话风格和回应内容,提供更贴心的服务。
(一)Prompt 基础结构
在 Coze 中,Prompt 是实现各种功能的关键。以创建一个最简单的 Bot 为例,人设中的提示词会被加入到 Prompt 中,同时还会包含当前的时间信息,这也是 Bots 自带手表功能的原因。后面是 markdown 格式的内容,在未配置其他工具时,可能暂时没有作用。例如:
It is 2024/02/16 14:21:50 Friday now.
你是一个机器人,大家的好朋友
# Tools
## functions
namespace functions {
// Not implemented.
type python = () => any;
} // namespace functions
(二)人设遵循原理
chat 系列模型的内容输入是一个数组,代表对话上下文。数组内每一条都包含 role 和 content,分别代表角色和所说的内容。上面的 Prompt 以 System 为角色,用户说的话以 User 角色,LLM 回答的话以 Assistent 为角色。通过这种方式,人设信息能够被大模型遵循,确保 Bot 按照设定的角色和目标进行回应。
(三)插件调用原理
插件本质上是一个 API,Agent 会根据实际情况选择合适的时机进行调用。当添加插件时,对话调用时会在 Tools - functions 增加对应的 API 描述,包括函数备注(说明函数的功能、调用时机)、参数(需要输入的内容与约束,以及示例)和返回值。例如,添加必应搜索引擎和文字描述生成图片插件后,Prompt 会如下变化:
You are ChatGPT. It is 2024/02/16 12:40:46 Friday now.
你是一个机器人,大家的好朋友
# Tools
## functions
namespace functions {
// 必应搜索引擎。当你需要搜索你不知道的信息,比如天气、汇率、时事等,这个工具非常有用。但是绝对不要在用户想要翻译的时候使用它。
type biyingsousuo-bingWebSearch = (_: {
// 响应中返回的搜索结果数量。默认为10,最大值为50。实际返回结果的数量可能会少于请求的数量。
count?: number,
// 从返回结果前要跳过的基于零的偏移量。默认为0。
offset?: number,
// 用户的搜索查询词。查询词不能为空。
query?: string,
}) => any;
// 通过文字描述生成图片
type byteartist-text2image = (_: {
// 图片高度,必须使用512
height?: number,
// 1代表通用风格,0代表动漫风格
model_type?: number,
// 要生成的图片数量
nums?: number,
// 用于图片描述,使用多个短语概括实体
prompt?: string,
// 图片宽度,必须使用512
width?: number,
}) => any;
// Not implemented.
type python = () => any;
} // namespace functions
大模型会根据 Prompt 中的 API 信息,判断是否需要调用模型。如果需要,会返回 Json 格式的调用参数,Coze 后台解析 Json 并调用 API,得到接口返回后,LLM 继续根据上下文和 API 的结果回答用户的问题。
(四)Tools 输出内容的使用
对于绘图工具等,API 返回体会作为上下文作为历史对话内容,后续对话可以操作前面生成的图片。而对于其他工具,API 返回的内容可能会丢失,取而代之的是 LLM 上次回答的内容。
(五)WorkFlow 输出格式控制
Workflow 类似 LangChain 中的 chain,可实现各种任务的编排。其中基础节点 LLM 支持配置输出格式,在 Prompt 中无需手动编写输出字段的要求,组件会自动添加相应的输出格式要求。例如,创建三个输出字段时,Prompt 会自动添加如下内容:
Please refer to the content above, use the language of the above content, and strictly follow the format below for output (Replace the contents in parentheses):
{
"output":(Type:string; Description:output),
"time":(Type:string; Description:current time),
"name\":(Type:string; Description:name)
}
这样 LLM 会输出 json 格式的数据,Coze 后台自动解析,提供给后面的节点使用。
(一)知识库调用
1. 自动调用
当知识库设置为自动调用时,每一次问答都会查找知识库。支持向量检索(通过计算 embedding 后的向量距离得到文本相似度,语义化检索灵活性高)、全文检索(基于传统关键词匹配检索,精确度高,但灵活性差)和混合检索(结合前两种方法,保证精度和准度)三种检索方式。加载自定义知识库后,对话时 LLM 会主动查询数据库,查找的结果会随 Prompt 输入给大模型参考。
2. 按需调用
按需调用时,Agnet 会根据当前的对话场景选择是否进行调用。在 Tools - functions 增加 ts - RecallKnowledge API,说明调用方式。由于该 API 的描述未告知调用可获得的数据,需要在人设中指出更多的调用信息。
(二)数据库与关键词记忆
1. 数据库记忆
创建数据库后,Prompt 会包含表名、描述、结构、表格操作规则以及 ts - TableMemory 表格操作 API(输入 SQL 语句)。通过这些信息,用户可以方便地进行数据库操作,实现数据的持久化存储。
2. 关键词记忆
使用 keywords 时,Prompt 会包含变量的名字、含义、当前的值,以及配套的 setKeywordMemory 工具用于更新变量的值。该工具的使用规范会指定 keyword 中 key 的范围。每次对话,System 部分的 Prompt 都会包含每个变量的最新值,Coze 后端服务会持久化变量,即使重置上下文,下次重新会话也能保留之前的记忆。
在对话时,LLM 能记住之前的话是因为 Prompt 中包含历史对话记录。但历史对话会消耗大量的 token,Coze 默认设置最大上下文长度为 3,超过时会忘记之前对话的内容。开启长期记忆后,Bot 的记忆力明显提升。其实现方式是在对话前对之前的上下文进行总结,用少量 token 保留关键内容。长期记忆不会随清理上下文而消失,确保 Bot 能够持续提供连贯的服务。
(四)CronJob 定时任务
CronJob 是一个定时器,可以根据用户的对话上下文自动创建定时任务,在对应的时间自动执行。从 Prompt 可以看出,定时任务相当于一个插件,包含 createTimedTask(创建单个定时任务)、createPeriodicTask(创建周期型定时任务)、getTaskList(获取任务列表)、removeTask(删除任务)等函数。对话时创建的任务列表会同步到 Coze 后台定时任务中,当到达对应时间,会主动发送 ###Task Prompt### 任务信息 的 Prompt,Bot 根据预设响应定时任务。
(一)自定义 Workflow
workflow 类似于 LangChain 中的 Chain,可以将多个 LLM、代码、知识库、条件判断等按照一定的顺序组合在一起,形成一个自定义的工作流,用于处理单个 LLM 难以完成的复杂固定任务。例如,在抖音直播间分享的使用 LLM 辅助医生诊断的工具,通过 workflow 可以将病历信息总结任务和 RAG 辅助二次检查任务进行组合,快速将想法变为现实。同时,通过层级拆分,可提高工作流的可读性。
(二)复杂任务编排
在实际应用中,我们可能会遇到各种复杂的任务。以使用 LLM 辅助医生诊断的工具为例,用户病历信息过长,大模型无法一次处理,因此引入病历信息总结任务;LLM 总结诊断出的结果准确度不高,使用 RAG 辅助二次检查,提高输出的可信度。通过 workflow 对这些流程进行复刻,可以有效解决复杂任务的处理问题。
(三)RAG 的使用建议
1. 准确率提升方法
RAG 的流程包括文档切分、编码、检索和以 Prompt 的形式提供给模型。在知识切分方面,每一个片段应尽可能完整,可使用 markdown 数据的二级、三级目录进行切分。切分粒度过大或过小都会影响检索效果,需根据实际情况进行调整。检索方式可选择向量检索(语义化检索灵活性高)、传统关键词检索(精确度高)或混合检索(结合两者优势)。对于海量数据场景,可采用分治策略,将知识分类到不同的子库,先判断属于哪个子库,再进行二次向量检索。
2. 更多类型数据连接
LLM 不仅可以使用向量检索获取知识,还能连接各种类型的传统数据库。Coze 中的数据库就是一个例子,可将其思路抽象出来,封装为一个 workflow,其中调用数据库的部分可使用自定义插件来实现。
3. RAG + fewshot - learning
对于一些高难度任务,如生成准确的图数据库查询语句,大模型上下文长度有限,难以通过有限的例子演示所有可能的情况。此时可使用 RAG,只将相似的例子作为提示进行输入。同时,知识库的建立是一个持续的过程,可将系统先运行起来,对于无法解决的问题,人工打标补充到知识库,实现良性的持续发展。
(四)结果质量管理
1. 打分/性能测试
对于难以直接量化的任务,如判断生成文案的质量,可通过人工打分的方式处理。也可尝试使用 LLM 进行打分,只需告诉它任务要求、输入数据、打分规则,即可创建一个打分流水线。为提高打分的可信度,可采用多次打分取平均值、使用多模型打分、ELO 评分等方法。
2. 风险控制
使用 LLM 的地方,输入输出都要做风险控制。输入部分要对数据脱敏,防止机密信息泄露;模型输出的内容可能影响系统安全时(如数据库操作、接口调用),需要进行一层安全性校验,防止意外情况发生。对于 ToC 的 Bot,还需要加强 LLM 的防御性,防止用户套取提示词。可在 Prompt 中添加相关内容,减少 Prompt 泄漏的可能。
(一)适用情况
作为学习 AIGC 应用开发的工具,帮助用户快速理解大模型的使用方式。
用于快速验证想法的可行性,演示 demo,节省开发时间和成本。
为没有编程经验的人群提供 AI 产品开发的途径,降低开发门槛。
适用于对复杂度要求不高的功能进行快速开发,提高开发效率。
可用于开发个人提效工具,提升个人工作和生活的便利性。