Vertex AI-Dienst

Zugriff auf Gemini und andere generative KI-Modelle.

Mit dem Vertex AI-Dienst können Sie die Vertex AI API in Google Apps Script verwenden. Mit dieser API haben Sie Zugriff auf Gemini und andere generative KI-Modelle für die Text- und Bildgenerierung und vieles mehr.

Eine Einführung in diesen erweiterten Dienst finden Sie in der Kurzanleitung.

Vorbereitung

  • Google Cloud-Projekt mit aktivierter Abrechnungsfunktion. Informationen dazu, wie Sie prüfen, ob die Abrechnung für ein vorhandenes Projekt aktiviert ist, finden Sie unter Abrechnungsstatus Ihrer Projekte prüfen. Informationen zum Erstellen eines Projekts und Einrichten der Abrechnung finden Sie unter Create a Google Cloud project.

  • Rufen Sie in der Google Cloud Console Ihr Cloud-Projekt auf und aktivieren Sie die Vertex AI API:

    API aktivieren

  • Aktivieren Sie in Ihrem Apps Script-Projekt den Vertex AI-Dienst. Eine Anleitung finden Sie unter Erweiterte Google-Dienste.

Referenz

Weitere Informationen zu diesem Dienst finden Sie in der Referenzdokumentation zur Vertex AI API. Wie alle erweiterten Dienste in Apps Script verwendet der Vertex AI-Dienst dieselben Objekte, Methoden und Parameter wie die öffentliche API.

Beispielcode

Im folgenden Beispielcode wird Version 1 von der Vertex AI API verwendet.

Text generieren

Dieser Beispielcode zeigt, wie Sie das Gemini 2.5 Flash-Modell auffordern, Text zu generieren. Die Funktion gibt die Ausgabe an das Ausführungsprotokoll von Apps Script zurück.

/**
 * Main entry point to test the Vertex AI integration.
 */
function main() {
  const prompt = 'What is Apps Script in one sentence?';

  try {
    const response = callVertexAI(prompt);
    console.log(`Response: ${response}`);
  } catch (error) {
    console.error(`Failed to call Vertex AI: ${error.message}`);
  }
}

/**
 * Calls the Vertex AI Gemini model.
 *
 * @param {string} prompt - The user's input prompt.
 * @return {string} The text generated by the model.
 */
function callVertexAI(prompt) {
  // Configuration
  const projectId = 'GOOGLE_CLOUD_PROJECT_ID';
  const region = 'us-central1';
  const modelName = 'gemini-2.5-flash';

  const model = `projects/${projectId}/locations/${region}/publishers/google/models/${modelName}`;

  const payload = {
    contents: [{
      role: 'user',
      parts: [{
        text: prompt
      }]
    }],
    generationConfig: {
      temperature: 0.1,
      maxOutputTokens: 2048
    }
  };

  // Execute the request using the Vertex AI Advanced Service
  const response = VertexAI.Endpoints.generateContent(payload, model);

  // Use optional chaining for safe property access
  return response?.candidates?.[0]?.content?.parts?.[0]?.text || 'No response generated.';
}

Ersetzen Sie GOOGLE_CLOUD_PROJECT_ID durch die Projekt-ID Ihres Cloud-Projekts.

Text mit einem Dienstkonto generieren

Das folgende Beispiel zeigt, wie Sie Text generieren, indem Sie sich mit einem Dienstkonto als Apps Script-Projekt authentifizieren.

/**
 * Main entry point to test the Vertex AI integration.
 */
function main() {
  const prompt = 'What is Apps Script in one sentence?';

  try {
    const response = callVertexAI(prompt);
    console.log(`Response: ${response}`);
  } catch (error) {
    console.error(`Failed to call Vertex AI: ${error.message}`);
  }
}

/**
 * Calls the Vertex AI Gemini model.
 *
 * @param {string} prompt - The user's input prompt.
 * @return {string} The text generated by the model.
 */
function callVertexAI(prompt) {
  const service = getServiceAccountService();

  // Configuration
  const projectId = 'GOOGLE_CLOUD_PROJECT_ID';
  const region = 'us-central1';
  const modelName = 'gemini-2.5-flash';

  const model = `projects/${projectId}/locations/${region}/publishers/google/models/${modelName}`;

  const payload = {
    contents: [{
      role: 'user',
      parts: [{
        text: prompt
      }]
    }],
    generationConfig: {
      temperature: 0.1,
      maxOutputTokens: 2048
    }
  };

  // Execute the request using the Vertex AI Advanced Service
  const response = VertexAI.Endpoints.generateContent(
    payload,
    model,
    {},
    // Authenticate with the service account token.
    { Authorization: `Bearer ${service.getAccessToken()}` },
  );

  // Use optional chaining for safe property access
  return response?.candidates?.[0]?.content?.parts?.[0]?.text || 'No response generated.';
}

/**
 * Get a new OAuth2 service for a given service account.
 */
function getServiceAccountService() {
  const serviceAccountKeyString = PropertiesService.getScriptProperties().getProperty('SERVICE_ACCOUNT_KEY');

  if (!serviceAccountKeyString) {
    throw new Error('SERVICE_ACCOUNT_KEY property is not set. Please follow the setup instructions.');
  }

  const serviceAccountKey = JSON.parse(serviceAccountKeyString);

  const CLIENT_EMAIL = serviceAccountKey.client_email;
  const PRIVATE_KEY = serviceAccountKey.private_key;
  const SCOPES = ['https://www.googleapis.com/auth/cloud-platform'];

  return OAuth2.createService('ServiceAccount')
      .setTokenUrl('https://oauth2.googleapis.com/token')
      .setPrivateKey(PRIVATE_KEY)
      .setIssuer(CLIENT_EMAIL)
      .setPropertyStore(PropertiesService.getScriptProperties())
      .setScope(SCOPES);
}