探索 Coze Plugin:实现 GitHub Plugin 自动汇总更新日志

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

什么是 Plugin

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

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

如何开发 Plugin

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

其中:

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

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

其中:

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

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

  1. 配置工具的基本信息 。工具名称是唯一标识,在 Bot 调用时会用到;工具描述是工具 Prompt,帮助大模型理解插件的作用;工具路径即对应的 HTTP 服务 URL,前半部分是 插件 URL 的值;请求方法即 HTTP 的请求方法。
  1. 配置输入参数。即工具的输入参数,配置和 HTTP 参数的映射关系
  1. 配置输出参数 。即工具的输出内容数据结构,我们可以借助平台提供的 自动解析 功能,根据 HTTP 接口返回的 JSON 结构自动解析
  1. 调试与校验:运行一下工具,确认前面的配置都是正确的

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

开发 Bot

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

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

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

markdown 复制代码
# 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 提示需要授权

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

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

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

最后

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

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

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

BotID: 7312698722042003493

相关推荐
水豚AI课代表2 小时前
分析报告、调研报告、工作方案等的提示词
大数据·人工智能·学习·chatgpt·aigc
程序员X小鹿4 小时前
全部免费!6款AI对口型神器,让照片开口说话唱歌,早晚用得上,建议收藏!(附保姆级教程)
aigc
真忒修斯之船4 小时前
大模型分布式训练并行技术(三)流水线并行
面试·llm·aigc
SpikeKing4 小时前
LLM - 使用 LLaMA-Factory 微调大模型 环境配置与训练推理 教程 (1)
人工智能·llm·大语言模型·llama·环境配置·llamafactory·训练框架
学习前端的小z6 小时前
【AIGC】如何通过ChatGPT轻松制作个性化GPTs应用
人工智能·chatgpt·aigc
zzZ_CMing7 小时前
大语言模型训练的全过程:预训练、微调、RLHF
人工智能·自然语言处理·aigc
杰说新技术11 小时前
Meta AI最新推出的长视频语言理解多模态模型LongVU分享
人工智能·aigc
热爱跑步的恒川17 小时前
【论文复现】基于图卷积网络的轻量化推荐模型
网络·人工智能·开源·aigc·ai编程
火山引擎边缘云1 天前
创新实践:基于边缘智能+扣子的智慧婴儿监控解决方案
物联网·aigc·边缘计算
算家云1 天前
如何在算家云搭建Aatrox-Bert-VITS2(音频生成)
人工智能·深度学习·aigc·模型搭建·音频生成·算家云