使用 FastGPT 工作流搭建 GitHub Issues 自動總結機器人

米开朗基杨發表於2024-10-30

如今任何專案開發節奏都很快,及時掌握專案動態是很重要滴,GitHub Issues 一般都是開發者和使用者反饋問題的主要渠道。

然而,隨著 Issue 數量的增加,及時跟進每一個問題會變得越來越困難。

為了解決這個痛點,我們開發了一個自動化 Issue 總結機器人,它的功能很簡單:

  1. 自動獲取專案最新的 GitHub Issues;
  2. 智慧總結 Issues 內容;
  3. 將總結推送到指定的飛書群。

接下來我會提供詳細的操作步驟,一步步實現這個機器人。

話不多說,拿起鍵盤,開始教學 ~

GitHub API 介紹

GitHub 提供了強大的 API 讓我們能夠輕鬆獲取 Issues 資訊。我們將使用以下介面來獲取某個 repo 的 Issues:

  • https://api.github.com/repos/{owner}/{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 來增加可讀性,但不要過度使用。保持整體風格簡潔明瞭。

示例輸出:

---

**🔍 資料視覺化元件效能最佳化**

這個 issue 反映了在處理大量資料時圖表載入緩慢的問題。使用者在資料點超過一定數量時experiencing明顯的效能下降,影響了使用者體驗。

📎 [檢視原 issue](url1)

---

**🐞 移動端介面適配問題**

該 issue 指出在某些特定型號的移動裝置上出現了介面佈局錯亂的情況。這個問題影響了應用在不同尺寸螢幕上的一致性展現。

📎 [檢視原 issue](url2)

---

請確保每個 issue 概述都簡潔明瞭,突出核心問題,避免過多細節。保持整體風格統一,讓讀者能快速理解每個 issue 的要點。

5. 飛書 Webhook 設定

使用飛書機器人的 Webhook URL,我們可以將總結後的內容推送到指定的飛書群。這一步需要用到【飛書機器人 webhook】節點。

這裡的 hook_url 我們將在下一步告訴大家如何獲取。

6. 建立並設定飛書機器人

首先需要訪問飛書機器人助手頁面,然後新建一個機器人應用 --> 建立一個流程。

其中 Webhook 觸發節點的引數如下:

{"content":{"text":"test"}}

下面一個節點選擇【傳送飛書訊息】,選擇傳送物件為群訊息,並指定群組,自定義一個訊息標題。

然後在【訊息內容】中點選“加號”,選擇 Webhook 觸發 --> content.text。

最終儲存啟用,等待管理員稽核透過即可。

稽核透過後,將【Webhook 觸發】節點的 Webhook 地址填入上述 FastGPT 工作流【飛書機器人 webhook】節點的 hook_url 中。

最終效果

實現這個自動化工具後,你的飛書相關群組每天將會收到類似下圖的 Issues 總結:

總結

透過本文的教程,大家應該可以發現,一般情況下根本不需要自己寫大量程式碼,只需要拖拉拽一些預設模組,就能讓 AI 應用跑起來。即使是總結 GitHub Issues 這樣比較複雜的方案,也只需要編寫少量的 JS 程式碼即可完成工作。

如果你連一點點程式碼都不想寫,那也沒問題,只需要匯入我分享的工作流就可以了。

工作流匯入方式:將滑鼠指標懸停在新建的工作流左上方標題處,然後點選【匯入配置】

完整工作流:https://pan.quark.cn/s/019132869eca

相關文章