1. بررسی اجمالی
استقرار یک برنامه وب برای اولین بار می تواند ترسناک باشد. حتی پس از اولین استقرار، اگر فرآیند کار زیاد باشد، ممکن است از استقرار نسخههای جدید برنامه خود اجتناب کنید. با استقرار مداوم، می توانید به راحتی تغییرات برنامه خود را به طور خودکار اجرا کنید.
در این آزمایشگاه، شما یک برنامه وب می نویسید و Cloud Run را پیکربندی می کنید تا زمانی که تغییری در کد منبع برنامه شما ایجاد می شود، برنامه شما به طور خودکار اجرا شود. سپس برنامه خود را تغییر داده و دوباره آن را مستقر می کنید.
آنچه خواهید آموخت
- با Cloud Shell Editor یک برنامه وب بنویسید
- کد برنامه خود را در GitHub ذخیره کنید
- به طور خودکار برنامه خود را در Cloud Run مستقر کنید
- با استفاده از Vertex AI هوش مصنوعی مولد را به برنامه خود اضافه کنید
2. پیش نیازها
- اگر قبلاً یک حساب Google ندارید، باید یک حساب Google ایجاد کنید .
- از حساب شخصی به جای حساب کاری یا مدرسه استفاده کنید. حسابهای محل کار و مدرسه ممکن است محدودیتهایی داشته باشند که شما را از فعال کردن APIهای مورد نیاز برای این آزمایشگاه باز میدارد.
- اگر قبلاً یک حساب GitHub ندارید، باید یک حساب GitHub ایجاد کنید
- در صورت داشتن یک حساب کاربری GitHub موجود استفاده کنید. GitHub به احتمال زیاد یک حساب جدید را به عنوان هرزنامه مسدود می کند.
- احراز هویت دو مرحلهای را در حساب GitHub خود پیکربندی کنید تا احتمال علامتگذاری حسابتان بهعنوان هرزنامه را کاهش دهید.
3. راه اندازی پروژه
- به Google Cloud Console وارد شوید.
- صورتحساب را در کنسول Cloud فعال کنید .
- تکمیل این آزمایشگاه باید کمتر از 1 دلار آمریکا در منابع Cloud هزینه داشته باشد.
- برای جلوگیری از هزینه های بیشتر، می توانید مراحل انتهای این آزمایشگاه را برای حذف منابع دنبال کنید.
- کاربران جدید واجد شرایط استفاده از نسخه آزمایشی رایگان 300 دلاری هستند.
- در رویداد Gen AI for Devs شرکت می کنید؟ اعتبار 1 دلاری ممکن است در دسترس باشد.
- یک پروژه جدید ایجاد کنید یا استفاده مجدد از یک پروژه موجود را انتخاب کنید.
4. Cloud Shell Editor را باز کنید
- به Cloud Shell Editor بروید
- اگر ترمینال در پایین صفحه ظاهر نشد، آن را باز کنید:
- روی منوی همبرگر کلیک کنید
- روی ترمینال کلیک کنید
- روی New Terminal کلیک کنید
- در ترمینال، پروژه خود را با این دستور تنظیم کنید:
- قالب:
gcloud config set project [PROJECT_ID]
- مثال:
gcloud config set project lab-project-id-example
- اگر نمی توانید شناسه پروژه خود را به خاطر بسپارید:
- می توانید تمام شناسه های پروژه خود را با موارد زیر فهرست کنید:
gcloud projects list | awk '/PROJECT_ID/{print $2}'
- می توانید تمام شناسه های پروژه خود را با موارد زیر فهرست کنید:
- قالب:
- اگر از شما خواسته شد که مجوز دهید، برای ادامه روی تأیید کلیک کنید.
- شما باید این پیام را ببینید:
اگر یکUpdated property [core/project].
WARNING
مشاهده کردید و از شما پرسیده شدDo you want to continue (Y/N)?
، پس احتمالاً شناسه پروژه را اشتباه وارد کرده اید.N
را فشار دهید،Enter
فشار دهید و دوباره دستورgcloud config set project
را اجرا کنید.
5. API ها را فعال کنید
در ترمینال، API ها را فعال کنید:
gcloud services enable \
run.googleapis.com \
cloudbuild.googleapis.com \
aiplatform.googleapis.com
تکمیل این دستور ممکن است چند دقیقه طول بکشد، اما در نهایت باید یک پیام موفقیت آمیز مشابه این پیام تولید کند:
Operation "operations/acf.p2-73d90d00-47ee-447a-b600" finished successfully.
6. Git را پیکربندی کنید
- ایمیل کاربر git جهانی خود را تنظیم کنید:
git config --global user.email "you@example.com"
- نام کاربری git جهانی خود را تنظیم کنید:
git config --global user.name "Your Name"
- شاخه پیشفرض global git خود را روی
main
قرار دهید:git config --global init.defaultBranch main
7. کد خود را بنویسید
برای نوشتن برنامه در Go:
- به فهرست اصلی بروید:
cd ~
- پوشه
codelab-genai
را ایجاد کنید:mkdir codelab-genai
- به دایرکتوری
codelab-genai
بروید:cd codelab-genai
- یک فایل go.mod را راه اندازی کنید تا ماژول خود را اعلام کنیم:
go mod init codelab-genai
- یک فایل
main.go
ایجاد کنید:touch main.go
- فایل
main.go
را در Cloud Shell Editor باز کنید: اکنون باید یک فایل خالی در قسمت بالای صفحه ظاهر شود. اینجاست که می توانید این فایلcloudshell edit main.go
main.go
را ویرایش کنید. -
main.go
ویرایش کنید و کد زیر را در آن قرار دهید: پس از چند ثانیه، Cloud Shell Editor کد شما را به صورت خودکار ذخیره می کند. این کد به درخواست های http با "سلام جهان!" ما پاسخ می دهد. احوالپرسی.package main import ( "fmt" "log" "net/http" "os" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintln(w, "Hello, world!") }) port := os.Getenv("PORT") if port == "" { port = "8080" } if err := http.ListenAndServe(":"+port, nil); err != nil { log.Fatal(err) } }
کد اولیه برنامه شما به پایان رسیده و آماده ذخیره در نسخه کنترل است.
8. یک مخزن ایجاد کنید
- به ترمینال Cloud Shell در پایین صفحه خود بازگردید.
- مطمئن شوید که هنوز در دایرکتوری صحیح هستید:
cd ~/codelab-genai
- مخزن git خود را راه اندازی کنید
git init -b main
- وارد GitHub CLI شوید
gh auth login
Enter
فشار دهید تا گزینه های پیش فرض را بپذیرید و دستورالعمل های موجود در ابزار GitHub CLI را دنبال کنید، از جمله:- به چه حسابی می خواهید وارد شوید؟
GitHub.com
- پروتکل ترجیحی شما برای عملیات Git در این میزبان چیست؟
HTTPS
- Git را با اعتبار GitHub خود تأیید کنید؟
Y
(اگر این مورد نشان داده نشد از آن بگذرید.) - چگونه می خواهید GitHub CLI را احراز هویت کنید؟
Login with a web browser
- کد یکبار مصرف خود را کپی کنید
- https://github.com/login/device را باز کنید
- کد یکبار مصرف خود را جایگذاری کنید
- روی Authorize github کلیک کنید
- ورود خود را کامل کنید
- به چه حسابی می خواهید وارد شوید؟
- تایید کنید که وارد سیستم شده اید:
اگر با موفقیت وارد سیستم شده اید، این باید نام کاربری GitHub شما را خروجی کند.gh api user -q ".login"
- یک متغیر
GITHUB_USERNAME
ایجاد کنیدGITHUB_USERNAME=$(gh api user -q ".login")
- تأیید کنید که متغیر محیطی را ایجاد کرده اید:
اگر متغیر را با موفقیت ایجاد کرده اید، باید نام کاربری GitHub شما را خروجی کند.echo ${GITHUB_USERNAME}
- یک مخزن خالی GitHub با نام
codelab-genai
ایجاد کنید: اگر خطا را دریافت کردید:gh repo create codelab-genai --private
سپس شما از قبل یک مخزن به نامGraphQL: Name already exists on this account (createRepository)
codelab-genai
دارید. برای ادامه این آموزش دو گزینه دارید:- مخزن GitHub موجود را حذف کنید
- یک مخزن با نام دیگری ایجاد کنید و به یاد داشته باشید که آن را در دستورات زیر تغییر دهید.
- مخزن
codelab-genai
را به عنوانorigin
راه دور اضافه کنید:git remote add origin https://github.com/${GITHUB_USERNAME}/codelab-genai
9. کد خود را به اشتراک بگذارید
- تأیید کنید که در دایرکتوری صحیح هستید:
cd ~/codelab-genai
- تمام فایل های موجود در فهرست فعلی را به این commit اضافه کنید:
git add .
- اولین commit را ایجاد کنید:
git commit -m "add http server"
- commit خود را به شاخه
main
مخزنorigin
فشار دهید:git push -u origin main
میتوانید این دستور را اجرا کنید و از URL حاصل بازدید کنید تا کد برنامه خود را در GitHub مشاهده کنید:
echo -e "\n\nTo see your code, visit this URL:\n \
https://github.com/${GITHUB_USERNAME}/codelab-genai/blob/main/main.go \n\n"
10. استقرار خودکار را تنظیم کنید
- برگه Cloud Shell Editor را باز بگذارید. بعداً به این برگه باز خواهیم گشت.
- در یک تب جدید، از صفحه Cloud Run دیدن کنید
- Google Cloud Project صحیح را در کنسول انتخاب کنید
- روی CONNECT REPO کلیک کنید
- روی SET UP WITH CLOUD BUILD کلیک کنید
- GitHub را به عنوان ارائه دهنده مخزن انتخاب کنید
- اگر به حساب GitHub خود در مرورگر وارد نشده اید، با اطلاعات کاربری خود وارد شوید.
- روی Authenticate و سپس Continue کلیک کنید.
- پس از ورود به سیستم، پیامی را در صفحه Cloud Run مشاهده خواهید کرد مبنی بر اینکه برنامه GitHub در هیچ یک از مخازن شما نصب نشده است.
- روی دکمه INSTALL GOOGLE CLOUD BUILD کلیک کنید.
- در صفحه راه اندازی نصب، فقط مخازن را انتخاب کنید و مخزن codelab-genai را که از طریق CLI ایجاد کرده اید انتخاب کنید.
- بر روی Install کلیک کنید
- توجه: اگر تعداد زیادی مخزن GitHub دارید، بارگیری آن ممکن است چند دقیقه طول بکشد.
-
your-user-name/codelab-genai
به عنوان مخزن انتخاب کنید- اگر مخزن موجود نیست، روی پیوند Manage Connected Repositories کلیک کنید.
- شعبه را به عنوان
^main$
ترک کنید - روی Go، Node.js، Python، Java، NET Core، Ruby یا PHP از طریق بستههای ساخت Google Cloud کلیک کنید.
- فیلدهای دیگر (
Build context directory
،Entrypoint
وFunction target
) را به همان شکلی که هستند رها کنید.
- فیلدهای دیگر (
- روی ذخیره کلیک کنید
- GitHub را به عنوان ارائه دهنده مخزن انتخاب کنید
- به سمت پایین اسکرول کنید تا به Authentication بروید
- روی اجازه دادن به فراخوانهای احراز هویت نشده کلیک کنید
- روی CREATE کلیک کنید
پس از اتمام ساخت (که چند دقیقه طول می کشد)، این دستور را اجرا کنید و برای مشاهده برنامه در حال اجرا خود، به URL حاصل مراجعه کنید:
echo -e "\n\nOnce the build finishes, visit your live application:\n \
"$( \
gcloud run services list | \
grep codelab-genai | \
awk '/URL/{print $2}' | \
head -1 \
)" \n\n"
11. کد خود را تغییر دهید
- به ترمینال Cloud Shell در پایین صفحه خود بازگردید.
- مطمئن شوید که هنوز در دایرکتوری صحیح هستید:
cd ~/codelab-genai
-
main.go
در ویرایشگر Cloud Shell دوباره باز کنیدcloudshell edit main.go
- Vertex AI SDK for Go را نصب کنید:
go get cloud.google.com/go/vertexai/genai
- برای دریافت شناسه پروژه فعلی، کتابخانه فراداده را برای Go نصب کنید:
go get cloud.google.com/go/compute/metadata
- کد را در فایل
main.go
خود جایگزین کنید:package main import ( "context" "fmt" "log" "net/http" "os" "cloud.google.com/go/compute/metadata" "cloud.google.com/go/vertexai/genai" ) func main() { ctx := context.Background() var projectId string var err error projectId = os.Getenv("GOOGLE_CLOUD_PROJECT") if projectId == "" { projectId, err = metadata.ProjectIDWithContext(ctx) if err != nil { return } } var client *genai.Client client, err = genai.NewClient(ctx, projectId, "us-central1") if err != nil { return } defer client.Close() model := client.GenerativeModel("gemini-1.5-flash-001") http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { animal := r.URL.Query().Get("animal") if animal == "" { animal = "dog" } resp, err := model.GenerateContent( ctx, genai.Text( fmt.Sprintf("Give me 10 fun facts about %s. Return the results as HTML without markdown backticks.", animal)), ) if err != nil { w.WriteHeader(http.StatusServiceUnavailable) return } if len(resp.Candidates) > 0 && len(resp.Candidates[0].Content.Parts) > 0 { htmlContent := resp.Candidates[0].Content.Parts[0] w.Header().Set("Content-Type", "text/html; charset=utf-8") fmt.Fprint(w, htmlContent) } }) port := os.Getenv("PORT") if port == "" { port = "8080" } if err := http.ListenAndServe(":"+port, nil); err != nil { log.Fatal(err) } }
12. استقرار مجدد
- مطمئن شوید که هنوز در دایرکتوری صحیح در Cloud Shell هستید:
cd ~/codelab-genai
- این دستورات را اجرا کنید تا نسخه جدیدی از برنامه خود را به مخزن git محلی خود اختصاص دهید:
git add . git commit -m "add latest changes"
- تغییرات را به GitHub فشار دهید:
git push
- پس از اتمام ساخت، این دستور را اجرا کنید و از برنامه مستقر شده خود بازدید کنید:
echo -e "\n\nOnce the build finishes, visit your live application:\n \ "$( \ gcloud run services list | \ grep codelab-genai | \ awk '/URL/{print $2}' | \ head -1 \ )" \n\n"
ممکن است چند دقیقه طول بکشد تا ساخت تمام شود تا بتوانید تغییرات خود را ببینید.
میتوانید تاریخچه همه ویرایشها را در اینجا ببینید: https://console.cloud.google.com/run/detail/us-central1/codelab-genai/revisions
13. (اختیاری) استفاده از Vertex AI خود را بررسی کنید
مانند سایر سرویسهای Google Cloud، میتوانید عملیات Vertex AI را بررسی کنید . گزارش های حسابرسی به شما کمک می کند به سؤالات «چه کسی، کجا و چه زمانی انجام داد؟» پاسخ دهید. گزارش های حسابرسی اداری برای Vertex AI به طور پیش فرض فعال هستند. برای بررسی درخواستها برای تولید محتوا، باید برای فعال کردن گزارشهای حسابرسی دسترسی به دادهها :
- در کنسول Google Cloud، به صفحه Audit Logs بروید:
اگر از نوار جستجو برای یافتن این صفحه استفاده می کنید، نتیجه ای را انتخاب کنید که زیر عنوان آن IAM & Admin است. - مطمئن شوید که پروژه Google Cloud موجود جایی است که برنامه Cloud Run خود را در آن ایجاد می کنید.
- در جدول پیکربندی گزارش های حسابرسی داده دسترسی ،
Vertex AI API
از ستون Service پیدا کنید. - در برگه Log Types ، انواع گزارش حسابرسی دسترسی به داده ها را
Admin read
وData read
انتخاب کنید. - روی ذخیره کلیک کنید.
پس از فعال کردن آن، می توانید گزارش های حسابرسی را برای هر فراخوانی برنامه مشاهده کنید. برای مشاهده گزارش های حسابرسی با جزئیات فراخوانی موارد زیر را انجام دهید:
- به برنامه مستقر شده خود برگردید و صفحه را بازخوانی کنید تا گزارش فعال شود.
- در کنسول Google Cloud، به صفحه Log Explorer بروید:
- در پنجره پرس و جو تایپ کنید:
LOG_ID("cloudaudit.googleapis.com%2Fdata_access") protoPayload.serviceName="aiplatform.googleapis.com"
- روی Run query کلیک کنید.
گزارشهای حسابرسی استفاده از Vertex AI API را نشان میدهند، اما به شما اجازه نمیدهند دادههای مربوط به حجم کاری مانند درخواستها یا جزئیات پاسخ را مشاهده کنید.
14. (اختیاری) قابلیت مشاهده بار کاری هوش مصنوعی خود را افزایش دهید
گزارشهای حسابرسی اطلاعات مربوط به حجم کاری را دریافت نمیکنند. به منظور افزایش قابلیت مشاهده بارهای کاری خود، باید به صراحت این اطلاعات را ثبت کنید. برای این کار می توانید از چارچوب لاگ مورد علاقه خود استفاده کنید. مراحل زیر یکی از راههای انجام آن را با استفاده از کتابخانه گزارشدهی ساختاریافته Go نشان میدهد.
-
main.go
در ویرایشگر Cloud Shell دوباره باز کنیدcloudshell edit ~/codelab-genai/main.go
- بلوک واردات خود را تغییر دهید تا شامل لاگ ساختار یافته Go و کتابخانه های JSON باشد:
import ( "context" "encoding/json" "fmt" "log" "log/slog" "net/http" "os" "cloud.google.com/go/compute/metadata" "cloud.google.com/go/vertexai/genai" )
- پس از مقداردهی اولیه کلاینت Vertex خود (خط 33)، خطوط زیر را برای مقداردهی اولیه یک لاگر ساختاری که از فیلدهای مناسب برای Google Cloud Logging استفاده می کند، اضافه کنید:
opts := &slog.HandlerOptions{ Level: slog.LevelDebug, ReplaceAttr: func(group []string, a slog.Attr) slog.Attr { if a.Key == slog.LevelKey { return slog.Attr{Key: "severity", Value: a.Value} } if a.Key == slog.MessageKey { return slog.Attr{Key: "message", Value: a.Value} } return slog.Attr{Key: a.Key, Value: a.Value} }, } jsonHandler := slog.NewJSONHandler(os.Stdout, opts) slog.SetDefault(slog.New(jsonHandler))
- پس از بررسی پاسخ
GenerateContent
(خط 69) خطوط زیر را در داخل بلوک if اضافه کنید: این کد درjsonBytes, err := json.Marshal(resp) if err != nil { slog.Error("Failed to marshal response to JSON", "error", err) } else { jsonString := string(jsonBytes) slog.Debug("Complete response content", "json_response", jsonString) }
stdout
اطلاعات مربوط به محتوای تولید شده را با استفاده از فرمت ثبت ساختار یافته می نویسد. یک عامل ورود به سیستم در Cloud Run خروجی چاپ شده درstdout
را می گیرد و این قالب را در Cloud Logging می نویسد . - دوباره Cloud Shell را باز کنید و دستور زیر را تایپ کنید تا مطمئن شوید که در دایرکتوری صحیح قرار دارید:
cd ~/codelab-genai
- تغییرات را انجام دهید:
git commit -am "Observe generated content"
- تغییرات را به GitHub فشار دهید تا استقرار مجدد نسخه اصلاح شده را آغاز کنید:
git push
پس از استقرار نسخه جدید، می توانید اطلاعات اشکال زدایی را در مورد تماس های Vertex AI مشاهده کنید.
برای مشاهده لاگ های برنامه خود به صورت زیر عمل کنید:
- در کنسول Google Cloud، به صفحه Log Explorer بروید:
- در پنجره پرس و جو تایپ کنید:
LOG_ID("run.googleapis.com%2Fstdout") severity=DEBUG
- روی Run query کلیک کنید.
نتیجه پرس و جو گزارش هایی را با پاسخ سریع و Vertex AI از جمله "رتبه بندی ایمنی" نشان می دهد که می تواند برای نظارت بر اقدامات ایمنی استفاده شود.
15. (اختیاری) پاکسازی کنید
در حالی که Cloud Run زمانی که از سرویس استفاده نمیشود شارژ نمیشود، ممکن است همچنان برای ذخیره تصویر ظرف در Artifact Registry هزینه دریافت کنید. برای جلوگیری از تحمیل هزینه، می توانید پروژه Cloud خود را حذف کنید. با حذف پروژه Cloud، صورتحساب تمام منابع مورد استفاده در آن پروژه متوقف میشود.
در صورت تمایل پروژه را حذف کنید:
gcloud projects delete $GOOGLE_CLOUD_PROJECT
همچنین ممکن است بخواهید منابع غیر ضروری را از دیسک پوسته ابری خود حذف کنید. شما می توانید:
- دایرکتوری پروژه codelab را حذف کنید:
rm -rf ~/codelab-genai
- بستههای go را که ممکن است دیگر به آنها نیاز نداشته باشید، پاک کنید:
cd ~ go clean -modcache
- هشدار! این عمل قابل واگرد نیست! اگر میخواهید همه چیز را در Cloud Shell خود حذف کنید تا فضا آزاد شود، میتوانید کل فهرست اصلی خود را حذف کنید . مراقب باشید هر چیزی که می خواهید نگه دارید در جای دیگری ذخیره شود.
sudo rm -rf $HOME
16. تبریک می گویم
در این آزمایشگاه، یک برنامه وب نوشتید و Cloud Run را پیکربندی کردید تا زمانی که تغییری در کد منبع برنامه شما ایجاد شد، برنامه شما به طور خودکار اجرا شود. سپس برنامه خود را تغییر دادید و دوباره آن را مستقر کردید.
اگر از این آزمایشگاه لذت بردید، میتوانید دوباره آن را در یک زبان یا چارچوب کدنویسی دیگر امتحان کنید:
اگر میخواهید برای بهبود محصولاتی که امروز با آنها کار میکنید، در یک مطالعه تحقیقاتی تجربه کاربری (UX) شرکت کنید، اینجا ثبتنام کنید .
در اینجا چند گزینه برای ادامه یادگیری وجود دارد:
- Docs: از Firebase GenKit به عنوان یک انتزاع مدل انعطافپذیر استفاده کنید که ادغام هر API مدل و استفاده از مدلهای نگهداری شده توسط جامعه را آسان میکند.
- Codelab: نحوه استقرار برنامه چت مجهز به جمینی در Cloud Run
- نحوه استفاده از فراخوانی تابع Gemini با Cloud Run
- کارگاه بر اساس تقاضا: Google Kubernetes Engine Onboard
- نحوه استفاده از Cloud Run Jobs Video Intelligence API برای پردازش صحنه به صحنه ویدیو