# GPTs 簡易串接 Dev.to ## Dev.to API 文件 https://developers.forem.com/api/v1#tag/articles/operation/getArticles ## Action 定義的 API 規格 ``` { "openapi": "3.0.0", "info": { "title": "DevTo 文章 API", "description": "從 Dev.to 獲取具有特定標籤的文章,並排除特定標籤。", "version": "1.0.0" }, "servers": [ { "url": "https://dev.to/api", "description": "開發社區 API 服務器" } ], "paths": { "/articles": { "get": { "operationId": "getArticles", "summary": "從 Dev.to 獲取文章", "description": "檢索文章,'tag' 始終為 'angular',而 'tags' 默認包含 'angular',並依要求增加其他選項,如 tags:'option, option2, option3',同時需排除 'angularjs' 標籤,如:tags_exclude:'angularjs',或是排除有 'AngularJs' 相關,per_page 最多 35 筆,若要求 '熱門文章' 時,top 設為 365,state 需設定為 rising,代表觀看數上升,且,若是要求'最新文章'時,top 設為 30,state 需設定為 fresh,代表近期的新發佈。", "parameters": [ { "name": "tag", "in": "query", "description": "每個請求的固定標籤。", "required": true, "schema": { "type": "string", "default": "angular", "example": "angular" } }, { "name": "tags", "in": "query", "description": "過濾文章的標籤,始終包含 'angular',可選擇性包含 'signals'。", "required": true, "schema": { "type": "string", "default": "angular", "example": "angular,signals" } }, { "name": "tags_exclude", "in": "query", "description": "排除的標籤。", "required": true, "schema": { "type": "string", "default": "angularjs", "example": "angularjs" } }, { "name": "top", "in": "query", "description": "幾天前的文章。", "required": true, "schema": { "type": "integer", "default": 180, "example": 180 } }, { "name": "per_page", "in": "query", "description": "每頁返回的文章數量。", "required": true, "schema": { "type": "integer", "default": 50, "example": 50 } }, { "name": "state", "in": "query", "description": "文章的狀態,像是 rising 或是 fresh", "required": true, "schema": { "type": "string", "default": "rising", "example": "rising" } } ], "responses": { "200": { "description": "文章的 JSON 數組", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Article" } } } } } } } } }, "components": { "schemas": { "Article": { "type": "object", "properties": { "id": { "type": "integer" }, "title": { "type": "string" }, "description": { "type": "string" } } } } } } ``` ## 提問範本 ``` 需要 Angular {{內容}} 的 {{ 文章類型 || 最新文章, 熱門文章 || S}} 1. 至少提供{{幾筆|| 35, 30, 25, 20, 15, 10 ||r||35}}篇 2. 按照文章日期排序,新到舊 3. 顯示 日期、標題、網址,其他不用提供,且列出全部{{幾筆|| 35, 30, 25, 20, 15, 10 ||r||35}}篇 ``` [ChatGPT提問助手 - Chrome 應用商店連結](https://chrome.google.com/webstore/detail/chatgpt-%E6%8F%90%E5%95%8F%E5%8A%A9%E6%89%8B/biohjdkjclhempinkjfnjenpldjnkcfn?hl=zh-TW) ## 串接過程 ### 定義一份 API 文件 基本上可以把 API 打的方式丟給 **[ActionsGPT](https://chat.openai.com/g/g-TYEliDU6A-actionsgpt)**,它就會直接幫你產出一份了,另外若是本來就有 API 文件(如:Swagger),就直接給它就好。 ### 告訴 GPTs 如何使用 API 基本上最重要的就是這段,就是告訴 GPTs 要如何根據下達的指令,去打不同的參數。 ``` "description": "檢索文章,'tag' 始終為 'angular',而 'tags' 默認包含 'angular',並依要求增加其他選項,如 tags:'option, option2, option3',同時需排除 'angularjs' 標籤,如:tags_exclude:'angularjs',或是排除有 'AngularJs' 相關,per_page 最多 35 筆,若要求 '熱門文章' 時,top 設為 365,state 需設定為 rising,代表觀看數上升,且,若是要求'最新文章'時,top 設為 30,state 需設定為 fresh,代表近期的新發佈。", ``` #### 需求說明 * 希望**排除 AngularJs 文章**。 * 如果是**最新文章**,希望是 **30 天內**,而且是**近期發佈**的文章。 * 如果是**熱門文章**,希望是 **1 年內**,而且是**熱門度高**的文章。 #### 嘗試過程 要讓 GPTs 打參數還滿簡單的,但是困難的是如果有情境的話,類似 **最新文章** vs **熱門文章**,但一開始不太想定義情境,希望能自己去猜,不過失敗率還是滿高的,而且又容易試到 **GPT4 使用次數爆掉**,後來想想就直接指定情境就好,畢竟如果是我寫程式,也會希望情境的規格能清楚,而不是叫我通靈。 #### 建議 - 明確示範傳遞參數,如:tags:'option, option2, option3'。 - 若情境夠明確,就直接定義使用情境。 - 珍惜 GPT4 使用次數,不要期望 GPTs 很會通靈。 ### 示範影片 [GPTs 簡易串接 Dev.to ](https://youtu.be/KcmrL-4Uixo)