找到了!GitHub Copilot的最佳免費平替

来源:https://www.cnblogs.com/didispace/archive/2023/12/21/17918754.html
-Advertisement-
Play Games

在如今這個人工智慧高速發展的時代,每個行業都在被AI技術影響而改變。層出不窮的AI輔助工具,讓我們看到了機器正在取代一部分基礎的日常工作。對於我們開發者而言,當前最炙手可熱的就是GitHub Copilot,市面上最好的開發者輔助工具。GitHub Copilot所提供的代碼補全、建議、解釋等能力非 ...


在如今這個人工智慧高速發展的時代,每個行業都在被AI技術影響而改變。層出不窮的AI輔助工具,讓我們看到了機器正在取代一部分基礎的日常工作。對於我們開發者而言,當前最炙手可熱的就是GitHub Copilot,市面上最好的開發者輔助工具。GitHub Copilot所提供的代碼補全、建議、解釋等能力非常強大,可以有效地提高編程速度。但是,GitHub Copilot是基於OpenAI所構建,後者的成本並不小,所以GitHub Copilot成為一款付費工具是非常自然的。

那麼,對於預算有限的開發者而言,是否有合適的免費平替呢?答案是肯定的!今天,就給大家推薦最近我一直在用,且覺得還不錯的插件:通義靈碼。推薦的理由,我總結為以下幾點:

  1. 極低的上手門檻
  2. 強大的代碼補全和編碼提示
  3. 快捷好用的智能問答

極低的上手門檻

一些眾所周知的原因,相信體驗過GitHub Copilot的開發者一定都是經過一番折騰才用上其強大能力的。這對於一些初學者用戶來說門檻非常高,同時對於一些有審查要求的環境更是不可能使用。

與此相比,通義靈碼的上手門檻極低:

  • 安裝簡單:用戶只需要在JetBrains系IDE或VS Code的插件市場里搜索:TONGYI Lingma,就能完成一鍵安裝

JetBrains系IDE安裝

VS Code安裝

  • 極易上手:無需配置,自動提示。插件在開發者編碼過程中會自動根據上下文做出提示建議,如提示建議不錯,直接按Tab採納即可。如果需要手動喚出提示,也只需要通過快捷鍵+P快速彈出提示(Windows快捷鍵:Alt + P)。除了這兩個最常用的操作之後,還有一些操作可參見下表:
macOS Windows
接受行間代碼建議 Tab Tab
廢棄行間代碼建議 esc esc
查看上一個行間推薦結果 [ Alt [
查看下一個行間推薦結果 ] Alt ]
手動觸發行間代碼建議 P Alt P

強大的代碼補全和編碼提示

代碼補全是開發者日常工作最高頻的操作,雖然很多強大IDE工具都自帶了代碼補全的能力,但這也僅限於一些語法層面的簡單補全,不包含聯繫編碼上下文所推理出的,更有貼近用戶編碼意圖的智能補全和提示。所以,這也是現在很多AI輔助工具吸引人的地方,它們可以提供更為出色的,甚至驚艷的補全效果。

那麼通義靈碼在代碼補全方面,是否可以平替GitHub Copilot呢?這裡DD根據很多博主介紹GitHub Copilot的場景來測試了一下,供大家參考:

行級補全

之前講過,行級補全在大部分IDE中已經包含,但AI工具的行級補全更為強大,它的強大之處在於能夠根據你的輸入來推理邏輯補全。

比如:我要定義一個B站視頻的URL,只要參數名中含有B站視頻URL相關的描述,就會直接給出模版。這樣的能力是完全不同於IDE所提供的行級補全的。

函數級補全

函數級補全是DD看到GitHub Copilot演示案例中最常見的強大能力,開發者只需要輸入有含義的函數名稱,具體的實現就自動提示了:

所以,必須在通義靈碼中也嘗試一下!

先嘗試了一下簡單的冒泡排序:

輕鬆完成!

再嘗試一下稍微有點難度的快排演算法:

似乎失敗了?只給出了一些簡單提示,並沒能得到完整的邏輯。後面,DD又嘗試了幾次,最終獲得了一個完整結果,具體如下:

所以,在函數級補全這個功能上,可能還存在一些差距,有待後續提高吧。

自然語言補全

自然語言補全的主要場景就是寫註釋,AI工具自動生成代碼。

這裡DD也找了個場景測試了一下。比如下麵是Spring Boot中一個文件上傳的後端處理邏輯,我嘗試通過自然語言的方式來描述邏輯,通義靈碼迅速補全了與註釋相關的代碼:

上下文感知能力

對於上下文的感知是AI工具的重要特色,也是這類工具時不時驚艷到我們的核心。

比如,下麵這種場景,在我第一碰到時,還是有被AI的理解能力所嚇到:

可以看到,當我要為這個Controller添加Swagger的API說明時,它居然理解了這個Controller內做的都是微信支付的操作,所以給出了tags="微信支付"的提示。

隨著這段時間的使用,出現過很多驚艷到我的補全提示,比如當我要寫一個操作FTP的API時,出現了這樣一幕:

可以看到,在我創建了FtpController之後,通義靈碼自動找到了同項目中的FtpService,並給出了依賴提示,這一操作非常符合預期。之後,通過換行操作,通義靈碼又給出了進一步的提示,這步提示也非常神奇,因為它的內容已經不僅僅是對當前上下文的理解,而是結合上下文與依賴內容的理解,並給出了調用依賴內容的提示。

通過這段時間的實踐,我認為通義靈碼的感知能力已經非常不錯,它可以很好的理解項目中的各個元素,並找到它們之間的關係,然後在開發者編碼過程中給出一些可能需要的提示。同時,我也發現養成良好編碼習慣的優勢也在這裡有所體現。因為在擁有良好項目結構和命名規範的工程下編碼時,此類AI工具給出的提示就相當有水準,也許這樣更有助於AI理解我們的工程吧。

快捷好用的智能問答

通義靈碼插件在IDE中自帶一個智能問答的視窗,具體位置和基本使用方法如下:

圖中我還問了一個問題:讓通義靈碼幫我寫一個文件操作類,它就給了我一個不錯的代碼封裝和使用案例。如果你覺得不錯的話,就可以通過回答右上方的按鈕,以不同的方式添加到工程中:

圖中按鈕從左到右功能依次為:插入、複製、新建文件

是不是很棒呢?要知道GitHub的Chat可不是直接可以用的,相信還有不少小伙伴還在排隊吧?

通義靈碼的智能問答視窗除了處理基本問答之外,其實還有一些更有意思的功能,比如:解釋代碼和生成單元測試

上面我們體驗了代碼補全能力,但是它補全的內容到底對不對呢?必須趕緊驗證一下,順便再體驗一下通義靈碼的另外2個實用功能:

  • 解釋代碼
  • 生成單元測試

下麵就來看看上面生成的能否經受住它自己的考驗 _

操作很簡單,只需要選中上面生成的代碼片段,點擊滑鼠右鍵,可以看到解釋代碼和生成單元測試:

先來試試解釋代碼,點擊之後會在IDE右側彈出問答框,具體如下:

沒啥問題,通過第一關考驗!

下麵再嘗試一下:生成單元測試。馬上就獲得瞭如下代碼:

直接添加文件之後,運行起來。成功通過測試!上面自動補全的代碼是正確的!

總結

最後,聊聊這段時間使用通義靈碼的感受。其實,剛開始嘗試的時候也是碰到一些問題,尤其對於關於AI輔助的補全能力,會有一些不太適應。可能補全能力與項目內容和自己日常的編碼習慣有關,隨著每天不斷的使用,插件似乎在理解項目內容和我的習慣,並不斷給出更讓我滿意的提示內容。所以,這個使用過程是越用越順的。現在已經是我必不可少的效率神器了。

雖然,通義靈碼總體能力上離GitHub Copilot還有一些差距,但大部分輔助編碼能力已經非常接近GitHub Copilot。同時,它的生成速度很快,而且跟IDE適配很好,ide里直接chat也很爽,加之阿裡通義千問模型的支持。在一眾免費的AI編碼輔助工具之中脫穎而出,可以說是GitHub Copilot的最佳平替了。

如果您正在尋找AI輔助編碼工具,但又覺得GitHub Copilot上手摺騰麻煩或者覺得太貴,那麼建議免費嘗試一下通義靈碼,相信不會讓你失望。另外,DD看到社區有其他開發者反饋初學者使用非常絲滑,尤其是對於Python。所以,如果你是初學者或者Pyhon開發,那麼也推薦試試。

歡迎關註我的公眾號:程式猿DD。第一時間瞭解前沿行業消息、分享深度技術乾貨、獲取優質學習資源


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1. 可演進的API 1.1. 隨著需求的變化,你需要改變你的API,即代碼之間的共用介面 1.2. 改變API很容易,但很難做到正確 1.3. 保持API小巧 1.3.1. 小巧的API更易於理解和演進 1.3.2. 只添加即刻需要的API方法或欄位 1.3.3. 帶有許多欄位的API方法應該有合 ...
  • 今天給大家推薦2個視頻翻譯工具​,分別是: TransDuck YouTube中文配音 這兩款工具的核心功能非常類似,核心提供一個視頻語言翻譯的能力。比如:你要看一個英文視頻,它可以幫助你將這個英文視頻變為中文視頻,日文視頻或者韓文視頻等其他語言的視頻。這裡所說的語言翻譯可不只是字幕哦,而是音頻也都 ...
  • 說明: access_token: 服務端與客戶端通信,有時服務端需要知道客戶端的身份,就會用到access_token來用於驗證身份。 refresh_token: 但為了保證安全token會設置過期時間,如果直接過期,相當於用戶或調用端正在使用產品,突然間就退出登錄了,這種產品體驗很差,於是有了 ...
  • 根據上一篇博客可知,單純的通過求取最大面積而進行定位的局限性,因此我們接下來將通過cv2.moments()和cv2.HuMoments()這兩個方法來在更複雜的環境中去找到我們的目標區域。 cv2.moments(): 參數: array:表示輸入圖像的單通道數組。通常是灰度圖像,可以是8位或浮點 ...
  • 先上代碼: 1 def barcode(image): 2 gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) 3 blur = cv2.GaussianBlur(gray, (5, 5), cv2.RETR_EXTERNAL, cv2.CHAIN_APPR ...
  • 今日內容 1.什麼是編程 2.電腦組成原理 3.電腦操作系統 4.編程語言是什麼 什麼是編程 什麼是編程語言 編程語言是人與電腦交流的介質 什麼是編程? 編程:用編程語言寫出一個個文件,這堆文件會達到一個目的。 編程有什麼用? 讓電腦幫我們幹活 電腦組成原理 CPU中央處理器 1.幫我們控 ...
  • Qt 是一個跨平臺C++圖形界面開發庫,利用Qt可以快速開發跨平臺窗體應用程式,在Qt中我們可以通過拖拽的方式將不同組件放到指定的位置,實現圖形化開發極大的方便了開發效率,本章將重點介紹`QStringListModel`字元串映射組件的常用方法及靈活運用。`QStringListModel` 是 ... ...
  • 介紹 作為一名有著大量微服務系統處理經驗的軟體架構師,我經常遇到一個不斷重覆的問題:“我應該使用 RabbitMQ 還是 Kafka?” 出於某種原因,許多開發人員認為這些技術是可以互換的。雖然在某些情況下確實如此,但 RabbitMQ 還是 Kafka 之間存在根本上的差異。 因此,不同的場景需要 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...