利用 ChatGPT 高效搜索:舉一反三的思考方式,高效查找解決方案
本文只是我的一些嘗試,基于 ChatGPT 實現(xiàn)系統(tǒng)化快速搜索某編程語言的特定領域相關包或者基于其他語言類推薦落地方案的嘗試。
這篇文章中描述的方式不一定是好方式,但應該會有一定的啟示作用吧。讓 ChatGPT 為我們的開發(fā)效率添磚加瓦。
基礎思路
在學習和使用一門新的編程語言的過程中,找到合適的包對于解決特定問題至關重要。
圖片
傳統(tǒng)上,還是主要依賴搜索引擎和社區(qū)資源來尋找這些包,但這個過程往往既耗時又充滿挑戰(zhàn)?,F(xiàn)在,有了 ChatGPT,這一切都有了新的解決方案。
傳統(tǒng)的搜索方法通常基于關鍵詞搜索,但這種方法往往返回只是簡單列舉,我們要從大量不相關的結果找出我們想要的內容,需要花費大量時間去篩選。
ChatGPT 提供了一種更高效的方式:通過與 AI 對話來精確描述我們的需求,從而獲得更加精準回答。不過我想說,不要像利用傳統(tǒng)的搜索引擎一樣利用 ChatGPT,ChatGPT 會思考。但毫無疑問,再聰明的好苗子,也是需要引導的。
舉一反三全面了解 GO 的 Web 框架
為了最大化 ChatGPT 的效用,我采用固定句式來描述我的需求,這么做的目標主要是為了引導它思考。
例如,當尋找 Golang 的 web 開發(fā)框架時,我不是簡單地問 “給我推薦一些 web 開發(fā)框架”,而是通過類比的方式地詢問,想全訪問了解不同情況下使用什么 HTTP 框架。
我知道在使用 Golang 的數(shù)據(jù)庫時,可以直接使用 sql/database + 驅動連接數(shù)據(jù)庫,也可以使用 ORM 方案,如 sqlx 或 GORM。HTTP 一般也是如此,有底層核心層,上層的用戶體驗較好的框架。
圖片
我按這個思考簡單組織了一些語言。如下所示:
按我這個句式說下關于 Go 的 xxx 相關內容: Go 語言中,處理數(shù)據(jù)庫的包通常分為三個主要層次:底層實現(xiàn)、數(shù)據(jù)庫驅動以及上層的 ORM(對象關系映射)框架。首先,底層核心包是 sql/database,它為數(shù)據(jù)庫操作提供了基礎的接口和功能。接著,針對不同數(shù)據(jù)庫類型的驅動包各不相同,例如,用于 MySQL 的驅動包是 go-sql-driver/mysql[1]。最后,在更高的層面上,有基于如 sqlbuilder 或 activerecord 模式的實現(xiàn),Go 語言中的相應包包括 ent[2] 和 gorm[3],這些包提供了更高級別的數(shù)據(jù)庫操作和抽象。
這個寫的稍微有點長,應該可以組織的更加精簡一點。我主要想表達:
通過這種方式,引導 ChatGPT 去像人來一樣地思考,舉一反三,深入地理解需求。而不是像以前的 AI 一樣,機械呆滯地返回固定問題的答案。
有些時候,語言直接表達的效果是沒有這種類比效果好的。不僅僅這種方式適用于 ChatGPT,如果你和人類這樣對話,也是更加容易讓對方理解。
我就是通過這個方式,比較全方位了解 Go 語言不同場景下 Web 框架包的。如下是我具體的問題:
按我這個句式推薦下 Go 的 Web 框架。[句式如上,省略]*
GPT 的回答如下所示:
圖片
在 Go 語言中,HTTP 框架的組織也可以分為幾個主要層次,類似于處理數(shù)據(jù)庫的包的結構。首先,底層核心包是 net/http,提供了構建 HTTP 服務器和客戶端的基本工具,如路由、請求處理和發(fā)送響應。接下來,針對不同需求的 HTTP 中間件和路由工具,例如 Gorilla Mux[4] 提供了高級的路由功能,而 Negroni[5] 提供了易用的中間件管理。在更高的層次上,存在著基于如 mvc 或 restful 模式的全功能 Web 框架,如 Go 語言中的 Gin[6] 和 Echo[7],它們提供了路由、中間件、模板渲染等更豐富的功能,以支持復雜的 Web 應用開發(fā)。此外,還有針對特定性能優(yōu)化的 HTTP 工具,例如 Fasthttp[8],它專注于提供高性能的 HTTP 服務,適用于處理大量并發(fā)請求。這樣的層次劃分幫助開發(fā)者根據(jù)具體需求選擇合適的 Go 語言 HTTP 框架和庫。
系統(tǒng)方案建議 - 讓 ChatGPT 推斷
類似的,我這里再舉個例子。針對同一個問題,可能實現(xiàn)思路是一樣的,但實現(xiàn)的工具就具體情況而異。這時候,我們可以通過提供對這個問題的一種方案,讓 ChatGPT 衍生,提供我們想要的另一個場景條件的實施方案。
一個例子,比如我們習慣于使用 GO 開發(fā) web 項目,也了解如何實施。但是現(xiàn)在公司希望轉入 Python 或者 rust,如何最快的找到對標的實現(xiàn)呢?
我們可以說:
在 Go Web 開發(fā)時,要用到的庫有:Web 框架使用 gin、 orm 使用 gorm,用戶權限認證使用 golang-jwt/jwt[9],依次類推 python 開發(fā) Web 項目的推薦庫
ChatGPT 返回內容:
圖片
對于Go Web開發(fā),您提到的庫選擇是很不錯的。以下是一些在Python Web項目中常用的庫的推薦:
- 1. Web框架:
? Flask:Flask是一個輕量級的Python Web框架,適用于小型到中型的項目。
? Django:Django是一個功能強大的Python Web框架,適用于大型項目和快速開發(fā)。
- 2. ORM(對象關系映射):
?SQLAlchemy:SQLAlchemy是一個流行的Python ORM庫,它提供了多種數(shù)據(jù)庫后端的支持,并具有強大的查詢和模型定義功能。
3. 用戶權限認證:
? Flask-Login:用于用戶會話管理和身份驗證的Flask擴展。
? Django-Allauth:Django的全功能身份驗證和賬戶管理解決方案。
4. JWT(JSON Web Tokens):
? PyJWT:PyJWT是Python中處理JWT的庫,可以用于用戶身份驗證和授權。
這些庫在Python Web開發(fā)中廣泛使用,可以根據(jù)項目的需求選擇合適的庫。希望這些推薦對您有所幫助。如果您需要更多信息或有其他問題,請隨時提問。
它這里面還多了一部分關于權限認證,可能還是我的問題提的有點瑕疵,或者 chatgpt 自己的問題。反正是,多結果總覺少結果要好。
rust 是不熟悉的語言,我最近在嘗試學習,同樣的思路,還可以問 rust 的 web 開發(fā)套件。
chatGPT 回答如下:
當使用Rust進行Web項目開發(fā)時,以下是一些推薦的庫和框架:
- 1. Web框架:
? Actix-web:Actix-web是一個高性能的、基于異步的Web框架,適用于構建快速、可伸縮的Web應用程序。
? Rocket:Rocket是一個易于使用的Web框架,它提供了類型安全的路由和請求/響應處理。
- 2. ORM(對象關系映射):
? Diesel:Diesel是Rust的ORM庫,它提供了類型安全的數(shù)據(jù)庫查詢和模型定義功能。
? sqlx:sqlx是一個異步SQL庫,允許您使用Rust進行數(shù)據(jù)庫操作。
3. 用戶權限認證:
? Keycloak:Keycloak是一個開源的身份和訪問管理解決方案,可以用于用戶身份驗證和授權。
? Auth0:Auth0是一個身份驗證和授權服務,可以輕松集成到Rust應用程序中。
4. JWT(JSON Web Tokens):
? jsonwebtoken:jsonwebtoken是Rust中處理JWT的庫,可用于身份驗證和令牌生成。
這些庫和框架可以幫助您構建高性能、安全的Rust Web應用程序。根據(jù)項目的需求和您的偏好,選擇適合的庫和框架進行開發(fā)。如果您需要更多信息或有其他問題,請隨時提問。
不知道這個答案質量,你覺得如何呢?毫無疑問,這個答案,吊打搜索引擎。我這里只是簡單舉例,你還可以提供更復雜的需求,讓它提供更多的推薦。
我的一些微末思考
通過上面的這些案例,我主要想說 ChatGPT 能像人類一樣思考,但它的思考的模式是我們提供的。
這里面有一個非常簡單的道理,如果你把 ChatGPT 想象是一個真正的人類,即使這個人類一個非常牛逼的大佬,但是如果他不是從教育你的角度出發(fā),就不會說一些無關內容,一些的互動都是基于你的主動性,你的輸入。如果你的問的簡單,它必然是回答的簡單。
同理,如果你想讓 ChatGPT 思考,你需要告訴它如何思考。這就是你要提供的信息,這個信息最能體現(xiàn)你的個人能力了。ChatGPT 能思考,但是基于的內容是你的輸入的擴展。
結論
我想說 ChatGPT 不僅是一個對話工具,更是一個強大的技術資源搜索助手,或者說,它可以成為你的朋友,導師,關鍵在于你是否了解如何與它交流,讓它如何去做。
它改變了尋找技術解決方案的方式。我通過簡單的對話,讓它思考推導,而不是像以前的智障 AI 或搜索引擎一樣針對問題固定返回某個回答。
這種結合 AI 技術的搜索方法不僅節(jié)省了我們的時間,還為我們提供了更加精確和深入的技術見解,而非是簡單的列舉。
博文地址:利用 ChatGPT 高效搜索:舉一反三的思考方式,高效查找解決方案[10]
引用鏈接
[1] go-sql-driver/mysql: https://github.com/go-sql-driver/mysql
[2] ent: https://github.com/ent/ent
[3] gorm: https://github.com/go-gorm/gorm
[4] Gorilla Mux: https://github.com/gorilla/mux
[5] Negroni: https://github.com/urfave/negroni
[6] Gin: https://github.com/gin-gonic/gin
[7] Echo: https://github.com/labstack/echo
[8] Fasthttp: https://github.com/valyala/fasthttp
[9] golang-jwt/jwt: https://github.com/golang-jwt/jwt
[10] 利用 ChatGPT 高效搜索:舉一反三的思考方式,高效查找解決方案: https://www.poloxue.com/posts/2024-01-15-search-using-chatgpt