學習 CodeWhisperer 的一些總結

發表於2023-09-21

目前一些常見的的 AI 工具

  1. GitHub Copilot:GitHub 與 OpenAI 合作開發的一個人工智慧助手。
  2. Codeium:是一個免費的人工智慧驅動的程式碼生成工具
  3. Tabnine:一個自動程式碼生成工具,免費版本非常有限,只提供簡短的程式碼完成
  4. Codex: OpenAI 開發的一種語言模型,可根據自然語言提示(例如問題描述)生成程式碼。
  5. Intellicode:是用於 Visual Studio 的免費 AI 程式碼生成工具(支援的程式語言數量非常有限,並且只能在單個 IDE 中執行)
  6. AskCodi: 提供了一個全面的工具來幫助開發者快速生成程式碼。(可根據不同的應用程式生成不同型別的程式碼)
  7. CodeWhisperer:我們今天要了解的外掛,是亞馬遜建立的程式碼生成工具,與 Copilot 和 Codeium 一樣,它可以根據上下文和評論生成程式碼建議,主要區別在於 CodeWhisperer 側重於支援亞馬遜雲科技服務的程式碼等。
亞馬遜雲科技開發者社群為開發者們提供全球的開發技術資源。這裡有技術檔案、開發案例、技術專欄、培訓影片、活動與競賽等。幫助中國開發者對接世界最前沿技術,觀點,和專案,並將中國優秀開發者或技術推薦給全球雲社群。如果你還沒有關注/收藏,看到這裡請一定不要匆匆劃過,點這裡讓它成為你的技術寶庫!

CodeWhisperer 主要特點

  • 支援多種程式語言: 包括 JavaScript、Java、Python、C++、Rust、Go、PHP 等等
  • 支援多種ide(程式碼開發編輯器): vs code 、 JetBrains IDE、Visual Studio Code(VS Code)、Visual StudioIntelliJ、PyCharm、CLion、GoLand、WebStorm、Rider、PhpStorm、RubyMine 和 DataGrip 等
  • 檢測程式碼安全問題。
  • 經過數十億行程式碼的訓練
  • 即用即開,不用時也可以隨時關閉
  • 可以免費使用(預計後期可能會收費)

CodeWhisperer 練習過程

使用者透過中文或者英文註釋,CodeWhisperer 給出輸出建議(註釋的描述性和準確性越高輸出建議正確率越高),每次回車載入建議,Tab 接受建議

  • demo1
例子1: 
# 第一步
# 求和
# 第二步
def sum(a,b):
    return a+b

例子2:
# 第一步
# 求減iecheng
# 第二步
def jian(a,b):
    return a-b

例子3:
# 第一步
#排序
# 第二步
def sort(a,b):
    return a-b
  • demo2
// 陣列合並
// 第一步
public static void main(String[] args) {
// 第二步
public static void main(String[] args) {
    int[] arr1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    int[] arr2 = { 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 };
    int[] arr3 = new int[20];
    for (int i = 0; i < arr1.length; i++) {
        arr3[i] = arr1[i];
    }
    for (int i = 0; i < arr2.length; i++) {
    arr3[i + 10] = arr2[i];
    }
    for (int i = 0; i < arr3.length; i++) {
    System.out.print(arr3[i] + " ");
    }
}
  • demo3
例子1:
// 第一步
// 刪除重複的字元
// 第二步
function removeDuplicate(arr) {
    return [...new Set(arr)].join('');
}

例子2:
// 第一步
// 刪除相鄰相同的字串
// 第二步
function removeAdjacentDuplicate(arr) {
    let newArr = [];
    arr.forEach(item => {
        if (newArr[newArr.length - 1] !== item) {
            newArr.push(item);
        }
    });
    return newArr;
}

例子3:
// 第一步
// 輸出1-100間能被7整除的數
// 第二步
function printNumber() {
    for (let i = 1; i <= 100; i++) {
        if (i % 7 === 0) {
            console.log(i);
        }
    }
}

總結

CodeWhisperer 是人工智慧編碼助手(外掛),類似 ChatGPT 的自然語言查詢但有不同,個人版免費給與技術先行者便利,透過不斷的測試提出最佳化,更新迭代,一步一步走向成熟;支援中英文這一優點,使基礎差的同學也可以迅速上手;雖然 CodeWhisperer 在減少編寫的程式碼量方面非常有幫助,不應該完全依賴來編寫整個應用程式,生成的程式碼會有一點瑕疵,因此使用 CodeWhisperer 生成的程式碼,上線前必須嚴格測試;希望我們的 AI 智慧突飛猛進,加油!

文章來源:https://dev.amazoncloud.cn/column/article/64f90dfed75d3d261ac...