目錄

廣告 AD

Tabby: 幫你寫程式的 AI coding 助理,取代 GitHub Copilot 的新選擇

想用 GitHub Copilot 但不想付訂閱費?

擔心自己的 code 的隱私?

那可以試試看 Tabby

廣告 AD

[Github] Tabby
Tabby Homepage


Tabby 是一個 AI 的寫程式助理,可以幫助你撰寫 code,寫好註解,AI 會自動幫你完成程式,且 Tabby 是本地的應用程式,可以保證資料的隱私,目前 Tabby 是 Alpha 的階段,可能會有些不穩定。

要使用 Tabby 的話有分兩部分:

  1. Tabby Server:AI Server
  2. Plugin:編輯器的插件

Tabby 有打包好的 docker image,所以我們可以直接下載:

bash

docker pull tabbyml/tabby

下載好後,就可以直接執行,其中模型和相關檔案需要指定資料夾 存放,後就不用重新下載了,可以自行更改

bash

docker run -p 8080:8080 -v <folder>:/data tabbyml/tabby serve --model TabbyML/SantaCoder-1B

上面是用 CPU 的方式執行,也可以用 GPU 的方式執行,但需要安裝 NVIDIA Container Toolkit

bash

docker run --gpus all -p 8080:8080 -v <folder>:/data tabbyml/tabby serve --model TabbyML/SantaCoder-1B --device cuda

接著要安裝插件,有支援 Vim 和 VSCode 兩種編輯器的插件


安裝好插件後就可以開始使用了,這邊使用 VSCode 做範例,首先我們需要先設定 Tabby Server 的 IP,按下快捷鍵 Ctrl + Shift + P 打開選單,輸入 Tabby,選擇 Set URL of Tabby Server

然後輸入 IP 和 Port,由於上方我們是綁訂 8080 的 port,因此這邊填入本地的 127.0.0.1:8080

然後設定就完成了,可以看到右下角顯示成功連接

接下來就可以享受 AI coding 的樂趣了~


以下我就來測試看看幾種狀況,首先是 C++ 的,想要寫一個兩個數字相加函式,結果連相減、相乘和相除都幫我寫好了,甚至下面還有印出兩個數字的函式,雖然是 Java 的啦…

cpp

// add two number
int add(int a, int b) {
	return a + b;
}

// subtract two number
int subtract(int a, int b) {
	return a - b;
}

// multiply two number
int multiply(int a, int b) { 
  return a * b;
}

// divide two number
int divide(int a, int b) {
	return a / b;
}

接下來測試 Javascript,想寫一個從 array 中找到最大值的函式,一樣很順利的直接幫我完成了,下面還想要幫我寫找最小的呢~

js

// find the max element in array
function findMaxElement(arr) {
    var max = arr[0];
    for (var i = 1; i < arr.length; i++) {
        if (arr[i] > max) {
            max = arr[i];
        }
    }
    return max;
}

最後測試 Python,想要幫我把兩個 array 合併,其實直接合併就好了,結果直接出現 Merge Sort 的合併,直接幫我升級~

python

# merge two array in python
def mergeTwoArray(arr1, arr2):
	i = 0
	j = 0
	k = len(arr1) + len(arr2) - 1
	while i < len(arr1) and j < len(arr2):
		if arr1[i] < arr2[j]:
			arr1[k] = arr1[i]
			i += 1
		else:
			arr1[k] = arr2[j]
			j += 1
		k -= 1
	while i < len(arr1):
		arr1[k] = arr1[i]
		i += 1
		k -= 1
	while j < len(arr2):
		arr1[k] = arr2[j]
		j += 1
		k -= 1
	return arr1

Tabby PlayGround


官網有提供試玩的地方,想測試的可以去那邊玩玩看囉~

廣告 AD