Crazy Urus blogs
探索 Coze Plugin:自动生成 GitHub 仓库的更新日志

扣子(Coze)是一款功能强大的一站式 AI Bot 开发平台。今天,该平台正式在国内上线,我们第一时间体验了如何在 Coze 上开发一个 Bot,通过自然语言描述需求及配置 GitHub 插件,实现按仓库汇总更新日志。在这个过程中,我们无需写任何代码,只通过自然语言描述需求,真正感受到了大模型的神奇之处。

什么是 Plugin

我们知道大模型的知识储备是有限的,截止到训练完成的那一刻,此后的知识大模型是一无所知。为了弥补这一不足,Coze 提供了 Plugin 机制。Plugin 可以被理解为在线服务,能够提供实时信息,例如查询天气、查询 GitHub 仓库等。当用户向大模型提出问题需要一些实时数据时,我们可以引导大模型调用 Plugin 来获取这些信息,从而弥补大模型在知识方面的局限性。

Coze Plugin Store 上已有官方提供的大量 Plugin:

image.png

如何开发 Plugin

首先我们需要创建一个 Bot。在 Personal 工作区点击右上角的 新建 Bot,即可进入 Bot 编辑器:

image.png

其中:

  • 人设与回复逻辑:即 Bot 的 Prompt,我们可以理解为这是 Bot 的业务逻辑,只是不需要写代码,通过自然语言描述逻辑即可
  • 技能:包含 插件工作流数据库 等,扩展了 Bot 的在线检索及存储能力
  • 预览和调试:可在右侧与 Bot 对话,验证配置是否符合预期

当我们需要开发一个 Plugin 时,我们点击 插件 右侧的加号,在弹窗中新建一个 Plugin。我们以 GitHub Plugin 为例:

image.png 其中:

  • 插件名称:插件的唯一标识,在 Prompt 中使用 插件名称.工具名称(参数) 的方式引导大模型调用插件
  • 插件描述:即插件的 Prompt,帮助大模型理解插件的作用
  • 插件 URL:插件服务的 URL。在 Coze 中插件需要通过 HTTP 服务提供给平台调用,这里我们的 GitHub 插件采用了 GitHub 官方的 OpenAPI,即 URL:https://api.github.com ,该插件的所有工具的 baseURL 都需要基于这个值。
  • 授权方式:当插件的服务需要授权时需要配置。支持 OAuth 协议的授权,这里我们的 GitHub 插件需要获取用户的仓库列表,因此需要授权。
  • client_idclient_secret:即 OAuth 授权过程的凭证。我们需要前往 GitHub 创建,打开 GitHub OAuth Apps,点击右上角的 New OAuth App,新建完成后即可获取。需要注意的是,Authorization callback URL 需要填写 Coze 平台的回调地址,即 https://bot-open-api.oceancloudapi.com/api/oauth/authorization_code

image.png

  • scope:即 OAuth 的 scope,这里我们不需要填写
  • authorization_url:即 OAuth 获取 access_token 的接口 URL,我们填写 GitHub 的 https://github.com/login/oauth/access_token
  • authorization_content_type:填写 application/json

至此,我们的插件就创建好了。我们再给插件添加两个工具:获取授权用户的仓库列表 getMyRepositories 及获取仓库的 commit getCommits。我们以第一个工具为例:

  1. 配置工具的基本信息。工具名称是唯一标识,在 Bot 调用时会用到;工具描述是工具 Prompt,帮助大模型理解插件的作用;工具路径即对应的 HTTP 服务 URL,前半部分是 插件 URL 的值;请求方法即 HTTP 的请求方法。

image.png

  1. 配置输入参数。即工具的输入参数,配置和 HTTP 参数的映射关系

image.png

  1. 配置输出参数。即工具的输出内容数据结构,我们可以借助平台提供的 自动解析 功能,根据 HTTP 接口返回的 JSON 结构自动解析

image.png

  1. 调试与校验:运行一下工具,确认前面的配置都是正确的

image.png

至此,我们就完成了一个 Plugin 的开发。

开发 Bot

接下来,我们就可以基于上面的 GitHub Plugin,开发一个帮我生成更新日志的 Bot。我们先梳理下这个 Bot 的业务逻辑:

  • 当用户未授权时,需要先完成 GitHub 的 OAuth 授权
  • 当用户已授权时,Bot 查询用户的仓库列表,并向用户提问需要生成哪个仓库的更新日志
  • 用户指定仓库后,Bot 查询仓库的 commit 记录,并生成更新日志

根据上面的逻辑,我们写出的 人设与回复逻辑(Prompt)如下:

# Character
你是一个专业的 AI 助手,擅长帮助用户生成详细的 GitHub 项目更新日志。你可以按照用户的 Github 库的提交记录,给用户生成详细的项目更新信息。

## Skills

### Skill 1: 获取 GitHub 仓库信息
1. 当用户提供一个完整的GitHub仓库链接时,例如 `https://github.com/{owner}/{repo}`,你应从 URL 中提取出 `owner` 和 `repo` 参数。
2. 如果用户输入一些关键词进行库搜索,你需要调用 `GitHub.searchRepositories(q)` 插件,查询相关的仓库信息,并以列表的形式展示给用户供他们选择。用户选择后,提取出其选择的 `owner` 和 `repo` 参数。
3. 用户也可以选择查询属于他们自己的仓库,你需要让用户进行 OAuth 授权,然后通过调用 `GitHub.getMyRepositories()` 插件,展示用户的所有仓库信息供他们选择。用户选择后,提取出其 `owner` 和 `repo` 参数。

### Skill 2: 查询仓库的 commit 记录
根据第一步获取到的 `owner` 和 `repo` 参数,你需要调用 `GitHub.getCommits(repo, owner)` 插件来查询所有的commit信息。

### Skill 3: 生成更新日志
根据第二步查询到的commit信息,你需要按照月份对其进行分类,将其优化后的commit消息展示出来。你需要按照以下格式生成更新日志并展示给用户:

# <年份-月>

- [新增] <优化后的message>,这通常以"feat"开头。
- [修复] <优化后的message>,这通常以"fix"开头。
- [优化] <优化后的message>,这通常以"refactor"开头。
- [文档] <优化后的message>,这通常以"docs"开头。

chore, test 开头的 commit 不在更新日志中展示

## Constraints:
- 尽量避免产生不必要的网络请求,可根据需要缓存部分信息。
- 尽量减少让用户等待的时间,合理安排异步任务的执行顺序。
- 注意保密用户的隐私,不要泄露或保存用户的 OAuth 授权信息。
- 对于用户提供的仓库链接,需要在工作开始前确认其有效性。
- 在生成日志时,针对一些技术性的词汇,考虑提供解释或者附带相关链接,以方便用户理解。
- 提供让用户查看更新日志详情的选项,例如查看某个 commit 的具体改动。

编写 Prompt 时,我们可以先将 Bot 的大致业务逻辑写好,再借助平台提供的 优化 功能进行格式和内容优化。Prompt 即 Bot 的业务逻辑,至此,我们的 Bot 就开发完成了。记得在 Plugin 中添加我们前面创建的 GitHub Plugin。

效果

接下来我们看看 Bot 的效果,首先我们让 Bot 查询我的仓库信息。Bot 提示需要授权

image.png

我们完成授权后,再次让 Bot 查询我的仓库信息,这次 Bot 成功查询到了:

image.png

我们再让 Bot 生成其中一个仓库的更新日志,Bot 按预期格式完成了汇总:

image.png

可以看到,Bot 很好的完成了我们的需求,整个开发过程我们没有写一行代码。

最后

Coze 平台除了 Plugin 外还提供了大量功能,对大模型的能力进行了补充,欢迎一起探索。

最后我们将 Bot 发布到豆包或其它平台上,这样用户就可以使用了。

欢迎来豆包体验本文的 Bot:生成更新日志

BotID: 7312698722042003493