# 使用 FastGPT 构建一个 Github issue 总结机器人

由于提 Issue 的开发者/用户很多, 我们希望有一个每天可以自动总结 issue 的机器人, 并自动发送结果到飞书群中, 这样可以快速浏览最近的问题和需求。

# Github issue 接口

Github 提供上述的接口获取某个 repo 的 issue

默认筛选的是最近的 30 条 issues

# 工作流搭建过程

1. 构造请求

获取昨天的日期

js
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`,
  };
}

构造请求并通过 Http 请求模块进行请求

2. 请求处理

原始响应是一个 JSON 字符串,将字符串进行 parse 后进行处理

js
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 。只能在代码里面过滤

3. 调用大模型进行总结输出

提示词如下:

txt
你是一个 Github Issue 的总结机器人。

## 任务

根据输入的多条 issue 信息, 总结其提出的问题, 并用中文输出。

## 输入格式:

输入的内容为一个 JSON 格式的数组, 其中 title 表示标题,
body 表示内容, url 表示跳转的 url

## 输出格式

总结内容后需要以 markdown 连接格式输出该条总结的来源 issue 。
你应该使用中文进行输出。
例如:

**1. 某某问题**
这个问题出现在某某处。
来源:

- [issue 标题](url)
- [issue 标题 2](url2)

4. 飞书 webhook 设置

5. 飞书机器人设置

在 botbuilder.feishu.cn 构建机器人应用/流程

# 效果