Ndërtoni një asistent personal të kodimit të AI me Gemma

Marrja e asistencës së kodit nga modelet e inteligjencës artificiale (AI) mund të jetë shumë e dobishme, por çka nëse ju kufizoheni nga përdorimi i modeleve gjeneruese të AI të palëve të treta, të strehuara për shkak të lidhjes, kostos ose kufizimeve të sigurisë së të dhënave? Familja e modeleve Gemma të Google janë të disponueshme për t'u shkarkuar dhe ekzekutuar në pajisjen tuaj, kështu që ju mund të mbani gjithçka lokale dhe madje të keni mundësinë për të akorduar modelin për të punuar më mirë me bazën tuaj të kodit.

Ekzekutimi i shembullit tuaj të Gemma ose CodeGemma mund t'ju sigurojë ndihmë për kodimin e AI me vonesë të ulët, disponueshmëri të lartë, kosto potencialisht më të ulët dhe aftësi për të mbajtur të gjitha të dhënat tuaja të kodimit në rrjetin tuaj. Ky projekt ju tregon se si të konfiguroni shërbimin tuaj të internetit për pritjen e Gemma dhe ta lidhni atë me një shtesë të kodit të Microsoft Visual Studio, për ta bërë përdorimin e modelit më të përshtatshëm gjatë kodimit. Ky projekt përfshin dy nën-projekte: Një projekt për të vendosur dhe mbështjellë Gemma në një shërbim ueb, dhe një projekt të dytë për një shtrirje të kodit VS që lidh dhe përdor shërbimin në internet.

Për një përmbledhje video të këtij projekti dhe si ta zgjeroni atë, duke përfshirë njohuri nga njerëzit që e ndërtuan atë, shikoni videon e Business Email AI Assistant Build with Google AI. Ju gjithashtu mund të rishikoni kodin për këtë projekt në depon e kodit të Gemma Cookbook . Përndryshe, mund të filloni të zgjeroni projektin duke përdorur udhëzimet e mëposhtme.

Vështrim i përgjithshëm

Ky tutorial ju tregon se si të konfiguroni dhe zgjeroni dy projekte: një shërbim në internet për Gemma dhe një shtesë të kodit VS për t'u përdorur në atë shërbim. Shërbimi në internet përdor bibliotekat Python, Keras, JAX dhe FastAPI për të shërbyer modelin Gemma dhe për të trajtuar kërkesat. Zgjerimi i Kodit VS, i quajtur Pipet, shton komanda në Paletën e Komandave që ju lejojnë të bëni kërkesa në shërbimin e internetit Gemma duke zgjedhur kodin, tekstin ose komentet në një dritare të redaktimit të kodit, siç tregohet në Figurën 1.

Pamja e ekranit të ndërfaqes së përdoruesit të shtesës VS Code

Figura 1. Ndërfaqja e përdoruesit të komandës së projektit për zgjerimin Pipet në Visual Studio Code

Kodi i plotë burimor për të dy projektet ofrohet në depon e kodit Gemma Cookbook dhe ju mund t'i zgjeroni të dy projektet për t'iu përshtatur nevojave tuaja dhe rrjedhës së preferuar të punës.

Vendosja e projektit

Këto udhëzime ju udhëzojnë në përgatitjen e këtij projekti për zhvillim dhe testim. Hapat e përgjithshëm të konfigurimit përfshijnë instalimin e softuerit parakusht, klonimin e projektit nga depoja e kodit, vendosjen e disa variablave të mjedisit, instalimin e bibliotekave Python dhe Node.js dhe testimin e aplikacionit në internet.

Instaloni softuerin e kërkuar

Ky projekt përdor Python 3, Virtual Environments ( venv ), Node.js dhe Node Package Manager ( npm ) për të menaxhuar paketat dhe për të ekzekutuar dy projektet.

Për të instaluar softuerin e kërkuar:

  • Instaloni Python 3, paketën e mjedisit virtual ( venv ) për Python, Node.js dhe menaxherin e paketave Node.js ( npm ):

    sudo apt update
    sudo apt install git pip python3-venv nodejs npm
    

Klononi projektin

Shkarkoni kodin e projektit në kompjuterin tuaj të zhvillimit. Ju duhet softueri i kontrollit të burimit git për të marrë kodin burimor të projektit.

Për të shkarkuar kodin e projektit:

  1. Klononi depon e git duke përdorur komandën e mëposhtme:

    git clone https://github.com/google-gemini/gemma-cookbook.git
    
  2. Opsionale: Konfiguroni depon tuaj lokale të git për të përdorur arkëtimin e rrallë, në mënyrë që të keni vetëm skedarët për projektin:

    cd gemma-cookbook/
    git sparse-checkout set Demos/personal-code-assistant/
    git sparse-checkout init --cone
    

Projekti i shërbimit në internet Gemma

Pjesa e shërbimit në internet të këtij projekti ( gemma-web-service ) krijon një shembull të organizuar në mënyrë të pavarur të Gemma 2 2B të mbështjellë me një shërbim bazë në internet për të trajtuar kërkesat dhe përgjigjet e gjenerimit. Zgjerimi i Kodit VS , i mbuluar më vonë në këtë tutorial, lidhet me këtë shërbim për të trajtuar kërkesat e ndihmës për kodin.

Këto udhëzime ju udhëzojnë në përgatitjen e këtij projekti për zhvillim dhe testim. Hapat e përgjithshëm të konfigurimit përfshijnë instalimin e softuerit parakusht, klonimin e projektit nga depoja e kodit, vendosjen e disa variablave të mjedisit, instalimin e bibliotekave Python dhe testimin e shërbimit në internet.

Kërkesat e harduerit

Ekzekutoni projektin e shërbimit të uebit Gemma në një kompjuter me një njësi përpunimi grafik (GPU) ose një njësi përpunimi Tensor (TPU) dhe memorie të mjaftueshme GPU ose TPU për të mbajtur modelin. Për të ekzekutuar konfigurimin Gemma 2 2B në këtë projekt të shërbimit në internet, ju nevojiten rreth 16 GB memorie GPU, afërsisht e njëjta sasi RAM e rregullt dhe një minimum prej 20 GB hapësirë ​​në disk.

Nëse po vendosni projektin e shërbimit në internet Gemma në një shembull Google Cloud VM , konfiguroni shembullin duke ndjekur këto kërkesa:

  • Pajisja GPU : Kërkohet një NVIDIA T4 për të ekzekutuar këtë projekt (rekomandohet NVIDIA L4 ose më i lartë)
  • Sistemi operativ : Zgjidhni një opsion Deep Learning në Linux , veçanërisht Deep Learning VM me CUDA 12.3 M124 me drejtues të softuerit GPU të para-instaluar.
  • Madhësia e diskut të nisjes : Siguroni të paktën 20 GB hapësirë ​​në disk për të dhënat, modelin dhe softuerin tuaj mbështetës.

Konfiguro projektin

Ky projekt përdor Python 3 dhe Mjediset Virtuale ( venv ) për të menaxhuar paketat dhe për të drejtuar shërbimin në internet. Instaloni bibliotekat e Python me mjedisin virtual venv Python të aktivizuar për të menaxhuar paketat dhe varësitë e Python. Sigurohuni që të aktivizoni mjedisin virtual të Python përpara se të instaloni bibliotekat e Python me skriptin setup_python ose me instaluesin pip . Për më shumë informacion rreth përdorimit të mjediseve virtuale Python, shihni dokumentacionin Python venv .

Për të instaluar bibliotekat e Python:

  1. Në një dritare terminali, lundroni te drejtoria gemma-web-service :

    cd Demos/personal-code-assistant/gemma-web-service/
    
  2. Konfiguro dhe aktivizo një mjedis virtual Python (venv) për këtë projekt:

    python3 -m venv venv
    source venv/bin/activate
    
  3. Instaloni bibliotekat e kërkuara të Python për këtë projekt duke përdorur skriptin setup_python :

    ./setup_python.sh
    

Vendosni variablat e mjedisit

Ky projekt kërkon disa variabla mjedisore për të ekzekutuar, duke përfshirë një emër përdoruesi Kaggle dhe një token Kaggle API. Ju duhet të keni një llogari Kaggle dhe të kërkoni qasje në modelet Gemma për t'i shkarkuar ato. Për këtë projekt, ju shtoni emrin tuaj të përdoruesit Kaggle dhe tokenin e Kaggle API në një skedar .env , i cili përdoret nga programi i shërbimit të uebit për të shkarkuar modelin.

Për të vendosur variablat e mjedisit:

  1. Merrni emrin tuaj të përdoruesit të Kaggle dhe tokenin tuaj API duke ndjekur udhëzimet në dokumentacionin e Kaggle .
  2. Merrni akses në modelin Gemma duke ndjekur udhëzimet për të hyrë në Gemma në faqen Gemma Setup .
  3. Krijoni një skedar të ndryshueshëm mjedisor për projektin, duke krijuar një skedar teksti .env në këtë vendndodhje në klonin tuaj të projektit:

    personal-code-assistant/gemma-web-service/.env
    
  4. Pas krijimit të skedarit të tekstit .env , shtoni cilësimet e mëposhtme në të:

    KAGGLE_USERNAME=<YOUR_KAGGLE_USERNAME_HERE>
    KAGGLE_KEY=<YOUR_KAGGLE_KEY_HERE>
    

Ekzekutoni dhe testoni shërbimin në internet

Pasi të keni përfunduar instalimin dhe konfigurimin e projektit, ekzekutoni aplikacionin në internet për të konfirmuar që e keni konfiguruar saktë. Ju duhet ta bëni këtë si një kontroll bazë përpara se të redaktoni projektin për përdorimin tuaj.

Për të ekzekutuar dhe testuar projektin:

  1. Në një dritare terminali, lundroni te drejtoria gemma-web-service :

    cd personal-code-assistant/gemma-web-service/
    
  2. Ekzekutoni aplikacionin duke përdorur skriptin run_service :

    ./run_service.sh
    
  3. Pas nisjes së shërbimit në internet, kodi i programit liston një URL ku mund të përdorni shërbimin. Në mënyrë tipike, kjo adresë është:

    http://localhost:8000/
    
  4. Testoni shërbimin duke ekzekutuar skriptin test_post :

    ./test/test_post.sh
    

Kur ta keni ekzekutuar dhe testuar me sukses shërbimin me këtë skript, duhet të jeni gati për t'u lidhur me të me shtesën VS Code në seksionin tjetër të këtij tutoriali.

Projekti i zgjerimit të kodit VS

Zgjerimi VS Code i këtij projekti ( pipet-code-agent-2 ) krijon një shtesë softuerike të aplikacionit Microsoft Visual Studio Code që është krijuar për të shtuar komanda të reja kodimi AI. Kjo shtesë komunikon me shërbimin në internet Gemma të përshkruar më parë në këtë tutorial. Shtesa komunikon me shërbimet e uebit përmes http duke përdorur mesazhe të formatit JSON.

Konfiguro projektin

Këto udhëzime ju udhëzojnë në vendosjen e projektit Pipet Code Agent v2 për zhvillim dhe testim. Hapat e përgjithshëm janë instalimi i softuerit të kërkuar, ekzekutimi i instalimit të konfigurimit, konfigurimi i një cilësimi shtesë dhe testimi i shtesës.

Instaloni softuerin e kërkuar

Projekti Pipet Code Agent funksionon si një shtesë e Microsoft Visual Studio Code dhe përdor Node.js dhe mjetin Node Package Manager ( npm ) për të menaxhuar paketat dhe për të ekzekutuar aplikacionin.

Për të instaluar softuerin e kërkuar:

  1. Shkarkoni dhe instaloni Visual Studio Code për platformën tuaj.
  2. Sigurohuni që Node.js të jetë instaluar duke ndjekur udhëzimet e instalimit për platformën tuaj.

Konfiguro bibliotekat e projektit

Përdorni mjetin e linjës së komandës npm për të shkarkuar varësitë e kërkuara dhe për të konfiguruar projektin.

Për të konfiguruar kodin e projektit:

  1. Navigoni në direktorinë rrënjë të projektit Pipet Code Agent.

    cd Demos/personal-code-assistant/pipet-code-agent-2/
    
  2. Ekzekutoni komandën e instalimit për të shkarkuar varësitë dhe konfiguroni projektin:

    npm install
    

Konfiguro shtesën

Tani duhet të jeni në gjendje të testoni instalimin tuaj duke ekzekutuar Pipet Code Agent si një shtesë zhvillimi në VS Code në pajisjen tuaj. Testi hap një dritare të veçantë të hostit të zhvillimit të zgjerimit të kodit VS, ku shtrirja e re është e disponueshme. Në këtë dritare të re, ju konfiguroni cilësimet për shtesën që përdor për të hyrë në shërbimin tuaj personal të uebit Gemma.

Agjenti i Kodit Pipet që funksionon në dritaren e hostit të zhvillimit të zgjerimit Figura 2. Dritarja e hostit të zhvillimit të zgjerimit të kodit VS me Cilësimet e zgjerimit të Pipetit.

Për të konfiguruar dhe testuar konfigurimin tuaj:

  1. Nisni aplikacionin VS Code.
  2. Në VS Code, krijoni një dritare të re duke zgjedhur File > New Window .
  3. Hapni projektin Pipet Code Agent duke zgjedhur File > Open Folder dhe duke zgjedhur dosjen personal-code-assistant/pipet-code-agent-2/ .
  4. Hapni skedarin pipet-code-agent-2/src/extension.ts .
  5. Ekzekutoni shtesën në modalitetin e korrigjimit duke zgjedhur Run > Start Debugging dhe nëse është e nevojshme, zgjidhni opsionin VS Code Extension Development Host . Ky hap hap një dritare të veçantë të hostit të zhvillimit të zgjerimit .
  6. Në dritaren e re të Kodit VS, hapni cilësimet e Kodit VS duke zgjedhur Kodi > Cilësimet > Cilësimet .
  7. Vendosni adresën e hostit të serverit tuaj të shërbimit në internet Gemma si një cilësim konfigurimi. Në fushën "Cilësimet e kërkimit" , shkruani Gemma , zgjidhni skedën "Përdoruesi" dhe në cilësimin "Gemma" > "Shërbimi: Host" , kliko lidhjen " Ndrysho në settings.json" dhe shto adresën e hostit, si p.sh. 127.0.0.1 , localhost , ose my-server.my-local-domain.com :

    "gemma.service.host": "your-host-address-here"
    
  8. Ruani ndryshimet në skedarin settings.json dhe mbyllni skedat e cilësimeve.

Testoni zgjerimin

Tani duhet të jeni në gjendje të testoni instalimin tuaj duke ekzekutuar Pipet Code Agent si një shtesë zhvillimi në VS Code në pajisjen tuaj. Testi hap një dritare të veçantë të hostit të zhvillimit të zgjerimit të kodit VS, ku shtrirja e re është e disponueshme.

Për të testuar komandat e zgjerimit:

  1. Në dritaren VS Code Extension Development Host , zgjidhni çdo kod në dritaren e redaktuesit.
  2. Hapni paletën e komandave duke zgjedhur View > Command Palette .
  3. Në paletën e komandave, shkruani Pipet dhe zgjidhni një nga komandat me atë prefiks.

Ndryshoni komandat ekzistuese

Modifikimi i komandave të dhëna në Pipet Code Agent është mënyra më e thjeshtë për të ndryshuar sjelljen dhe aftësitë e shtesës. Ky informacion i menjëhershëm i kontekstit udhëzon modelin gjenerues Gemma në formimin e një përgjigjeje. Duke ndryshuar udhëzimet e shpejta në komandat ekzistuese të Pipetit, mund të ndryshoni mënyrën se si sillet secila prej komandave.

Ky grup udhëzimesh shpjegon se si të modifikoni komandën review.ts duke ndryshuar tekstin e shpejtë të komandës.

Për t'u përgatitur për të redaktuar komandën review.ts :

  1. Nisni aplikacionin VS Code.
  2. Në VS Code, krijoni një dritare të re duke zgjedhur File > New Window .
  3. Hapni projektin Pipet Code Agent duke zgjedhur File > Open Folder dhe duke zgjedhur dosjen pipet-code-agent/ .
  4. Hap skedarin pipet-code-agent/src/review.ts .

Për të modifikuar sjelljen e komandës review.ts :

  1. Në skedarin review.ts , ndryshoni rreshtin e dytë në të fundit të konstantës PROMPT_INSTRUCTIONS për të shtuar Also note potential performance improvements .

    const PROMPT_INSTRUCTIONS = `
    Reviewing code involves finding bugs and increasing code quality. Examples of
    bugs are syntax errors or typos, out of memory errors, and boundary value
    errors. Increasing code quality entails reducing complexity of code, eliminating
    duplicate code, and ensuring other developers are able to understand the code.
    Also note potential performance improvements.
    
    Write a review of the following code:
    `;
    
  2. Ruani ndryshimet në skedarin review.ts .

Për të testuar komandën e modifikuar:

  1. Në dritaren e projektit të zgjerimit VS Code Pipet, hapni skedarin src/extension.ts .
  2. Ndërtoni kodin e përditësuar duke zgjedhur Terminal > Run Build Task... dhe më pas opsionin npm: compile .
  3. Rinisni korrigjuesin duke zgjedhur Run > Rinis Debugging .
  4. Në dritaren VS Code Extension Development Host , zgjidhni çdo kod në dritaren e redaktuesit.
  5. Hapni paletën e komandave duke zgjedhur View > Command Palette .
  6. Në paletën e komandave, shkruani Pipet dhe zgjidhni Pipet: Rishikoni komandën e zgjedhur të kodit .

Krijoni komanda të reja

Ju mund ta zgjeroni Pipet duke krijuar komanda të reja që kryejnë detyra krejtësisht të reja me modelin Gemma. Çdo skedar komande, si comment.ts ose review.ts , është kryesisht i pavarur dhe përfshin kodin për mbledhjen e tekstit nga redaktuesi aktiv, kompozimin e një prompt, lidhjen me shërbimin në internet Gemma, dërgimin e një kërkese dhe trajtimin e përgjigjes.

Ky grup udhëzimesh shpjegon se si të ndërtohet një komandë e re duke përdorur kodin e një komande ekzistuese, question.ts , si shabllon.

Për të krijuar një komandë që rekomandon emra për funksionet:

  1. Bëni një kopje të skedarit pipet-code-agent-2/src/question.ts të quajtur new-service.ts në drejtorinë src/ .
  2. Në VS Code, hapni skedarin src/new-service.ts .
  3. Ndryshoni udhëzimet e shpejtë në skedarin e ri duke redaktuar vlerën PROMPT_INSTRUCTIONS .

    // Provide instructions for the AI model
    const PROMPT_INSTRUCTIONS = `
    Build a Python web API service using FastAPI and uvicorn.
    - Just output the code, DO NOT include any explanations.
    - Do not include an 'if __name__ == "__main__":' statement.
    - Do not include a '@app.get("/")' statement
    - Do not include a '@app.get("/info")' statement
    `;
    
  4. Shtoni pllakën e kaldajës së shërbimit duke krijuar një konstante të re BOILERPLATE_CODE .

    const BOILERPLATE_CODE = `
    # the following code for testing and diagnosis:
    @app.get("/")
    async def root():
        return "Server: OK"
    
    @app.get("/info")
    async def info():
        return "Service using FastAPI version: " + fastapi.__version__
    
    # Run the service
    if __name__ == "__main__":
        # host setting makes service available to other devices
        uvicorn.run(app, host="0.0.0.0", port=8000)
    `;
    
  5. Ndryshoni emrin e funksionit komandues në newService() dhe përditësoni mesazhin e tij të informacionit.

    export async function newService() {
      vscode.window.showInformationMessage('Building new service from template...');
    ...
    
  6. Përditësoni kodin e shpejtë të montimit për të përfshirë tekstin e zgjedhur në redaktuesin dhe PROMPT_INSTRUCTIONS .

    // Build the full prompt using the template.
      const promptText = `${selectedCode}${PROMPT_INSTRUCTIONS}`;
    
  7. Ndryshoni kodin e futjes së përgjigjes për të përfshirë përgjigjen dhe kodin e pllakës së bojlerit.

    // Insert answer after selection.
    editor.edit((editBuilder) => {
        editBuilder.insert(selection.end, "\n\n" + responseText);
        editBuilder.insert(selection.end, "\n" + BOILERPLATE_CODE);
    });
    
  8. Ruani ndryshimet në skedarin new-service.ts .

Integroni komandën e re

Pasi të keni përfunduar kodin për komandën e re, duhet ta integroni atë me pjesën tjetër të shtesës. Përditësoni skedarët extension.ts dhe package.json për ta bërë komandën e re pjesë të shtesës dhe aktivizoni VS Code që të thërrasë komandën e re.

Për të integruar komandën new-service me kodin shtesë:

  1. Në VS Code, hapni skedarin pipet-code-agent-2/src/extension.ts .
  2. Shtoni skedarin e ri të kodit në shtesë duke shtuar një deklaratë të re importi.

    import { newService } from './new-service';
    
  3. Regjistroni komandën e re duke shtuar kodin e mëposhtëm në funksionin activate() .

    export function activate(context: vscode.ExtensionContext) {
        ...
        vscode.commands.registerCommand('pipet-code-agent.newService', newService);
    }
    
  4. Ruani ndryshimet në skedarin extension.ts .

Për të integruar komandën name me paketën shtesë:

  1. Në VS Code, hapni skedarin pipet-code-agent/package.json .
  2. Shtoni komandën e re në seksionin e commands të skedarit të paketës.

    "contributes": {
      "commands": [
        ...
        {
          "command": "pipet-code-agent.newService",
          "title": "Pipet: Generate a FastAPI service."
        }
      ],
    
  3. Ruani ndryshimet në skedarin package.json .

Testoni komandën e re

Pasi të keni përfunduar kodimin e komandës dhe ta integroni atë me shtesën, mund ta provoni. Komanda juaj e re është e disponueshme vetëm në dritaren VS Code Extension Development Host dhe jo në dritaren e Kodit VS ku keni redaktuar kodin për shtesën.

Për të testuar komandën e modifikuar:

  1. Në dritaren e projektit të zgjerimit VS Code Pipet, hapni skedarin src/extension.ts .
  2. Ndërtoni kodin e përditësuar duke zgjedhur Terminal > Run Build Task... dhe më pas opsionin npm: compile .
  3. Në dritaren e projektit të zgjerimit VS Code Pipet, rinisni korrigjuesin duke zgjedhur Run > Rinis Debugging , i cili rinis një dritare të veçantë të hostit të zhvillimit të zgjerimit .
  4. Në dritaren VS Code Extension Development Host , zgjidhni disa kode në dritaren e redaktuesit.
  5. Hapni paletën e komandave duke zgjedhur View > Command Palette .
  6. Në paletën e komandave, shkruani Pipet dhe zgjidhni Pipet: Gjeneroni një komandë shërbimi FastAPI .

Tani keni ndërtuar një ekstension VS Code dhe që funksionon me një model Gemma AI! Provoni të eksperimentoni me komanda dhe udhëzime të ndryshme për të ndërtuar një rrjedhë pune të zhvillimit të kodit të ndihmuar nga AI që funksionon për ju!

Paketoni dhe instaloni shtesën

Mund ta paketoni shtesën tuaj si një skedar .vsix për instalim lokal në shembullin tuaj të Kodit VS. Përdorni mjetin e linjës së komandës vsce për të gjeneruar një skedar të paketës .vsix nga projekti juaj shtesë, të cilin më pas mund ta instaloni në shembullin tuaj të kodit VS. Për detaje mbi paketimin e shtesës suaj, shihni dokumentacionin e Zgjerimeve të Publikimit të Kodit VS. Kur të keni përfunduar paketimin e shtesës tuaj si një skedar VSIX, atëherë mund ta instaloni manualisht në VS Code.

Për të instaluar shtesën e paketuar VSIX:

  1. Në shembullin tuaj të kodit VS, hapni panelin e Zgjerimeve duke zgjedhur Skedar > Zgjerime .
  2. Në panelin e Zgjerimeve , zgjidhni menynë me tre pika lart djathtas dhe më pas Instalo nga VSIX .
  3. Hapni skedarin e paketës .vsix që keni krijuar nga projekti juaj shtesë për ta instaluar.

Burime shtesë

Për më shumë detaje mbi kodin për këtë projekt, shihni depon e kodit Gemma Cookbook . Nëse keni nevojë për ndihmë në ndërtimin e aplikacionit ose po kërkoni të bashkëpunoni me zhvillues të tjerë, shikoni serverin Google Developers Community Discord . Për më shumë projekte Build with Google AI, shikoni listën e luajtjes së videove .