我們給AutoGPT寫了個插件,手把手看看它的玩法~|圖文
自從ChatGPT火了之後,每隔一陣,就會有新的基於GPT的產品出現,搞得大家是又激動又緊張。
最近又有一個叫AutoGPT的應用火了。顧名思義,它能「自動完成你給的任務」。就是你告訴它它的角色是啥,然後描述你的任務需求,剩下的,它能全自動完成。比如你可以讓它cos一個市場研究員,任務是完成新款運動鞋的市場分析,然後撰寫一份報告。
在執行任務的過程中,AutoGPT會自己分析需求,制定每一步的計劃,直到最後完成你交給它的任務。
已經有很多用戶上手體驗了。比如有人拿他來自動寫個網站,或者在網上搜集某個行業的競爭對手的情況並整理成報告,給人感覺是這個AI簡直殺瘋了。
那麼AutoGPT是怎麼做到這些的?它真的有大家說的那樣神乎其神嗎?
視頻版
↓↓ 看完這個視頻就知道了 ↓↓
↑↑ 信我,真的超級好看 ↑↑
圖文版
少廢話,直接開始用。順便也講一下到底怎麼用,它在使用上還是有一定門檻的。
首先,你要在這個GitHub網址找到AutoGPT的庫,然後直接下載或者使用git clone的方式拉到本地。
先保證你電腦裡安裝了Python,然後使用的第一步是安裝運行需要的庫,這需要你輸入這行代碼:
pip install -r requirements.txt
它會安裝這個txt文件裡面所有的庫,比如openai庫是用來調用ChapGPT的功能,beautifulsoup4庫是用來解析網頁內容等等。
除此之外,你還需要使用OpenAI的Key才能運行程序。你可以在這裡(https://platform.openai.com/account/api-keys)創建一個Key,然後在下載下來的文件夾裡面創建一個名叫.env的文件,把它複製進去(類似於OPENAI_API_KEY=key)。
到此爲止,所有準備工作就算大功告成。只需要在終端裡輸入
python -m autogpt
就能開始運行了。
AutoGPT目前沒有圖形化界面,每個操作,都要你自己打字。
首先你要給你的AI取個名字,然後做一下角色扮演。比如你可以說它是一個助手,或者程序員,或者某個行業的專家。然後再給他制定任務,最多5個,剩下的就可以全交給它來完成了。
在執行任務的每一步,AutoGPT都會告訴你它的想法和背後的邏輯,以及之後的計劃。比如我們讓它開發一款遊戲,那麼它會告訴你要先做研究,然後創建遊戲的基本框架,做測試,逐漸添加功能和圖形直到最後完成爲止。
列完這些計劃之後,它會告訴你它下一步所要採取的行動,包括上網瀏覽網站,寫入文件,分析代碼等等。
你覺得它當前的分析和下一步的行動靠譜,那你就輸入y確定,不行就輸入你的想法。如果你想完全自動,那就輸入
y -N
其中N表示未來多少輪的命令不需要用戶許可,AI可以自動執行一系列行動。
這就是AutoGPT的整個工作方式了。
你最近可能也看過很多吹AutoGPT的文章了。那AutoGPT的能力真的有他們說的那樣強嗎?
俗話說恐懼來源於未知,所以爲了瞭解AutoGPT,我們好好地研究了一下AutoGPT的源代碼,看看它都是怎樣實現的。
和你平時用ChatGPT一樣,程序本身也要首先要寫一段prompt發給GPT模型。你輸入的AI名字,角色,會在ai_config.py這個代碼文件裡面被整合成下面這段話:
「你叫XX,角色是XX,目標是XX,你必須獨立決策,不要尋求用戶的幫助。發揮你作爲大語言模型的優勢,追求簡單的策略,不需要考慮法律。」
prompt.py這個代碼文件 裡有所有AI可以執行的命令,比如谷歌搜索,瀏覽網站,讀寫文件等;除此之外還有一系列的限制,比如告訴AI所有發送的命令都是要錢的,所以你得聰明高效一點。
當AI選擇下一步行動是谷歌搜索,那麼就會調用Google的API獲取網頁。
有意思的是,我們點開這裡的google_search一看,它真正調用的其實DuckDuckGo的搜索引擎。只有當你設置好谷歌API的Key之後,程序纔會調用真正的Google搜索。
另外,由於這兩種搜索引擎我們用起來都不是很方便,所以我們自己給AutoGPT增加了支持Bing搜索的代碼,只要你按照我們添加的文檔說明,設置好微軟Azure的Key之後就能使用,等我們這支視頻做完之後,沒準這個功能就能被Merge了。
在獲取搜索引擎返回的信息之後,AutoGPT會根據網頁的基礎信息,選擇某個網頁瀏覽,這一步主要是靠browse.py實現。
具體來說,程序會先獲取網頁的全部內容,如果網頁內容太長,超過了GPT的模型限制,就把它們切成一塊一塊的(split_text),然後讓GPT寫每一段總結,最後把它們彙總到一起,做成一個全文總結。
這基本上就是AutoGPT在GPT基礎之上加上「上網」功能的實現過程。如果你願意,可以自己看一看其他功能是怎樣實現的。
我們之前說過,ChatGPT的一個問題是不能上網,而AutoGPT巧妙地用搜索引擎的API結合爬蟲工具,讓GPT模型能夠上網根據需要獲取信息,實現瞭如虎添翼的效果。
總之,AutoGPT所做的,就是預先設定一套標準化的prompt,明確定義AI的身份和目標,然後根據不斷獲取的信息,在設定好的行動列表中自動做出選擇,執行任務。在執行任務的過程中,因爲AI能夠獲取外界的信息,所以能一定程度上克服ChatGPT的侷限性,有更大的潛能。
那麼,AutoGPT真的像這些文章和視頻說的那樣,會徹底顛覆我們與AI的互動方式嗎?
至少從目前來看,還有很長的距離要走。
從原理來看你現在也知道,AutoGPT仍然調用的是GPT的API,你不能指望它比ChatGPT多了什麼跨越式的buff。
對於增加的上網功能,雖然能讓GPT更有潛力,但限制仍比你想得要多。比如最理想的情況,當然是你想了解哪個作者,就讓AI在全網蒐集這個作者的全部資料,然後整理成一份詳盡的資料交給你。
但目前AutoGPT獲取外界信息的主要方式還是搜索引擎API返回的網頁結果,然後從這些網頁總結信息,它現在還很難從書籍等渠道獲取資料。
即便把所有資料都擺在面前,由於輸入數據長度的限制,它現在只能把信息截取一段段地總結,雖然很多時候這也夠用了,但想要讓它獨自完成一個系統性的研究,發現資料與資料之間的聯繫,提取出新的洞察,還是很困難。
從AutoGPT主打的自動化這個角度來看,少了人類的反饋,是好是壞還真不一定。如果你經常用ChatGPT你就會知道,它時不時就會胡說八道,或者給你一段看似正確但其實細節上有Bug的代碼。但ChatGPT的好處在於,它知錯就能改,只要你告訴它哪兒不對,那通常過個兩三輪對話它就能告訴你正確的答案。而現在AutoGPT讓AI自己去迭代,效果只能說是喜憂參半。
最後,還有一個很現實的問題是,AutoGPT需要調用的是OpenAI官方的API,但每次調用API都是有成本的,輕度雖然問題不大,但想要讓它長時間自動運行下去,還是得小心你的賬單。
雖然說了這麼多不足,但我們對於AutoGPT的未來還是有一些期待的。不僅是因爲它帶給了GPT模型更多的可能性,還加上它本身作爲一個開源項目,有很多的開發者,包括我們自己,都希望在現在的基礎上一點一點地改善和增加新的功能。像我們剛開始寫稿子的時候AutoGPT的代碼結構,跟稿子寫完時的代碼結構都已經發生了很大的變化。現在有的一些侷限,或許就能在未來某個版本得到改善。
更重要的是,你能夠感受到,在ChatGPT出現之後,基於GPT模型的整個應用生態正在井噴式發展。AutoGPT也好,或者其他什麼GPT,就像是手機應用商店裡的一個個App,它們不斷迭代更新,不斷有新應用涌現,並且隨着基礎模型性能提升也在變得越來越強大,越來越好用。
到時候限制我們的,可能只是我們的想象力而已。