دریافت کمک کد از مدلهای هوش مصنوعی (AI) میتواند بسیار مفید باشد، اما اگر به دلیل محدودیتهای اتصال، هزینه یا امنیت دادهها، امکان استفاده از مدلهای هوش مصنوعی مولد شخص ثالث و میزبانیشده را نداشته باشید، چه؟ خانواده مدلهای Gemma گوگل برای دانلود و اجرا روی سختافزار خودتان در دسترس هستند، بنابراین میتوانید همه چیز را محلی نگه دارید و حتی میتوانید مدل را طوری تنظیم کنید که با کدبیس شما بهتر کار کند.
اجرای نمونهی خودتان از Gemma یا CodeGemma میتواند به شما در کدنویسی هوش مصنوعی با تأخیر کم، در دسترس بودن بالا، هزینهی بالقوه کمتر و امکان نگهداری تمام دادههای کدنویسیتان در شبکهی خودتان کمک کند. این پروژه به شما نشان میدهد که چگونه سرویس وب خودتان را برای میزبانی Gemma و اتصال آن به یک افزونهی Microsoft Visual Studio Code راهاندازی کنید تا استفاده از مدل در حین کدنویسی راحتتر شود. این پروژه شامل دو زیرپروژه است: یک پروژه برای راهاندازی و قرار دادن Gemma در یک سرویس وب، و پروژهی دوم برای یک افزونهی VS Code که به سرویس وب متصل شده و از آن استفاده میکند.
برای مشاهدهی ویدیویی از این پروژه و نحوهی گسترش آن، شامل بینشهایی از افرادی که آن را ساختهاند، ویدیوی « دستیار کد هوش مصنوعی شخصی برای ساخت با هوش مصنوعی گوگل» را ببینید. همچنین میتوانید کد این پروژه را در مخزن کد کتاب آشپزی Gemma بررسی کنید. در غیر این صورت، میتوانید با استفاده از دستورالعملهای زیر، گسترش پروژه را شروع کنید.
نمای کلی
این آموزش به شما نشان میدهد که چگونه دو پروژه را راهاندازی و گسترش دهید: یک سرویس وب برای Gemma و یک افزونه VS Code برای استفاده در آن سرویس. این سرویس وب از کتابخانههای پایتون، Keras، JAX و FastAPI برای ارائه مدل Gemma و مدیریت درخواستها استفاده میکند. افزونه VS Code که Pipet نام دارد، دستوراتی را به Command Palette اضافه میکند که به شما امکان میدهد با انتخاب کد، متن یا نظرات در یک پنجره ویرایش کد، همانطور که در شکل 1 نشان داده شده است، درخواستهایی را به سرویس وب Gemma ارسال کنید.

شکل ۱. رابط کاربری دستور Project برای افزونه Pipet در Visual Studio Code
کد منبع کامل هر دو پروژه در مخزن کد Gemma Cookbook ارائه شده است و میتوانید هر دو پروژه را برای انطباق با نیازها و گردش کار ترجیحی خود گسترش دهید.
راهاندازی پروژه
این دستورالعملها شما را در آمادهسازی این پروژه برای توسعه و آزمایش راهنمایی میکنند. مراحل کلی راهاندازی شامل نصب نرمافزارهای پیشنیاز، کپی کردن پروژه از مخزن کد، تنظیم چند متغیر محیطی، نصب کتابخانههای پایتون و Node.js و آزمایش برنامه وب است.
نصب نرمافزارهای مورد نیاز
این پروژه از پایتون ۳، محیطهای مجازی ( venv )، Node.js و مدیریت بستههای نود ( npm ) برای مدیریت بستهها و اجرای دو پروژه استفاده میکند.
برای نصب نرمافزارهای مورد نیاز:
پایتون ۳، بسته محیط مجازی (
venv) برای پایتون، Node.js و مدیر بسته Node.js (npm) را نصب کنید:sudo apt update sudo apt install git pip python3-venv nodejs npm
پروژه را کلون کنید
کد پروژه را روی کامپیوتر توسعهدهنده خود دانلود کنید. برای بازیابی کد منبع پروژه به نرمافزار کنترل منبع گیت نیاز دارید.
برای دانلود کد پروژه:
مخزن git را با استفاده از دستور زیر کلون کنید:
git clone https://github.com/google-gemini/gemma-cookbook.gitاختیاری: مخزن گیت محلی خود را طوری پیکربندی کنید که از پرداخت پراکنده استفاده کند، تا فقط فایلهای پروژه را داشته باشید:
cd gemma-cookbook/ git sparse-checkout set Demos/personal-code-assistant/ git sparse-checkout init --cone
پروژه وب سرویس جما
بخش وب سرویس این پروژه ( gemma-web-service ) یک نمونه مستقل از Gemma 2 2B ایجاد میکند که با یک وب سرویس پایه برای مدیریت درخواستها و پاسخهای تولید، پوشانده شده است. افزونه VS Code که در ادامه این آموزش به آن پرداخته خواهد شد، به این سرویس متصل میشود تا درخواستهای کمک در کدنویسی را مدیریت کند.
این دستورالعملها شما را در آمادهسازی این پروژه برای توسعه و آزمایش راهنمایی میکنند. مراحل کلی راهاندازی شامل نصب نرمافزارهای پیشنیاز، کپی کردن پروژه از مخزن کد، تنظیم چند متغیر محیطی، نصب کتابخانههای پایتون و آزمایش سرویس وب است.
الزامات سختافزاری
پروژه سرویس وب Gemma را روی کامپیوتری با واحد پردازش گرافیکی (GPU) یا واحد پردازش Tensor (TPU) و حافظه GPU یا TPU کافی برای نگهداری مدل اجرا کنید. برای اجرای پیکربندی Gemma 2 2B در این پروژه سرویس وب، به حدود ۱۶ گیگابایت حافظه GPU، تقریباً به همان مقدار رم معمولی و حداقل ۲۰ گیگابایت فضای دیسک نیاز دارید.
اگر پروژه سرویس وب Gemma را روی یک نمونه ماشین مجازی ابری گوگل (Google Cloud VM) مستقر میکنید، نمونه را با توجه به الزامات زیر پیکربندی کنید:
- سختافزار پردازنده گرافیکی : برای اجرای این پروژه به یک کارت گرافیک NVIDIA T4 نیاز است (NVIDIA L4 یا بالاتر توصیه میشود)
- سیستم عامل : گزینه Deep Learning on Linux ، به ویژه Deep Learning VM با CUDA 12.3 M124 به همراه درایورهای نرمافزار GPU از پیش نصب شده را انتخاب کنید.
- اندازه دیسک بوت : حداقل 20 گیگابایت فضای دیسک برای دادهها، مدل و نرمافزارهای پشتیبانی خود در نظر بگیرید.
پیکربندی پروژه
این پروژه از پایتون ۳ و محیطهای مجازی ( venv ) برای مدیریت بستهها و اجرای سرویس وب استفاده میکند. کتابخانههای پایتون را با فعال کردن محیط مجازی پایتون venv برای مدیریت بستهها و وابستگیهای پایتون نصب کنید. قبل از نصب کتابخانههای پایتون با اسکریپت setup_python یا با نصبکننده pip ، مطمئن شوید که محیط مجازی پایتون را فعال کردهاید. برای اطلاعات بیشتر در مورد استفاده از محیطهای مجازی پایتون، به مستندات پایتون venv مراجعه کنید.
برای نصب کتابخانههای پایتون:
در یک پنجره ترمینال، به دایرکتوری
gemma-web-serviceبروید:cd Demos/personal-code-assistant/gemma-web-service/یک محیط مجازی پایتون (venv) را برای این پروژه پیکربندی و فعال کنید:
python3 -m venv venv source venv/bin/activateکتابخانههای پایتون مورد نیاز برای این پروژه را با استفاده از اسکریپت
setup_pythonنصب کنید:./setup_python.sh
تنظیم متغیرهای محیطی
این پروژه برای اجرا به چند متغیر محیطی، از جمله نام کاربری Kaggle و توکن API Kaggle، نیاز دارد. برای دانلود مدلهای Gemma، باید یک حساب Kaggle داشته باشید و درخواست دسترسی به آنها را بدهید. برای این پروژه، نام کاربری Kaggle و توکن API Kaggle خود را در یک فایل .env اضافه میکنید که توسط برنامه سرویس وب برای دانلود مدل استفاده میشود.
برای تنظیم متغیرهای محیطی:
- با دنبال کردن دستورالعملهای موجود در مستندات Kaggle ، نام کاربری Kaggle و توکن API خود را دریافت کنید.
- با دنبال کردن دستورالعملهای «دسترسی به 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 ایجاد میکند که برای افزودن دستورات جدید کدنویسی هوش مصنوعی طراحی شده است. این افزونه با سرویس وب Gemma که قبلاً در این آموزش توضیح داده شده است، ارتباط برقرار میکند. این افزونه با استفاده از پیامهای با فرمت JSON از طریق http با سرویسهای وب ارتباط برقرار میکند.
پیکربندی پروژه
این دستورالعملها شما را در راهاندازی پروژه Pipet Code Agent نسخه ۲ برای توسعه و آزمایش راهنمایی میکنند. مراحل کلی شامل نصب نرمافزارهای مورد نیاز، اجرای نصب پیکربندی، پیکربندی تنظیمات افزونه و آزمایش افزونه است.
نصب نرمافزارهای مورد نیاز
پروژه Pipet Code Agent به عنوان افزونهای از Microsoft Visual Studio Code اجرا میشود و از Node.js و ابزار Node Package Manager ( npm ) برای مدیریت بستهها و اجرای برنامه استفاده میکند.
برای نصب نرمافزارهای مورد نیاز:
- ویژوال استودیو کد را برای پلتفرم خود دانلود و نصب کنید.
- با دنبال کردن دستورالعملهای نصب مربوط به پلتفرم خود، مطمئن شوید که Node.js نصب شده است.
پیکربندی کتابخانههای پروژه
از ابزار خط فرمان npm برای دانلود وابستگیهای مورد نیاز و پیکربندی پروژه استفاده کنید.
برای پیکربندی کد پروژه:
به دایرکتوری ریشه پروژه Pipet Code Agent بروید.
cd Demos/personal-code-assistant/pipet-code-agent-2/دستور نصب را برای دانلود وابستگیها و پیکربندی پروژه اجرا کنید:
npm install
پیکربندی افزونه
اکنون میتوانید با اجرای Pipet Code Agent به عنوان یک افزونه توسعه در VS Code روی دستگاه خود، نصب خود را آزمایش کنید. این آزمایش یک پنجره جداگانه VS Code Extension Development Host را باز میکند که افزونه جدید در آن موجود است. در این پنجره جدید، تنظیمات مربوط به افزونهای که برای دسترسی به سرویس وب شخصی Gemma شما استفاده میشود را پیکربندی میکنید.
شکل ۲. پنجرهی میزبان توسعهی افزونهی VS Code به همراه تنظیمات افزونهی Pipet.
برای پیکربندی و آزمایش تنظیمات خود:
- برنامه VS Code را اجرا کنید.
- در VS Code، با انتخاب File > New Window یک پنجره جدید ایجاد کنید.
- پروژه Pipet Code Agent را با انتخاب File > Open Folder و انتخاب پوشه
personal-code-assistant/pipet-code-agent-2/باز کنید. - فایل
pipet-code-agent-2/src/extension.tsرا باز کنید. - با انتخاب Run > Start Debugging، افزونه را در حالت اشکالزدایی اجرا کنید و در صورت لزوم، گزینه VS Code Extension Development Host را انتخاب کنید. این مرحله یک پنجره جداگانه Extension Development Host باز میکند.
- در پنجره جدید VS Code، با انتخاب Code > Settings > Settings، تنظیمات VS Code را باز کنید.
آدرس میزبان سرور سرویس وب Gemma خود را به عنوان تنظیمات پیکربندی تنظیم کنید. در فیلد تنظیمات جستجو ،
Gemmaرا تایپ کنید، تب User را انتخاب کنید و در تنظیمات Gemma > Service: Host ، روی لینک Edit in 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 روی دستگاه خود، نصب خود را آزمایش کنید. این آزمایش یک پنجره جداگانه VS Code Extension Development Host را باز میکند که افزونه جدید در آن موجود است.
برای آزمایش دستورات افزونه:
- در پنجرهی VS Code Extension Development Host ، هر کدی را که در پنجرهی ویرایشگر وجود دارد، انتخاب کنید.
- با انتخاب View > Command Palette، پالت فرمان را باز کنید.
- در پنل دستورات، عبارت
Pipetرا تایپ کنید و یکی از دستورات با آن پیشوند را انتخاب کنید.
تغییر دستورات موجود
اصلاح دستورات ارائه شده در Pipet Code Agent سادهترین راه برای تغییر رفتار و قابلیتهای افزونه است. این اطلاعات زمینهایِ اعلان، مدل مولد Gemma را در شکلدهی پاسخ راهنمایی میکند. با تغییر دستورالعملهای اعلان در دستورات Pipet موجود، میتوانید نحوه رفتار هر یک از دستورات را تغییر دهید.
این مجموعه دستورالعملها نحوه اصلاح دستور review.ts را با تغییر متن اعلان دستور توضیح میدهد.
برای آماده شدن جهت ویرایش دستور review.ts :
- برنامه VS Code را اجرا کنید.
- در VS Code، با انتخاب File > New Window یک پنجره جدید ایجاد کنید.
- پروژه Pipet Code Agent را با انتخاب File > Open Folder و انتخاب پوشه
pipet-code-agent/باز کنید. - فایل
pipet-code-agent/src/review.tsرا باز کنید.
برای تغییر رفتار دستور review.ts :
در فایل
review.ts، خط دوم تا آخر ثابتPROMPT_INSTRUCTIONSرا به add تغییر دهید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ذخیره کنید.
برای آزمایش دستور اصلاحشده:
- در پنجره پروژه افزونه VS Code Pipet خود، فایل
src/extension.tsرا باز کنید. - با انتخاب Terminal > Run Build Task... و سپس گزینه npm:compile، کد بهروزرسانیشده را بسازید.
- با انتخاب Run > Restart Debugging، دیباگر را مجدداً راهاندازی کنید.
- در پنجرهی VS Code Extension Development Host ، هر کدی را که در پنجرهی ویرایشگر وجود دارد، انتخاب کنید.
- با انتخاب View > Command Palette، پالت فرمان را باز کنید.
- در پالت فرمان،
Pipetرا تایپ کنید و Pipet را انتخاب کنید: دستور کد انتخاب شده را مرور کنید .
ایجاد دستورات جدید
شما میتوانید 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}`;کد درج پاسخ را طوری تغییر دهید که شامل پاسخ و کد قالبی باشد.
// 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 جدید، فایل کد جدید را به افزونه اضافه کنید.
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ذخیره کنید.
دستور جدید را آزمایش کنید
پس از اتمام کدنویسی دستور و ادغام آن با افزونه، میتوانید آن را آزمایش کنید. دستور جدید شما فقط در پنجره VS Code Extension Development Host در دسترس است و در پنجره VS Code که کد افزونه را ویرایش کردهاید، قابل دسترسی نیست .
برای آزمایش دستور اصلاحشده:
- در پنجره پروژه افزونه VS Code Pipet خود، فایل
src/extension.tsرا باز کنید. - با انتخاب Terminal > Run Build Task... و سپس گزینه npm:compile، کد بهروزرسانیشده را بسازید.
- در پنجره پروژه افزونه VS Code Pipet خود، با انتخاب Run > Restart Debugging ، اشکالزدا را مجدداً راهاندازی کنید، که یک پنجره جداگانه Extension Development Host را مجدداً راهاندازی میکند.
- در پنجرهی VS Code Extension Development Host ، بخشی از کد را در پنجرهی ویرایشگر انتخاب کنید.
- با انتخاب View > Command Palette، پالت فرمان را باز کنید.
- در پالت فرمان، عبارت
Pipetرا تایپ کنید و دستور Pipet: Generate a FastAPI service را انتخاب کنید.
شما اکنون یک دستور افزونه VS Code ساختهاید که با یک مدل هوش مصنوعی Gemma کار میکند! سعی کنید با دستورها و دستورالعملهای مختلف آزمایش کنید تا یک گردش کار توسعه کد با کمک هوش مصنوعی بسازید که برای شما مفید باشد!
بستهبندی و نصب افزونه
شما میتوانید افزونه خود را به عنوان یک فایل .vsix برای نصب محلی در نمونه VS Code خود بستهبندی کنید. از ابزار خط فرمان vsce برای تولید یک فایل بسته .vsix از پروژه افزونه خود استفاده کنید که میتوانید آن را در نمونه VS Code خود نصب کنید. برای جزئیات بیشتر در مورد بستهبندی افزونه خود، به مستندات VS Code Publishing Extensions مراجعه کنید. هنگامی که بستهبندی افزونه خود را به عنوان یک فایل VSIX تکمیل کردید، میتوانید آن را به صورت دستی در VS Code نصب کنید.
برای نصب افزونهی بستهبندیشدهی VSIX:
- در نمونهی VS Code خود، با انتخاب File > Extensions، پنل Extensions را باز کنید.
- در پنل افزونهها ، منوی سه نقطه در بالا سمت راست و سپس Install from VSIX را انتخاب کنید.
- فایل بسته
.vsixرا که از پروژه افزونه خود ایجاد کردهاید، برای نصب آن باز کنید.
منابع اضافی
برای جزئیات بیشتر در مورد کد این پروژه، به مخزن کد Gemma Cookbook مراجعه کنید. اگر برای ساخت برنامه به کمک نیاز دارید یا به دنبال همکاری با سایر توسعهدهندگان هستید، به سرور Discord انجمن توسعهدهندگان گوگل مراجعه کنید. برای پروژههای بیشتر Build with Google AI، به لیست پخش ویدیو مراجعه کنید.