یک برنامه Google Chat با یک عامل Agent2Agent بسازید

این صفحه نحوه ساخت یک افزونه Google Workspace را توضیح می‌دهد که در Google Chat کار می‌کند و با یک عامل هوش مصنوعی که از پروتکل Agent2Agent (A2A) استفاده می‌کند، ارتباط برقرار می‌کند. شما عامل را با استفاده از کیت توسعه عامل (ADK) توسعه می‌دهید و آن را در Vertex AI Agent Engine میزبانی می‌کنید.

عامل‌های هوش مصنوعی به طور خودکار محیط خود را درک می‌کنند، استدلال می‌کنند و اقدامات پیچیده و چند مرحله‌ای را برای دستیابی به یک هدف تعریف شده اجرا می‌کنند. در این آموزش، شما نمونه چند عامله LLM Auditor را مستقر می‌کنید که با استفاده از Gemini و Google Search grounding، حقایق را نقد و اصلاح می‌کند.

نمونه چند عامله حسابرس LLM به عنوان برنامه چت.

نمودار زیر معماری و الگوی پیام‌رسانی را نشان می‌دهد:

معماری یک برنامه چت که با یک عامل هوش مصنوعی A2A پیاده‌سازی شده است.

در نمودار، کاربری که با یک برنامه چت پیاده‌سازی شده با یک عامل A2A تعامل دارد، جریان اطلاعات زیر را دارد:

  1. کاربر پیامی را به یک برنامه چت، چه در پیام مستقیم و چه در فضای چت، ارسال می‌کند.
  2. منطق برنامه چت که یا در Apps Script یا به عنوان یک وب سرور با نقاط پایانی HTTP پیاده‌سازی شده است، پیام را دریافت و پردازش می‌کند.
  3. عامل A2A که با موتور عامل هوش مصنوعی Vertex میزبانی می‌شود، تعامل را دریافت و پردازش می‌کند.
  4. به صورت اختیاری، برنامه چت یا عامل هوش مصنوعی می‌تواند با سرویس‌های Google Workspace مانند Calendar یا Sheets یا سایر سرویس‌های Google مانند Google Maps یا YouTube ادغام شود.
  5. برنامه چت، پاسخ‌ها را به صورت غیرهمزمان ارسال می‌کند و از API چت گوگل برای اطلاع‌رسانی پیشرفت عامل هوش مصنوعی استفاده می‌کند.
  6. پاسخ‌ها به کاربر تحویل داده می‌شوند.

اهداف

  • محیط خود را تنظیم کنید.
  • عامل A2A را مستقر کنید.
  • برنامه چت را مستقر کنید.
  • برنامه چت را پیکربندی کنید.
  • برنامه چت را آزمایش کنید.

پیش‌نیازها

محیط خود را تنظیم کنید

فعال کردن APIهای گوگل کلود

قبل از استفاده از APIهای گوگل، باید آنها را در یک پروژه گوگل کلود فعال کنید. می‌توانید یک یا چند API را در یک پروژه گوگل کلود فعال کنید.
  • در کنسول گوگل کلود، APIهای گوگل چت، ورتکس آی‌آی و کلود ریسورس منیجر را فعال کنید.

    فعال کردن APIها

صفحه رضایت OAuth را پیکربندی کنید

همه برنامه‌هایی که از OAuth 2.0 استفاده می‌کنند، نیاز به پیکربندی صفحه رضایت دارند. پیکربندی صفحه رضایت OAuth برنامه شما، آنچه را که به کاربران و بررسی‌کنندگان برنامه نمایش داده می‌شود، تعریف می‌کند و برنامه شما را ثبت می‌کند تا بتوانید بعداً آن را منتشر کنید.

  1. در کنسول گوگل کلود، به Menu > برویدGoogle Auth platform > برندسازی .

    به بخش برندسازی بروید

  2. اگر قبلاً تنظیمات را انجام داده‌اید Google Auth platformمی‌توانید تنظیمات صفحه رضایت OAuth زیر را در Branding ، Audience و Data Access پیکربندی کنید. اگر پیامی با این مضمون مشاهده کردید Google Auth platform هنوز پیکربندی نشده است ، روی شروع کار کلیک کنید:
    1. در قسمت اطلاعات برنامه ، در قسمت نام برنامه ، نامی برای برنامه وارد کنید.
    2. در ایمیل پشتیبانی کاربر ، یک آدرس ایمیل پشتیبانی انتخاب کنید که کاربران در صورت داشتن هرگونه سوال در مورد رضایت خود بتوانند با شما تماس بگیرند.
    3. روی بعدی کلیک کنید.
    4. در قسمت مخاطبان ، داخلی (Internal) را انتخاب کنید.
    5. روی بعدی کلیک کنید.
    6. در قسمت اطلاعات تماس ، یک آدرس ایمیل وارد کنید که از طریق آن بتوانید از هرگونه تغییر در پروژه خود مطلع شوید.
    7. روی بعدی کلیک کنید.
    8. در قسمت Finish ، سیاست داده‌های کاربر سرویس‌های API گوگل را مرور کنید و در صورت موافقت، گزینه «من با سیاست‌های داده‌های کاربر سرویس‌های API گوگل موافقم» را انتخاب کنید.
    9. روی ادامه کلیک کنید.
    10. روی ایجاد کلیک کنید.
  3. فعلاً می‌توانید از اضافه کردن محدوده‌ها صرف نظر کنید. در آینده، وقتی برنامه‌ای برای استفاده در خارج از سازمان Google Workspace خود ایجاد می‌کنید، باید نوع کاربر (User type) را به خارجی (External) تغییر دهید. سپس محدوده‌های مجوز مورد نیاز برنامه خود را اضافه کنید. برای کسب اطلاعات بیشتر، به راهنمای کامل پیکربندی رضایت OAuth مراجعه کنید.

یک حساب کاربری سرویس در کنسول گوگل کلود ایجاد کنید

با دنبال کردن مراحل زیر، یک حساب کاربری سرویس جدید با نقش Vertex AI User ایجاد کنید:

کنسول گوگل کلود

  1. در کنسول گوگل کلود، به Menu > IAM & Admin > Service Accounts بروید.

    به حساب‌های سرویس بروید

  2. روی ایجاد حساب سرویس کلیک کنید.
  3. جزئیات حساب سرویس را پر کنید، سپس روی ایجاد و ادامه کلیک کنید.
  4. اختیاری: برای اعطای دسترسی به منابع پروژه Google Cloud خود، نقش‌هایی را به حساب سرویس خود اختصاص دهید. برای جزئیات بیشتر، به بخش اعطای، تغییر و لغو دسترسی به منابع مراجعه کنید.
  5. روی ادامه کلیک کنید.
  6. اختیاری: کاربران یا گروه‌هایی را که می‌توانند با این حساب سرویس، اقدامات را مدیریت و انجام دهند، وارد کنید. برای جزئیات بیشتر، به مدیریت جعل هویت حساب سرویس مراجعه کنید.
  7. روی «انجام شد» کلیک کنید. آدرس ایمیل حساب سرویس را یادداشت کنید.

رابط خط فرمان جی‌کلاود

  1. ایجاد حساب کاربری سرویس:
    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME \
      --display-name="SERVICE_ACCOUNT_NAME"
  2. اختیاری: برای اعطای دسترسی به منابع پروژه Google Cloud خود، نقش‌هایی را به حساب سرویس خود اختصاص دهید. برای جزئیات بیشتر، به بخش اعطای، تغییر و لغو دسترسی به منابع مراجعه کنید.

حساب سرویس در صفحه حساب سرویس نمایش داده می‌شود.

ایجاد کلید خصوصی

برای ایجاد و دانلود کلید خصوصی برای حساب سرویس، مراحل زیر را دنبال کنید:

  1. در کنسول گوگل کلود، به Menu > IAM & Admin > Service Accounts بروید.

    به حساب‌های سرویس بروید

  2. حساب کاربری سرویس خود را انتخاب کنید.
  3. روی کلیدها > افزودن کلید > ایجاد کلید جدید کلیک کنید.
  4. JSON را انتخاب کنید، سپس روی ایجاد کلیک کنید.

    جفت کلید عمومی/خصوصی جدید شما ایجاد و به عنوان یک فایل جدید در دستگاه شما دانلود می‌شود. فایل JSON دانلود شده را با نام credentials.json در دایرکتوری کاری خود ذخیره کنید. این فایل تنها کپی از این کلید است. برای اطلاعات بیشتر در مورد نحوه ذخیره ایمن کلید خود، به مدیریت کلیدهای حساب سرویس مراجعه کنید.

  5. روی بستن کلیک کنید.

برای اطلاعات بیشتر در مورد حساب‌های سرویس، به حساب‌های سرویس در مستندات Google Cloud IAM مراجعه کنید.

عامل A2A را مستقر کنید

  1. اگر این کار را نکرده‌اید، با حساب Google Cloud خود احراز هویت کنید و رابط خط فرمان Google Cloud را برای استفاده از پروژه Google Cloud خود پیکربندی کنید.

    gcloud auth application-default login
    gcloud config set project PROJECT_ID
    gcloud auth application-default set-quota-project PROJECT_ID

    به جای PROJECT_ID ، شناسه پروژه ابری خود را قرار دهید.

  2. با استفاده از این دکمه، مخزن گیت‌هاب نمونه‌های ADK را دانلود کنید:

    دانلود نمونه‌های adk

  3. در محیط توسعه محلی مورد نظر خود، فایل بایگانی دانلود شده را استخراج کرده و دایرکتوری adk-samples/python/agents/llm-auditor را باز کنید.

    unzip adk-samples-main.zip
    cd adk-samples-main/python/agents/llm-auditor
  4. پیاده‌سازی را به‌روزرسانی کنید تا عامل ADK را به عنوان یک عامل از راه دور A2A مستقر کنید:

    1. pyproject.toml : وابستگی‌های ADK و A2A SDK را در گروه استقرار اضافه کنید.

      اسکریپت برنامه‌ها/چت/a2a-ai-agent/llm-auditor/pyproject.toml
      [project]
      name = "llm-auditor"
      version = "0.1.0"
      description = "The LLM Auditor evaluates LLM-generated answers, verifies actual accuracy using the web, and refines the response to ensure alignment with real-world knowledge."
      authors = [
          { name = "Chun-Sung Ferng", email = "csferng@google.com" },
          { name = "Cyrus Rashtchian", email = "cyroid@google.com" },
          { name = "Da-Cheng Juan", email = "dacheng@google.com" },
          { name = "Ivan Kuznetsov", email = "ivanku@google.com" },
      ]
      license = "Apache License 2.0"
      readme = "README.md"
      
      [tool.poetry.dependencies]
      python = "^3.10"
      google-adk = "^1.0.0"
      google-cloud-aiplatform = { extras = [
          "adk",
          "agent-engines",
      ], version = "^1.93.0" }
      google-genai = "^1.9.0"
      pydantic = "^2.10.6"
      python-dotenv = "^1.0.1"
      
      [tool.poetry.group.dev]
      optional = true
      
      [tool.poetry.group.dev.dependencies]
      google-adk = { version = "^1.0.0", extras = ["eval"] }
      pytest = "^8.3.5"
      pytest-asyncio = "^0.26.0"
      
      [tool.poetry.group.deployment]
      optional = true
      
      [tool.poetry.group.deployment.dependencies]
      absl-py = "^2.2.1"
      google-adk = "^1.0.0"
      a2a-sdk = "^0.3.0"
      
      [build-system]
      requires = ["poetry-core>=2.0.0,<3.0.0"]
      build-backend = "poetry.core.masonry.api"
    2. deployment/deploy.py : فایل استقرار برنامه ADK را با یک عامل و کارت A2A جایگزین کنید.

      apps-script/chat/a2a-ai-agent/llm-auditor/deployment/deploy.py
      # Copyright 2025 Google LLC
      #
      # Licensed under the Apache License, Version 2.0 (the "License");
      # you may not use this file except in compliance with the License.
      # You may obtain a copy of the License at
      #
      #     http://www.apache.org/licenses/LICENSE-2.0
      #
      # Unless required by applicable law or agreed to in writing, software
      # distributed under the License is distributed on an "AS IS" BASIS,
      # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
      # See the License for the specific language governing permissions and
      # limitations under the License.
      
      """Deployment script for LLM Auditor."""
      
      import os
      
      from absl import app
      from absl import flags
      from dotenv import load_dotenv
      from llm_auditor.agent import root_agent
      import vertexai
      from vertexai import agent_engines
      
      # A2A wrapping
      from a2a.types import AgentSkill
      from google.adk.a2a.executor.a2a_agent_executor import A2aAgentExecutor
      from google.adk.runners import InMemoryRunner
      from vertexai.preview.reasoning_engines.templates.a2a import create_agent_card
      from vertexai.preview.reasoning_engines import A2aAgent
      
      FLAGS = flags.FLAGS
      flags.DEFINE_string("project_id", None, "GCP project ID.")
      flags.DEFINE_string("location", None, "GCP location.")
      flags.DEFINE_string("bucket", None, "GCP bucket.")
      flags.DEFINE_string("resource_id", None, "ReasoningEngine resource ID.")
      
      flags.DEFINE_bool("list", False, "List all agents.")
      flags.DEFINE_bool("create", False, "Creates a new agent.")
      flags.DEFINE_bool("delete", False, "Deletes an existing agent.")
      flags.mark_bool_flags_as_mutual_exclusive(["create", "delete"])
      
      
      def create() -> None:
          """Creates an agent engine for LLM Auditor."""
          agent_card = create_agent_card(
              agent_name=root_agent.name,
              description=root_agent.description,
              skills=[AgentSkill(
                  id='audit_llm_output',
                  name='Audit LLM Output',
                  description='Critiques and revises outputs from large language models.',
                  tags=['LLM', 'Audit', 'Revision'],
                  examples=[
                      'The earth is flat.',
                      'The capital of France is Berlin.',
                      'The last winner of the Super Bowl was the New England Patriots in 2020.',
                  ],
              )]
          )
          a2a_agent = A2aAgent(
              agent_card=agent_card,
              agent_executor_builder=lambda: A2aAgentExecutor(
                  runner=InMemoryRunner(
                      app_name=root_agent.name,
                      agent=root_agent,
                  )
              )
          )
          a2a_agent.set_up()
      
          remote_agent = agent_engines.create(
              a2a_agent,
              display_name=root_agent.name,
              requirements=[
                      "google-adk (>=0.0.2)",
                      "google-cloud-aiplatform[agent_engines] (>=1.88.0,<2.0.0)",
                      "google-genai (>=1.5.0,<2.0.0)",
                      "pydantic (>=2.10.6,<3.0.0)",
                      "absl-py (>=2.2.1,<3.0.0)",
                      "a2a-sdk>=0.3.22",
                      "uvicorn",
              ],
              # In-memory runner
              max_instances=1,
              env_vars ={
                  "NUM_WORKERS": "1"
              },
              extra_packages=["./llm_auditor"],
          )
          print(f"Created remote agent: {remote_agent.resource_name}")
      
      
      def delete(resource_id: str) -> None:
          remote_agent = agent_engines.get(resource_id)
          remote_agent.delete(force=True)
          print(f"Deleted remote agent: {resource_id}")
      
      
      def list_agents() -> None:
          remote_agents = agent_engines.list()
          TEMPLATE = '''
      {agent.name} ("{agent.display_name}")
      - Create time: {agent.create_time}
      - Update time: {agent.update_time}
      '''
          remote_agents_string = '\n'.join(TEMPLATE.format(agent=agent) for agent in remote_agents)
          print(f"All remote agents:\n{remote_agents_string}")
      
      def main(argv: list[str]) -> None:
          del argv  # unused
          load_dotenv()
      
          project_id = (
              FLAGS.project_id
              if FLAGS.project_id
              else os.getenv("GOOGLE_CLOUD_PROJECT")
          )
          location = (
              FLAGS.location if FLAGS.location else os.getenv("GOOGLE_CLOUD_LOCATION")
          )
          bucket = (
              FLAGS.bucket if FLAGS.bucket
              else os.getenv("GOOGLE_CLOUD_STORAGE_BUCKET")
          )
      
          print(f"PROJECT: {project_id}")
          print(f"LOCATION: {location}")
          print(f"BUCKET: {bucket}")
      
          if not project_id:
              print("Missing required environment variable: GOOGLE_CLOUD_PROJECT")
              return
          elif not location:
              print("Missing required environment variable: GOOGLE_CLOUD_LOCATION")
              return
          elif not bucket:
              print(
                  "Missing required environment variable: GOOGLE_CLOUD_STORAGE_BUCKET"
              )
              return
      
          vertexai.init(
              project=project_id,
              location=location,
              staging_bucket=f"gs://{bucket}",
          )
      
          if FLAGS.list:
              list_agents()
          elif FLAGS.create:
              create()
          elif FLAGS.delete:
              if not FLAGS.resource_id:
                  print("resource_id is required for delete")
                  return
              delete(FLAGS.resource_id)
          else:
              print("Unknown command")
      
      
      if __name__ == "__main__":
          app.run(main)
  5. یک سطل ذخیره‌سازی ابری جدید مختص عامل ADK ایجاد کنید.

    gcloud storage buckets create gs://CLOUD_STORAGE_BUCKET_NAME --project=PROJECT_ID --location=PROJECT_LOCATION

    موارد زیر را جایگزین کنید:

    1. CLOUD_STORAGE_BUCKET_NAME با یک نام سطل منحصر به فرد که می‌خواهید استفاده کنید، پر کنید.
    2. PROJECT_ID با شناسه پروژه ابری شما.
    3. PROJECT_LOCATION با موقعیت مکانی پروژه ابری شما.
  6. متغیرهای محیطی زیر را تنظیم کنید:

    export GOOGLE_GENAI_USE_VERTEXAI=true
    export GOOGLE_CLOUD_PROJECT=PROJECT_ID
    export GOOGLE_CLOUD_LOCATION=PROJECT_LOCATION
    export GOOGLE_CLOUD_STORAGE_BUCKET=CLOUD_STORAGE_BUCKET_NAME

    موارد زیر را جایگزین کنید:

    1. CLOUD_STORAGE_BUCKET_NAME با نام باکتی که ایجاد کرده‌اید.
    2. PROJECT_ID با شناسه پروژه ابری شما.
    3. PROJECT_LOCATION با محل پروژه ابری شما.
  7. نصب و استقرار ADK agent از محیط مجازی.

    python3 -m venv myenv
    source myenv/bin/activate
    poetry install --with deployment
    python3 deployment/deploy.py --create
  8. شناسه عامل را بازیابی کنید. بعداً، هنگام پیکربندی برنامه چت، به آن نیاز دارید.

    python3 deployment/deploy.py --list

ایجاد و پیکربندی پروژه برنامه چت

  1. برای باز کردن پروژه اسکریپت برنامه‌های شروع سریع عامل هوش مصنوعی A2A، روی دکمه زیر کلیک کنید.

    پروژه را باز کنید

  2. روی نمای کلی کلیک کنید > آیکون مربوط به کپی کردن یک کپی تهیه کنید .

  3. در پروژه Apps Script خود، کلیک کنید آیکون مربوط به تنظیمات پروژه تنظیمات پروژه > ویرایش ویژگی‌های اسکریپت > افزودن ویژگی اسکریپت برای افزودن ویژگی‌های اسکریپت زیر:

    1. REASONING_ENGINE_RESOURCE_NAME با نام منبع عامل Vertex AI که در مراحل قبلی کپی شده است.
    2. SERVICE_ACCOUNT_KEY با کلید JSON از حساب سرویس دانلود شده در مراحل قبلی مانند { ... } .
  4. روی ذخیره ویژگی‌های اسکریپت کلیک کنید.

  5. در کنسول گوگل کلود، به Menu > IAM & Admin > Settings بروید.

    به تنظیمات IAM و مدیریت بروید

  6. در فیلد شماره پروژه ، مقدار را کپی کنید.

  7. در پروژه Apps Script خود، کلیک کنید آیکون مربوط به تنظیمات پروژه تنظیمات پروژه .

  8. در زیر پروژه پلتفرم ابری گوگل (GCP) ، روی تغییر پروژه کلیک کنید.

  9. در قسمت شماره پروژه GCP ، شماره پروژه Google Cloud که در مراحل قبلی کپی کرده‌اید را جایگذاری کنید.

  10. روی تنظیم پروژه کلیک کنید. پروژه Cloud و پروژه Apps Script اکنون به هم متصل شده‌اند.

ایجاد یک استقرار آزمایشی

شما برای این پروژه Apps Script به یک شناسه استقرار نیاز دارید تا بتوانید در مرحله بعدی از آن استفاده کنید.

برای دریافت شناسه استقرار سر، موارد زیر را انجام دهید:

  1. در پروژه‌ی اسکریپت برنامه‌های چت، روی Deploy > Test deployments کلیک کنید.
  2. در زیر شناسه استقرار Head ، کلیک کنید آیکون مربوط به کپی کردن کپی کنید .
  3. روی انجام شد کلیک کنید.

پیکربندی برنامه چت

با استفاده از پیاده‌سازی Apps Script خود، این مراحل را برای پیاده‌سازی برنامه Google Chat جهت آزمایش دنبال کنید:

  1. در کنسول ، عبارت Google Chat API را جستجو کنید و روی Google Chat API کلیک کنید.
  2. روی مدیریت کلیک کنید.
  3. روی پیکربندی کلیک کنید و برنامه چت را تنظیم کنید:

    1. در فیلد نام برنامه ، A2A Quickstart را وارد کنید.
    2. در فیلد آدرس اینترنتی آواتار ، آدرس https://developers.google.com/workspace/add-ons/images/quickstart-app-avatar.png را وارد کنید.
    3. در قسمت توضیحات ، A2A Quickstart را وارد کنید.
    4. در بخش عملکرد ، گزینه «پیوستن به فضاها و مکالمات گروهی» را انتخاب کنید.
    5. در قسمت تنظیمات اتصال، پروژه اسکریپت برنامه‌ها را انتخاب کنید.
    6. در فیلد Deployment ID ، شناسه استقرار Head را که قبلاً کپی کرده‌اید، جایگذاری کنید.
    7. در قسمت «قابلیت مشاهده»، گزینه «افراد و گروه‌های خاص در دامنه شما» را انتخاب کنید و ایمیل خود را وارد کنید.
  4. روی ذخیره کلیک کنید.

برنامه چت آماده پاسخگویی به پیام‌ها است.

برنامه چت را آزمایش کنید

برای آزمایش برنامه چت خود، یک فضای پیام مستقیم با برنامه چت باز کنید و پیامی ارسال کنید:

  1. با استفاده از حساب Google Workspace که هنگام اضافه کردن خود به عنوان یک آزمایشگر مورد اعتماد ارائه دادید، Google Chat را باز کنید.

    به گوگل چت بروید

  2. روی گپ جدید کلیک کنید.
  3. در فیلد «افزودن ۱ یا چند نفر» ، نام برنامه چت خود را تایپ کنید.
  4. برنامه چت خود را از بین نتایج انتخاب کنید. یک پیام مستقیم باز می‌شود.

  5. در پیام مستقیم جدید با برنامه، عبارت The Eiffel Tower was completed in 1900 را تایپ کنید و enter فشار دهید.

    برنامه چت با پاسخ‌های زیر-عامل منتقد و بازبینی‌کننده پاسخ می‌دهد.

برای افزودن آزمایش‌کنندگان مورد اعتماد و کسب اطلاعات بیشتر در مورد آزمایش ویژگی‌های تعاملی، به بخش «آزمایش ویژگی‌های تعاملی برای برنامه‌های Google Chat» مراجعه کنید.

عیب‌یابی

وقتی یک برنامه یا کارت چت گوگل خطایی را برمی‌گرداند، رابط چت پیامی با عنوان «مشکلی پیش آمده است» یا «درخواست شما قابل پردازش نیست» نمایش می‌دهد. گاهی اوقات رابط کاربری چت هیچ پیام خطایی را نمایش نمی‌دهد، اما برنامه یا کارت چت نتیجه غیرمنتظره‌ای را ایجاد می‌کند؛ برای مثال، ممکن است پیام کارت ظاهر نشود.

اگرچه ممکن است پیام خطا در رابط کاربری چت نمایش داده نشود، پیام‌های خطای توصیفی و داده‌های گزارش برای کمک به شما در رفع خطاها هنگام فعال بودن ثبت خطا برای برنامه‌های چت در دسترس هستند. برای کمک به مشاهده، اشکال‌زدایی و رفع خطاها، به عیب‌یابی و رفع خطاهای گوگل چت مراجعه کنید.

تمیز کردن

برای جلوگیری از تحمیل هزینه به حساب Google Cloud خود برای منابع استفاده شده در این آموزش، توصیه می‌کنیم پروژه Cloud را حذف کنید.

  1. در کنسول گوگل کلود، به صفحه مدیریت منابع بروید. منو > مدیریت و دسترسی به منابع (IAM & Admin) > مدیریت منابع (Manage Resources) کلیک کنید.

    به مدیریت منابع بروید

  2. در لیست پروژه‌ها، پروژه‌ای را که می‌خواهید حذف کنید انتخاب کنید و سپس روی «حذف کلیک کنید.
  3. در کادر محاوره‌ای، شناسه پروژه را تایپ کنید و سپس برای حذف پروژه، روی خاموش کردن (Shut down) کلیک کنید.