Claude 3.7 Sonnet:迄今為止最好的編碼AI模型?

Claude 3.7 Sonnet:迄今為止最好的編碼AI模型?

人工智慧驅動的編碼助手正變得越來越先進。Anthropic 最新推出的 Claude 3.7 Sonnet 是最有前途的軟體開發模型之一。它在推理、工具使用和問題解決方面都有很大改進,在評估真實世界編碼挑戰和人工智慧代理能力的基準測試中表現出了卓越的準確性。從生成簡潔、高效的程式碼到處理複雜的軟體工程任務,Claude 3.7 Sonnet 正在推動人工智慧驅動編碼的發展。本文探討了它在關鍵程式設計任務中的能力,評估了它的優勢和侷限性,以及它是否真正稱得上是迄今為止最好的編碼模型。

Claude 3.7 Sonnet基準測試

Claude 3.7 Sonnet 在推理、編碼、遵循指令和處理複雜問題等許多關鍵領域表現出色。這正是它在軟體開發方面的優勢所在。

它在研究生水平的推理能力上得分 84.8%,在代理編碼能力上得分 70.3%,在指令遵循能力上得分 93.2%,顯示了它準確理解和響應的能力。它的數學能力(96.2%)和高中競賽成績(80.0%)證明它能解決棘手的問題。

從下表中可以看出,Claude 3.7 在過去的 Claude 模型基礎上進行了改進,並與 OpenAI o1 和 DeepSeek-R1 等其他頂級人工智慧模型展開了激烈競爭。

Claude 3.7 Sonnet基準測試

Source: Anthropic

該模型的最大優勢之一是“擴充套件思維”,這有助於它在科學和邏輯等學科中發揮更好的作用。Canva、Replit 和 Vercel 等公司對它進行了測試,發現它非常適合實際編碼工作,尤其是處理全棧更新和複雜軟體的工作。Claude 3.7 Sonnet 具有強大的多模態功能和工具整合能力,是開發人員和企業的強大人工智慧。

軟體工程(SWE-基準驗證)

SWE-bench 測試對人工智慧模型解決實際軟體工程問題的能力進行比較。Claude 3.7 Sonnet 以 62.3% 的準確率遙遙領先,在使用自定義腳手架時,準確率更高達 70.3%。這彰顯了其強大的編碼技能和超越 Claude 3.5、OpenAI 模型和 DeepSeek-R1 等其他模型的能力。

軟體工程(SWE-基準驗證)

Source: Anthropic

代理工具使用(TAU-bench)

TAU-bench測試不同的人工智慧模型在處理現實世界中需要與使用者和工具互動的任務時的表現。Claude 3.7 Sonnet 表現最佳,在零售類任務中的準確率達到 81.2%,在航空類任務中的準確率達到 58.4%。其優異成績表明,它在使用外部工具完成不同行業的複雜任務方面非常有效。

代理工具使用(TAU-bench)

Source: Anthropic

Claude 3.7 Sonnet:編碼能力

現在,我們將通過評估 Claude 3.7 Sonnet 處理各種程式設計任務的能力來探索其編碼能力。這項評估將涵蓋其在多代理系統開發、程式碼文件和平行計算方面的效率,突出其在實際編碼場景中的優勢和潛在侷限。

以下是我們將對該模型進行評估的 3 項編碼任務:

  1. 使用 CrewAI 和 OpenAI API 構建多代理系統
  2. 生成完整的程式碼文件
  3. 使用多重預處理進行復雜編碼

我們將通過評估輸出的效率、可擴充套件性和生產就緒性,分析 Claude 3.7 Sonnet 處理複雜軟體開發挑戰的能力。那麼,讓我們開始吧。

任務 1:使用CrewAI和OpenAI API構建多代理系統

本任務旨在評估 Claude 3.7 Sonnet 生成文件完備、可讀性強且可維護程式碼的能力。我們將要求該模型建立一個多代理系統,根據使用者的口味、最喜歡的型別和以前喜歡的影片提供個性化的電影推薦。由此產生的人工智慧系統應與使用者互動,收集他們的喜好,並將其作為輸入,生成一份精心策劃的推薦列表。

提示詞:Give a code for multi-agent system using OpenAI API crew AI and below is the problem statement:

Problem Statement: A user wants personalized movie recommendations based on their tastes, favourite genres, and previously enjoyed titles. The user finds it difficult and time-consuming to sift through hundreds of options to find something they would enjoy.

Solution should have: An AI system can autonomously gather user preferences by asking questions about their favourite genres, themes, or movies they’ve enjoyed.

Claude 3.7 Sonnet響應情況

我將使用 OpenAI API 和 CrewAI 建立一個多代理系統,以建立一個個性化的電影推薦系統。該系統將收集使用者偏好,對其進行分析,並生成量身定製的電影推薦。

使用 OpenAI API 和 CrewAI 建立一個多代理系統

輸出

Claude 3.7 Sonnet返回結果 task_1_final_response task_1_error

輸出分析

程式碼結構合理,通過明確定義的代理角色和任務有效利用了 CrewAI。它採用模組化設計,確保了可讀性和可維護性,同時提供了適當的電影推薦。

然而,在多代理系統後半部分的 generate_recommendations 函式中出現了一個問題,它返回的是圖元而不是電影推薦物件。這導致在嘗試訪問標題等屬性時出現屬性錯誤(AttributeError),因為元組不支援點符號。預期資料格式和實際資料格式之間的這種不匹配會導致在迭代推薦列表時出現錯誤。

出現錯誤的原因是推薦包含元組而非 MovieRecommendation 物件。程式碼假定 rec 具有標題、年份和導演等屬性,但由於它是一個元組,訪問 rec.title 會導致屬性錯誤。

任務 2:生成完整的程式碼文件

現在讓我們看看 Claude 3.7 sonnet 在程式碼文件方面有多出色。在這項任務中,模型需要從生成的程式碼中提取全面的文件。這包括函式和類的文件說明、解釋複雜邏輯的行內註釋,以及函式行為、引數和返回值的詳細說明。

提示詞: Give me the complete documentation of the code from the code file. Remember the documentation should contain:1) Doc-strings2) Comments3) Detailed documentation of the functions.

Claude 3.7 Sonnet響應情況

Claude 3.7 Sonnet生成完整的程式碼文件

要查詢完整的程式碼文件和程式碼,請單擊此處。

輸出分析

程式碼中的文件結構合理,文件字串、註釋和函式說明定義明確,提高了可讀性和可維護性。模組化方法使程式碼更易於理解,資料載入、預處理、視覺化、訓練和評估都有獨立的函式。然而,一些不一致和遺漏的細節降低了文件的整體有效性。

1️. 文件說明

程式碼中包含了大多數函式的文件說明,解釋了它們的目的、引數和返回值。這使得在不閱讀完整實現的情況下更容易理解函式的意圖。

不過,文件說明的細節和格式並不一致。有些函式(如 explore_data(df))提供了結構清晰的解釋,而其他函式(如 train_xgb(X_train,y_train))則缺乏型別提示和輸入格式的詳細解釋。這種不一致性使得我們很難在不深入研究實現的情況下快速掌握函式的輸入和輸出。

2️. 註釋

程式碼包含有用的註釋,描述了每個函式的作用,特別是在與特徵縮放、視覺化和評估相關的部分。這些註釋有助於提高程式碼的可讀性,使使用者更容易理解關鍵操作。

不過,註釋有兩個主要問題:

  1. 複雜函式中的註釋缺失 – 類似於“…… ”的函式。
  2. 冗餘註釋–有些註釋只是重複程式碼中已經表達的內容(例如,# Split data into train and test sets in)

3️. 函式文件

函式文件大多寫得很好,描述了每個函式的目的及其返回的內容。這使得從資料載入到模型評估的流水線很容易跟上。

但是,在文件質量方面還存在一些不足:

  • 沒有解釋函式邏輯–雖然文件說明提到了函式的總體作用,但沒有解釋它是如何實現的。對於複雜的操作沒有內聯解釋,這可能會給除錯帶來困難。
  • 在執行多個任務的函式中缺乏分步說明 – 在執行多個任務的函式中缺乏分步說明。
  • 缺少引數說明 – 有些函式沒有說明它們所期望的輸入型別,因此不清楚如何正確使用這些函式。

為了改進函式文件並新增更好的解釋,我會使用 GitHub Copilot 或 Codeium 等擴充套件工具。這些工具可以自動生成更詳細的文件,提出型別提示,甚至為複雜函式提供分步解釋。

任務 3:使用多重預處理進行復雜編碼

在這項任務中,我們將要求 Claude 3.7 Sonnet 使用多程序並行執行一個計算大數階乘的 Python 程式。該模型將把任務分解成若干小塊,每塊計算一個部分階乘。然後,它將合併計算結果,得出最終階乘。將對照單程序階乘計算來分析這種並行執行的效能,以衡量效率的提高。這樣做的目的是利用多程序來減少複雜編碼任務所需的時間。

提示語:Write a Python code for the below problem:

Question: Implement a Python program that uses multiprocessing to calculate the factorial of large numbers in parallel. Break the task into smaller chunks, where each chunk calculates a partial factorial. Afterward, combine the results to get the final factorial. How does this compare to doing the factorial calculation in a single process?

Claude 3.7 Sonnet響應情況

使用多重預處理進行復雜編碼

輸出

任務三輸出結果

輸出分析

這個 Python 程式使用多程序有效地計算了大階乘,通過 multiprocessing.Pool() 將任務分成若干塊,並將它們分配給不同的 CPU 核心。並行階乘(parallel_factorial())函式會分割計算範圍,分別處理每個分塊併合並結果,而順序階乘(sequential_factorial())函式則在單個迴圈中進行計算。該方法大大縮短了計算時間,但可能面臨記憶體限制和程序管理開銷。程式碼結構合理,可動態調整 CPU 使用率,幷包含針對潛在溢位的錯誤處理。

對Claude 2.7 Sonnet編碼能力的總體評價

多代理電影推薦系統結構良好,利用 CrewAI 明確定義了代理角色和任務。然而,generate_recommendations() 中的一個問題導致它返回的是圖元而不是電影推薦物件,從而導致在訪問標題等屬性時出現屬性錯誤(AttributeError)。這種資料格式不匹配會擾亂迭代,需要更好的處理方法來確保正確的輸出。

ML 模型文件條理清晰,文件說明、註釋和函式描述提高了可讀性。然而,細節上的不一致、引數描述的缺失以及複雜函式解釋的缺乏都降低了文件的有效性。雖然函式的目的很明確,但內部邏輯和決策並不總是得到解釋。這使得使用者更難理解關鍵步驟。提高清晰度和增加型別提示將提高可維護性。

並行階乘計算有效地利用了多處理功能,將任務分配給 CPU 核心以加快計算速度。該方法的實現既穩健又動態,甚至還包括溢位處理,但記憶體限制和程序管理開銷可能會限制其在處理大量資料時的可擴充套件性。在有效縮短計算時間的同時,優化資源使用將進一步提高效率。

小結

在本文中,我們探索了 Claude 3.7 Sonnet 作為編碼模型的能力,分析了它在多代理系統、機器學習文件和平行計算中的效能。我們研究了該模型如何有效利用 CrewAI 實現任務自動化、多程序提高效率以及結構化文件提高可維護性。雖然該模型展示了強大的編碼能力、可擴充套件性和模組化設計,但在資料處理、文件清晰度和優化等方面仍需改進。

Claude 3.7 事實證明,Sonnet 是一款強大的人工智慧軟體開發工具,它具有高效性、適應性和高階推理能力。隨著人工智慧驅動的編碼技術不斷髮展,我們將看到更多這樣的模型出現,提供最先進的自動化和問題解決方案。

評論留言