Post

GitHub Copilot-al az élet

Immáron jó pár hónapja haszálom VSCode-ban a Github Copilot szolgáltatást. Kis összegzőt és a tapasztalataim szeretném a következőkben megosztani veletek. Hogy mi is a Copilot, magáról ezt írja:

A GitHub Copilot egy mesterséges intelligencia alapú programozó asszisztens, amely javaslatokat tesz a kód optimalizálására és a hibák javítására. A felhasználók által írt kódot értelmezi és teljes sorokat vagy akár teljes függvényeket is javasolhat közvetlenül az editorban. A Copilot segíti a fejlesztőket a kódolási folyamatban, csökkentve a fejlesztési időt és javítva a kód minőségét.

Na de nézzük meg a gyakorlatban is, hogy mire is jó. Sajnos ezt már nem lehet csak úgy ingyen használni, de aki szeretné kipróbálni, az itt megteheti: https://copilot.github.com/ 30 napig ingyenesen használható, szóval egy próbát megérhet…

img-description

Ha viszont a licence része is rendben van, kezdjünk is bele. A használata nem bonyolult. Első lépésben a VSCode-ban telepíteni kell a kiegészítőket. A telepítés után a VSCode-ban megjelenik a Copilot és már a Chat ikonja is.

Telepítés

A telepítéshez a VSCode-ban a Extensions füle alatt keressük meg a GitHub Copilot-ot, a Chat-et, és aki első körben szereti kipróbálni az újdonságokat, a GitHub Copilot Labs-ot is telepítse fel. Csak kattintsunk a telepítésre és már használhatjuk is.

img-description

Persze utána kérni fogja a bejelentkezést, de ez nem gond, hiszen a GitHub fiókunkkal tudunk bejelentkezni ide is.

Használat

A használata nagyon egyszerű. A kódot írjuk be és a Copilot kiegészíti azt. Első körben terraform-al kezdtem, ha már az infrastruktúra a fő területem :) Kis csavar lesz a történetben, hogy magyarul fogok írok majd neki, hogy ne legyen neki annyira egyszerű. A Copilot nagyon jól működik, de nem mindig találja meg a megfelelő kódot, sőt, néha olyan dolgokat tud mondani, hogy fáj, de azért nagyjából 80%-ban használható, ezt ne felejtsétek el és nem szabad mindent vakon elhinni neki… A kiegészítéshez a CTRL+Space-t kell megnyomni és már javítja is a kódot. De nekem inkább a ctrl+i parancs tetszett meg nagyon, hiszen ezzel interaktívan lehet tőle kérdezni is (Chat). Na de akkor a gyakorlatban hogyan is ez néz ki? Kérek tőle egy resource group-ot és egy storage account-ot.

img-description

Elfogadás után:

img-description

És már kész is a kód. Persze ez csak egy nyers változatot ad nekünk, de ettől függetlenül nagyon jó, hogy nem nekem kell keresgélni a dokumentációban, hogy hogyan is kell létrehozni egy storage account-ot. Most dolgoztassuk meg kicsit a Copilot-ot. Kérjünk tőle egy virtuális gépet, amihez tartozik egy public IP cím és egy network security group.

img-description

Íme a kód, amit generált:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
provider "azurerm" {
    features {}
}

resource "azurerm_resource_group" "example" {
    name     = "example-resource-group"
    location = "West Europe"
}

resource "azurerm_storage_account" "example" {
    name                     = "examplestorageaccount"
    resource_group_name      = azurerm_resource_group.example.name
    location                 = azurerm_resource_group.example.location
    account_tier             = "Standard"
    account_replication_type = "LRS"

    tags = {
        environment = "dev"
    }
}
resource "azurerm_public_ip" "example" {
    name                = "example-public-ip"
    location            = azurerm_resource_group.example.location
    resource_group_name = azurerm_resource_group.example.name
    allocation_method   = "Dynamic"
}

resource "azurerm_network_security_group" "example" {
    name                = "example-nsg"
    location            = azurerm_resource_group.example.location
    resource_group_name = azurerm_resource_group.example.name

    security_rule {
        name                       = "SSH"
        priority                   = 1001
        direction                  = "Inbound"
        access                     = "Allow"
        protocol                   = "Tcp"
        source_port_range          = "*"
        destination_port_range     = "22"
        source_address_prefix      = "*"
        destination_address_prefix = "*"
    }
}

resource "azurerm_network_interface" "example" {
    name                = "example-nic"
    location            = azurerm_resource_group.example.location
    resource_group_name = azurerm_resource_group.example.name

    ip_configuration {
        name                          = "example-nic-configuration"
        subnet_id                     = azurerm_subnet.example.id
        private_ip_address_allocation = "Dynamic"
        public_ip_address_id          = azurerm_public_ip.example.id
    }
}

resource "azurerm_virtual_machine" "example" {
    name                  = "example-vm"
    location              = azurerm_resource_group.example.location
    resource_group_name   = azurerm_resource_group.example.name
    network_interface_ids = [azurerm_network_interface.example.id]
    vm_size               = "Standard_DS1_v2"

    storage_os_disk {
        name              = "example-os-disk"
        caching           = "ReadWrite"
        create_option     = "FromImage"
        managed_disk_type = "Standard_LRS"
    }

    storage_image_reference {
        publisher = "Canonical"
        offer     = "UbuntuServer"
        sku       = "16.04-LTS"
        version   = "latest"
    }

    os_profile {
        computer_name  = "examplevm"
        admin_username = "adminuser"
        admin_password = "Password1234!"
    }

    os_profile_linux_config {
        disable_password_authentication = false
    }
}

Ez még mindig túl egyszerű volt, de jöhet amit Én speciel nagyon nem szeretek a kódolásban, a változók. Kérjük tőle, hogy generálja le a változókat is.

img-description

Milyen meglepő, de elég látványosan meg is csinálja az egészet. Lehetne ezt a végtelenségig folytatni, de akkor nem lenne érdekes. A lényeg, hogy nagyon jól működik és nagyon sok időt lehet vele spórolni, de csak egy bizonyos szintig. Aki nem tudja, mit is akar, az nem fogja tudni használni. Aki viszont tudja mit akar, az nagyon jól tudja hasznosítani. Én nagyon szeretem és nagyon sokat használom. Utoljára python programozás során használtam, és tudni kell rólam, hogy a “Hello world” kivételével nem tudok pythonban semmit, de a Copilot segítségével létre tudtam hozni mindent, ami kellett. Miután megértettem a logikát, a kód írás már nem is volt nehéz, igaz, ez egy minimális alkalmazás volt, ami letölt ftp-ről egy file-t és feltölti azt egy storage account-ba, mindezt persze Azure function app-ban, de valahol el kell kezdeni.

Chat

A Ctrl-i kombinációval már a Chat funkciókat is tudjuk használni, de nézzük meg részletesebben is. A Chat funkcióval lehet kérdezni a Copilot-tól. Bal oldalon a telepítés után megjelent a kis chat buborék, amivel előhívhatjuk a csevegő részét. Fontos, ez nem ChatGPT!, tehát tőle olyanokat lehet kérdezni, ami a feladathoz tartozik. Ami nem kapcsolódik szerinte a kódoláshoz igazából kedvesen elküld, hogy ezt nem vele akartad megbeszélni.

img-description

Azonban, ha valami olyat kérdezel tőle, ami a kódoláshoz kapcsolódik, akkor egészen jól tudja a választ. A következőkben ugyanazt kérem tőle, mint az első alkalommal. A kód ebben az esetben megegyezik, de itt kapok hozzá egy kis magyarázatot is, hogy miért is ezt a kódot adta vissza. Ez a funkciója kezdőknek tanulás céljából nagyon hasznos lehet, hiszen a kódok mellé egyben magyarázatot is ad, de ha egy tapasztaltabb kolléga akar új erőforrást használni, ott is nagy segítség tud lenni.

img-description

Összegzés

A Copilot egy nagyon jó kis eszköz, de nem helyettesítheti a fejlesztőt! Attól nem kell félni, hogy a közeljövőben el veszi a munkánkat, DE az életet nagyban meg tudja könnyíteni. Az általam nem kedvelt monoton, sokszor időt pazarló munkákat meg tudja csinálni helyettem, hogy én márcsak a lényegre tudjak koncentrálni. Én mindenképpen folytatni fogom a használatát és remélem, hogy a jövőben még több nyelvet fog támogatni. Bár igazából már most is támogat olyan dolgokat, mint pld. az okosotthonom automatizációs nyelve, amellyel szintén egész jól elboldogul. Persza ha ez még nem lenne elég, ott a Github Copilot Labs is, ahol még több dolgot lehet kipróbálni, de így elsőre legyen ennyi elég :)

Hasznos kombinációk

macOS

ActionShortcut
Accept an inline suggestionTab
Dismiss an inline suggestionEsc
Show next inline suggestionOption (⌥) or Alt+]
Show previous inline suggestionOption (⌥) or Alt+[
Trigger inline suggestionOption (⌥)+\\
Open (additional suggestions in separate pane)Option (⌥) or Alt+Return
In Line Chatcmd+i

Windows

ActionShortcut
Accept an inline suggestionTab
Dismiss an inline suggestionEsc
Show next inline suggestionAlt+]
Show previous inline suggestionAlt+[
Trigger inline suggestionAlt+\\
Open (additional suggestions in separate pane)Alt+Enter
Trigger inline suggestionAlt+\\
In Line Chatctrl+i

Source:https://docs.github.com/en/copilot/configuring-github-copilot/configuring-github-copilot-in-your-environment

This post is licensed under CC BY 4.0 by the author.