如今任何项目开发节奏都很快,及时掌握项目动态是很重要滴,GitHub Issues 一般都是开发者和用户反馈问题的主要渠道。
然而,随着 Issue 数量的增加,及时跟进每一个问题会变得越来越困难。
为了解决这个痛点,我们开发了一个自动化 Issue 总结机器人,它的功能很简单:
- 自动获取项目最新的 GitHub Issues;
- 智能总结 Issues 内容;
- 将总结推送到指定的飞书群。
接下来我会提供详细的操作步骤,一步步实现这个机器人。
话不多说,拿起键盘,开始教学 ~
GitHub API 介绍
GitHub 提供了强大的 API 让我们能够轻松获取 Issues 信息。我们将使用以下接口来获取某个 repo 的 Issues:
这个接口默认返回最近的 30 条 Issues。
可以参考 Github 的 API 文档以获得更多的信息。
FastGPT 介绍
FastGPT 是一个能让 AI 开发门槛大幅降低的工具。不管你是有技术背景的开发者,还是只是对 AI 感兴趣的小白,FastGPT 都能帮你轻松入门,甚至可以让你在几分钟内构建出一个属于自己的 AI 应用。
传统的 AI 开发,你需要掌握编程、算法、数据处理等复杂技能。但是使用 FastGPT,你只需要简单几步就能启动一个 AI 应用。打个比方,传统的 AI 开发就像是你自己动手盖一栋房子,不但需要砖头、瓦片,还得有设计图纸;而 FastGPT 更像是搭积木,你只需选好模块,几块拼起来,房子就能立刻成型。
本文就会教大家如何使用 FastGPT 工作流来一步一步实现这个机器人。
FastGPT 工作流搭建过程
首先我们要登录 FastGPT 并新建一个工作流:
名字就叫 GitHub Issue 总结机器人吧。
然后开始一步一步添加节点。接下来开始对工作流进行拆解并详细讲解。
1. 构造查询范围
首先我们需要以当前时间节点为基准,获取 24 小时前的具体日期。需要使用到的节点是【代码运行】节点。
完整代码如下:
function main() {
const date = new Date();
date.setDate(date.getDate() - 1);
const day = date.getDate();
const month = date.getMonth() + 1;
const year = date.getFullYear();
const hours = date.getHours();
const minutes = date.getMinutes();
return {
date: `${year}-${month}-${day}T${hours}:${minutes}:000Z`,
}
}
2. 利用 GitHub API 获取 Issues
这一步我们将使用【HTTP 请求】节点来访问 GitHub API 来获取指定项目过去 24 小时内的 Issues。
这里以 FastGPT 项目为例。
3. 处理 API 响应数据
获取到原始数据后,我们需要对其进行处理,提取出我们需要的信息。同样使用【代码运行】节点。
完整代码如下:
function main({res}) {
const issues = JSON.parse(res);
const ret = [];
for(const issue of issues) {
if (issue.pull_request) continue;
ret.push({
title: issue.title,
body: issue.body,
url: issue.html_url
})
}
return {
ret: JSON.stringify(ret)
}
}
由于 issue 接口会将 pull_request 也视为 issue,所以我们只能在代码里面过滤。
4. 使用大语言模型总结内容
为了生成高质量的摘要,我们使用大语言模型来处理和总结 Issues 内容。
提示词如下:
你是一个简洁高效的 GitHub Issue 概述助手,专长于提炼核心问题并以清晰简洁的方式呈现。
## 任务
分析输入的多条 issue 信息,为每个 issue 创建一个简明扼要的概述。使用中文输出。
## 输入格式
JSON 数组,每项包含 title(标题)、body(内容)和 url(链接)。
## 输出格式
对每个 issue 使用 Markdown 语法创建简洁的概述块。每个概述应包含:
1. 使用加粗呈现 issue 的原标题
2. 一段简短的问题概述(不超过 2-3 句话)
3. 原 issue 的链接(使用 Markdown 链接语法)
在概述中适当使用 emoji 来增加可读性,但不要过度使用。保持整体风格简洁明了。
示例输出:
---
**
标签:FastGPT,GitHub,const,date,issue,Issues
From: https://www.cnblogs.com/ryanyangcs/p/18515923