👾
Coze 是新一代一站式 AI Bot 开发平台。无论你是否有编程基础,都可以在 Coze 平台上快速搭建基于 AI 模型的各类问答 Bot,从解决简单的问答到处理复杂逻辑的对话。并且,你可以将搭建的 Bot 发布到各类社交平台和通讯软件上,与这些平台/软件上的用户互动。
💡
在这篇文章中,我将介绍如何使用Coze平台开发一个Bot来读取Github Star项目,并输出分析结果。
👾实现思路
Coze有个版本,分别面向海外和国内,这里我使用海外版本
域名 | 模型 | 备注 |
coze.com | GPT4o\GPT3.5\GPT4\Gemini 1.5 Pro.. | 海外魔法 |
coze.cn | 字节云雀 | 国内 |
这里不多介绍Coze平台的基本功能了,请移步官方文档:Coze - Coze 文档中心
整体实现思路如下:
- 编写一个能够读取我自己Github Star项目的插件
- 编写一个能够向知识星球推送文字的插件
- 创建工作流,方便后续其他Bot调用
- 创建一个Bot,编写Prompt,导入上述插件进行调试
- 设置自定义交互的按钮来修改
变量
,增加易用性
🔧编写访问Github API的插件
为了实现能够将Github的Star项目输入给AI,首先需要编写一个插件,这个插件用于访问Github API接口:
以上是我用Prompt AI生成的示例代码,这个示例代码确实能直接拿来使用,但是还需要按照实际情况调整输入输出参数,在Coze平台中每一个插件都可以通过Metadata
设定输入参数以及输入参数的数据类型,同样的也有输出参数以及输出参数的数据类型。
我在Metadata设定了这个插件输入、输出的数据格式,输入参数分别是:
参数名称 | 参数描述 |
token | 用于访问Github API接口的Access Token |
limit | 用于设定要取得多少个Star项目 |
输出参数分别是:
参数名称 | 参数描述 |
description | 项目描述 |
url | 项目链接 |
stargazers_count | 项目Star数量 |
topics | 项目主题 |
但通过requests
访问API接口还是不够优雅,我找到了PyGithub
这个库,对Github API封装很好,在插件依赖中直接引入了:
最终的插件代码如下:
在Coze平台上可以直接对插件进行测试,在Output Value
日志栏目中可以看到返回的数据结构:
至此一个获取Github Star项目的插件就做好了。
📔编写发送知识星球帖子的插件
由于知识星球没有提供API接口,因此我使用浏览器开发者工具查看了一下请求规律,编写了如下代码:
参数 | 参数说明 |
cookie | 知识星球Cookie |
group_id | 知识星球的ID |
content | 帖子内容 |
这个插件返回的比较简单,如果成功就返回True,失败就返回False。
🔄创建工作流
工作流支持通过可视化的方式,对插件、大语言模型、代码块等功能进行组合,从而实现复杂、稳定的业务流程编排,例如旅行规划、报告分析等。当目标任务场景包含较多的步骤,且对输出结果的准确性、格式有严格要求时,适合配置工作流来实现。
在工作流中可以引入多种模块:
节点名称 | 描述 |
LLM | 大语言模型节点,该节点支持选择不同的 AI 模型处理文本生成任务。 |
Code | 代码节点。通过 IDE 编写代码处理输入参数,并返回输出值。 |
Knowledge | 知识库节点。根据输入参数从关联知识库中召回数据,并返回。 |
Condition | if-else 逻辑节点。满足设置条件则运行 if 分支,否则运行 else 分支。 |
Variable | 变量节点。用于读取和写入 Bot 中的变量。 |
Plugins | 插件节点,能够调用Plugins Store中的所有插件 |
这里我以获取Github Star项目的工作流为例,首先每个Workflow都有一个起始节点和结束节点,结束节点可以设置返回值。
在整个工作流内,上一个节点的输入输出变量可以被下一个节点引用:
💡
我为了保证Star的Github项目描述信息更加丰富,所以调用了另外一个模拟浏览器访问网页的插件去抓取网页内容,交给大模型去分析。这里我使用的是Gemini 1.5 Pro,因为GPT4o在晚上的时候处理起来非常慢(毕竟大家都在白嫖),这个任务就会超时,导致整个Workflow执行失败。
- Batch processing : 可以并发执行,如果要处理一批线性的输入(例如数组),可以调用这个方式去执行。
🤖创建一个面向用户的Bot
Coze 利用大型语言模型极大地简化了 Bot 的搭建过程。 在充分利用大语言模型优势的同时,Coze 还支持用户通过知识库、工作流等功能来配置 Bot 如何响应用户查询,以保证 Bot 符合预期。
你可以使用 Coze 提供的以下功能,定制你的 AI Bot:
- 人设与提示词
设定 Bot 的身份及其目标和技能,例如产品问答助手、新闻播报员、翻译助理等等。Bot 的人设和提示词决定了 Bot 如何与你的用户进行互动。
- 插件
通过 API 连接集成各种平台和服务,扩展 Bot 能力。Coze 平台内置丰富的插件供你直接调用,你也可以创建自定义插件,将你所需要的 API 集成在 Coze 内作为插件来使用。
- 工作流
一种用于规划和实现复杂功能逻辑的工具。你可以通过拖拽不同的任务节点来设计复杂的多步骤任务,提升 Bot 处理复杂任务的效率。
- 记忆库
Coze 的记忆库功能可以保留和理解对话细节,并支持添加外部知识库给模型补充知识,使 Bot 与用户的互动更加有针对性和个性化。你可以通过以下方式来存储和管理外部知识。
- 知识库:支持上传本地或线上内容,然后将这些内容分割成知识分片,通过语义匹配给模型补充知识。
- 变量:通过 key-value 的形式来记录变量值。例如记录用户的某一偏好。
- 数据库:用来存储和管理结构化数据,并支持用户通过自然语言方式对数据库中的数据进行增删改查。
- 多发布渠道
Coze 支持将搭建的 Bot 发布到各种社交应用中,让你的 Bot 服务更多的用户。
- 其他定制化功能
- 定时任务:你可以为 Bot 添加定时任务,预定的时间条件下自动触发 Bot 向用户发送消息。
- 开场白:设置 Bot 对话的开场语,让用户快速了解 Bot 的功能。例如 我是一个旅行助手 Bot,我能帮助你计划行程和查找旅行信息。
- 用户问题建议:Bot 每次响应用户问题后,系统会根据上下文自动提供三个相关的问题建议给用户使用。
- 音色:为 Bot 选择与用户交流使用的语言和语调。
创建完插件、Workflow,就可以将Workflow导入到Bot中了,再写上Prompt就基本完成了。这里贴一下我的Prompt(写的比较烂,有很大优化空间):
说到Database,我在这个Bot中尝试使用了一下,确实非常好用,可以用提示词控制Bot把结果按照Database结构保存起来,例如Bot获得前10个Github项目就保存起来了:
👍设置自定义交互按钮
自定义交互按钮其实就是ShortCut,可以让用户按照设置好的表单填写信息,然后发送给Bot
由于前面编写的Workflow需要一些Token、Cookie之类的信息,我就创建了几个变量用于保存这些信息,并且防止Prompt注入,限制了用户不能查看变量的值。
最终实现效果:
总结
Coze平台有点像是一个在线版的LangChain,比起之前使用代码去定制自己的Agent,通过平台一站式解决就很丝滑,并且能够多个Workflow进行联动,通过Trigger还能够设置定时任务(定时推送,这个本文还没有实现),总之能够极大的方便日常工作和生活,不过还是不建议在上面使用较为隐私的信息。