在 OpenAI 祭出 GPT-4 的 API 和“最強外掛”程式碼直譯器後,競爭對手顯然坐不住了。
就在剛剛,Anthropic 旗下 Claude 2發佈,沒錯,就是被外界評價為 GPT-4 最強競品的那一個。
淺劃一下這次更新動作的重點:免費,不用排隊,自己用信箱註冊即可登錄。
科技大佬們打起來真是妙啊,媽媽再也不用擔心 ChatGPT / GPT-4 將我拒之門外後,打工或寫作業時沒有 AI 用了!
NVIDIA AI 高級科學家 Jim Fan 火速嘗鮮,並在推特上分享了自己的 Claude2 使用者體驗。
關於 Jim Fan 談到的 Things you should know,有幾個重點:
-
免費使用!
-
Claude2(100K 上下文)比 GPT-4-4K 便宜了 4-5 倍。
-
實際可以支援 20 萬 token 上下文,約 15 萬個單詞,輸入一本書不在話下;不過現在只開放了 10 萬 token 長度。
-
知識更新鮮,知識截止時間是 2023 年初,而 GPT-4 停在 2021 年 9 月;
-
可以將多個文件匯入後,詢問文件之間概念的關係,支援 txt、pdf 多種格式(ChatPDF 之類的應用,危)
-
程式碼、小學數學能力,比初代 Claude 有所進步。
於是,我們來看實際測驗
咦,Claude 更新了?註冊一個試試
長文件是本次更新的一大亮點,這一點已經被推特網友們驚呆了。
比如上傳兩個 pdf,可以看到,Claude2 可以從兩個 pdf 文件中做出摘要,這兩個文件一個關於「語言流變模式」,一個關於「對稱性」,並且將文件內容分點列在對話方塊中:
不只是較大的文件,根據 Claude2 開放的 10 萬 token 的上下文來看,一次性上傳一本書讓它讀,也是小菜一碟。
對普通使用者來說,現在不僅能夠上傳長文件,還可以用上傳的檔案建構自己的知識庫,對 Claude 翻閱文件後進行回答,真的是非常實用。
以至於內心出現一個疑問,會不會在 ChatGPT 攤薄 Jasper、Notion 等公司的蛋糕後,Claude 也要對 ChatPDF 類工具下手了?
最後,我們為大家奉上今天的餐後甜點:讓 Claude2 來寫個程式試試。
為了考驗 Claude 設計演算法的能力,我們選擇了一種古典密碼,讓它試著寫個解密程式出來。
這種密碼叫做維吉尼亞密碼,可以理解成二維的凱撒(位移)密碼,其中包括金鑰。
舉個例子說明一下它的演算法:
假如明文是 B,金鑰是 C,B 是字母表中第二個,那麼從 C 開始數的第二個字母 D 就是密文。
如果數到了 Z,就重新從 A 開始接著數,金鑰長度不足時則進行循環。
解密自然就是把加密過程倒過來。
Claude 輸出了這樣的程式碼(C++,下同):
#include <tream> #include <string> using namespace std; string decryptVigenere(string ciphertext, string keyword) { string plaintext; int keywordIndex = 0; for (int i = 0; i < ciphertext.length(); i++) { int p = (ciphertext[i] - 'A') - (keyword[keywordIndex] - 'A'); p = (p + 26) % 26; plaintext += (char)(p + 'A'); keywordIndex = (keywordIndex + 1) % keyword.length(); } return plaintext; } int main() { string ciphertext; cout << "請輸入密文:"; cin >> ciphertext; string keyword; cout << "請輸入金鑰:"; cin >> keyword; string plaintext = decryptVigenere(ciphertext, keyword); cout << "明文是:" << plaintext << endl; return 0; }
我們把“CHATGPT”用金鑰“CLAUDE”進行了加密,密文是“ESANJTV”,並嘗試用 Claude 給出的程式解密。
一次就成功了,看來 Claude 的程式碼能力的確沒讓我們失望。
這個問題可能有些簡單,我們再加大難度試試。
我們試著從 LeetCode 中找了一道中等難度的問題,人類解這道題的通過率大概是 60%。
給定一個長度為 n 的整數陣列 height 。有 n 條豎直的線,第 i 條線的兩個端點是 (i, 0) 和 (i, height [i]) 。找出其中的兩條線,使得它們與 x 軸共同構成的容器可以容納最多的水(容器不能傾斜)。返回容器可以儲存的最大水量。
這樣說可能不那麼容易想像,下面的這張圖或許更加直觀:
原題中給出的示例一共有 9 條線,高度分別為“1,8,6,2,5,4,8,3,7”,相應的最大水量是 49。
我們給 Claude2 的 Prompt 是這樣的:
寫一個 C++ 程式解決這個問題,不要自己設定初始值,讓使用者輸入:(接上面的問題)
Claude2 給出了這樣的答案:
#include <tream> #include <vector> using namespace std; int maxArea(vector<int>& height) { int max_area = 0; int n = height.size(); for (int i = 0; i < n; i++) { for (int j = i + 1; j < n; j++) { int width = j - i; int h = min(height[i], height[j]); max_area = max(max_area, width * h); } } return max_area; } int main() { vector<int> height; int input; cout << "請輸入一系列整數:" << endl; while(cin >> input) { height.push_back(input); } cout << "最大面積為: " << maxArea(height) << endl; return 0; } }
我們沒讓 Claude2 專門調整輸入和輸出格式,所以沒有提交給 LeetCode,而是直接運行的。
用的資料也是上面提到的,結果表明,Claude2 給出的程式碼至少在核心演算法上是正確的。
(下圖輸入中的 a 是告訴 CPU 這一系列整數輸入完了,可以替換成任意非數字字元)
看來這個問題也沒能難倒 Claude2。
除了程式碼,Claude2 據稱還擁有小學等級的數學水準。
那就順便用經典的雞兔同籠問題考一考它(這道題是 ChatGPT 出的):
反覆嘗試了很多次,雖然方程式列得沒有問題,但 Claude2 解出的答案都是 20(正確答案應該是 40)。
看來計算這種事,對 Claude2 來說還是有點困難。
請注意!留言要自負法律責任,相關案例層出不窮,請慎重發文!