# ChatGPT Plugin 組合技心得 - 用操作 GitHub 為例 [toc] ## 前言 目前 GitHub 上的操作幾乎都有對應的 API 可以使用,所以說白了就是讓 ChatGPT 去判斷如何呼叫使用這些功能。這篇文章紀錄如何做到讓 ChatGPT 讀取 Issue 內容、開新分支推送修改、開新的 Pull Request 給開發者。其實就是 GitHub Next 的 [Copilot for Pull Requests](https://githubnext.com/projects/copilot-for-pull-requests/) ,但是現在就可以用 ChatGPT 提前嘗試做到這點。 避免浪費時間繼續往下看,有幾點可能要先知道: 1. 下面的例子都是第一天收到 GitHub Plugin beta 測試的結果,整個流程還有優化的空間,寫這篇除了記錄以外另一個原因就是希望能收到一些建議。 2. ChatGPT 的 Browsing 和 Plugin 功能就跟自己用 LangChain 和 AutoGPT 呼叫功能一樣,差別是訂閱 Plus 等於 20 塊只會有 rate limit ,對於使用 GPT-4 來說非常划算。(以目前的速度操作 Noteable 很難用光額度) 3. GPT-4 速度真的太慢,如果你看到前面敘述幻想能讓它自動完成工作可以先打消念頭,人類工程師還不用擔心失業。 4. 目前這東西的能力還只能幫助非軟體專業的人處理小問題,如果你本身就會用 GitHub 也會寫程式,還是自己做會比較有效率。 ## 事前準備 1. 首先就是要有 ChatGPT Plugin ,撰寫這篇的時間是 `2023-5-15` 尚未對所有人開放。如果還沒訂閱 Plus 的話也可以再等幾天,目前測試新訂的帳號也沒辦法馬上使用。 2. 主要會用到的是 `WebPilot` 以及 `Noteable` 這兩項 Plugin ,後者必須要註冊帳號以及開啟兩階段驗證。 3. 整個流程其實會牽涉到兩種能力,**規劃多個步驟的任務**以及**撰寫程式碼**,目前 GPT-3.5 在前者能力明顯沒這麼厲害。如果是要用 LangChain 或 AutoGPT 自己呼叫的話還是比較建議要有 GPT-4 避免繞路浪費時間。 4. 準備好 GitHub 的 `Personal access tokens` ,現在藏在 Settings > Developer settings 。下面介紹的流程只會用到 `repo` 這個權限而已,不過其他功能跟 GPT 配合想像空間也很大。然後除了 token 外流風險以外,你還要考慮 GPT 秀斗亂搞你的帳號,請小心。 ## 關於 ChatGPT Plugin 的小訣竅 1. 同一個 Session 最多可以使用三個 Plugins ,目前開始對話後就沒辦法更改,先想好打算用哪些工具做事,避免執行到一半要整個打斷重來。 2. 可以依照命令不只操作一次 Plugin ,例如可以選多個搜尋來源讓 ChatGPT 組合各自產出的結果。這點非常重要,可以看後面讀取文件的範例。  3. 如果指令不夠明確 ChatGPT 可能會忽略工具直接鬼扯,可以明確指出要叫他使用哪個 Plugin 。 4. Noteable 可以做到的事 - 要在命令中包含 Noteable Project 的連結讓 ChatGPT 知道去哪裡新增腳本。[參考官方說明](https://youtu.be/lpJ6kQH2BgM) - ChatGPT 發現有錯誤訊息會反覆修改和執行,偶爾會在同一個問題鬼打牆,直接打斷補上更詳細的敘述節省時間。 - ChatGPT 會一直新增 cell 要執行程式碼上去,可以叫他用同一個。 - 如果你只是想要把程式碼存起來,可以叫 ChatGPT 不用執行 cell 。 - Noteable 的容器沒有特權模式,需要 root 安裝的相依套件不能用。 ## 操作 GitHub API 的一些訣竅 前面提到的情境,基本上都需要用到 GitHub token ,可以在 Noteable 左側的 `Secrets` 頁面加入。 Visibility 記得要選 `Private` ,選擇 `Space` 的話會被分享給其他人。 這時候新啟動的容器可以從環境變數讀入。 ```python import os access_token = os.getenv('GITHUB_TOKEN') ``` 下面操作到 GitHub API 時可以明確告訴 ChatGPT 要從環境變數取得。  ### 讀取 Issue 內容 要讀取開放的 repo 可以直接使用 `WebPilot` 完成。  ### 要求在新分支修改程式碼並上傳  ### 上傳後接著建立新的 PR 給特定帳號  產生的程式碼沒什麼特別,就單純不斷的呼叫 requests 。過程中 ChatGPT 會先產生程式碼後才寫入 Noteable 並執行,所以可以先叫它把理解的處理流程列出來,提前判斷要不要繼續做下去。 ## 結論 因為 `Code interpreter` 還沒開放,目前只能用 `Noteable` 替代。個人認為這才是目前最有威力的 Plugin ,對於有開放 API 的服務來說,只要丟給 GPT 讀文件它都有辦法變成一個能理解人話的 UI 。 ### 目前的缺點 1. GPT-4 速度真的太慢,會花很多時間在生成程式碼,以撰寫程式碼這點來說目前根本沒辦法輸出或修改太長的檔案。 2. 未來還需要有能修改部分程式碼的手法,或是讓 GPT-4 去理解問題並操作一些速度比較快、專門訓練用來生成程式碼的模型會更有效率。 3. GPT-4 目前開放的是 8K context 版本,上面截圖中那些白色框框的 Plugin 輸入輸出都會占用這個長度,目前還在構思一些手法能讓 ChatGPT 分段產生多個檔案或是長文。 4. 作為一個開發助手, ChatGPT + Noteable 的 UX 真的不優,目前只能當玩具的程度,但是想像空間還是很大。另外大家也可以注意新版本的 GitHub Copilot 能不能改善這些體驗。 希望這篇心得文有給大家更多點子做出好玩的組合技。 ## 參考 - [GitHub REST API documentation](https://docs.github.com/en/rest) - [Noteable - Store credentials for data & applications](https://docs.noteable.io/product-docs/work-with-data/store-credentials-for-data-and-applications)
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up