קבלת עזרה בכתיבת קוד ממודלים של בינה מלאכותית (AI) יכולה להיות מאוד שימושית, אבל מה קורה אם יש לכם הגבלות על שימוש במודלים של AI גנרטיבי באירוח צד שלישי בגלל בעיות בקישוריות, עלויות או הגבלות על אבטחת נתונים? אפשר להוריד את משפחת המודלים של Gemma מבית Google ולהריץ אותם על החומרה שלכם, כך שתוכלו לשמור את הכול באופן מקומי ואפילו לכוונן את המודל כדי שיפעל בצורה טובה יותר עם בסיס הקוד שלכם.
הפעלת מופע משלכם של Gemma או של CodeGemma יכולה לספק לכם עזרה בתכנות מבוסס-AI עם זמן אחזור נמוך, זמינות גבוהה, עלות נמוכה יותר ופוטנציאל לשמירה של כל נתוני התכנות ברשת שלכם. בפרויקט הזה מוסבר איך להגדיר שירות אינטרנט משלכם לאירוח של Gemma ולחיבור שלו לתוסף של Microsoft Visual Studio Code, כדי להשתמש במודל בצורה נוחה יותר במהלך כתיבת קוד. הפרויקט הזה כולל שני פרויקטים משניים: פרויקט אחד להגדרה של Gemma ולעטיפה שלה בשירות אינטרנט, ופרויקט שני לתוסף VS Code שמתחבר לשירות האינטרנט ומשתמש בו.
כדי לצפות בסרטון שמציג את הפרויקט הזה ומסביר איך להרחיב אותו, כולל תובנות של האנשים שיצרו אותו, כדאי לצפות בסרטון Personal AI Code Assistant Build with Google AI. אפשר גם לעיין בקוד של הפרויקט הזה במאגר הקוד של Gemma Cookbook. אם לא, אפשר להתחיל להרחיב את הפרויקט באמצעות ההוראות הבאות.
סקירה כללית
במדריך הזה תלמדו איך להגדיר ולהרחיב שני פרויקטים: שירות אינטרנט ל-Gemma ותוסף ל-VS Code לשימוש בשירות הזה. שירות האינטרנט משתמש בספריות Python, Keras, JAX ו-FastAPI כדי להפעיל את מודל Gemma ולטפל בבקשות. התוסף ל-VS Code, שנקרא Pipet, מוסיף פקודות ללוח הפקודות שמאפשרות לשלוח בקשות לשירות האינטרנט של Gemma. כדי לעשות זאת, בוחרים קוד, טקסט או הערות בחלון לעריכת קוד, כמו שמוצג באיור 1.
איור 1. ממשק המשתמש של פקודת הפרויקט לתוסף Pipet ב-Visual Studio Code
קוד המקור המלא של שני הפרויקטים מופיע ב-Gemma Cookbook, מאגר הקוד, ואפשר להרחיב את שני הפרויקטים כדי להתאים אותם לצרכים שלכם ולתהליך העבודה המועדף עליכם.
הגדרת הפרויקט
ההוראות האלה מפרטות איך להכין את הפרויקט לפיתוח ולבדיקה. שלבי ההגדרה הכלליים כוללים התקנה של תוכנה נדרשת, שיבוט של הפרויקט ממאגר הקוד, הגדרה של כמה משתני סביבה, התקנה של ספריות Python ו-Node.js ובדיקה של אפליקציית האינטרנט.
התקנת התוכנה הנדרשת
בפרויקט הזה נעשה שימוש ב-Python 3, בסביבות וירטואליות (venv), ב-Node.js וב-Node Package Manager (npm) כדי לנהל חבילות ולהריץ את שני הפרויקטים.
כדי להתקין את התוכנה הנדרשת:
מתקינים את Python 3, את חבילת הסביבה הווירטואלית (
venv) ל-Python, את Node.js ואת מנהל החבילות של Node.js (npm):sudo apt update sudo apt install git pip python3-venv nodejs npm
שכפול הפרויקט
מורידים את קוד הפרויקט למחשב הפיתוח. כדי לאחזר את קוד המקור של הפרויקט, צריך תוכנת בקרת גרסאות של git.
כדי להוריד את קוד הפרויקט:
משכפלים את מאגר ה-Git באמצעות הפקודה הבאה:
git clone https://github.com/google-gemini/gemma-cookbook.gitאופציונלי: מגדירים את מאגר ה-Git המקומי לשימוש ב-sparse checkout, כדי שיהיו לכם רק הקבצים של הפרויקט:
cd gemma-cookbook/ git sparse-checkout set Demos/personal-code-assistant/ git sparse-checkout init --cone
פרויקט שירות אינטרנט של Gemma
החלק של שירות האינטרנט בפרויקט הזה (gemma-web-service) יוצר מופע של Gemma 2 2B שמתארח באופן עצמאי ועטוף בשירות אינטרנט בסיסי לטיפול בבקשות ובתשובות של יצירה. התוסף של VS Code, שנסביר עליו בהמשך המדריך, מתחבר לשירות הזה כדי לטפל בבקשות לסיוע בכתיבת קוד.
ההוראות האלה מפרטות איך להכין את הפרויקט לפיתוח ולבדיקה. שלבי ההגדרה הכלליים כוללים התקנה של תוכנה נדרשת, שיבוט של הפרויקט ממאגר הקוד, הגדרה של כמה משתני סביבה, התקנה של ספריות Python ובדיקה של שירות האינטרנט.
דרישות חומרה
מריצים את פרויקט שירות האינטרנט של Gemma במחשב עם יחידת עיבוד גרפי (GPU) או יחידת עיבוד טנסור (TPU), ועם מספיק זיכרון GPU או TPU כדי להכיל את המודל. כדי להריץ את ההגדרה Gemma 2 2B בפרויקט שירות האינטרנט הזה, צריך זיכרון GPU בנפח של כ-16GB, בערך אותו נפח של זיכרון RAM רגיל, ושטח דיסק בנפח של 20GB לפחות.
אם אתם פורסים את פרויקט שירות האינטרנט של Gemma במכונה וירטואלית ב-Google Cloud, אתם צריכים להגדיר את המכונה בהתאם לדרישות הבאות:
- חומרת GPU: נדרש NVIDIA T4 כדי להריץ את הפרויקט הזה (מומלץ NVIDIA L4 ומעלה)
- מערכת הפעלה: בוחרים באפשרות Deep Learning on Linux, ובפרט באפשרות Deep Learning VM with CUDA 12.3 M124 עם מנהלי התקנים של תוכנת GPU שהותקנו מראש.
- גודל דיסק האתחול: צריך להקצות לפחות 20GB של נפח אחסון לנתונים, למודל ולתוכנה התומכת.
הגדרת הפרויקט
בפרויקט הזה נעשה שימוש ב-Python 3 ובסביבות וירטואליות (venv) כדי לנהל חבילות ולהפעיל את שירות האינטרנט. מתקינים את ספריות Python עם venv סביבה וירטואלית של Python מופעלת כדי לנהל חבילות ופריטים בקשרי תלות של Python. חשוב להפעיל את הסביבה הווירטואלית של Python לפני שמתקינים ספריות של Python באמצעות הסקריפט setup_python או באמצעות תוכנת ההתקנה pip. מידע נוסף על שימוש בסביבות וירטואליות של Python מופיע במאמר Python venv.
כדי להתקין את ספריות Python:
בחלון המסוף, נכנסים לספרייה
gemma-web-service:cd Demos/personal-code-assistant/gemma-web-service/מגדירים ומפעילים סביבה וירטואלית (venv) של Python לפרויקט הזה:
python3 -m venv venv source venv/bin/activateמתקינים את ספריות Python הנדרשות לפרויקט הזה באמצעות הסקריפט
setup_python:./setup_python.sh
הגדרה של משתני סביבה
כדי להריץ את הפרויקט הזה, צריך כמה משתני סביבה, כולל שם משתמש ב-Kaggle ואסימון Kaggle API. כדי להוריד את מודלי Gemma, צריך להיות לכם חשבון Kaggle ולבקש גישה למודלים. בפרויקט הזה, מוסיפים את שם המשתמש ב-Kaggle ואת טוקן ה-API של Kaggle בקובץ .env, שמשמש את תוכנית שירות האינטרנט להורדת המודל.
כדי להגדיר את משתני הסביבה:
- כדי לקבל את שם המשתמש שלכם ב-Kaggle ואת טוקן ה-API, פועלים לפי ההוראות במסמכי Kaggle.
- כדי לקבל גישה למודל Gemma, פועלים לפי ההוראות שבקטע קבלת גישה ל-Gemma בדף הגדרת Gemma.
יוצרים קובץ של משתני סביבה לפרויקט, על ידי יצירת קובץ טקסט
.envבמיקום הזה בעותק של הפרויקט:personal-code-assistant/gemma-web-service/.envאחרי שיוצרים את קובץ הטקסט
.env, מוסיפים לו את ההגדרות הבאות:KAGGLE_USERNAME=<YOUR_KAGGLE_USERNAME_HERE> KAGGLE_KEY=<YOUR_KAGGLE_KEY_HERE>
הרצה ובדיקה של שירות האינטרנט
אחרי שמשלימים את ההתקנה וההגדרה של הפרויקט, מריצים את אפליקציית האינטרנט כדי לוודא שההגדרה בוצעה בצורה נכונה. מומלץ לבצע את הבדיקה הזו כבדיקת בסיס לפני עריכת הפרויקט לשימוש אישי.
כדי להריץ ולבדוק את הפרויקט:
בחלון המסוף, נכנסים לספרייה
gemma-web-service:cd personal-code-assistant/gemma-web-service/מריצים את האפליקציה באמצעות הסקריפט
run_service:./run_service.shאחרי שמפעילים את שירות האינטרנט, קוד התוכנית מציג כתובת URL שדרכה אפשר לגשת לשירות. בדרך כלל הכתובת הזו היא:
http://localhost:8000/כדי לבדוק את השירות, מריצים את הסקריפט
test_post:./test/test_post.sh
אחרי שתריצו את השירות ותבדקו אותו באמצעות הסקריפט הזה, תוכלו להתחבר אליו באמצעות התוסף VS Code, כמו שמוסבר בקטע הבא של המדריך הזה.
פרויקט של תוסף VS Code
התוסף של VS Code של הפרויקט הזה (pipet-code-agent-2) יוצר תוסף תוכנה של אפליקציית Microsoft Visual Studio Code, שנועד להוסיף פקודות חדשות של AI לקידוד. התוסף הזה מתקשר עם שירות האינטרנט של Gemma שמתואר בהמשך המדריך הזה. התוסף מתקשר עם שירותי האינטרנט באמצעות HTTP, עם הודעות בפורמט JSON.
הגדרת הפרויקט
בהוראות האלה מוסבר איך להגדיר את פרויקט Pipet Code Agent v2 לפיתוח ולבדיקה. השלבים הכלליים הם התקנת התוכנה הנדרשת, הפעלת התקנת ההגדרה, הגדרת הגדרת תוסף ובדיקת התוסף.
התקנת התוכנה הנדרשת
פרויקט Pipet Code Agent פועל כתוסף של Visual Studio Code מבית מיקרוסופט, ומשתמש ב-Node.js ובכלי Node Package Manager (npm) כדי לנהל חבילות ולהריץ את האפליקציה.
כדי להתקין את התוכנה הנדרשת:
- מורידים ומתקינים את Visual Studio Code בפלטפורמה שלכם.
- מוודאים ש-Node.js מותקן על ידי ביצוע הוראות ההתקנה לפלטפורמה שלכם.
הגדרת ספריות פרויקט
משתמשים בכלי npm של שורת הפקודה כדי להוריד את התלות הנדרשת ולהגדיר את הפרויקט.
כדי להגדיר את קוד הפרויקט:
עוברים לספריית השורש של פרויקט Pipet Code Agent.
cd Demos/personal-code-assistant/pipet-code-agent-2/מריצים את פקודת ההתקנה כדי להוריד את יחסי התלות ולהגדיר את הפרויקט:
npm install
הגדרת התוסף
עכשיו אמורה להיות לכם אפשרות לבדוק את ההתקנה על ידי הפעלת Pipet Code Agent כתוסף פיתוח ב-VS Code במכשיר. הבדיקה פותחת חלון נפרד של Extension Development Host ב-VS Code, שבו התוסף החדש זמין. בחלון החדש הזה, מגדירים את ההגדרות של התוסף כדי לגשת לשירות האינטרנט האישי של Gemma.
איור 2. חלון של מארח פיתוח תוספים ב-VS Code עם ההגדרות של התוסף Pipet.
כדי להגדיר ולבדוק את ההגדרה:
- מפעילים את אפליקציית VS Code.
- ב-VS Code, יוצרים חלון חדש על ידי בחירה באפשרות קובץ > חלון חדש.
- פותחים את פרויקט Pipet Code Agent על ידי בחירה באפשרות File > Open Folder (קובץ > פתיחת תיקייה) ובחירת התיקייה
personal-code-assistant/pipet-code-agent-2/. - פותחים את הקובץ
pipet-code-agent-2/src/extension.ts. - מריצים את התוסף במצב ניפוי באגים על ידי בחירה באפשרות הפעלה > התחלת ניפוי באגים, ואם צריך, בוחרים באפשרות מארח פיתוח תוספים של VS Code. בשלב הזה ייפתח חלון נפרד של Extension Development Host.
- בחלון החדש של VS Code, פותחים את ההגדרות של VS Code על ידי בחירה באפשרות Code > Settings > Settings.
מגדירים את כתובת המארח של שרת שירות האינטרנט של Gemma כהגדרת תצורה. בשדה Search Settings (הגדרות חיפוש), מקלידים
Gemma, בוחרים בכרטיסייה User (משתמש), בהגדרה Gemma > Service: Host (Gemma > שירות: מארח), לוחצים על הקישור Edit in settings.json (עריכה ב-settings.json) ומוסיפים את כתובת המארח, כמו127.0.0.1,localhostאוmy-server.my-local-domain.com:"gemma.service.host": "your-host-address-here"שומרים את השינויים בקובץ
settings.jsonוסוגרים את כרטיסיות ההגדרות.
בדיקת התוסף
עכשיו אמורה להיות לכם אפשרות לבדוק את ההתקנה על ידי הפעלת Pipet Code Agent כתוסף פיתוח ב-VS Code במכשיר. הבדיקה פותחת חלון נפרד של Extension Development Host ב-VS Code, שבו התוסף החדש זמין.
כדי לבדוק את הפקודות של התוסף:
- בחלון Extension Development Host (מארח פיתוח התוספים) ב-VS Code, בוחרים קוד כלשהו בחלון העריכה.
- פותחים את לוח הפקודות על ידי בחירה באפשרות תצוגה > לוח הפקודות.
- ב-Command Palette, מקלידים
Pipetובוחרים אחת מהפקודות עם הקידומת הזו.
שינוי פקודות קיימות
הדרך הכי פשוטה לשנות את ההתנהגות והיכולות של התוסף היא לשנות את הפקודות שמופיעות ב-Pipet Code Agent. המידע הזה על הקשר ההנחיה עוזר למודל הגנרטיבי של Gemma ליצור תשובה. אפשר לשנות את ההתנהגות של כל אחת מהפקודות על ידי שינוי ההוראות בהנחיה בפקודות Pipet הקיימות.
בסט ההוראות הזה מוסבר איך לשנות את הפקודה review.ts על ידי שינוי טקסט ההנחיה של הפקודה.
כדי להתכונן לעריכת הפקודה review.ts:
- מפעילים את אפליקציית VS Code.
- ב-VS Code, יוצרים חלון חדש על ידי בחירה באפשרות קובץ > חלון חדש.
- פותחים את פרויקט Pipet Code Agent על ידי בחירה באפשרות File > Open Folder (קובץ > פתיחת תיקייה) ובחירת התיקייה
pipet-code-agent/. - פותחים את הקובץ
pipet-code-agent/src/review.ts.
כדי לשנות את ההתנהגות של הפקודה review.ts:
בקובץ
review.ts, משנים את השורה השנייה לפני האחרונה של הקבועPROMPT_INSTRUCTIONSכדי להוסיף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: `;שומרים את השינויים בקובץ
review.ts.
כדי לבדוק את הפקודה ששונתה:
- בחלון הפרויקט של תוסף Pipet ב-VS Code, פותחים את הקובץ
src/extension.ts. - כדי ליצור את הקוד המעודכן, בוחרים באפשרות Terminal > Run Build Task... (טרמינל > הפעלת משימת בנייה…) ואז באפשרות npm: compile (npm: קומפילציה).
- מפעילים מחדש את הכלי לניפוי באגים על ידי בחירה באפשרות הפעלה > הפעלה מחדש של ניפוי הבאגים.
- בחלון Extension Development Host (מארח פיתוח התוספים) ב-VS Code, בוחרים קוד כלשהו בחלון העריכה.
- פותחים את לוח הפקודות על ידי בחירה באפשרות תצוגה > לוח הפקודות.
- ב-Command Palette, מקלידים
Pipetובוחרים בפקודה Pipet: Review the selected code (פיפטה: בדיקת הקוד שנבחר).
יצירת פקודות חדשות
אפשר להרחיב את Pipet על ידי יצירת פקודות חדשות שמבצעות משימות חדשות לגמרי באמצעות מודל Gemma. כל קובץ פקודה, כמו comment.ts או review.ts, הוא ברובו עצמאי וכולל קוד לאיסוף טקסט מהעורך הפעיל, ליצירת הנחיה, להתחברות לשירות האינטרנט של Gemma, לשליחת הנחיה ולטיפול בתשובה.
בסט ההוראות הזה מוסבר איך ליצור פקודה חדשה באמצעות הקוד של פקודה קיימת, question.ts, כתבנית.
כדי ליצור פקודה שממליצה על שמות לפונקציות:
- יוצרים עותק של הקובץ
pipet-code-agent-2/src/question.tsבשםnew-service.tsבספרייהsrc/. - ב-VS Code, פותחים את הקובץ
src/new-service.ts. משנים את ההנחיות להנחיה בקובץ החדש על ידי עריכת הערך
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 `;מוסיפים את הטקסט הקבוע של השירות על ידי יצירת קבוע
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) `;משנים את השם של פונקציית הפקודה ל-
newService()ומעדכנים את הודעת המידע שלה.export async function newService() { vscode.window.showInformationMessage('Building new service from template...'); ...מעדכנים את קוד ההנחיה כך שיכלול את הטקסט שנבחר בעורך ואת
PROMPT_INSTRUCTIONS.// Build the full prompt using the template. const promptText = `${selectedCode}${PROMPT_INSTRUCTIONS}`;משנים את קוד הוספת התשובה כך שיכלול את התשובה ואת קוד ה-boilerplate.
// Insert answer after selection. editor.edit((editBuilder) => { editBuilder.insert(selection.end, "\n\n" + responseText); editBuilder.insert(selection.end, "\n" + BOILERPLATE_CODE); });שומרים את השינויים בקובץ
new-service.ts.
שילוב הפקודה החדשה
אחרי שמשלימים את הקוד של הפקודה החדשה, צריך לשלב אותו עם שאר התוסף. מעדכנים את הקבצים extension.ts ו-package.json כדי שהפקודה החדשה תהיה חלק מהתוסף, ומאפשרים ל-VS Code להפעיל את הפקודה החדשה.
כדי לשלב את הפקודה new-service עם קוד התוסף:
- ב-VS Code, פותחים את הקובץ
pipet-code-agent-2/src/extension.ts. מוסיפים את קובץ הקוד החדש לתוסף על ידי הוספת הצהרת ייבוא חדשה.
import { newService } from './new-service';כדי לרשום את הפקודה החדשה, מוסיפים את הקוד הבא לפונקציה
activate().export function activate(context: vscode.ExtensionContext) { ... vscode.commands.registerCommand('pipet-code-agent.newService', newService); }שומרים את השינויים בקובץ
extension.ts.
כדי לשלב את הפקודה name עם חבילת התוסף:
- ב-VS Code, פותחים את הקובץ
pipet-code-agent/package.json. מוסיפים את הפקודה החדשה לקטע
commandsבקובץ החבילה."contributes": { "commands": [ ... { "command": "pipet-code-agent.newService", "title": "Pipet: Generate a FastAPI service." } ],שומרים את השינויים בקובץ
package.json.
בדיקת הפקודה החדשה
אחרי שכותבים את הקוד של הפקודה ומשלבים אותה עם התוסף, אפשר לבדוק אותה. הפקודה החדשה זמינה רק בחלון Extension Development Host של VS Code, ולא בחלון VS Code שבו ערכתם את הקוד של התוסף.
כדי לבדוק את הפקודה ששונתה:
- בחלון הפרויקט של תוסף Pipet ב-VS Code, פותחים את הקובץ
src/extension.ts. - כדי ליצור את הקוד המעודכן, בוחרים באפשרות Terminal > Run Build Task... (טרמינל > הפעלת משימת בנייה…) ואז באפשרות npm: compile (npm: קומפילציה).
- בחלון הפרויקט של תוסף VS Code Pipet, מפעילים מחדש את ה-Debugger על ידי בחירה באפשרות Run > Restart Debugging (הפעלה > הפעלה מחדש של ניפוי הבאגים). כך מופעל מחדש חלון נפרד של Extension Development Host (מארח פיתוח תוספים).
- בחלון Extension Development Host ב-VS Code, בוחרים קוד בחלון העריכה.
- פותחים את לוח הפקודות על ידי בחירה באפשרות תצוגה > לוח הפקודות.
- ב-Command Palette (לוח הפקודות), מקלידים
Pipetובוחרים בפקודה Pipet: Generate a FastAPI service (Pipet: יצירת שירות FastAPI).
יצרתם עכשיו פקודה לתוסף VS Code שפועלת עם מודל Gemma AI! כדאי להתנסות בפקודות והוראות שונות כדי ליצור תהליך עבודה לפיתוח קוד בעזרת AI שמתאים לכם.
אריזה והתקנה של התוסף
אפשר לארוז את התוסף כקובץ .vsix להתקנה מקומית במופע VS Code. משתמשים בכלי שורת הפקודה vsce כדי ליצור קובץ חבילה .vsix מפרויקט התוסף, שאותו אפשר להתקין במופע של VS Code. פרטים על אריזת התוסף מופיעים במסמכי התיעוד של VS Code בנושא פרסום תוספים. אחרי שמסיימים לארוז את התוסף כקובץ VSIX, אפשר להתקין אותו ב-VS Code באופן ידני.
כדי להתקין את התוסף באריזת VSIX:
- במופע של VS Code, פותחים את החלונית Extensions (תוספים) על ידי בחירה באפשרות File > Extensions (קובץ > תוספים).
- בחלונית Extensions (תוספים), בוחרים בתפריט שלוש הנקודות בפינה השמאלית העליונה ואז באפשרות Install from VSIX (התקנה מ-VSIX).
- פותחים את קובץ החבילה
.vsixשיצרתם מפרויקט התוסף כדי להתקין אותו.
מקורות מידע נוספים
פרטים נוספים על הקוד של הפרויקט הזה זמינים במאגר הקוד של Gemma Cookbook. אם אתם צריכים עזרה בפיתוח האפליקציה או שאתם רוצים לשתף פעולה עם מפתחים אחרים, אתם יכולים להיכנס לשרת Google Developers Community Discord. בפלייליסט הסרטונים יש עוד פרויקטים של Build with Google AI.