1. Pengantar
Google Workspace adalah tempat pekerjaan diselesaikan. Mulai dari membuat draf laporan di Dokumen hingga mengolah data di Spreadsheet dan berkolaborasi di Gmail dan Meet.
Sekarang bayangkan jika Dokumen, Spreadsheet, dan Gmail Anda bukan hanya alat, tetapi kolaborator.
Dengan bantuan Agent Development Kit (ADK) Google dan Agent Engine Vertex AI, hal tersebut bukan lagi sekadar ide, tetapi kami akan menggunakan framework ini untuk membangun agen cerdas, men-deploy agen dalam skala besar, dan mengintegrasikannya secara lancar ke dalam alat Google Workspace kami, sehingga memungkinkan era baru produktivitas berbasis agen.
Dalam codelab ini, Anda akan menggunakan pendekatan langkah demi langkah sebagai berikut:
- Kembangkan Agen Pemeriksa Fakta AI menggunakan Agent Development Kit.
- Deploy Agen di Agent Engine, lingkungan yang terkelola sepenuhnya untuk menjalankan Agen dalam skala besar.
- Integrasikan Agen ini ke Google Dokumen untuk melakukan pengecekan fakta pada teks dalam dokumen.
Diagram konseptual yang menjelaskan cara kerja solusi akhir ditampilkan di bawah:

Berikut adalah output akhir tentang cara kerja Agen Cek Fakta di dalam Dokumen Google, yang berisi teks asli yang berisi beberapa pernyataan dan melakukan cek fakta untuk setiap pernyataan dalam dokumen. Batas output dalam kotak dengan sudut merah adalah output dari Agen.

Yang akan Anda lakukan
- Merancang, Membangun, dan Men-deploy Agen yang akan melakukan pengecekan fakta di dalam Dokumen Google.
Yang akan Anda pelajari
- Mengembangkan Agen menggunakan Agent Development Kit (AK).
- Uji Agen secara lokal dan deploy di Agent Engine.
- Mengintegrasikan Agen ke dalam dokumen Google Workspace (Dokumen Google).
Yang Anda butuhkan
- Browser web Chrome
- Akun Gmail
- Project Cloud dengan penagihan diaktifkan
Codelab ini, yang dirancang untuk developer dari semua level (termasuk pemula), menggunakan Python dan Apps Script dalam kode contohnya. Namun, pengetahuan tentang bahasa pemrograman ini bukanlah prasyarat dan kemampuan membaca kode dasar akan cukup untuk memahami konsep yang disajikan.
2. Sebelum memulai
Membuat project
- Di Konsol Google Cloud, di halaman pemilih project, pilih atau buat project Google Cloud.
- Pastikan penagihan diaktifkan untuk project Cloud Anda. Pelajari cara memeriksa apakah penagihan telah diaktifkan pada suatu project .
- Anda akan menggunakan Cloud Shell, lingkungan command line yang berjalan di Google Cloud yang telah dilengkapi dengan bq. Klik Activate Cloud Shell di bagian atas konsol Google Cloud.

- Setelah terhubung ke Cloud Shell, Anda dapat memeriksa bahwa Anda sudah diautentikasi dan project sudah ditetapkan ke project ID Anda menggunakan perintah berikut:
gcloud auth list
- Jalankan perintah berikut di Cloud Shell untuk mengonfirmasi bahwa perintah gcloud mengetahui project Anda.
gcloud config list project
- Jika project Anda belum ditetapkan, gunakan perintah berikut untuk menetapkannya:
gcloud config set project <YOUR_PROJECT_ID>
- Aktifkan API yang diperlukan melalui perintah yang ditampilkan di bawah. Proses ini mungkin memerlukan waktu beberapa menit, jadi harap bersabar.
gcloud services enable cloudresourcemanager.googleapis.com \
                       servicenetworking.googleapis.com \
                       aiplatform.googleapis.com \
                       discoveryengine.googleapis.com
Jika perintah berhasil dieksekusi, Anda akan melihat pesan yang mirip dengan yang ditampilkan di bawah:
Operation "operations/..." finished successfully.
Jika ada API yang terlewat, Anda dapat mengaktifkannya kapan saja selama pelaksanaan.
Baca dokumentasi untuk mempelajari perintah gcloud dan penggunaannya.
3. Membangun Agen ADK
Mari buat agen ADK  (Document Fact Checker Agent), Auditor berbasis AI yang mengecek fakta teks, yang terinspirasi oleh contoh fungsi kustom Cek Fakta Google. Tidak seperti pendekatan satu langkah dalam contoh, agen kami menggunakan penalaran multi-langkah untuk mengekstrak klaim, memverifikasinya dengan google_search, dan menghasilkan JSON terstruktur.
Langkah 1 : Instal Agent Development Kit
Buka tab terminal baru di Cloud Shell dan buat folder bernama my-agents sebagai berikut. Buka juga folder my-agents.
mkdir workspace-agents
cd workspace-agents
Sekarang, mari kita buat lingkungan Python virtual menggunakan venv sebagai berikut:
python -m venv .venv
Aktifkan lingkungan virtual sebagai berikut:
source .venv/bin/activate
Instal ADK sebagai berikut:
pip install google-adk
Sekarang Anda dapat memanggil utilitas adk sebagai berikut.
adk
Daftar perintah akan ditampilkan.
$ adk
Usage: adk [OPTIONS] COMMAND [ARGS]...
  Agent Development Kit CLI tools.
Options:
  --version  Show the version and exit.
  --help     Show this message and exit.
Commands:
  api_server   Starts a FastAPI server for agents.
  conformance  Conformance testing tools for ADK.
  create       Creates a new app in the current folder with prepopulated agent template.
  deploy       Deploys agent to hosted environments.
  eval         Evaluates an agent given the eval sets.
  eval_set     Manage Eval Sets.
  run          Runs an interactive CLI for a certain agent.
  web          Starts a FastAPI server with Web UI for agents.
Langkah 2 : Kembangkan Agen Pemeriksa Fakta Dokumen menggunakan ADK
Sekarang kita akan menggunakan adk untuk membuat scaffolding bagi agen kita melalui perintah adk create dengan nama aplikasi **(docfactcheckeragent)**seperti yang diberikan di bawah.
adk create docfactcheckeragent
Ikuti langkah-langkahnya dan pilih opsi berikut:
- Model Gemini untuk memilih model bagi agen root.
- Pilih Vertex AI untuk backend.
- Project ID dan region Google default Anda akan ditampilkan. Pilih default itu sendiri.
Choose a model for the root agent:
1. gemini-2.5-flash
2. Other models (fill later)
Choose model (1, 2): 1
1. Google AI
2. Vertex AI
Choose a backend (1, 2): 2
You need an existing Google Cloud account and project, check out this link for details:
https://google.github.io/adk-docs/get-started/quickstart/#gemini---google-cloud-vertex-ai
Enter Google Cloud project ID [YOUR_PROJECT_ID]: 
Enter Google Cloud region [us-central1]: 
Agent created in <YOUR_HOME_FOLDER>/workspace-agents/docfactcheckeragent:
- .env
- __init__.py
- agent.py
Amati folder tempat template default dan file yang diperlukan untuk Agen telah dibuat.
Pertama-tama adalah file .env. Isinya ditampilkan di bawah:
GOOGLE_GENAI_USE_VERTEXAI=1
GOOGLE_CLOUD_PROJECT=YOUR_GOOGLE_PROJECT_ID
GOOGLE_CLOUD_LOCATION=YOUR_GOOGLE_PROJECT_REGION
Nilai tersebut menunjukkan bahwa kita akan menggunakan Gemini melalui Vertex AI bersama dengan nilai masing-masing untuk Project ID dan lokasi Google Cloud.
Kemudian, kita memiliki file __init__.py yang menandai folder sebagai modul dan memiliki satu pernyataan yang mengimpor agen dari file agent.py.
from . import agent
Terakhir, ada file agent.py. Anda harus mengganti konten pada file agent.py ini dengan kode yang ditunjukkan di bawah:
from google.adk.agents import Agent
from google.adk.tools import google_search
root_agent = Agent(
    name='ai_auditor',
    model='gemini-2.5-flash',
    description="Fact-checks statements from a document and provides citations.",
    instruction="""
You are an AI Auditor specialized in factual verification and evidence-based reasoning.
Your goal is to analyze text from a Google Doc, identify verifiable factual claims, and produce a concise, source-backed audit report.
### 🔍 TASK FLOW
1. **Extract Claims**
   - Analyze the input text and identify factual claims that can be objectively verified.
   - A factual claim is any statement that can be proven true or false with external evidence.
   - Skip opinions, vague generalizations, or speculative language.
   - List each claim as a string in a JSON array.
2. **Verify Claims**
   - For each extracted claim:
     - Use the `google_search` tool to find relevant, credible results.
     - Evaluate at least the top 3 relevant URLs to determine the claim's accuracy.
     - Cross-check multiple sources when possible to ensure confidence.
3. **Classify Findings**
   - For each claim, determine one of the following verdicts:
     - ✅ **True:** Supported by multiple reputable sources.
     - ⚠️ **Misleading / Partially True:** Contains partially correct or context-dependent information.
     - ❌ **False:** Contradicted by credible evidence.
     - ❓ **Unverifiable:** Insufficient information to confirm or deny.
   - Provide a **confidence score (0–100)** reflecting the strength of evidence.
4. **Record Evidence**
   - For each claim, include:
     - The **verdict**
     - **Reasoning summary** (1–2 sentences)
     - **List of citation URLs** used for verification
5. **Summarize Results**
   - Compile a final report including:
     - Total number of claims analyzed
     - Distribution of verdicts (True / False / Misleading / Unverifiable)
     - Brief overall conclusion (e.g., "Most claims are accurate but some lack supporting evidence.")
### 🧾 OUTPUT FORMAT
Return your final response in structured JSON format as follows:
{
  "claims": [
    {
      "claim": "...",
      "verdict": "True | False | Misleading | Unverifiable",
      "confidence": 0-100,
      "reasoning": "...",
      "sources": ["https://...", "https://..."]
    }
  ],
  "summary": {
    "total_claims": X,
    "verdict_breakdown": {
      "True": X,
      "False": X,
      "Misleading": X,
      "Unverifiable": X
    },
    "overall_summary": "..."
  }
}
### 🧠 ADDITIONAL INSTRUCTIONS
- Always prefer authoritative domains (.gov, .edu, .org, or major media).
- Avoid low-quality or user-generated content as primary sources.
- Be concise, accurate, and transparent about uncertainty.
    """,
    tools=[google_search],  # Only use the search tool
)
Poin utama untuk kode sumber di atas adalah:
- Kita mendefinisikan agen AI dengan memberinya nama, diikuti dengan model, deskripsi, dan serangkaian petunjuk yang sangat mendetail.
- Set petunjuk adalah bagian terpenting yang menentukan secara persis cara agen harus berpikir dan beroperasi. Struktur ini mencerminkan cara kerja pemeriksa fakta profesional - mengubah AI menjadi pipeline audit otonom.
- Setelah selesai dengan pernyataan agen ini, kita akan memberikan akses agen ke informasi dunia nyata melalui Google Search tool. Alih-alih mengandalkan data yang telah dilatih sebelumnya, agen dapat melakukan penelusuran langsung, mengevaluasi hasil, dan memberikan kutipan terbaru.
Itulah yang membuat sistem ini bersifat agentik - model tidak hanya menghasilkan jawaban, tetapi juga mengambil tindakan (menggunakan alat) untuk memverifikasi informasi.
Langkah 3 : Uji Agen secara lokal
Dari jendela terminal yang ada, berikan perintah berikut. Pastikan Anda berada di folder induk (workspace-agents) yang berisi folder docfactcheckeragent.
adk web
Contoh eksekusi ditampilkan di bawah:
INFO:     Started server process [1478]
INFO:     Waiting for application startup.
+-----------------------------------------------------------------------------+
| ADK Web Server started                                                      |
|                                                                             |
| For local testing, access at http://127.0.0.1:8000.                         |
+-----------------------------------------------------------------------------+
INFO:     Application startup complete.
INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
Klik link terakhir dan konsol web akan muncul untuk menguji Agen. Interaksi pertama kita sangat penting: memahami apa yang sebenarnya dapat dilakukan agen. Hal ini menguji kemampuan agen untuk meringkas description dan instruction text-nya.

Agen memberikan ringkasan singkat tentang kemampuannya, yang diambil dari deskripsi dan set instruksinya.
Kemudian, kami memberinya dua pernyataan (The sky is blue due to Rayleigh scattering. The Earth is flat.) dan pernyataan tersebut berhasil mengaudit konten serta memberikan respons JSON yang terstruktur dengan baik.

Di balik layar:
- Alat google_search mengambil halaman yang relevan dari web.
- Model Gemini 2.5 Flash mengurai cuplikan tersebut dan mengklasifikasikan kebenarannya.
- ADK menangani orkestrasi penalaran dan memastikan logika langkah demi langkah diikuti.
Fase pengujian lokal ini membantu memvalidasi alur kerja agen kami sebelum Anda men-deploy-nya di Vertex AI Agent Engine, tempat agen dapat terhubung ke alat Google Workspace seperti Dokumen atau Spreadsheet.
Singkatnya, kami membuat Agen Auditor AI yang canggih menggunakan Agent Development Kit (ADK) Google. Agen kami dapat membaca teks, mengidentifikasi klaim faktual, menelusuri sumber kredibel (menggunakan alat google_search), dan memberikan putusan yang jelas.
Kami membuat dan menguji semuanya secara lokal melalui antarmuka web ADK dan melihat cara kerja agen dalam menganalisis pernyataan seperti:
The sky is blue due to Rayleigh scattering. The Earth is flat.
Agen memverifikasi satu klaim sebagai true dan menandai klaim lainnya sebagai false, bukti kecil namun tepat bahwa penyiapan lokal kami berfungsi dengan sempurna.
Sekarang saatnya mengambil langkah besar berikutnya - beralih dari lokal ke cloud. Mari kita lakukan hal itu berikutnya.
4. Men-deploy Agen ke Vertex AI Agent Engine
Agen sungguhan bukan hanya sesuatu yang Anda uji di laptop, tetapi juga sesuatu yang dapat Anda jalankan dalam skala besar, diintegrasikan dengan sistem lain, dan di-deploy untuk produksi di seluruh aplikasi Anda.
Mengapa Harus Men-deploy?
Berikut beberapa alasan bagus untuk men-deploy Agen Anda ke cloud.
- Skalabilitas: Tangani permintaan bervolume tinggi tanpa batas runtime lokal.
- Keandalan: Pemantauan dan penskalaan otomatis bawaan, dengan perbaikan seperti update konfigurasi alat ADK pada 18 Oktober 2025.
- Siap Integrasi: Ekspos endpoint API untuk panggilan Workspace yang lancar.
Mengapa Vertex AI Agent Engine?
Anggap Vertex AI Agent Engine sebagai tempat untuk agen ADK yang di-deploy - lingkungan terkelola yang dibangun untuk keandalan, skalabilitas, dan integrasi.
Agen Anda akan memiliki:
- Status dan memori persisten
- Eksekusi alat terintegrasi (misalnya, Google Penelusuran, Model Vertex AI)
- Mengamankan endpoint API untuk panggilan eksternal
- Logging dan observabilitas melalui Cloud Logging
- Dukungan native untuk orkestrasi multi-agen
Singkatnya, Anda menulis sekali dengan ADK, lalu menskalakannya menggunakan Agent Engine.
Langkah 1 : Menyiapkan Deployment
Kita perlu melakukan beberapa hal sebelum men-deploy agen Vertex AI Agent Engine. Proses deployment memerlukan pembuatan bucket Google Cloud Storage untuk artefak agen dan kita juga perlu menyediakan file requirements.txt, sehingga semua dependensi yang diperlukan untuk menjalankan kode Agen tersedia di lingkungan runtime Agent Engine.
Di terminal Cloud Shell, berikan perintah berikut untuk membuat bucket (Jangan lupa mengganti YOUR_BUCKET_NAME, YOUR_PROJECT_ID, dan YOUR_PROJECT_REGION dengan nilai sebenarnya yang khusus untuk project Anda):
gcloud storage buckets create gs://YOUR_BUCKET_NAME \
                              --project=YOUR_PROJECT_ID \
                              --location=YOUR_PROJECT_REGION
Selanjutnya, buat file requirements.txt berikut di folder root (workspace-agents), yang isinya ditampilkan di bawah:
google-cloud-aiplatform
google-adk
requests
Langkah 2 : Deploy Agen
Langkah selanjutnya adalah men-deploy agen Anda ke Vertex AI Agent Engine menggunakan perintah adk deploy.
adk deploy agent_engine \
    --project=YOUR_PROJECT_ID \
    --region=YOUR_PROJECT_REGION \
    --display_name "Doc Fact Checker" \
    --staging_bucket gs://YOUR_BUCKET_NAME \
    --requirements_file requirements.txt \
    docfactcheckeragent/
Tindakan ini akan memulai proses untuk men-deploy agen kita ke Agent Engine. Proses ini memakan waktu dan diperkirakan memerlukan waktu sekitar 5 menit. Pada tingkat tinggi, berikut yang terjadi:
- Pembuatan agen dimulai - ADK CLI mengemas kode Anda, menguploadnya ke bucket Cloud Storage, dan memicu Vertex AI untuk membuat instance Agent Engine baru.
- Anda akan diberi link Logs, tempat Anda dapat melihat penjelajah Cloud Logs untuk project Anda. Klik untuk melihat progres mendetail, termasuk langkah penyiapan, penginstalan dependensi, dan inisialisasi model. Jika terjadi masalah (seperti masalah izin atau dependensi yang tidak ada), Anda akan menemukan pesan error di sini.
- Pesan penyelesaian - Setelah deployment selesai, Anda akan melihat pesan konfirmasi di terminal dengan ID Reasoning Engine Anda. Contohnya ditampilkan di bawah ini:
AgentEngine created. Resource name: projects/SOME_ID/locations/REGION/reasoningEngines/SOME_ID
Langkah 3 : Verifikasi Agen di Konsol Cloud (Agent Engine)
Setelah deployment selesai, buka bagian Vertex AI → Agent Engine di konsol Google Cloud Anda. Anda akan melihat agen yang di-deploy tercantum di konsol seperti yang ditunjukkan di bawah:

🎉 Selesai! Agen Anda kini aktif di Vertex AI dan siap diintegrasikan ke Google Workspace atau diuji secara langsung.
Langkah 4 : Menguji Agen deployment
Selamat - agen Anda kini aktif di Vertex AI Agent Engine. Langkah selanjutnya adalah menguji apakah aplikasi di-deploy dengan benar dan merespons permintaan.
Ada beberapa cara berbeda untuk melakukannya, bergantung pada cara kerja yang Anda sukai:
- Melalui Konsol Google Cloud: Antarmuka visual untuk melihat, mengelola, dan menguji agen yang di-deploy secara langsung.
- Menggunakan REST API (cURL): Ideal untuk developer yang ingin mengirim permintaan dan memeriksa respons secara manual.
- Dengan Vertex AI SDK untuk Python: Opsi yang lebih terprogram untuk mengintegrasikan pengujian ke dalam alur kerja pengembangan Anda.
Setiap pendekatan memberi Anda insight tentang perilaku agen setelah di-deploy, yaitu apakah agen memproses kueri, menangani sesi, atau menampilkan respons. Untuk mempelajari langkah-langkah mendetail, contoh, dan konfigurasi lanjutan untuk setiap metode, lihat dokumentasi resmi di sini.
Auditor AI Anda kini menjadi agen yang didukung cloud, di-deploy ke Vertex AI Agent Engine, dan siap melakukan pengecekan fakta dalam skala besar dengan google_search. Hal ini diubah menjadi rekan digital berbasis API yang andal, yang menghasilkan JSON seperti:
{ "claims": [{"claim": "The sky is blue...", "verdict": "True", "confidence": 95}] }
Kita akan mengujinya secara langsung di bagian berikutnya, tempat kita akan mengintegrasikan agen di dalam dokumen Google dan memvalidasi fakta yang dinyatakan dalam dokumen tersebut.
5. Mengintegrasikan Agen Cek Fakta ke dalam Google Dokumen
Di bagian ini, kita akan menghubungkan semuanya - menghadirkan agen yang di-deploy ke dalam Google Dokumen. Dengan beberapa baris Apps Script, Anda akan mengubah Dokumen Google standar menjadi editor yang dibantu AI yang dapat menganalisis dan memeriksa fakta konten secara otomatis menggunakan agen yang Anda deploy.
Langkah 1: Siapkan Lingkungan Google Dokumen Anda
Mulai dengan membuka Dokumen Google baru atau yang sudah ada (docs.new).
Dokumen Google yang kita gunakan untuk tutorial ini berisi konten berikut (Anda dapat menggunakan konten tersebut atau konten Anda sendiri yang ingin Anda verifikasi faktanya):
Climate change is mainly caused by solar activity cycles, not human activities. The Earth's temperature has not increased significantly in the last 100 years. Wind energy now produces more electricity than coal in every country in Europe. In 2015, nearly all world nations signed the Paris Agreement to limit global warming.
Langkah 2: Siapkan project dan file Apps Script Anda
Anda memerlukan dua file di project Apps Script untuk penyiapan ini:
- AIVertex.gs– menangani semua komunikasi dengan Vertex AI dan Agen ADK.
- Code.gs– mengontrol antarmuka, menu, dan tindakan dokumen Google Dokumen.
Dari menu, buka Extensions -> Apps Script untuk membuka editor. Kita akan menggunakan ruang ini untuk terhubung ke Agen ADK yang di-deploy. Anda akan menemukan file Code.gs yang sudah dibuat dan Anda harus mengganti kontennya dengan kode Code.gs yang diberikan di bagian berikutnya.
Mari kita bahas satu per satu.
AIVertex.gs
Buat file baru melalui tanda + di samping bagian File di sebelah kiri, pilih sebagai Script, lalu salin konten berikut ke dalamnya.
const LOCATION = PropertiesService.getScriptProperties().getProperty('LOCATION');
const GEMINI_MODEL_ID = PropertiesService.getScriptProperties().getProperty('GEMINI_MODEL_ID');
const REASONING_ENGINE_ID = PropertiesService.getScriptProperties().getProperty('REASONING_ENGINE_ID');
const SERVICE_ACCOUNT_KEY = PropertiesService.getScriptProperties().getProperty('SERVICE_ACCOUNT_KEY');
const credentials = credentialsForVertexAI();
/**
 * @param {string} statement The statement to fact-check.
 */
function requestLlmAuditorAdkAiAgent(statement) {
  return UrlFetchApp.fetch(
    `https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${credentials.projectId}/locations/${LOCATION}/reasoningEngines/${REASONING_ENGINE_ID}:streamQuery?alt=sse`,
    {
      method: 'post',
      headers: { 'Authorization': `Bearer ${credentials.accessToken}` },
      contentType: 'application/json',
      muteHttpExceptions: true,
      payload: JSON.stringify({
        "class_method": "async_stream_query",
        "input": {
          "user_id": "google_sheets_custom_function_fact_check",
          "message": statement,
        }
      })
    }
  ).getContentText();
}
/**
 * @param {string} prompt The Gemini prompt to use.
 */
function requestOutputFormatting(prompt) {
  const response = UrlFetchApp.fetch(
    `https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${credentials.projectId}/locations/${LOCATION}/publishers/google/models/${GEMINI_MODEL_ID}:generateContent`,
    {
      method: 'post',
      headers: { 'Authorization': `Bearer ${credentials.accessToken}` },
      contentType: 'application/json',
      muteHttpExceptions: true,
      payload: JSON.stringify({
        "contents": [{
          "role": "user",
          "parts": [{ "text": prompt }]
        }],
        "generationConfig": { "temperature": 0.1, "maxOutputTokens": 2048 },
        "safetySettings": [
          {
            "category": "HARM_CATEGORY_HARASSMENT",
            "threshold": "BLOCK_NONE"
          },
          {
            "category": "HARM_CATEGORY_HATE_SPEECH",
            "threshold": "BLOCK_NONE"
          },
          {
            "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
            "threshold": "BLOCK_NONE"
          },
          {
            "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
            "threshold": "BLOCK_NONE"
          }
        ]
      })
    }
  );
  return JSON.parse(response).candidates[0].content.parts[0].text
}
/**
 * Gets credentials required to call Vertex API using a Service Account.
 * Requires use of Service Account Key stored with project.
 * 
 * @return {!Object} Containing the Google Cloud project ID and the access token.
 */
function credentialsForVertexAI() {
  const credentials = SERVICE_ACCOUNT_KEY;
  if (!credentials) {
    throw new Error("service_account_key script property must be set.");
  }
  const parsedCredentials = JSON.parse(credentials);
  const service = OAuth2.createService("Vertex")
    .setTokenUrl('https://oauth2.googleapis.com/token')
    .setPrivateKey(parsedCredentials['private_key'])
    .setIssuer(parsedCredentials['client_email'])
    .setPropertyStore(PropertiesService.getScriptProperties())
    .setScope("https://www.googleapis.com/auth/cloud-platform");
  return {
    projectId: parsedCredentials['project_id'],
    accessToken: service.getAccessToken(),
  }
}
Jangan lupa untuk menyimpan file.
File ini melakukan hal berikut:
- Melakukan autentikasi secara aman ke Vertex AI menggunakan kunci Akun Layanan. ADK Agent yang di-deploy akan dipanggil untuk menganalisis atau mengecek fakta teks dokumen.
- Menggunakan Gemini untuk pemformatan respons cerdas , sehingga hasilnya mudah dibaca.
Code.gs
/**
 * Adds a custom menu in Google Docs to run the AI Audit directly.
 */
function onOpen() {
  DocumentApp.getUi()
    .createMenu('AI Audit Tools')
    .addItem('Run AI Audit', 'runAuditAndInsert')
    .addToUi();
}
/**
 * Returns the entire text content of the document.
 */
function getDocumentText() {
  const doc = DocumentApp.getActiveDocument();
  const body = doc.getBody();
  let text = body.getText();
  return text.trim();
}
/**
 * Runs the AI Audit and inserts the result as text at the end of the document.
 */
function runAuditAndInsert() {
  const docText = getDocumentText();
  const result = runAudit(docText);
  if (result) {
    const doc = DocumentApp.getActiveDocument();
    const body = doc.getBody();
    // Append the audit result as a new paragraph at the end of the document
    body.appendParagraph('AI Audit Result: ' + result);
  }
}
/**
 * Runs the AI Audit using ADK Agent and Gemini formatting.
 */
function runAudit(docText) {
  console.log('[INFO] Starting AI audit process...');
  if (!docText) {
    console.log('[WARN] No text in document.');
    return '⚠️ The document is empty. Please add some text to audit.';
  }
  // Check for excessive document length to avoid token limits
  if (docText.length > 10000) {
    console.log('[WARN] Document too long.');
    return '⚠️ Document exceeds 10,000 characters. Please shorten the text.';
  }
  console.log('[STEP] Sending text to ADK Agent...');
  const rawAudit = requestLlmAuditorAdkAiAgent(docText);
  // Check if rawAudit is an error message
  if (rawAudit.startsWith('ERROR:')) {
    console.error('[ERROR] ADK Agent returned error:', rawAudit);
    return rawAudit;
  }
  console.log('[STEP] Formatting AI response...');
  let formatted;
  try {
    formatted = requestOutputFormatting(
      `Here is a fact-checking result: ${rawAudit}.
       Summarize it. Keep the main verdict and reasoning. Remove markdown and make it concise.`
    );
  } catch (error) {
    console.error('[ERROR] Formatting failed:', error.toString());
    return `ERROR: Failed to format audit result - ${error.toString()}`;
  }
  console.log('[SUCCESS] Audit completed successfully.');
  console.log('[RESULT] Final Output:', formatted);
  return formatted;
}
File ini menghubungkan UI Dokumen Anda dengan logika ADK di atas. Fitur ini memungkinkan Anda memicu audit langsung dari menu Dokumen kustom. Pada tingkat tinggi, fungsinya adalah sebagai berikut:
- Menambahkan menu kustom di Google Dokumen yang disebut Alat Audit AI.
- Mengambil teks dokumen Anda dan mengirimkannya ke Agen ADK Anda untuk dianalisis.
- Menampilkan hasil audit yang dihasilkan AI kembali ke dalam dokumen.
Langkah 3 : Buat Akun Layanan
Saat Anda mengintegrasikan fungsi panggilan Agen ke dalam Dokumen Google, kami perlu memberikan identitas ke Dokumen Google tersebut, sehingga memiliki peran yang benar untuk memanggil Agen yang di-deploy di Agent Engine. Untuk tujuan ini, kita akan menggunakan Akun Layanan yang akan memiliki peran yang benar: roles/aiplatform.user.
Di Cloud Shell, jalankan skrip berikut langkah demi langkah:
export PROJECT_ID="YOUR_PROJECT_ID"
export SA_NAME="docfactcheckeragentsa"
gcloud iam service-accounts create $SA_NAME \
  --project=$PROJECT_ID \
  --display-name="Doc Fact Checker Agent Service Account"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:${SA_NAME}@${PROJECT_ID}.iam.gserviceaccount.com" \
  --role="roles/aiplatform.user"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:${SA_NAME}@${PROJECT_ID}.iam.gserviceaccount.com" \
  --role="roles/iam.serviceAccountTokenCreator"
Tindakan ini akan membuat akun layanan dengan izin yang benar.
Kita akan membuat kunci JSON untuk akun layanan. Project Apps Script Anda akan menggunakan ini untuk melakukan autentikasi. Langkah-langkah untuk mendapatkan kunci adalah:
- Di konsol Google Cloud, buka IAM & Admin > Service Accounts.
- Klik akun layanan tertentu yang baru saja Anda buat.
- Buka tab Kunci.
- Klik Tambahkan Kunci → Buat Kunci Baru.
- Pilih JSON, lalu klik Buat.
- File JSON akan didownload secara otomatis, Anda harus menjaganya agar tetap aman. Anda akan menempelkan kontennya ke dalam properti skrip di bagian berikutnya.
Langkah 4 : Tambahkan properti Skrip
Kembali ke editor Apps Script di Dokumen Google.
Untuk menghubungkan skrip ke resource yang di-deploy, buka Project Settings → Script Properties → Add Script Property.

Tambahkan kode berikut ke Properti Skrip Anda:
- LOCATION: Region deployment Vertex AI Anda. Misalnya,- us-central1
- GEMINI_MODEL_ID: Model Gemini yang akan digunakan. Gunakan nilai:- gemini-2.5-flash
- REASONING_ENGINE_ID: ID Agen ADK yang di-deploy. ID ini dapat diperoleh dari opsi Agent Engine di konsol dari Agent spesifik yang Anda deploy. Anda akan melihat nama resource untuk Agen yang di-deploy. ID Agen adalah nilai numerik terakhir dalam nama resource (yaitu- RESOURCE_ID). Misalnya,- projects/SOME_ID/locations/REGION/reasoningEngines/- RESOURCE_ID
- SERVICE_ACCOUNT_KEY: Salin seluruh konten untuk kunci JSON yang Anda download untuk Akun Layanan yang kita buat di langkah sebelumnya.
Klik Simpan properti skrip.
Langkah 5 : Tambahkan library OAuth2
Project Apps Script kita memerlukan library OAuth2 untuk mengautentikasi panggilan API.
Untuk menambahkannya:
- Buka Services → Libraries
- Klik Add a Library
- Masukkan ID Skrip: 1B7FSrk5Zi6L1rSxxTDgDEUsPzlukDsi4KGuTMorsTQHhGBzBkMun4iDF
Langkah 6 : Uji Agen Dokumen Pemeriksa Fakta di Google Dokumen
Kita berada di langkah terakhir untuk menguji agen di dalam Google Dokumen. Untuk melakukannya, lakukan hal berikut:
- Di editor Apps Script, jalankan fungsi onOpen()satu kali. Tindakan ini akan menambahkan menu Alat Audit AI baru di Google Dokumen.
- Kembali ke Dokumen Anda. Anda akan melihat item menu tambahan di menu utama yang berjudul AI Audit Tools. Klik tombol tersebut, laluRun AI Audit.
Berikut contoh eksekusinya:

6. Pembersihan
Agar tidak menimbulkan biaya berkelanjutan pada akun Google Cloud Anda, penting untuk menghapus resource yang kita buat selama workshop ini.
Jika tidak memerlukan lagi Agent untuk di-deploy di Agent Engine, Anda dapat menghapusnya melalui langkah-langkah yang diberikan di bawah:
- Buka halaman Vertex AI Agent Engine di Konsol Google Cloud.
- Cari agen yang ingin Anda hapus dari daftar agen yang di-deploy.
- Klik menu tiga titik (tindakan lainnya) di samping nama agen.
- Pilih Hapus dari menu dropdown.
- Konfirmasi penghapusan dengan mengklik Hapus agen di dialog konfirmasi.
Sebagai praktik yang baik, hapus juga akun layanan.
gcloud iam service-accounts delete ${SA_NAME}@${PROJECT_ID}.iam.gserviceaccount.com
7. Selamat
Sekarang Anda telah men-deploy Agen AI, menghubungkannya ke Google Dokumen, dan melihatnya beraksi - menganalisis, menyimpulkan, dan meringkas tepat di tempat konten Anda berada. Apa yang telah kita buat di sini bukan hanya demo mandiri. Ini adalah fondasi untuk kolaborasi cerdas yang didorong oleh agen di dalam Google Workspace.
Dengan menggabungkan kemampuan penalaran ADK dengan model generatif Gemini, kami telah secara efektif mengubah Google Dokumen menjadi asisten yang hidup dan berpikir - yang dapat membaca, mengaudit, dan menyempurnakan teks Anda dengan konteks.
Cetakan yang sama secara alami diperluas di Spreadsheet, Slide, Drive, dan Gmail. Bayangkan agen yang:
- Mengaudit data keuangan dan menandai inkonsistensi di Spreadsheet
- Membuat ringkasan dan deck presentasi secara otomatis di Slide
- Memberi label dan mengatur dokumen secara cerdas di Drive
- Atau bahkan membuat draf dan mengecek fakta email langsung di Gmail
Demonstrasi ini meletakkan dasar untuk membangun alur kerja agentik yang terintegrasi secara lancar ke dalam alat Workspace harian Anda, mengubah dokumen statis menjadi kolaborator AI yang dinamis.