AI技術的快速發展催生了新一代的終端機工具和程式碼生成系統,大幅改變了軟體開發的流程。這些工具不僅提供了更友善的使用者介面,還整合了AI輔助功能,讓開發者可以更輕鬆地編寫程式碼、偵錯程式碼,並取得相關技術資訊。從整合AI的終端機工具Warp,到多語言支援的Bito AI,以及根據VS Code的Cursor編輯器,這些工具都展現了AI在提升開發效率方面的巨大潛力。同時,開源模型如Meta的Code Llama和Stability AI的StableCode,也為開發者提供了更多選擇。這些工具和模型的出現,正在加速軟體開發的革新,並為開發者帶來更便捷、更高效的開發體驗。
現代終端機工具與AI輔助開發的革新
在軟體開發領域,終端機(CLI)一直是開發者不可或缺的工具。然而,傳統的CLI工具往往存在使用門檻高、錯誤訊息解讀困難等問題。近年來,隨著AI技術的進步,一些創新的終端機工具應運而生,將AI能力整合進CLI,大幅提升了開發效率和體驗。
Warp:新一代終端機工具
Warp是一款現代化的終端機工具,它不僅提供了高速的命令執行能力,還整合了AI輔助功能。Warp的最大特點在於其將每個命令和輸出結果以區塊的形式呈現,使用者可以輕鬆地回顧過去的命令,並且透過右鍵選單使用Warp AI來獲得錯誤解釋和解決方案。
Warp AI與聊天功能
Warp AI提供了一個聊天介面,使用者可以透過以「#」開頭的提示與AI互動。例如,若使用者想要知道如何使用grep命令在遞迴搜尋中排除目錄,可以輸入:
Prompt: # 如何使用grep在遞迴搜尋中排除目錄?
Warp AI將提供答案,使用者可以直接將答案複製到終端機中使用。值得注意的是,Warp與其他AI輔助開發工具(如Copilot)可以協同工作,為使用者提供更全面的開發支援。
價格與版本
Warp提供三種版本:
- 免費版:每天最多20次AI請求
- Team版:每使用者每月$12,提供每天最多100次AI請求
- Enterprise版:客製化價格,適用於大型組織
Bito AI:多語言支援的AI輔助開發工具
Bito AI是由PubMatic創始人Amar Goel和Anand Das等人創立的AI輔助開發工具。它支援多達20種程式語言,包括特殊的混合語言如Hinglish(印地語和英語的混合)。
主要功能
Bito AI提供了多項實用的功能,包括:
- 自定義提示範本,用於頻繁使用的程式碼結構
- 安全性和效能檢查,提供最佳化建議
- 大型上下文視窗(約240,000 tokens),增強理解和分析能力
- 使用本地向量資料函式庫,有效處理大型程式碼函式庫
記憶體洩漏偵測
Bito AI擅長處理記憶體洩漏問題。使用者只需使用「Insert Code Selected in IDE」功能,並輸入提示,如:
Prompt: 識別程式碼中的任何問題
Bito AI不僅能標記問題,還能提供修復建議。
價格與版本
Bito AI提供兩個版本:
- 免費版:適用於個人使用者
- 付費版:每使用者每月$15,提供無限AI程式碼補全和存取大型上下文視窗
根據Bito的內部分析,使用者報告了31%的生產力提升,並且平均每月使用該工具近200次。目前,該平台擁有約100,000名使用者。
Cursor:由Anysphere開發的AI輔助程式碼編輯器
Cursor是由Anysphere開發的一款程式碼編輯器,其願景是開發一個比以往任何時候都更有幫助、更令人愉快、更有趣的程式碼編輯器。Cursor是VS Code的一個分支,支援Windows、Mac和Linux,並且相容於現有的VS Code擴充套件。
主要功能
Cursor提供了多項AI輔助功能,包括:
- 支援GPT-4和GPT-3.5,並結合專有模型
- 1.4億個向量和存取15萬個程式碼函式庫
- 先進的AI技術,如Merkle樹
使用者可以在聊天區域匯入檔案並提問,例如:
Prompt: @python 檔案
或者使用@符號來與特設定檔案互動:
Prompt: the_app.ts的功能是什麼?
Cursor還允許直接在終端機中進行除錯,其AI會掃描檔案並進行邏輯分析,以找出並嘗試解決問題。
AI輔助開發的最新進展與開源模型探討
隨著人工智慧(AI)技術的快速發展,AI輔助開發已成為軟體開發領域的重要趨勢。本文將探討目前最前沿的AI輔助開發工具和開源模型,包括Cursor、Code Llama、StableCode、AlphaCode和PolyCoder等,並分析它們的特點和應用場景。
Cursor:開發者的AI助手
Cursor是一款深受開發者喜愛的AI輔助開發工具。Jeffrey Biles,一位全端網頁開發者,表示他非常喜歡使用Cursor快速載入應用程式上下文,以回答問題、記憶語法、重構程式碼和編寫樣板程式碼。然而,他也指出Cursor在理解跨多個檔案的大型資料模型時仍有其限制。不過,隨著AI模型的改進,這些限制有望得到改善。
Tosh Velaga是另一位Cursor的使用者,他認為Command+L快捷鍵非常實用,可以快速詢問有關程式碼的問題。這對於他在處理不熟悉的後端語言時非常有幫助。此外,他還喜歡能夠自帶API金鑰,這樣可以節省成本並在不同的AI模型之間切換。
Code Llama:Meta的開源AI輔助開發模型
Meta推出的Code Llama是目前最受矚目的開源AI輔助開發模型之一。Code Llama根據LLaMA 2大語言模型,訓練資料達2兆個token,上下文長度為4,096個token。它包含了經過微調的模型,這些模型使用了超過一百萬個人類註解,使其更加有效和可靠。
Code Llama的特點
- 多語言支援:Code Llama支援多種主流程式語言,包括Python、C++、Java、PHP、JavaScript、C#和Bash。
- 多種模型規模:Code Llama提供了三種不同規模的模型,分別具有7億、13億和340億個引數。這些模型都經過了大規模的程式碼訓練。
- 擴充的上下文視窗:所有Code Llama模型都支援高達100,000個token的上下文,這使得它們在處理較長的程式碼時表現出色。
- 專門版本:Code Llama還有一些專門的版本,如Python版本和Instruction版本,分別針對Python程式碼和自然語言應用進行了最佳化。
其他開源模型
除了Code Llama之外,目前還有許多其他開源的AI輔助開發模型值得關注。
StableCode
StableCode是由Stability AI開發的開源模型,根據BigCode專案的The Stack資料集進行訓練。StableCode使用了旋轉位置嵌入(RoPE)技術,並支援多種程式語言。它提供了多個版本,包括StableCode-Completion-Alpha-3B-4k和StableCode-Instruct-Alpha-3B等。
AlphaCode
AlphaCode是由Google DeepMind開發的AI系統,在程式碼競賽中表現出色。AlphaCode能夠處理各種複雜的任務,包括需要批判性思維、邏輯、演算法和自然語言理解的任務。它在Codeforces上的競賽中排名前54%,顯示了其在競爭性程式設計中的強大能力。
PolyCoder
PolyCoder是一個專注於C程式設計的開源模型,對遊戲開發者尤其有用。它還擅長總結多種程式語言的程式碼。PolyCoder經過了多種程式語言的訓練,能夠識別常見的模式和結構。
CodeT5與新一代程式碼生成系統的發展
CodeT5是一種先進的預訓練編碼器-解碼器模型,能夠有效處理多種程式碼相關任務,包括錯誤偵測、程式碼複製偵測,以及程式語言與自然語言之間的轉換。相較於傳統模型,CodeT5在CodeXGLUE(一個用於評估程式碼理解能力的基準測試)中的14項挑戰中表現出色,超越了諸如PLBART等舊有模型。
CodeT5的技術優勢
CodeT5的設計包含特殊的技巧,能夠充分利用程式語言的深層結構,從而提升其在程式碼理解和生成方面的能力。這使得它在諸如程式碼摘要生成、文字到程式碼轉換、程式碼翻譯和程式碼最佳化等任務中表現出眾。
企業級軟體公司的新動向
大型軟體公司如SAP、ServiceNow和Salesforce,憑藉其龐大的客戶基礎、豐富的資源和完善的銷售網路,在程式碼生成系統的開發上佔據了重要地位。它們能夠將新技術與現有產品無縫整合,提供完整的解決方案,並快速擴充套件以滿足市場需求。
Salesforce Code Builder
Salesforce Code Builder允許開發者輕鬆自定義CRM系統,並與Open VSX市場中的第三方擴充套件外掛無縫整合,無需額外的安裝或設定。
SAP Build Code
SAP Build Code專為Java和JavaScript使用者設計,並與SAP Joule(SAP的AI助手)整合,提供強大的資料函式庫系統支援,如SAP HANA。
StarCoder LLM
ServiceNow與Hugging Face合作開發的StarCoder LLM是一個開源專案,擁有150億引數,並在超過80種程式語言上進行了訓練。它強調治理、安全性和合規性,只使用具有寬鬆許可證的程式碼進行訓練。
AI輔助程式設計工具的發展趨勢
AI輔助程式設計工具正改變開發者的工作方式,提供諸如自動程式碼生成、錯誤偵測和程式碼最佳化等功能。大型科技公司和新創企業都在這一領域積極投入,推動了技術的快速發展。
ChatGPT及其他通用型大語言模型
本章節將探討一些廣泛使用的通用型大語言模型,這些模型能夠生成程式碼,並提供諸如規劃和頭腦風暴等功能。雖然它們可能不具備專門的程式碼生成模型的所有功能,但仍然非常強大。
ChatGPT
ChatGPT是由OpenAI開發的聊天機器人模型,自2022年11月30日推出以來迅速走紅。它在短短五天內吸引了百萬使用者,並在兩個月內達到一億使用者,成為網際網路歷史上增長最快的平台。
OpenAI的發展歷程
OpenAI成立於2015年,最初是一家非營利組織,旨在實作通用人工智慧(AGI)並造福人類。為了籌集資金,OpenAI在2019年成立了一家「有限」營利公司,並獲得了微軟等投資者的支援。
隨著通用型大語言模型的持續發展,它們在程式碼生成和相關任務中的表現將會越來越出色,為開發者提供更強大的支援。
GPT-4 在程式碼生成方面的卓越表現
GPT-4 模型展現出在程式碼生成方面的多樣性,這得益於其廣泛的訓練資料涵蓋了多種來源。這種全面的訓練使其在多個專業和學術基準測試中達到人類級別的表現,並且在大多數程式語言中,GPT-4 的表現始終優於 GPT-3 和 GPT-3.5。這主要歸功於其增強的遵循複雜指令的能力,以及能夠以更大的深度生成技術或創意作品。另一個關鍵因素是 32K 的上下文視窗。
評估與改進
在特定的程式碼生成基準測試中,與 Reflexion(一個根據 LLMs 建立複雜代理的框架)整合的增強版 GPT-4 在 HumanEval 上的透過率達到令人印象深刻的 88%。這個分數明顯高於基礎版 GPT-4 的 67% 透過率。這表明,透過某些改進,GPT-4 可以在程式碼生成任務中達到最先進的效能。
競爭性程式設計挑戰
在 Codeforces 平台上的競爭性程式設計場景中,GPT-4 獲得了 392 分的評分,高於 GPT-3.5 的 260 分。然而,GPT-4 在競爭性程式設計領域仍被視為新手,這些分數仍處於最低的 5%。儘管 GPT-4 已經取得了很大的進步,但在艱難的程式設計挑戰中,它仍有很多需要改進的地方,以匹配人類的技能。
使用 ChatGPT 的
本章節將介紹 ChatGPT Plus 的使用方法,這是 ChatGPT 的高階版本。每月訂閱費用為 20 美元。以下是您將獲得的功能:
- 即使在高峰時段,付費訂閱者也能獲得優先存取權。
- 更快的回覆速度,讓對話更加流暢和有趣。
- 新功能和升級的優先試用權。
- 可使用最新的模型。
ChatGPT 介面導覽
圖 6-1 展示了 ChatGPT 的介面。在左上角,您可以懸停在下拉選單上以選擇所需的模型或存取外掛商店。在螢幕左側,您可以點選按鈕建立新的對話會話。在底部,您將看到您的使用者資料,可以取得有關您的 ChatGPT 計劃的資訊、更改設定以及新增自定義指令。
程式碼生成範例
假設您想要建立一個計算數字階乘的 Python 程式碼片段,您可以輸入以下提示:
Prompt: Write a Python code snippet that calculates the factorial of a number.
圖 6-2 展示了 ChatGPT 的回應。
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
# 示例用法:
num = 5
print("The factorial of", num, "is", factorial(num))
內容解密:
此 Python 程式碼定義了一個名為 factorial 的遞迴函式,用於計算給定數字 n 的階乘。如果 n 為 0,則函式傳回 1,否則傳回 n 與 n-1 的階乘的乘積。範例用法展示瞭如何計算數字 5 的階乘並列印結果。
繼續對話與會話管理
如果您想檢視其他建立程式碼的方法,可以詢問:
Prompt: What is another way to create this code?
ChatGPT 提供另一種程式碼建議,稱為迭代方法。
def factorial_iterative(n):
result = 1
for i in range(1, n + 1):
result *= i
return result
# 示例用法:
num = 5
print("The factorial of", num, "is", factorial_iterative(num))
內容解密:
此迭代版本的 factorial_iterative 函式使用迴圈計算階乘,從 1 到 n 進行迭代並將結果相乘,最終傳回階乘值。這種方法避免了遞迴可能導致的堆積疊溢位問題。
上下文視窗的重要性
對於 GPT-3.5,上下文視窗為 16K,而對於 GPT-4,則是 32K。這決定了模型能夠“記住”並用於生成連貫且與上下文相關的回應的前文數量。
自定義指令與行動應用
ChatGPT 允許使用者透過自定義指令調整回應方式,以滿足特定需求。此外,ChatGPT 在 iOS 和 Android 裝置上也有行動應用,提供語音聊天和圖片分享等功能,讓使用者經驗更加豐富。
使用 ChatGPT 提升開發效率:從程式碼生成到瀏覽網際網路
軟體開發是一個複雜的過程,涉及多個步驟,如規劃、編碼和測試。在這些步驟中,重複性的編碼工作往往既枯燥又耗時。幸運的是,像 ChatGPT 這樣的 AI 工具可以幫助開發者簡化這些工作。
ChatGPT 的基本使用方式
開發者可以透過與 ChatGPT 互動,獲得程式碼片段、技術解釋和最佳實踐建議。為了獲得符合 PEP 8 規範的 Python 程式碼,開發者可以指定 ChatGPT 遵循特定的風格,並提供相關的背景資訊。
程式碼生成範例
def get_user_input():
"""取得使用者輸入的主題"""
topic = input("請輸入主題:")
content_type = input("請選擇要建立的內容型別(部落格或社群媒體貼文):")
return topic, content_type
def create_content(topic, content_type):
"""使用 LangChain 和 OpenAI API 建立內容"""
# 省略實作細節
pass
def main():
topic, content_type = get_user_input()
create_content(topic, content_type)
if __name__ == "__main__":
main()
內容解密:
get_user_input函式負責取得使用者的輸入,包括主題和內容型別。create_content函式預計使用 LangChain 和 OpenAI API 來根據主題和內容型別建立相應的內容。main函式是程式的入口點,負責呼叫上述兩個函式來完成整個流程。
結合 Bing 瀏覽功能提升 ChatGPT 的實用性
由於 ChatGPT 的訓練資料有時間限制,它可能無法提供關於最新技術或框架的資訊。為瞭解決這個問題,ChatGPT 提供了「使用 Bing 瀏覽」的功能,讓它可以進行即時的網頁搜尋。
使用 Bing 瀏覽功能的提示範例
- Prompt: 請告訴我關於 LangChain 框架及其主要功能。使用網際網路進行搜尋。
- Prompt: 請在網際網路上搜尋 LangChain 的入門資源或檔案。
- Prompt: 請瀏覽網際網路以尋找使用 LangChain 框架建立的應用程式範例。
結果呈現
當使用 Bing 瀏覽功能時,ChatGPT 可以提供更為即時和準確的資訊。例如,它可以列出 LangChain 的主要功能,並將結果以表格形式呈現。
使用 ChatGPT 處理重複性任務
在軟體開發中,有許多重複性任務可以透過 ChatGPT 來簡化,例如產生正規表示式(regex)。
正規表示式範例
import re
def validate_password(password):
"""驗證密碼強度"""
pattern = r"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$"
if re.match(pattern, password):
return True
else:
return False
# 測試密碼
password = "Example123!"
print(validate_password(password))
內容解密:
validate_password函式使用正規表示式來驗證密碼是否符合特定的強度要求。- 正規表示式
pattern確保密碼至少包含八個字元,包括一個大寫字母、一個小寫字母、一個數字和一個特殊字元。 re.match函式用於檢查密碼是否符合指定的模式。