۱. هدف این آزمایشگاه
در این آزمایشگاه عملی، شما رابط خط فرمان Gemini را نصب، احراز هویت و برخی از موارد استفاده اولیه را امتحان خواهید کرد.

آنچه یاد خواهید گرفت
- اصول اولیه Gemini CLI را درک کنید.
- یاد بگیرید که چگونه کارهای اساسی را با Gemini CLI انجام دهید.
۲. قبل از شروع
- اگر از قبل پروژهای ندارید که بتوانید از آن استفاده کنید، باید یک پروژه جدید در کنسول GCP ایجاد کنید.
- در این آزمایش، ما از GCP Cloud Shell برای انجام مراحل زیر استفاده خواهیم کرد. Cloud Shell را باز کنید و پروژه را با استفاده از Cloud Shell تنظیم کنید.
- ویرایشگر پوسته ابری GCP را با فشردن دکمه ویرایشگر پوسته ابری باز کنید. اگر پنجره "مجوز پوسته" را مشاهده کردید، برای تأیید ویرایشگر پوسته ابری کلیک کنید.
- با استفاده از دستور زیر میتوانید بررسی کنید که آیا پروژه از قبل احراز هویت شده است یا خیر.
gcloud auth list
- برای تأیید پروژه خود، دستور زیر را در Cloud Shell اجرا کنید
gcloud config list project
- اگر پروژه شما تنظیم نشده است، از دستور زیر برای تنظیم آن استفاده کنید.
gcloud config set project <YOUR_PROJECT_ID>
- برای اجرای این آزمایشگاه باید برخی از سرویسها را فعال کنیم. دستور زیر را در Cloud Shell اجرا کنید.
gcloud services enable aiplatform.googleapis.com
۳. نصب و احراز هویت
نصب
رابط خط فرمان Gemini به صورت پیشفرض در ویرایشگر GCP Cloud Shell نصب شده است. اگر میخواهید از آن استفاده کنید، میتوانید همین الان شروع کنید.
همچنین میتوانید Gemini CLI را در محیط محلی خود نصب کنید.
برای نصب Gemini CLI در محیط محلی خود به Nodejs 20+ نیاز دارید. میتوانید دستور زیر را برای نصب Gemini CLI اجرا کنید.
npm install -g @google/gemini-cli
برای ارتقا به آخرین نسخه، از دستور زیر استفاده کنید
npm update -g @google/gemini-cli
با اجرای دستور زیر در ترمینال خود، Gemini را اجرا کنید.
gemini
احراز هویت
اگر از ویرایشگر پوسته ابری GCP استفاده میکنید، اگر هنگام اجرای پوسته، احراز هویت آن را پذیرفته باشید، باید از قبل احراز هویت شده باشید.
اگر به صورت محلی در حال اجرا هستید و هنوز احراز هویت نشدهاید، صفحهای مانند زیر مشاهده خواهید کرد.
همچنین میتوانید /auth را تایپ کنید تا صفحه زیر نمایش داده شود.

شکل ۱: رابط خط فرمان Gemini سه روش برای احراز هویت به شما ارائه میدهد.
ابتدا با دستور /quit از محیط خط فرمان Gemini خارج شوید.
احراز هویت با گوگل : اجرای /auth در کنسول، گزینههای احراز هویت را نمایش میدهد. از بین گزینهها، «ورود با گوگل» را انتخاب کنید. سپس صفحه احراز هویت گوگل در مرورگر شما ظاهر میشود. پس از تکمیل ورود به سیستم، کنسول نیز احراز هویت میشود. اگرچه احراز هویت کامل شده است، اما برای استفاده واقعی از Gemini CLI، باید یک پروژه Google Cloud مشخص کنید. به صفحه کنسول برگردید و دستور زیر را برای مشخص کردن پروژه اجرا کنید (همچنین میتوانید آن را در یک فایل .env مشخص کنید).
export GOOGLE_CLOUD_PROJECT=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
احراز هویت با کلید API : برای احراز هویت با کلید API، به یک کلید API نیاز دارید. میتوانید یک کلید API از aistudio.google.com ایجاد کنید. پس از صدور کلید API، آن را در کنسول به صورت زیر تنظیم کنید:
export GEMINI_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
احراز هویت با Vertex AI : برای استفاده از Gemini API از طریق Vertex AI، مراحل زیر را دنبال کنید.
ابتدا، از دستور زیر برای تأیید اعتبار در Google Cloud استفاده کنید.
gcloud auth application-default login
بعد از آن دستورات زیر را در ترمینال خود اجرا کنید
export GOOGLE_GENAI_USE_VERTEXAI=true export GOOGLE_CLOUD_PROJECT=Your GCP Project Name export GOOGLE_CLOUD_LOCATION=us-central1
۴. رابط خط فرمان Gemini را امتحان کنید
حالا آمادهاید تا Gemini CLI را امتحان کنید. موارد استفاده زیر را امتحان کنید.
ابتدا یک پوشه پروژه به نام my_cli_project ایجاد کنید.
mkdir my_cli_project cd my_cli_project
اجرای Gemini از یک پوشه پروژه به شما امکان میدهد Gemini CLI را به طور ایمن در محدوده آن پوشه اجرا کنید.
- یک اعلان ساده اجرا کنید :
What is the weather today in Tokyo
این باید آب و هوای توکیو را به شما نشان دهد. توجه داشته باشید که اجرای خودکار این دستور از ... استفاده میکند.
ابزار جستجوی گوگل!
- تأیید ابزارهای نصب شده : دستور زیر را اجرا کنید. باید بتوانید لیست ابزارهای نصب شده را مشاهده کنید.
/tools

شکل ۲: فهرست ابزارهای نمایش داده شده
- اخبار را از سایتهای خبری محلی دریافت کنید: (مثلاً https://mainichi.jp ، آن را به سایت خبری محلی خود تغییر دهید).
Get me the news summary from https://mainichi.jp/
شما باید خلاصهای از اخبار را از سایت خبری محلی دریافت کنید. توجه داشته باشید که عامل به طور خودکار از ابزار WebFetch برای دانلود محتوا از سایت خبری استفاده میکند و خلاصه را ایجاد میکند.
- یک کار چند مرحلهای اجرا کنید (لطفاً آن را به سایت محلی خود تغییر دهید) : اخبار را از https://mainichi.jp/ برای من دریافت کنید و فقط اخبار ورزشی را فیلتر کنید و آن را برای من خلاصه کنید.
Get me the news from https://mainichi.jp/ and filter in only the sports news and summarize that for me.
- اجرای دستورات سیستم : برای اجرای دستورات سیستم، کلید ! را فشار داده و دستورات را تایپ کنید. برای بازگشت به حالت عادی، دوباره کلید ! را تایپ کنید.
Type ! and Enter key. This starts the command mode. ls pwd Type ! to go back to normal mode.
- یک بازی تیک-تاک-تو ایجاد کنید. دستور زیر را وارد کنید (نسخه انگلیسی).
Please develop a Tic-Tac-Toe game that meets the following requirements. The solution should be split into separate HTML, CSS, and JavaScript files, with the JavaScript file handling the majority of the game logic independently.
1. General Requirements
The game format should be a match between one human player and one computer player.
When the game ends (a win/loss is determined, or a draw occurs), display "GAME OVER" on the screen along with the winner's name ("X wins!," "O wins!," or "Draw!").
Provide a "Reset" button to start a new game.
2. HTML (index.html)
Create the basic page structure.
The game board should consist of nine squares (cells). Each cell should be clickable and display the player's mark (X or O).
Provide an element to display the game status (e.g., current player's turn, game result).
Place the reset button for starting a new game.
Link the CSS and JavaScript files appropriately.
3. CSS (style.css)
Style the game board and cells so they are visually clear and easy to understand.
Add borders to the cells to indicate they are clickable areas.
Set appropriate font size and color for the X and O marks to ensure good visibility.
Style the game status display and the "GAME OVER" message to make them stand out.
Consider responsive design to ensure appropriate display on various screen sizes.
4. JavaScript (script.js)
It is strongly requested that the JavaScript file handle all the game logic.
4.1. Game State Management
Define an array or object to manage the game board state (e.g., ['', '', '', '', '', '', '', '', '']).
Define a variable to track the current player (X or O). The initial value should be X.
Define a boolean value to track whether the game has ended (win/loss or draw).
4.2. Game Initialization
Create a function to initialize the game board upon page load.
Clear all cells.
Set the current player to X.
Reset the game end flag.
Clear the game result display.
4.3. Player Interaction
Set up event listeners for cell clicks.
Only place the current player's mark and update the board state if the clicked cell is empty.
After placing the mark, execute the following:
Call the win/draw check function.
If a winner is not yet determined, switch the player (X to O, O to X).
4.4. Computer AI Logic
Create a function that is called when it is the computer's (O) turn.
Implement a simple logic where the computer randomly selects an empty cell to place its mark. (While difficulty can be increased in the future, random selection is sufficient initially.)
After the computer places its mark, perform the win/draw check, and if the game is not over, switch the turn back to the human player.
4.5. Win/Draw Determination
Create a function that determines the win/draw status based on the current board state.
Check the following winning conditions:
Three rows
Three columns
Two diagonals
If a player meets a winning condition, declare that player the winner.
If all cells are filled and no player meets a winning condition, declare a draw.
If a win or draw is determined, set the game end flag to true and display the "GAME OVER" message and the result.
4.6. Game End Handling
When the game ends (win/loss or draw), prevent further clicks on the cells.
Display the text "GAME OVER" followed by the message "X wins!," "O wins!," or "Draw!" underneath it.
4.7. Reset Functionality
When the "Reset" button is clicked, call the function to return the game to its initial state.
دستور زیر را وارد کنید (نسخه ژاپنی)
以下の要件を満たす三目並べ(Tic-Tac-Toe)ゲームを開発してください。HTML、CSS、JavaScriptの各ファイルに分割し、JavaScriptはゲームロジックの大部分を単独で処理するようにしてください。
1. 全体要件
プレイヤーは人間1人、コンピューター1人の対戦形式とする。
ゲーム終了時(勝敗が決まった場合、または引き分けの場合)は、画面上に「GAME OVER」と表示し、勝者の名前(「Xの勝利!」「Oの勝利!」または「引き分け!」)も併記すること。
新しいゲームを開始するための「リセット」ボタンを設けること。
2. HTML (index.html)
基本的なページ構造を作成してください。
ゲームボードは、9つのマス目(セル)で構成されるようにしてください。各セルはクリック可能で、プレイヤーのマーク(XまたはO)が表示されるようにします。
ゲームの状態(現在のプレイヤーのターン、ゲーム結果など)を表示する要素を設けてください。
ゲームをリセットするためのボタンを配置してください。
CSSファイルとJavaScriptファイルを適切にリンクしてください。
3. CSS (style.css)
ゲームボードとマス目が視覚的に分かりやすいようにスタイルを設定してください。
マス目には枠線をつけ、クリック可能な領域であることがわかるようにする。
XとOの表示は、見やすいように適切なフォントサイズと色を設定する。
ゲームの状態表示、および「GAME OVER」メッセージが目立つようにスタイルを設定してください。
レスポンシブデザインを考慮し、様々な画面サイズで適切に表示されるようにしてください。
4. JavaScript (script.js)
JavaScriptファイルがゲームロジックの全てを処理することを強く要請します。
4.1. ゲームの状態管理
ゲームボードの状態を管理する配列またはオブジェクト(例: ['', '', '', '', '', '', '', '', ''])を定義してください。
現在のプレイヤー(XまたはO)を追跡する変数を定義してください。初期値はXとする。
ゲームが終了したかどうか(勝敗が決まったか、引き分けか)を追跡するブール値を定義してください。
4.2. ゲームの初期化
ページ読み込み時にゲームボードを初期化する関数を作成してください。
全てのマス目を空にする。
現在のプレイヤーをXに設定する。
ゲーム終了フラグをリセットする。
ゲーム結果表示をクリアする。
4.3. プレイヤーの操作
マス目をクリックした際のイベントリスナーを設定してください。
クリックされたマス目が空の場合のみ、現在のプレイヤーのマークを配置し、ボードの状態を更新する。
マークを配置した後、以下の処理を実行する。
勝敗判定関数を呼び出す。
勝敗が決まっていない場合、プレイヤーを交代する(XからO、OからXへ)。
4.4. コンピューターの思考ロジック
コンピューター(O)が手番の時に呼び出される関数を作成してください。
コンピューターは、空いているマス目の中からランダムに選択してマークを配置するシンプルなロジックを実装してください。(将来的に難易度を上げることも考慮できるが、最初はランダムで十分です)
コンピューターがマークを配置した後、勝敗判定を行い、勝敗が決まっていない場合はプレイヤーを人間に戻す。
4.5. 勝敗判定
現在のボードの状態に基づいて勝敗を判定する関数を作成してください。
以下の勝利条件をチェックする。
3つの行
3つの列
2つの対角線
勝利条件を満たすプレイヤーがいる場合、そのプレイヤーの勝利とする。
全てのマス目が埋まり、かつ勝利条件を満たすプレイヤーがいない場合、引き分けとする。
勝敗または引き分けが決まった場合、ゲーム終了フラグをtrueに設定し、「GAME OVER」メッセージと結果を表示する。
4.6. ゲーム終了時の処理
ゲームが終了した場合(勝敗が決まったか、引き分けか)は、それ以上マス目をクリックできないようにする。
「GAME OVER」というテキストと、その下に「Xの勝利!」「Oの勝利!」または「引き分け!」というメッセージを表示する。
4.7. リセット機能
「リセット」ボタンがクリックされた際に、ゲームを初期状態に戻す関数を呼び出す。
یک ترمینال را در همان پوشه باز کنید و یک سرور http راهاندازی کنید،
python3 -m http.server 8080
در مرورگر باز (اگر در Cloud Shell هستید، CTRL+click را نگه دارید):
http://localhost:8080
۵. افزونههای Gemini CLI را اجرا کنید
Gemini CLI افزونههای بسیار مفیدی را ارائه میدهد که میتوانند به راحتی نصب و اجرا شوند. این افزونهها شما را قادر میسازند تا به سرویسهای مختلف متصل شوید و از آنها استفاده کنید. https://geminicli.com/extensions/ لیستی از افزونههای موجود است و هر روز در حال افزایش است. برای کسب اطلاعات بیشتر در مورد افزونههای Gemini CLI به این صفحه مراجعه کنید: https://medium.com/google-cloud/gemini-cli-tutorial-series-part-11-gemini-cli-extensions-69a6f2abb659
بیایید افزونهی Gemini Nanobanana را نصب و اجرا کنیم.
برای نصب افزونه، دستور زیر را اجرا کنید.
gemini extensions install https://github.com/gemini-cli-extensions/nanobanana
پس از نصب افزونه، رابط خط فرمان Gemini را مجدداً راهاندازی کنید و قادر خواهید بود دستورات nanobanana زیر را از رابط خط فرمان Gemini اجرا کنید.
-
/generate- تولید یک یا چند تصویر با گزینههای سبک/تغییر -
/edit- ویرایش تصویر -
/restore- بازیابی تصویر -
/icon- آیکونهای برنامه، فاوآیکونها و عناصر رابط کاربری را در اندازههای مختلف ایجاد کنید -
/pattern- ایجاد الگوها و بافتهای یکپارچه برای پسزمینهها -
/story- تصاویر متوالی ایجاد کنید که یک داستان یا فرآیند بصری را روایت میکنند -
/diagram- نمودارهای فنی، فلوچارتها و ماکتهای معماری را ایجاد کنید -
/nanobanana- رابط زبان طبیعی
بیایید چند دستور اجرا کنیم
قبل از اجرای نانوبانانا، باید یک کلید API از Gemini از aistudio.google.com دریافت کنید و آن را اینجا تنظیم کنید.
export NANOBANANA_GEMINI_API_KEY=YOUR_API_KEY
نسخه انگلیسی
# Single image /generate "a watercolor painting of a fox in a snowy forest" # Multiple variations with preview /generate "sunset over mountains" --count=3 --preview # Style variations /generate "mountain landscape" --styles="watercolor,oil-painting" --count=4 # Specific variations with auto-preview /generate "coffee shop interior" --variations="lighting,mood" --preview
نسخه ژاپنی
# Single image /generate "雪の森のキツネの水彩画" # Multiple variations with preview /generate "山にかかる夕焼け" --count=3 --preview # Style variations /generate "山岳風景" --styles="watercolor,oil-painting" --count=4 # Specific variations with auto-preview /generate "コーヒーショップのインテリア" --variations="lighting,mood" --preview
ویرایش تصاویر
نام فایل را به نام فایل محلی خود تغییر دهید.
/edit my_photo.png "change the color of fox to blue"
۶. کامل کردن
و کار شما تمام شد! آفرین! برای اطلاعات بیشتر، لطفاً منابع زیر را بررسی کنید.