Thảo luận chuyên sâu về Gemini CLI

1. Giới thiệu

be8ebdfe42ca39ac.png

Chào mọi người! Tôi là Sparky! Tôi rất vui vì bạn đã có thể tham dự. Tôi đã di chuyển từ một cụm GKE ở us-central1 để có mặt ở đây hôm nay. Chào mừng bạn đến với lớp học lập trình này.

Tôi đã dành cả cuộc đời mình để chạy qua các luồng dữ liệu của Google Cloud và tôi đã chứng kiến mọi thứ. Tôi đã thấy các bạn, những kiến trúc sư và kỹ sư, xây dựng những công trình tuyệt vời. Nhưng tôi cũng thấy bạn bị mắc kẹt trong bụi gai. Bạn biết tôi đang nói về điều gì mà! Cảm giác chuyển đổi ngữ cảnh khi bạn gỡ lỗi một nhóm trong GKE. Bạn đang chuyển đổi giữa kubectl logs, bảng điều khiển GCP để kiểm tra tình trạng của nút, IDE để xem mã nguồn đã triển khai và một thẻ trình duyệt có tài liệu chính thức của Kubernetes cho các lệnh gọi lại vòng đời của nhóm. Mỗi lần nhảy là một lần mất tập trung!

bộ công cụ phức tạp! gcloud, kubectl, terraform... mỗi loại có DSL riêng và vô số cờ. Điều này dẫn đến việc bạn phải liên tục tìm kiếm tài liệu. Bạn sẽ phải tìm kiếm một lệnh gcloud hoàn hảo với sự kết hợp phù hợp giữa các cờ --filter--format để lấy dữ liệu bạn cần. Giống như việc cố gắng tìm một loại hạt cụ thể trong một khu rừng có hàng triệu loại hạt. Và đừng bắt tôi nói về những công việc lặp đi lặp lại. Tôi thấy bạn viết cùng một Dockerfilecloudbuild.yaml cho một dịch vụ Python mới nhiều lần đến nỗi mã có lẽ đã từng thấy rồi.

Tôi sẽ cho bạn thấy một cách tốt hơn. Một lối đi bí mật xuyên qua rừng. Đó chính là mục đích của Gemini CLI!

Gemini CLI là gì?

Vậy phím tắt thần kỳ mà tôi rất hào hứng muốn giới thiệu là gì?

Hãy xem Gemini CLI là người bạn đồng hành cá nhân trên đám mây, ngay trong thiết bị của bạn. Đó là một cuộc trò chuyện, một mối quan hệ đối tác! Gemini là mô hình nhận biết ngữ cảnh. Đây là một cách nói hoa mỹ để diễn tả rằng Gemini không chỉ lắng nghe mà còn hiểu. Công cụ này có thể đọc các tệp của bạn, tìm hiểu quy ước của dự án (chẳng hạn như bạn dùng phím Tab hay dấu cách) và tìm ra việc bạn đang cố gắng làm. Giống như tôi có thể ngửi thấy những quả sồi mà bạn đang cố gắng thu thập!

Kiến trúc cấp cao (Hãy xem cơ chế hoạt động!)

Vậy tất cả những tính năng này sẽ hoạt động như thế nào? Đây là sự kết hợp hài hoà giữa một số yếu tố thú vị:

  1. Một mô hình ngôn ngữ mạnh mẽ: Đây là bộ não của Gemini! Cụ thể, đây là một mô hình đa phương thức lớn do Google huấn luyện. "Đa phương thức" có nghĩa là mô hình này không chỉ hiểu văn bản mà còn hiểu cấu trúcý nghĩa của mã. Điều này cho phép công cụ suy luận về phần mềm của bạn, chứ không chỉ đọc phần mềm.
  2. Ngữ cảnh địa phương của bạn: Đây là yếu tố quan trọng. Gemini CLI chạy dưới dạng một quy trình trên máy cục bộ của bạn, có cùng quyền với tài khoản người dùng của bạn. Điều này có nghĩa là Duet AI có thể truy cập vào hệ thống tệp của bạn để cung cấp trợ giúp theo từng dự án. Đây không phải là một dịch vụ đám mây ở nơi xa xôi đoán về mã của bạn, mà là một dịch vụ ngay bên cạnh bạn.
  3. Hệ sinh thái công cụ: Đây là cách mô hình tương tác với thế giới. Nó có một tập hợp các hàm được xác định rõ mà nó có thể gọi, chẳng hạn như read_file hoặc run_shell_command. Hãy xem đây là một API bảo mật. Mô hình này quyết định việc cần làmcông cụ cần dùng, sau đó tạo một khối tool_code để thực thi. Điều này giúp các hành động của nó có thể dự đoán và đáng tin cậy.
  4. Thực thi lệnh Shell: Đây mới là điều kỳ diệu thực sự! Bạn có thể chạy bất kỳ lệnh nào trong một trình bao con bash -c <command>. Nó ghi lại stdout, stderrexit code. Đây là một bước tiến lớn! Điều này có nghĩa là Gemini CLI có thể chạy một lệnh, kiểm tra xem lệnh đó có thất bại hay không, rồi cố gắng khắc phục dựa trên thông báo lỗi.
  5. Safety Net: Đây là phần tôi thích nhất! Trước khi khối tool_code đó được thực thi, ứng dụng CLI sẽ cho bạn thấy lệnh hoặc mã exact và yêu cầu bạn xác nhận. Đây là một quy trình kiểm tra phía máy khách, vì vậy, bạn có quyền quyết định cuối cùng trước khi bất kỳ nội dung nào ảnh hưởng đến hệ thống của bạn. Bạn luôn là người nắm quyền kiểm soát!

Đây không chỉ là một chatbot mà còn là một công cụ hỗ trợ bạn thực hiện mọi việc! Một trợ lý đắc lực trong hành trình lập trình của bạn.

Khái niệm chính: Khai báo so với mệnh lệnh

Thay đổi lớn nhất và tuyệt vời nhất là chuyển từ việc cho máy tính biết cách thực hiện một việc gì đó sang việc cho máy tính biết điều bạn muốn.

  • Bắt buộc (Cách cũ, khó khăn): Bạn phải đưa ra từng bước. Bạn phải là chuyên gia về ngôn ngữ miền cụ thể của công cụ. Ví dụ như lệnh phức tạp này:
    gcloud compute instances create my-vm --project=my-project --zone=us-central1-a --machine-type=e2-medium --image-family=debian-11 --image-project=debian-cloud --metadata-from-file startup-script=./startup.sh --tags=http-server,dev
    
    
    Ối! Nhìn xem! Bạn phải biết cú pháp cho loại máy, họ hình ảnh, siêu dữ liệu và thẻ. Nếu bỏ lỡ một phần, bạn sẽ gặp phải một lỗi khó hiểu.
  • Khai báo (Phím tắt Sparky!): Bạn chỉ cần nói nội dung bạn muốn bằng tiếng Anh đơn giản!

Create a new e2-medium VM for my web server in us-central1, run the startup.sh script, and tag it for http traffic.

Vậy là xong! Gemini sẽ phân tích cú pháp yêu cầu của bạn, liên kết yêu cầu đó với các tham số của công cụ gcloud, tìm ra cú pháp chính xác cho từng cờ và tạo ra lệnh lớn phức tạp đó cho bạn. Sau đó, hệ thống sẽ trình bày thông tin này cho bạn để bạn phê duyệt. Mục đích là để bạn có thể suy nghĩ tổng quan chứ không phải ghi nhớ cờ dòng lệnh.

Mở rộng sức mạnh của Gemini: Giới thiệu về các tiện ích CLI

Mặc dù Gemini CLI là một công cụ mạnh mẽ ngay khi xuất xưởng, nhưng tiềm năng thực sự của công cụ này chỉ được khai thác thông qua các tiện ích. Tiện ích là các gói gồm những câu lệnh, công cụ và lệnh tuỳ chỉnh giúp tăng cường chức năng của CLI, cho phép bạn điều chỉnh CLI cho phù hợp với nhu cầu và quy trình làm việc cụ thể của mình.

Tìm và cài đặt tiện ích

Gemini CLI có một hệ sinh thái ngày càng phát triển gồm các tiện ích do cả Google và nhà phát triển bên thứ ba xây dựng. Bạn có thể duyệt xem thư mục tiện ích chính thức tại geminicli.com/extensions.

Để cài đặt một tiện ích, bạn có thể sử dụng lệnh cài đặt tiện ích gemini cùng với URL của kho lưu trữ Git của tiện ích đó. Ví dụ: để cài đặt tiện ích Cloud SQL for PostgreSQL chính thức, bạn sẽ chạy:

gemini extensions install https://github.com/gemini-cli-extensions/cloud-sql-postgresql

Được rồi, nói đủ rồi! Hãy bắt tay vào làm và thử tính năng này!

2. Trước khi bắt đầu

86dffda616ab7a1d.png

Xin chào các nhà ảo thuật đám mây tương lai! Sparky luôn sẵn sàng phục vụ. Trước khi bắt đầu hành trình phiêu lưu, chúng ta cần đảm bảo môi trường hội thảo của bạn đã sẵn sàng. Hãy coi đây là bước chuẩn bị hành trang với đầy đủ công cụ và hạt sồi thần kỳ trước khi chúng ta tiến vào khu rừng. Theo dõi tôi nhé!

Nếu đã có một dự án trên Google Cloud, bạn có thể sử dụng Gemini CLI trong Google Cloud Shell vì công cụ này được cài đặt sẵn Gemini CLI. Ngoài ra, hãy làm theo các bước sau để thiết lập trên máy cục bộ.

Bước 1: Những điều kiện tiên quyết cơ bản

Mọi nhà thám hiểm giỏi đều cần có một nền tảng vững chắc. Trước khi có thể cài đặt Gemini CLI, bạn cần thiết lập sẵn một số thứ trên máy tính cục bộ.

  1. Google Cloud SDK (gcloud): Đây là bộ công cụ chính cho Google Cloud. Gemini CLI cũng là một phần của nhóm này!
  • Kiểm tra xem bạn đã cài đặt chưa: Chạy gcloud --version. Nếu thấy số phiên bản, tức là bạn đã sẵn sàng!
  • Nếu chưa cài đặt: Làm theo hướng dẫn chính thức tại cloud.google.com/sdk/docs/install.
  1. Git: Bạn cần có công cụ này để sao chép kho lưu trữ của phòng thí nghiệm thực hành.
  • Kiểm tra xem bạn đã cài đặt chưa: Chạy git --version.
  • Nếu chưa cài đặt: Bạn có thể tải Git xuống từ git-scm.com/downloads.
  1. Dự án và quy trình xác thực của GCP:
  • Đảm bảo bạn có một Dự án trên Google Cloud đã bật tính năng thanh toán. Điều này cực kỳ quan trọng!
  • Đăng nhập vào Tài khoản Google của bạn bằng cách chạy:
gcloud auth login
  • Thiết lập dự án cho phiên. Tìm mã dự án của bạn trong Bảng điều khiển GCP rồi chạy:
gcloud config set project YOUR_PROJECT_ID

(Thay YOUR_PROJECT_ID bằng mã dự án thực tế của bạn!)

  1. Node.js phiên bản 20 trở lên

Bước 2: Nhận Magic! (Cài đặt Gemini CLI)

Được rồi, sau khi nắm được những thông tin cơ bản, giờ là lúc chúng ta bắt đầu sự kiện chính! Chúng ta sẽ cài đặt Gemini CLI.

Chạy ngay lập tức bằng npx

# Using npx (no installation required)
npx https://github.com/google-gemini/gemini-cli

Cài đặt trên toàn cầu bằng npm

npm install -g @google/gemini-cli

Cài đặt trên toàn cầu bằng Homebrew (macOS/Linux)

brew install gemini-cli

Kiểm tra phiên bản Gemini

gemini --version

Bạn sẽ thấy một số phiên bản. Điều này xác nhận rằng quá trình cài đặt đã thành công.

Bước 3: Bật nguồn (Cấu hình)

Giờ đây, khi đã cài đặt Gemini CLI, chúng ta cần cấp cho công cụ này quyền truy cập vào mọi thứ. Trước tiên, hãy khởi chạy bằng cách chạy lệnh gemini trong dòng lệnh. Bạn sẽ thấy màn hình sau:

9378d804bc647191.png

Để đơn giản, bạn có thể xác thực bằng Tài khoản Google của mình. Nhờ đó, bạn có thể truy cập vào Gemini 2.5 Pro với cửa sổ ngữ cảnh 1 triệu token và tối đa 60 yêu cầu/phút và 1.000 yêu cầu/ngày mà không cần quản lý khoá API.

Nếu bạn muốn truy cập vào các mô hình cụ thể của Gemini hoặc nâng cấp lên hạn mức cao hơn khi cần, hãy sử dụng Gemini API Key làm phương thức xác thực.

Đối với các nhóm Enterprise và khối lượng công việc Sản xuất đã thiết lập Tài khoản thanh toán và Dự án trên Google, hãy sử dụng Vertex AI để tăng cường tính bảo mật và tuân thủ.

Tuỳ thuộc vào lựa chọn bạn chọn, bạn sẽ được nhắc thực hiện các bước tiếp theo để định cấu hình quy trình xác thực. Hãy tham khảo tài liệu về Gemini CLI để biết thêm thông tin chi tiết về các lựa chọn này.

Nếu bạn dự định sử dụng nền tảng Vertex AI của Google Cloud, trước tiên hãy thoát Gemini CLI bằng cách nhấn ctrl+c hai lần và thiết lập các biến môi trường bắt buộc

Bất kể phương thức xác thực của bạn là gì, bạn thường cần đặt các biến sau: GOOGLE_CLOUD_PROJECT và GOOGLE_CLOUD_LOCATION.

Cách đặt các biến này:

# Replace with your project ID and desired location (e.g., us-central1)
export GOOGLE_CLOUD_PROJECT="YOUR_PROJECT_ID"
export GOOGLE_CLOUD_LOCATION="YOUR_PROJECT_LOCATION"

Bây giờ, hãy đăng nhập vào Google Cloud:

gcloud auth application-default login

Sau khi xác thực bằng phương thức trước, hãy chạy lại Gemini CLI bằng cách chạy lệnh gemini trong thiết bị đầu cuối. Trong các lựa chọn xác thực, hãy chọn Vertex AI và bạn sẽ hoàn tất.

Bước 4: Kiểm tra Spark! (Xác minh chế độ thiết lập)

Đây là thời khắc quyết định! Hãy kiểm tra xem mọi thứ có hoạt động không. Chạy các lệnh này để đảm bảo tất cả các đèn đều có màu xanh lục.

  1. Nhập câu lệnh sau:
What is my current directory?

Gemini CLI sẽ trả lời bằng cách cho bạn biết thư mục đang hoạt động hiện tại. Thao tác này sẽ kiểm thử mô hình ngôn ngữ cốt lõi và khả năng tích hợp shell.

15a12d7b3fdd2d83.png

  1. Kiểm tra kết nối GCP:
list my gcs buckets

Nếu bạn có bất kỳ vùng lưu trữ GCS nào, thì vùng lưu trữ đó sẽ được liệt kê. Nếu không, hệ thống sẽ cho bạn biết là không có. Điều này xác nhận rằng bạn đã kết nối đúng cách với dự án GCP.

Bước 5: Thêm Siêu sức mạnh! (Cài đặt tiện ích)

Bây giờ, hãy nâng cao các chức năng của Gemini CLI bằng cách cài đặt một số tiện ích sẽ hữu ích sau này trong Lớp học.

Cloud Run

gemini extensions install https://github.com/GoogleCloudPlatform/cloud-run-mcp

Bảo mật Gemini CLI

gemini extensions install https://github.com/gemini-cli-extensions/security

gcloud

gemini extensions install https://github.com/gemini-cli-extensions/gcloud

Cloud SQL cho PostgreSQL

gemini extensions install https://github.com/gemini-cli-extensions/cloud-sql-postgresql

Nếu tất cả các lệnh đó đều hoạt động, thì bạn đã chính thức sẵn sàng tham gia hội thảo! Môi trường của bạn đã được thiết lập và bạn đã sẵn sàng bắt đầu khai phá năng suất của mình. Hẹn gặp lại bạn trong phòng thí nghiệm đầu tiên!

3. Các khái niệm cốt lõi và hoạt động tương tác với không gian làm việc tại địa phương

a7bf3a905d8e2638.png

Được rồi, bạn đã sẵn sàng bắt tay vào việc chưa? Bây giờ, chúng ta sẽ xem xét các công cụ thực tế trong bộ công cụ mới của Gemini. Tôi coi chúng là siêu năng lực của mình để khám phá và xây dựng trên đám mây! Hãy cùng tìm hiểu kỹ hơn về cách hoạt động của các chỉ số này.

Các khả năng cốt lõi

Tôi chia các năng lực của mình thành 2 nhóm: xem xét những gì đang diễn ra và thực sự làm việc!

Tìm hiểu về môi trường xung quanh (Siêu giác quan của tôi!)

Trước khi bắt đầu xây tổ mới, bạn phải kiểm tra cây, đúng không? Đây là những công cụ giúp bạn nắm bắt thông tin tổng quan.

  • list_directory: Đây là công cụ "đánh hơi" cơ bản của tôi. Đây là một trình bao bọc đơn giản cho danh sách thư mục tiêu chuẩn ở cấp hệ điều hành. Nhưng điều thú vị là mô hình này có thể phân tích cú pháp đầu ra có cấu trúc này để đưa ra quyết định, chẳng hạn như chọn khám phá một thư mục con có tên là src.
  • glob: Đây là "công cụ tìm hạt sồi" của tôi! Công cụ này sử dụng các mẫu glob tiêu chuẩn (chẳng hạn như *, **, ?[]) mà bạn đã biết từ những thứ như .gitignore. Vì vậy, bạn có thể hỏi "Tìm tất cả các tệp *.py trong thư mục app" bằng cách sử dụng mẫu app/**/*.py. Đây là một cách hiệu quả để thu thập một tập hợp tệp cụ thể cho mô hình phân tích.
  • search_file_content: Đây là khả năng nhìn xuyên thấu của tôi! Công cụ này sử dụng biểu thức chính quy (regex) đầy đủ cho các lượt tìm kiếm, chứ không chỉ sử dụng tính năng so khớp chuỗi đơn giản. Đây là một tính năng cực kỳ mạnh mẽ. Bạn có thể yêu cầu Gemini tìm các mẫu phức tạp, chẳng hạn như "Tìm tất cả các tuyến Flask sử dụng phương thức POST". Gemini có thể tạo ra một biểu thức chính quy như app\.route\(.*methods=\['POST'\].*\). Thao tác này trả về đường dẫn tệp, số dòng và dòng khớp, cung cấp cho mô hình tất cả ngữ cảnh cần thiết.
  • read_file: Sau khi tìm thấy một tệp thú vị, bạn sẽ muốn mở tệp đó. read_file được tối ưu hoá cho mục tiêu này. Bạn có thể đọc toàn bộ tệp hoặc đối với các tệp lớn, bạn có thể sử dụng các tham số offsetlimit để đọc tệp theo từng phần. Điều này có nghĩa là mô hình có thể quét hiệu quả ngay cả các tệp nhật ký lớn mà không bị hết thời gian chờ.

Từ hiểu biết đến hành động (Đã đến lúc xây dựng!)

Được rồi, bạn đã khám phá địa hình. Giờ là lúc bạn xây tổ! Những công cụ này giúp bạn thực hiện các thay đổi và hoàn thành công việc.

  • **write_file**: Bạn cần tạo một tệp mới từ đầu? write_file là một thao tác nguyên tử ghi toàn bộ nội dung bạn cung cấp vào một đường dẫn được chỉ định. Đây là lựa chọn phù hợp để tạo khung cho các mô-đun mới hoặc tạo Dockerfile từ đầu dựa trên nhu cầu của dự án.
  • **replace**: Công cụ này dùng để thực hiện các thay đổi mang tính phẫu thuật! Đây không chỉ là một thao tác tìm và thay thế đơn giản. Bạn cung cấp một old_string và một new_string. Để hoạt động này diễn ra an toàn, old_string cần là một đoạn mã duy nhất trong tệp, thường có một vài dòng ngữ cảnh trước và sau phần bạn đang thay đổi. Điều này đảm bảo rằng chúng ta chỉ thay đổi exact đoạn mã mà bạn muốn.
  • **run_shell_command**: Đây là vật phẩm tăng sức mạnh tối thượng! Lệnh này thực thi lệnh đã cho trong một chương trình con bash -c <command>. Mô hình này sẽ trả về stdout, stderrexit code. Đây là yếu tố quan trọng để xây dựng quy trình làm việc. Mô hình có thể chạy terraform plan, đọc đầu ra và nếu kế hoạch thành công (mã thoát 0), thì mô hình có thể hỏi bạn xem có nên áp dụng kế hoạch đó hay không.

Mạng lưới an toàn (Lời hứa của tôi dành cho bạn!)

Giờ đây, việc chạy các lệnh có thể khiến bạn lo sợ. Tôi hiểu rồi! Đó là lý do tại sao mạng lưới an toàn lại quan trọng đến vậy. Khi mô hình tạo một khối tool_code chứa lệnh gọi đến run_shell_command hoặc write_file, ứng dụng Gemini CLI sẽ chặn khối đó. Công cụ này cho bạn biết chính xác lệnh hoặc toàn bộ nội dung của tệp sẽ được ghi và đưa ra lời nhắc [y/n]. Không có gì xảy ra nếu bạn chưa phê duyệt rõ ràng. Bạn luôn nắm quyền kiểm soát.

4. Khám phá một dự án

314faf951de66388.png

Mục tiêu: Sử dụng Gemini CLI để tìm hiểu một cơ sở mã lạ mà không cần rời khỏi thiết bị đầu cuối.

Tình huống: Bạn là một nhà phát triển mới và cần nhanh chóng nắm bắt thông tin về dự án này!

Nhiệm vụ 0: Thiết lập – Nhân bản dự án!

Trước tiên, chúng ta cần lấy mã! Khoá này nằm trong một kho lưu trữ công khai trên GitHub, trong một "cây" có tên là quickpoll. Hãy yêu cầu Gemini CLI sao chép tệp đó cho chúng ta. Trước khi làm việc đó, hãy tạo một thư mục làm việc và khởi chạy Gemini CLI trong thư mục làm việc:

mkdir workdir
cd workdir
gemini

Bây giờ, hãy nhập câu lệnh sau:

clone the github repository from the URL: https://github.com/gauravkakad-google/quickpoll.git

46c2feb0d1184db7.png

Gemini sẽ hiểu rằng "sao chép" có nghĩa là sử dụng lệnh git clone. Thao tác này sẽ tạo một lệnh gọi công cụ run_shell_command với nội dung tương tự như git clone https://github.com/gauravkakad-google/quickpoll.git. Sau khi bạn phê duyệt, ứng dụng sẽ tải kho lưu trữ xuống cho bạn.

Bây giờ, hãy thoát Gemini CLI bằng cách nhấn ctrl+c hai lần, chuyển đến kho lưu trữ mẫu rồi khởi chạy lại Gemini CLI:

cd quickpoll
gemini

Tuyệt vời! Giờ đây, khi đã vào bên trong cây dự án, chúng ta có thể bắt đầu khám phá!

Việc 1: Liệt kê tất cả các tệp trong dự án

Giờ thì hãy lập bản đồ toàn bộ khu rừng. Chúng tôi muốn xem từng tệp. Hỏi Gemini:

List all the files in the project.

Gemini có thể sẽ sử dụng công cụ glob với mẫu **/*. Thao tác này liệt kê đệ quy mọi tệp, cung cấp cho bạn một bản kê khai hoàn chỉnh về cơ sở mã. Đây là bước đầu tiên quan trọng để hiểu cấu trúc của dự án.

Tác vụ 2: Tìm tất cả các tệp nhập "google.cloud.sql.connector"

Được rồi, tôi tò mò muốn biết. Dự án này giao tiếp với Google Cloud Storage ở đâu? Hãy cùng điều tra. Hỏi như sau:

Find all files that import the 'google.cloud.sql.connector' library.

568fdb8ff4889c5d.png

Nhờ sức mạnh của search_file_content, Gemini sẽ tìm thấy chính xác những tệp chứa câu lệnh nhập đó. Thao tác này sẽ ngay lập tức thu hẹp phạm vi tập trung của bạn vào những phần mã xử lý hoạt động tương tác với Cloud SQL. Trong dự án này, bạn sẽ tìm thấy backend/main.py.

Việc 3: Cho tôi xem nội dung của Dockerfile chính

Tôi thấy Dockerfile! Đó là bản thiết kế cho vùng chứa của chúng ta. Hãy cùng xem bên trong. Chỉ cần hỏi:

Show me the contents of the main Dockerfile.

e49a83b3efbcf807.png

Gemini sẽ sử dụng read_file để hiển thị Dockerfile. Bạn có thể phân tích hình ảnh cơ sở (FROM), các phần phụ thuộc đang được cài đặt (RUN pip install...) và lệnh cuối cùng (CMD). Điều này cho bạn biết về môi trường thời gian chạy của ứng dụng.

Việc cần làm 4: Mục đích của tệp main.py là gì?

Được rồi, đã đến lúc xem xét phần cốt lõi của mã. Hãy nhờ Gemini hướng dẫn. Hãy nói:

What's the purpose of the `main.py` file?

81d480c285285150.png

Đây là lúc Gemini CLI thực sự phát huy khả năng. Trước tiên, hệ thống sẽ gọi read_file trên backend/main.py. Sau đó, mô hình ngôn ngữ đa phương thức của Gemini sẽ phân tích mã Python. Nó sẽ xác định rằng đây là một ứng dụng FastAPI cung cấp API REST cho một ứng dụng bỏ phiếu. Sau đó, bài viết sẽ giải thích các điểm cuối API và chức năng của chúng. Điều này giúp bạn tiết kiệm thời gian đọc và tự giải mã tất cả thông tin. Bạn cũng có thể đặt câu hỏi nối tiếp để giải thích chi tiết một số chức năng này. Khá hay, phải không? Hãy thử xem sao!

5. Từ địa phương đến trực tiếp! Triển khai bằng Cloud Run và Cloud SQL

db708c2edf0036a9.png

Được rồi, nhà thám hiểm đám mây, bạn đã khám phá được vùng đất này. Giờ là lúc bạn xây dựng nhà trên cây của riêng mình trên đám mây! Chúng ta sẽ lấy ứng dụng quickpoll và biến nó thành một ứng dụng web thực sự, trực tiếp mà mọi người đều có thể truy cập.

Mục tiêu: Triển khai ứng dụng quickpoll vào Cloud Run, với một phần phụ trợ Cloud SQL cho PostgreSQL.

Việc 1: Một nhánh vững chắc cho dữ liệu của chúng ta (Thiết lập Cloud SQL)

Mọi ứng dụng tốt đều cần một nơi để lưu trữ những hạt sồi quý giá của mình... Ý tôi là dữ liệu! Chúng ta sẽ sử dụng Cloud SQL cho PostgreSQL. Nó giống như một khu vườn tự chăm sóc kỳ diệu cho cơ sở dữ liệu của chúng tôi, nhờ đó chúng tôi có thể tập trung vào những việc thú vị.

Hãy yêu cầu Gemini CLI gieo mầm cho cơ sở dữ liệu của chúng ta.

Please create a new Cloud SQL for PostgreSQL instance for me in project <myproject>. Call it quickpoll-db and put it in us-central1. Lets use the Development preset for now, and make the root password a-very-secure-password!.

6c09e8e548efe217.png

Gemini CLI sẽ bắt đầu hoạt động bằng cách sử dụng tiện ích Cloud SQL. Thao tác này sẽ cho bạn thấy lệnh gọi công cụ create_instance. Hãy phê duyệt yêu cầu đó!

Sau khi tạo phiên bản, bạn sẽ thấy kết quả tương tự như sau:

1378c05137bf9260.png

Bạn có thể tạo một tệp .env bằng biến môi trường ở trên và lấy nguồn tệp đó trước khi khởi động lại Gemini CLI để Gemini CLI có thể truy cập vào các biến này.

Trong khi chờ phiên bản của chúng ta phát triển, hãy chuẩn bị đất. Chúng ta cần một cơ sở dữ liệu và một người dùng cho ứng dụng của mình.

In the quickpoll-db instance, create a new database named quickpolldb.

Gemini CLI sẽ sử dụng công cụ create_database trong tiện ích Cloud SQL cho PostgreSQL để tạo cơ sở dữ liệu cho bạn.

3a0ffbf97fbc35cc.png

Bây giờ, hãy thêm một người dùng để chăm sóc nó:

In the quickpoll-db instance, create a built in user named quickpoll-user with the password another-secure-password!.

Lần này, Gemini CLI sẽ sử dụng công cụ create_user.

562db72ed9a59d4a.png

Nhiệm vụ 2: Đường dẫn bí mật (Kết nối phần phụ trợ)

Phần phụ trợ của chúng ta cần biết đường dẫn bí mật đến cơ sở dữ liệu mới. Hãy xem qua backend/main.py để xem cách nó hoạt động.

show me how would the backend/main.py connect to the database

6592c52d634253ce.png

Aha! Bạn thấy không? Ứng dụng này sử dụng Trình kết nối Cloud SQL Python và tìm các biến môi trường như CLOUD_SQL_POSTGRES_INSTANCE, CLOUD_SQL_POSTGRES_USER, CLOUD_SQL_POSTGRES_PASSWORD và CLOUD_SQL_POSTGRES_DATABASE. Chúng ta sẽ cần cung cấp các thông tin này cho dịch vụ Cloud Run.

Trước tiên, chúng ta cần CLOUD_SQL_POSTGRES_INSTANCE. Giống như một cái bắt tay bí mật.

What are the details for the Cloud SQL instance quickpoll-db in us-central1?

aa539ea8798aad71.png

Bạn sẽ thấy nhiều thông tin chi tiết. Tìm Connection Name (Tên kết nối) rồi sao chép giá trị đó. Thẻ này sẽ có dạng như your-project-id:us-central1:quickpoll-db.

Bây giờ, trước khi triển khai ứng dụng vào Cloud Run, hãy khởi tạo cơ sở dữ liệu bằng các bảng bắt buộc. Vì chúng ta đã tạo một cơ sở dữ liệu và người dùng riêng biệt, hãy thoát Gemini CLI và cập nhật .env mà chúng ta đã tạo trước đó bằng các giá trị mới:

export CLOUD_SQL_POSTGRES_USER=quickpoll-user
export CLOUD_SQL_POSTGRES_PASSWORD=password-you-provided
export CLOUD_SQL_POSTGRES_DATABASE=quickpolldb

Bây giờ, hãy khởi động lại Gemini CLI và nhập nội dung sau:

execute backend/database.sql file on quickpolldb database as quickpolluser in quickpoll-db instance

5201cbf678dd3fc9.png

Công cụ này tự động nhận ra rằng execute_sql không hỗ trợ thực thi nhiều lệnh SQL trong một lệnh gọi duy nhất. Vì vậy, nó đã tiến hành và thực thi từng lệnh SQL riêng biệt.

Nhiệm vụ 3: Phụ trợ, cất cánh! (Triển khai lên Cloud Run)

Đã đến lúc phần phụ trợ của chúng ta rời khỏi tổ! Chúng ta sẽ yêu cầu Gemini triển khai thư mục phụ trợ lên Cloud Run và cung cấp cho Gemini đường dẫn bí mật đến cơ sở dữ liệu.

Deploy the backend folder to a new Cloud Run service called quickpoll-be in us-central1. Here are the secrets (environment variables):
CLOUD_SQL_POSTGRES_INSTANCE=your-project-id:us-central1:quickpoll-db
CLOUD_SQL_POSTGRES_USER=quickpoll-user
CLOUD_SQL_POSTGRES_PASSWORD=password-you-provided
CLOUD_SQL_POSTGRES_DATABASE=quickpolldb

Gemini sẽ đóng gói mã của bạn, tạo một hình ảnh vùng chứa và triển khai hình ảnh đó vào Cloud Run. Sau khi hoàn tất (có thể mất vài phút), bạn sẽ nhận được một URL cho dịch vụ phụ trợ mới tinh của mình. Hãy lưu giữ URL đó!

f3330321e52c98e9.png

Việc cần làm 4: Hoàn tất (Định cấu hình và triển khai giao diện người dùng)

Giao diện người dùng giống như bộ mặt thân thiện của ứng dụng. Nó cần biết nơi tìm phần phụ trợ. Hãy cho biết nơi bạn muốn đến.

Deploy the frontend folder to a new Cloud Run service called quickpoll-fe in us-central1. Here are the secrets (environment variables):
BACKEND_URL=backend-url

a80fe48e54b47c4.jpeg

Nhiệm vụ 5: Lễ khánh thành!

Đây rồi! Khoảnh khắc quyết định! Lấy URL cho dịch vụ quickpoll-fe rồi mở URL đó trong trình duyệt web.

Bạn sẽ thấy ứng dụng QuickPoll của mình đang hoạt động và sẵn sàng cho hành động! Hãy tạo một cuộc thăm dò ý kiến, bỏ phiếu và xem kết quả được cập nhật theo thời gian thực.

Bạn đã hoàn thành! Bạn đã lấy một dự án trên máy tính cục bộ và đưa dự án đó vào hoạt động trên Google Cloud. Và bạn đã hoàn thành tất cả những việc đó ngay trên thiết bị của mình với sự trợ giúp của Gemini CLI.

Đó chính là năng suất!

6. Đối với nhà phát triển – Đẩy nhanh vòng đời phát triển

8feb670e686f4038.png

Được rồi, các nhà phát triển, đây mới là lúc cuộc vui thật sự bắt đầu! Chúng ta đã khám phá một dự án, nhưng giờ là lúc xây dựng. Tôi sẽ cho bạn thấy cách Gemini có thể trở thành đối tác lập trình đắc lực, giúp bạn chuyển từ một ý tưởng đơn giản sang mã sẵn sàng cho sản xuất nhanh hơn cả sóc tìm hạt!

Từ ý tưởng đến mã

Hãy nghĩ về chu kỳ phát triển điển hình. Không chỉ là viết mã, đúng không? Đó là việc tạo khung, thêm tính năng xử lý lỗi, tái cấu trúc và viết các quy trình kiểm thử. Gemini có thể giúp bạn làm tất cả những việc đó!

Văn bản mẫu và việc cần làm định kỳ: Không cần sao chép và dán nữa!

Được rồi, bạn đã có chức năng cơ bản của ứng dụng. Giờ bạn cần thêm tính năng ghi nhật ký và xử lý các lỗi có thể xảy ra, đúng không? Đó thường là rất nhiều khối try...except lặp lại. Giờ thì không còn chuyện đó nữa! Hãy bắt đầu bằng cách yêu cầu Gemini CLI phân tích mã và đề xuất các phương pháp hay nhất để ghi nhật ký lỗi và xử lý ngoại lệ:

What are the best practices for error handling and logging that should also be included in this application?

3a132d7bbf57bf67.png

Gemini CLI sẽ phân tích tệp hiện có và đưa ra một số đề xuất về phương pháp hay nhất. Hãy coi đây là một trợ lý chuyên gia có thể giúp bạn tiết kiệm thời gian tự nghiên cứu những thông tin này.

Bây giờ, hãy yêu cầu Gemini triển khai những đề xuất này cho bạn:

please go ahead and implement these in the existing app

Đầu ra thực tế có thể khác trong trường hợp của bạn, nhưng cuối cùng bạn sẽ thấy thông tin chi tiết về những thay đổi mà công cụ này đã thực hiện. Ví dụ: trong ảnh chụp màn hình bên dưới, bạn có thể thấy rằng nó đã thêm structlog để tạo nhật ký được định dạng JSON, triển khai tính năng xử lý ngoại lệ tập trung và cải thiện cách ghi nhật ký phản hồi yêu cầu. Hãy nghĩ đến tất cả những nội dung bạn vừa tiết kiệm được khi không phải nhập!

7fcd0153f88740ce.png

Tái cấu trúc: Trình đánh giá mã cá nhân của bạn

Tất cả chúng ta đều muốn viết mã rõ ràng và hiệu quả. Nhưng đôi khi, chúng ta vội vàng. Gemini có thể đóng vai trò là người đánh giá mã cá nhân của bạn. Bạn có thể hỏi những câu như:

please perform a comprehensive code review for best practices and security

e5482012a524210e.png

32039b0638d1efd.png

Gemini hiểu các phương pháp hay nhất theo từng ngôn ngữ. Một lần nữa, đầu ra thực tế trong trường hợp của bạn có thể khác với ảnh chụp màn hình ở trên, nhưng nếu đọc đầu ra, bạn sẽ đánh giá cao mức độ chi tiết mà Gemini CLI đã phân tích mã. Việc này giúp bạn vừa học vừa cải thiện mã của mình!

Tạo bài kiểm tra: Phần hay nhất!

Đây là trò ảo thuật tôi thích nhất! Tất cả chúng ta đều biết rằng mình nên viết các bài kiểm thử, nhưng việc này có thể tẻ nhạt, đặc biệt là khi bạn phải mô phỏng mọi thứ. Hãy xem thử nhé. Bạn chỉ cần hỏi:

Add a test suite to this application

d7475f5ca8c9d99d.png

ac55b84b842187b.png

3653819afe847cf3.png

Gemini sẽ phân tích hàm của bạn, xác định dữ liệu đầu vào và đầu ra, đồng thời tìm ra các phần phụ thuộc của hàm. Sau đó, công cụ này sẽ tạo một tệp test_main.py hoàn chỉnh với một số trường hợp kiểm thử, bao gồm cả "lộ trình phù hợp" và có thể là một điều kiện lỗi. Đây là một bước tiến lớn về năng suất!

Chạy kiểm thử! (Nhiệm vụ thử thách dành cho bạn)

Đây là lúc mọi thứ trở nên thực sự thú vị! Tôi sẽ để phần này cho bạn tự khám phá. Bạn có thể yêu cầu Gemini CLI thực thi các trường hợp kiểm thử mà công cụ này đã tạo. Sau đó, bạn chỉ cần ngồi xuống và quan sát điều kỳ diệu diễn ra!

7. Ngoài Localhost: Tích hợp với GitHub

d2664a4c173f1d6.png

Chúng tôi đã làm được một số việc tuyệt vời trên máy cục bộ của mình, trong góc nhỏ của riêng mình trong khu rừng. Nhưng sức mạnh thực sự của đám mây là khả năng cộng tác và kết nối! Đã đến lúc khám phá và xem cách Gemini tương tác với thế giới rộng lớn hơn, bắt đầu từ cây lớn nhất trong khu rừng dành cho nhà phát triển: GitHub!

Khái niệm: Trợ lý DevOps tích hợp

Cho đến nay, chúng ta đã sử dụng Gemini làm trợ lý lập trình tại chỗ. Giờ đây, chúng tôi sẽ nâng cấp công cụ này thành một Trợ lý DevOps tích hợp hoàn chỉnh. Tất cả là nhờ vào tích hợp Giao thức ngữ cảnh mô hình (MCP). Đây là một cái tên mỹ miều, nhưng nó chỉ có nghĩa là Gemini có thể trao đổi an toàn với các dịch vụ khác thay cho bạn. Dịch vụ đầu tiên mà chúng tôi sẽ thành thạo là GitHub.

Hãy suy nghĩ về điều đó. Bạn phải rời khỏi thiết bị đầu cuối bao lâu một lần để kiểm tra yêu cầu kéo, tạo vấn đề hoặc duyệt xem kho lưu trữ trên GitHub? Điều đó có nghĩa là bạn sẽ phải chuyển đổi bối cảnh nhiều hơn! Với bộ công cụ github, bạn có thể làm tất cả những việc đó ngay tại đây. Thao tác này sẽ biến Gemini thành một giao diện gốc cho GitHub.

Tài liệu chính thức về Máy chủ MCP trên GitHub cung cấp nhiều hướng dẫn về các công cụ và lựa chọn cấu hình được hiển thị. Bạn có thể thoải mái lựa chọn giữa hoạt động cục bộ hoặc từ xa, vì Gemini CLI hỗ trợ đầy đủ cả hai Máy chủ MCP từ xa.

Hướng dẫn này sẽ hướng dẫn bạn cách thiết lập tuỳ chọn Máy chủ MCP từ xa cho GitHub. Trước tiên, bạn cần có Mã truy cập cá nhân (PAT) từ GitHub.

Sau khi có PAT, bạn có thể thêm đối tượng MCP Server vào tệp settings.json. Dưới đây là nội dung đầy đủ của tệp settings.json, nhưng bạn chỉ cần đảm bảo đối tượng mcpServers của bạn khớp với nội dung bạn thấy ở đây:

{
  "security": {
    "auth": {
      "selectedType": "vertex-ai"
    }
  },
 "mcpServers": {
    "github": {
      "httpUrl": "https://api.githubcopilot.com/mcp/",
      "headers": {
        "Authorization": "GITHUB_PAT"
      },
      "timeout": 5000
    }
  }
}

Sau khi bạn cập nhật tệp settings.json bằng cấu hình Máy chủ MCP của GitHub, chỉ cần khởi động lại Gemini CLI hoặc thực thi lệnh /mcp refresh. Ảnh chụp màn hình bên dưới cho thấy GitHub MCP Server hiện đã được chuẩn bị trên hệ thống của tôi, minh hoạ một loạt công cụ mạnh mẽ mà Gemini CLI hiện có thể sử dụng với Giao thức bối cảnh mô hình.

cf9cab5f70ca1fc2.png

Giới thiệu các lệnh chính

Gemini có một loạt siêu năng lực hoàn toàn mới dành riêng cho GitHub. Sau đây là một số ví dụ tôi yêu thích:

  • github.list_repositories: Bạn muốn xem tất cả các kho lưu trữ trong tổ chức mà không cần mở trình duyệt? Đây là công cụ dành cho bạn! Bạn chỉ cần hỏi: "Liệt kê tất cả các kho lưu trữ trong tổ chức của tôi".
  • github.create_issue: Bạn phát hiện thấy lỗi? Không chuyển đổi cửa sổ để tạo vấn đề. Bạn chỉ cần nói với Gemini: "Tạo một vấn đề trong kho lưu trữ sample-flask-app có tiêu đề "Khắc phục lỗi đăng nhập" với nội dung mô tả này..." và bùm, vấn đề sẽ được tạo.
  • github.get_pull_request: Bạn cần kiểm tra PR? Bạn có thể hỏi: "Cho tôi xem thông tin chi tiết về yêu cầu kéo số 42 trong kho lưu trữ sample-flask-app". Gemini sẽ tìm nạp tiêu đề, nội dung mô tả, trạng thái và danh tính của người đánh giá.
  • github.get_file_contents: Cái này hay quá. Bạn có thể đọc một tệp từ kho lưu trữ từ xa mà không cần phải sao chép tệp đó trước! Đây là một công cụ tuyệt vời để kiểm tra nhanh tệp cấu hình hoặc tệp README của một dự án mà bạn không có cục bộ.

8. Khám phá GitHub

7e66f28519488019.png

Đủ rồi, hãy bay thôi! Chúng ta sẽ sử dụng các tính năng mới của GitHub để khám phá một tổ chức và một dự án, tất cả đều diễn ra trên thiết bị đầu cuối.

Mục tiêu: Sử dụng Gemini để khám phá và tìm hiểu một dự án được lưu trữ trên GitHub.

Tình huống: Bạn cần làm quen với một dự án trên GitHub mà bạn chưa từng làm việc trước đây.

Nhiệm vụ 1: Liệt kê các kho lưu trữ trong một tổ chức

Trước tiên, hãy xem tất cả các dự án trong một tổ chức trên GitHub. Trong bài thực hành này, bạn có thể sử dụng tên người dùng GitHub của riêng mình hoặc tên của một tổ chức mà bạn thuộc về. Hãy yêu cầu Gemini liệt kê những điểm đó.

List the repositories in the `[your-org-or-username]` GitHub organization.

(Nhớ thay thế [your-org-or-username] bằng thông tin thực tế của bạn!) Gemini sẽ sử dụng công cụ github.list_repositories và cho bạn xem danh sách tất cả các dự án. Tuyệt vời!

Nhiệm vụ 2: Tìm một kho lưu trữ cụ thể

Bạn sẽ thấy một danh sách các kho lưu trữ. Giờ đây, giống như một nhà phát triển thực thụ, bạn cần quét danh sách đó và tìm dự án mà bạn quan tâm. Đối với phòng thí nghiệm của chúng ta, hãy giả sử chúng ta đang tìm kho lưu trữ quickpoll mà chúng ta đã sao chép trước đó. Bạn không cần dùng lệnh cho phần này, chỉ cần đọc đầu ra từ bước cuối cùng và tìm repo!

Việc 3: Liệt kê các yêu cầu kéo chưa được xử lý

Giờ đây, khi đã xác định được kho lưu trữ mục tiêu, hãy xem điều gì đang xảy ra với kho lưu trữ đó. Có yêu cầu kéo nào đang chờ xử lý không? Hãy hỏi:

List the open pull requests for the `quickpoll` repository in the `[your-org-or-username]` organization.

Gemini sẽ sử dụng công cụ github.list_pull_requests, lọc theo trạng thái open. Sau đó, công cụ này sẽ liệt kê mọi yêu cầu kéo đang mở, cho bạn biết số yêu cầu kéo, tiêu đề và người tạo yêu cầu kéo. Đây là chế độ xem tức thì về quá trình phát triển đang diễn ra của dự án. Bạn có thể thử cách này với một kho lưu trữ mà bạn đang tích cực đóng góp và kiểm tra kết quả.

38aecd94347e633c.png

Nhiệm vụ 4: Điều tra yêu cầu kéo

Giả sử có một PR thú vị trong danh sách đó. Chúng tôi muốn biết thêm về vấn đề này! Chúng tôi muốn xem nội dung mô tả và những tệp đã được thay đổi. Chọn một số yêu cầu kéo trong danh sách (nếu không có, bạn có thể bỏ qua bước này, nhưng hãy tưởng tượng là có một yêu cầu kéo!).

Show me the details and files changed in PR number 1 in the `quickpoll` repo.

Đây là một ví dụ hay về nhiệm vụ nhiều bước dành cho Gemini! Trước tiên, công cụ này có thể sẽ dùng github.get_pull_request để tìm nạp các thông tin chính (tiêu đề, nội dung, tác giả, v.v.). Sau đó, để nhận các thay đổi về tệp, công cụ này sẽ dùng một công cụ thứ hai là github.get_pull_request_files. Sau đó, công cụ này sẽ kết hợp tất cả thông tin này thành một bản tóm tắt gọn gàng và dễ hiểu cho bạn. Bạn vừa xem xét một yêu cầu hợp nhất mà không cần rời khỏi cửa sổ dòng lệnh! Thật tuyệt vời phải không?!

9. Từ PRD đến cam kết ban đầu

bbaad74efa344d07.png

Bạn đã học được cách khám phá, xây dựng và kiểm thử. Bây giờ, chúng ta sẽ kết hợp tất cả những điều này trong một tình huống thực tế. Đây là thời điểm chúng ta biến một kế hoạch thành một sản phẩm. Chúng ta sẽ bắt đầu từ Tài liệu yêu cầu về sản phẩm (PRD) cho đến cam kết đầu tiên. Hãy cùng nhau tạo nên những điều tuyệt vời!

Mục tiêu: Mô phỏng một nhiệm vụ phát triển trong thế giới thực từ đầu đến cuối, kết hợp bối cảnh cục bộ và từ xa.

Tình huống: Bạn đã được giao một tính năng mới! Các yêu cầu đang chờ bạn trong một tệp PRD bên trong kho lưu trữ GitHub của dự án.

Việc 1: Tìm hiểu – Đọc PRD

Đây là bước quan trọng nhất! Trước khi nghĩ đến việc viết một dòng mã, bạn hoàn toàn phải nắm bắt được kế hoạch. Các yêu cầu đối với tính năng mới của chúng tôi nằm trong tệp prd/NEW_FEATURE.md. Hãy mở hộp ra và xem bên trong có gì.

explain the requirements mentioned in prd/NEW_FEATURE.md

Gemini CLI sẽ sử dụng read_file để trình bày nội dung của PRD. Hãy cùng tìm hiểu kỹ hơn nhé! Nội dung này sẽ trình bày tính năng mới: nút Làm mới để người dùng cập nhật danh sách các cuộc thăm dò ý kiến đang hoạt động theo cách thủ công. Luôn tham khảo bản thiết kế trước tiên!

b07e95a5977e927d.png

Nhiệm vụ 2: Mã – Chuyển yêu cầu thành hiện thực

Đây là khoảnh khắc kỳ diệu! Chúng ta sẽ lấy các yêu cầu từ PRD và yêu cầu Gemini viết mã cho chúng ta. Hãy nói rõ và cho biết chính xác những gì chúng ta muốn.

Implement the changes as per the PRD

Gemini CLI sẽ bắt đầu hoạt động và sau một lát, bạn sẽ thấy kết quả tương tự như sau. Mã mới bóng bẩy của chúng tôi hiện đã có một ngôi nhà ấm cúng!

aff664dee6796f8b.png

Việc cần làm 3: Xác minh các thay đổi

Chúng tôi đã tạo một tệp mới có mã mới. Bước cuối cùng của bài thực hành này là triển khai thay đổi cho Cloud Run và xác minh.

let's deploy the changes made to frontend to Cloud Run. The existing service on Cloud Run is quickpoll-fe in us-central1.

Lưu ý rằng lời nhắc đó cung cấp thêm thông tin chi tiết, chẳng hạn như tên dịch vụ Cloud Run hiện có và khu vực triển khai của dịch vụ đó. Việc trình bày cụ thể giúp tiết kiệm thời gian, mặc dù Gemini CLI sẽ luôn nhắc bạn cung cấp mọi thông tin chi tiết còn thiếu nếu bạn bỏ qua.

Nếu dịch vụ Cloud Run đã cập nhật của bạn gặp lỗi, chỉ cần nhắc Gemini CLI gỡ lỗi và chỉnh sửa mã. Hãy nhớ rằng Gemini là người bạn đồng hành siêu năng lực của bạn!

10. Xin chúc mừng

393fa778d8ee9f18.png

Vậy là xong! Bạn vừa hoàn thành một chu kỳ phát triển đầy đủ. Bạn đã chuyển từ một tài liệu yêu cầu sang một tính năng mới, sẵn sàng được xác nhận và đẩy lên. Bạn đã kết hợp ngữ cảnh cục bộ, ngữ cảnh từ xa, các thao tác trên hệ thống tệp và quá trình tạo mã. Bạn không chỉ là một nhà phát triển mà còn là một kiến trúc sư đám mây siêu năng suất! Xin chúc mừng!

Tài liệu tham khảo