1. Antes de comenzar
En este codelab, aprenderás a automatizar tareas de Google Workspace con las funciones de llamada a funciones y de multimodalidad de la API de Gemini.
Requisitos previos
- Conocimientos básicos de Apps Script, JavaScript o un lenguaje de programación similar
Qué aprenderá
- Cómo aprovechar las llamadas a funciones y las funciones de multimodalidad de la API de Gemini
- Cómo encadenar varias llamadas a la API de Gemini
- Cómo automatizar tareas de Google Workspace con la API de Gemini
Requisitos
- Un navegador web
- Una cuenta de Gmail Como alternativa, una cuenta de Google Workspace que haya implementado la configuración específica de la API de Gemini.
- Una conexión desde una región compatible con la API de Gemini.
- Opcional: Una interfaz de línea de comandos con el programa
curl
para probar solicitudes directas a la API
El código completo para este codelab está disponible en la Libro de recetas de la API de Gemini en GitHub. Revísalo si necesitas el código completo.
2. Configura la API de Gemini
Acerca de Gemini
Los modelos de Gemini son la familia de modelos de IA más grande y capaz de Google. Para aprovechar estos modelos en tus apps, puedes usar la API de Gemini. También puedes probar la API de Gemini en Google AI Studio, una interfaz web para la API en la que puedes probar instrucciones, modificar la configuración de los modelos y ajustar modelos personalizados sin escribir ningún código.
Obtén una clave
- Para usar la API de Gemini, crea una clave de API en Google AI Studio.
Prueba tu clave (opcional)
Si tienes acceso a una línea de comandos con curl, agrega la clave a la primera línea del siguiente bloque y, luego, ejecútala en la terminal para probar la clave de API.
export GOOGLE_API_KEY=Paste_your_API_key_here
curl "https://generativelanguage.googleapis.com/v1beta/models?key=${GOOGLE_API_KEY}"
Deberías ver una lista de modelos en formato JSON, como models/gemini-1.0-pro. Esto significa que funcionó.
3. Opcional: Realiza una solicitud a la API de Gemini
En este paso opcional, realizarás una solicitud a la API de Gemini para comprender mejor cómo funciona la generación de contenido antes de agregarla a una app de Apps Script.
Acerca de los modelos
La API de Gemini ofrece varios modelos con diferentes capacidades y limitaciones. Cada uno de los modelos aparece junto con sus capacidades en la página de modelos de Gemini.
Cómo realizar tu primera solicitud
Para que la API de Gemini complete una instrucción de texto, debes crear una solicitud JSON y enviarla al extremo de la API de REST.
Para hacerlo, sigue estos pasos:
- En un archivo nuevo, ingresa la siguiente solicitud JSON:
{
contents: [
{
parts: [
{ text: 'The most important aspects of a persuasive presentation are:' }
]
}
]
}
La solicitud JSON incluye la siguiente instrucción: The most important aspects of a persuasive presentation are:
. El modelo completará esta instrucción y te dará el resultado directamente.
La solicitud JSON tiene tres campos de nivel superior para propagar: contents
, generationConfig
y safetySettings
. Solo se requiere contents
. Las otras proporcionan mecanismos para controlar la salida.
- Guarda este JSON en un archivo
presentation.txt
y, luego, pásalo directamente acurl
de la siguiente manera:
curl -H 'Content-Type: application/json' -X POST -d @presentation.txt \
'https://generativelanguage.googleapis.com/v1beta/models/gemini-1.0-pro-latest:generateContent?key='${GOOGLE_API_KEY}
En este ejemplo, configuraste los siguientes valores en la URL:
v1beta
especifica la versión de la API.gemini-1.0-pro-latest
especifica Gemini 1.0 Pro como modelo y usa la instantánea más reciente.generateContent
especifica el método de la API al que llamas.
Deberías ver resultados similares a los siguientes:
{
"candidates": [
{
"content": {
"parts": [
{
"text": "* **Credibility:** The audience must trust that you are an expert on the subject matter and that you have their best interests at heart.\n* **Clearness:** Your message must be easy to understand and follow. Avoid using jargon or technical terms that your audience may not be familiar with.\n* **Concreteness:** Use specific examples and data to support your arguments. Avoid making vague or general claims.\n* **Emotional appeal:** In addition to appealing to the audience's logical side, you should also try to connect with them on an emotional level. Use storytelling, humor, and personal anecdotes to make your points more memorable and engaging.\n* **Strong closing:** End your presentation with a strong call to action. Tell the audience what you want them to do and why it is important for them to do it."
}
],
"role": "model"
},
"finishReason": "STOP",
"index": 0,
"safetyRatings": [...]
}
],
"promptFeedback": {
"safetyRatings": [...]
}
}
Para facilitar la lectura, este es el resultado de la terminal con un formato regular:
- Credibilidad: El público debe confiar en que eres un experto en el tema y en que priorizas sus intereses.
- Claridad: El mensaje debe ser fácil de entender y seguir. Evita usar jerga o términos técnicos con los que el público quizá no esté familiarizado.
- Conciencia: Usa ejemplos y datos específicos para respaldar tus argumentos. Evita hacer afirmaciones vagas o generales.
- Atractivo emocional: Además de atraer al lado lógico del público, también debes intentar conectarte con él a nivel emocional. Utiliza la narración, el humor y las anécdotas personales para que tus puntos sean más memorables y atractivos.
- Cierre eficaz: Finaliza tu presentación con un llamado a la acción convincente. Dile al público lo que quieres que haga y por qué es importante que lo haga.
Para obtener más información sobre los otros parámetros de configuración, incluidos generationConfig
y safetySettings
, consulta las instrucciones y las guías de seguridad.
4. Llama a la API de Gemini desde Apps Script
- Visita script.new y se creará un archivo
code.gs
de Apps Script automáticamente para ti. - Mantén el cursor sobre el archivo
code.gs
y haz clic en > Cambiar nombre. - Cambia el nombre del archivo a
utils.gs
. - En el archivo, quita la función
myFunction
para que el archivo esté vacío.
Agrega tu clave de API al proyecto
- En el menú de navegación, selecciona Configuración del proyecto.
- En Propiedades de la secuencia de comandos, haz clic en Agregar propiedad de la secuencia de comandos.
- En Propiedad, ingresa
GOOGLE_API_KEY
. - En Valor, ingresa tu clave de API de Google AI Studio.
- Haz clic en Guardar propiedades de la secuencia de comandos.
- Regresa al editor.
Agrega el código de la API de Gemini
En el archivo utils.gs
, sigue estos pasos:
Configura la clave de API y el extremo:
const properties = PropertiesService.getScriptProperties().getProperties();
const geminiApiKey = properties['GOOGLE_API_KEY'];
const geminiEndpoint = `https://generativelanguage.googleapis.com/v1beta/models/gemini-1.0-pro-latest:generateContent?key=${geminiApiKey}`;
- Agrega la siguiente función que llama a la API de Gemini con una instrucción específica:
function callGemini(prompt, temperature=0) {
const payload = {
"contents": [
{
"parts": [
{
"text": prompt
},
]
}
],
"generationConfig": {
"temperature": temperature,
},
};
const options = {
'method' : 'post',
'contentType': 'application/json',
'payload': JSON.stringify(payload)
};
const response = UrlFetchApp.fetch(geminiEndpoint, options);
const data = JSON.parse(response);
const content = data["candidates"][0]["content"]["parts"][0]["text"];
return content;
}
- Agrega la siguiente función que configura el mensaje:
function testGemini() {
const prompt = "The best thing since sliced bread is";
const output = callGemini(prompt);
console.log(prompt, output);
}
Pruébalo
- Haz clic en Guardar.
- Elige
testGemini
en la lista desplegable de funciones y haz clic en . - Acepta los permisos necesarios. Tu código debería ejecutarse y deberías ver algún resultado de la consola con los resultados en el registro de ejecución.
¡Funcionó!
5. Llama a la API de Gemini con imágenes
Una de las funciones más potentes de la familia de modelos de Gemini es la compatibilidad con la entrada multimodal, lo que significa que puedes proporcionar más que solo texto. En esta sección, agregarás una función que llame a la API de Gemini con una imagen.
- En la parte superior del archivo
utils.gs
después de la declaraciónconst geminiEndpoint
existente, agrega la siguiente línea:
const geminiProVisionEndpoint = `https://generativelanguage.googleapis.com/v1beta/models/gemini-1.0-pro-vision-latest:generateContent?key=${geminiApiKey}`;
Cómo agregar el código de Gemini Vision
- Agrega una función al archivo
utils.gs
para llamar a este extremo agregado recientemente:
function callGeminiProVision(prompt, image, temperature=0) {
const imageData = Utilities.base64Encode(image.getAs('image/png').getBytes());
const payload = {
"contents": [
{
"parts": [
{
"text": prompt
},
{
"inlineData": {
"mimeType": "image/png",
"data": imageData
}
}
]
}
],
"generationConfig": {
"temperature": temperature,
},
};
const options = {
'method' : 'post',
'contentType': 'application/json',
'payload': JSON.stringify(payload)
};
const response = UrlFetchApp.fetch(geminiProVisionEndpoint, options);
const data = JSON.parse(response);
const content = data["candidates"][0]["content"]["parts"][0]["text"];
return content;
}
- Agrega la siguiente función de prueba:
function testGeminiVision() {
const prompt = "Provide a fun fact about this object.";
const image = UrlFetchApp.fetch('https://storage.googleapis.com/generativeai-downloads/images/instrument.jpg').getBlob();
const output = callGeminiProVision(prompt, image);
console.log(prompt, output);
}
Esta función carga una imagen de prueba de Internet y la pasa a la función que definiste. Más adelante, lo conectarás para usar un gráfico de una hoja de cálculo, por lo que esto es solo una prueba.
Pruébalo
- Guarda y ejecuta la función
testGeminiVision
y, luego, inspecciona el resultado.
6. Llama a la API de Gemini con herramientas
Además de imágenes y texto, puedes proporcionar acceso a herramientas en tus instrucciones.
Cómo agregar el código de manejo de herramientas
- Agrega una función al archivo
utils.gs
que acepte una especificación de la herramienta:
function callGeminiWithTools(prompt, tools, temperature=0) {
const payload = {
"contents": [
{
"parts": [
{
"text": prompt
},
]
}
],
"tools" : tools,
"generationConfig": {
"temperature": temperature,
},
};
const options = {
'method' : 'post',
'contentType': 'application/json',
'payload': JSON.stringify(payload)
};
const response = UrlFetchApp.fetch(geminiEndpoint, options);
const data = JSON.parse(response);
const content = data["candidates"][0]["content"]["parts"][0]["functionCall"];
return content;
}
Para obtener más información sobre este esquema y los campos disponibles, consulta la referencia de la API de FunctionDeclaration
.
Pruébalo
- Define una herramienta que el modelo pueda usar para encontrar la fecha y hora actuales:
function testGeminiTools() {
const prompt = "Tell me how many days there are left in this month.";
const tools = {
"function_declarations": [
{
"name": "datetime",
"description": "Returns the current date and time as a formatted string.",
"parameters": {
"type": "string"
}
}
]
};
const output = callGeminiWithTools(prompt, tools);
console.log(prompt, output);
}
El formato que se usa aquí es el esquema FunctionDeclaration
. En realidad, no llamas a la función de fecha-hora. Solo recibes una indicación de que el modelo solicitó una llamada a función. Controlarás las llamadas a función en un paso posterior.
- Guarda y ejecuta la función
testGeminiTools
para ver el resultado.
7. Descripción general de las integraciones de demostración en Google Workspace
Ahora que comprendes cómo funcionan las llamadas a funciones, puedes extender fácilmente las capacidades del modelo de Gemini a otros servicios. En las próximas secciones, compilarás integraciones en productos de Google Workspace, como Google Drive, Presentaciones de Google y Hojas de cálculo de Google. A continuación, se muestra un diagrama simplificado:
En términos generales, cuando llega una consulta de un usuario, usas la llamada a función de la API de Gemini para determinar qué herramienta usar. Compilarás tres herramientas que pueden hacer lo siguiente:
- Configura una reunión. La función
setupMeeting()
del diagrama invoca a la API de Gemini 1.0 Pro para resumir un blog en Google Drive y agregarlo a una reunión recién creada en el Calendario de Google. - Crea un borrador de correo electrónico basado en las estadísticas de un gráfico. La función
draftEmail()
del diagrama invoca a Gemini 1.0 Pro Vision para analizar un gráfico en Hojas de cálculo de Google y redactar un correo electrónico en Gmail en función del análisis. - Crea una presentación preliminar. La función
createDeck()
del diagrama invoca a Gemini 1.0 Pro para intercambiar ideas sobre viñetas para una presentación en Presentaciones de Google.
Para cada herramienta, debes hacer lo siguiente:
- Determina si la respuesta de llamada a la función de la API de Gemini solicita invocar esa herramienta en particular en un bloque
if...else
. - Agregar la función real para implementar la funcionalidad de la herramienta
- Declara la herramienta con la API de Gemini para que el modelo de Gemini sepa de la existencia de la herramienta y pueda mostrar la respuesta de llamada a función correcta.
8. Configura una reunión con Apps Script
Primero, automatizas la configuración de una reunión en el Calendario de Google, pero también agregas una descripción, que es un resumen de un archivo en Google Drive.
Para hacerlo, sigue estos pasos:
- Descarga este archivo de texto, que es una copia de texto del blog del lanzamiento de Gemini 1.5 Pro.
- Sube el archivo a tu carpeta raíz en Google Drive.
- En el editor, crea un archivo
main.gs
y, luego, agrega el siguiente código:
function main() {
const userQuery = "Set up a meeting at 10AM tomorrow with Helen to discuss the news in the Gemini-blog.txt file.";
var tool_use = callGeminiWithTools(userQuery, WORKSPACE_TOOLS);
Logger.log(tool_use);
if(tool_use['name'] == "setupMeeting") {
setupMeeting(tool_use['args']['time'], tool_use['args']['recipient'], tool_use['args']['filename']);
Logger.log("Your meeting has been set up.");
}
else
Logger.log("no proper tool found");
}
Aquí, invocarás la función de llamada a funciones de la API de Gemini. A continuación, debes definir la función de la herramienta.
- A la izquierda del editor, junto a Servicios, haz clic en + Agregar un servicio > API del Calendario de Google > Agregar. De esta manera, se habilita el servicio avanzado del Calendario de Google, que necesitarás usar más adelante para algunas APIs avanzadas.
- En el archivo
utils.gs
, agrega el siguiente código:
function attachFileToMeeting(event, file, fileName) {
// Get the iCal ID for the event.
const iCalEventId = event.getId();
// Log the ID and title for debugging.
console.log(`iCal event ID: ${iCalEventId}`);
console.log(`event Title: ${event.getTitle()}`);
// Set up the options for listing the event with the advanced Google Calendar service.
const options = {
iCalUID: iCalEventId,
};
// Use the primary calendar as the calendar ID to list events.
const calendarId = 'primary';
// Use the advanced Google Calendar service to list the event.
const calEvents = Calendar.Events.list(calendarId, options);
// Get the Calendar ID used by the advanced Google Calendar service.
const eventId = calEvents.items[0].id;
// Get the file URL for the attachment.
const fileUrl = file.getUrl();
// Set up the patch options to add the file.
var patch = {
attachments: [{
'fileUrl': fileUrl,
'title': fileName
}]
};
// Patch the event to add the file as an attachment.
Calendar.Events.patch(patch, 'primary', eventId, {"supportsAttachments": true});
}
function setupMeeting(time, recipient, filename) {
const files = DriveApp.getFilesByName(filename);
const file = files.next();
const blogContent = file.getAs("text/*").getDataAsString();
var geminiOutput = callGemini("Give me a really short title of this blog and a summary with less than three sentences. Please return the result as a JSON with two fields: title and summary. \n" + blogContent);
// The Gemini model likes to enclose the JSON with ```json and ```
geminiOutput = JSON.parse(geminiOutput.replace(/```(?:json|)/g, ""));
const title = geminiOutput['title'];
const fileSummary = geminiOutput['summary'];
const event = CalendarApp.getDefaultCalendar().createEventFromDescription(`meet ${recipient} at ${time} to discuss "${title}"`);
event.setDescription(fileSummary);
attachFileToMeeting(event, file, filename);
}
Este código hace lo siguiente:
- La función
setupMeeting()
revisa tu unidad de Google Drive y encuentra el archivoGemini-blog.txt
. La llamada a función de la API de Gemini en el paso 3 muestra automáticamente este nombre de archivo. - La función
setupMeeting()
llama a la API de Gemini para resumir el contenido del archivo, configura una reunión con la app de Calendario usando una descripción de formato libre y agrega el resumen a la reunión. - La función
setupMeeting()
llama a la funciónattachFileToMeeting()
para usar el servicio avanzado de Calendario de Google para adjuntar el archivo de blog a la reunión.
- En la parte superior del archivo
utils.gs
, agrega el siguiente código:
const WORKSPACE_TOOLS = {
"function_declarations": [
{
"name": "setupMeeting",
"description": "Sets up a meeting in Google Calendar.",
"parameters": {
"type": "object",
"properties": {
"time": {
"type": "string",
"description": "The time of the meeting."
},
"recipient": {
"type": "string",
"description": "The name of the recipient."
},
"filename": {
"type": "string",
"description": "The name of the file."
},
},
"required": [
"time",
"recipient",
"filename"
]
}
},
// You add tools here.
]
};
- En el editor, vuelve al archivo
main.gs
y haz clic en . - Si Google Workspace te solicita permiso para ejecutar la secuencia de comandos, haz clic en Aceptar.
A los pocos segundos, el registro de ejecución mostrará un mensaje que te informará que tu reunión está configurada.
- En Calendario de Google, busca la reunión con el resumen y el archivo adjunto.
9. Redacta un correo electrónico con Apps Script
A continuación, automatizas la redacción de un correo electrónico en Gmail. Este es el escenario: supongamos que realizas un análisis de datos en Google Sheets. Pones todos los números en su lugar y creas un gráfico. Quieres usar la API de Gemini Pro Vision para redactar un borrador de correo electrónico basado en el gráfico.
Para hacerlo, sigue estos pasos:
- Abre esta hoja y haz clic en Archivo ->. Crea una copia.
- En el cuadro de texto Nombre del diálogo Copiar documento, reemplaza el nombre predeterminado
Copy of CollegeExpenses
porCollegeExpenses
. - En el archivo
main.gs
, reemplaza la consulta del usuario anterior por una nueva y, luego, agrega el siguiente código a la sentenciaif...else
:
function main() {
// const userQuery = "Set up a meeting at 5PM with Helen to discuss the news in the Gemini-1.5-blog.txt file.";
const userQuery = "Draft an email for Mary with insights from the chart in the CollegeExpenses sheet.";
if(...) {...}
// Add this code
else if(tool_use['name'] == "draftEmail") {
draftEmail(tool_use['args']['sheet_name'], tool_use['args']['recipient']);
Logger.log("Check your Gmail to review the draft");
}
else {...}
}
- En el archivo
utils.gs
, agrega el siguiente código:
function draftEmail(sheet_name, recipient) {
const prompt = `Compose the email body for ${recipient} with your insights for this chart. Use information in this chart only and do not do historical comparisons. Be concise.`;
var files = DriveApp.getFilesByName(sheet_name);
var sheet = SpreadsheetApp.openById(files.next().getId()).getSheetByName("Sheet1");
var expenseChart = sheet.getCharts()[0];
var chartFile = DriveApp.createFile(expenseChart.getBlob().setName("ExpenseChart.png"));
var emailBody = callGeminiProVision(prompt, expenseChart);
GmailApp.createDraft(recipient+"@demo-email-provider.com", "College expenses", emailBody, {
attachments: [chartFile.getAs(MimeType.PNG)],
name: 'myname'
});
}
Esta función recupera el gráfico de gastos universitarios de la hoja de cálculo y lo envía a Gemini Pro Vision para que escriba un borrador del correo electrónico. Gemini Pro Vision extrae información del gráfico y redacta un borrador del cuerpo del correo electrónico por ti.
- En el archivo
utils.gs
, agrega el siguiente código al objetoWORKSPACE_TOOLS
después del comentarioYou add tools here
:
WORKSPACE_TOOLS = {
"function_declarations": [
// You add tools here.
{
"name": "draftEmail",
"description": "Write an email by analyzing data or charts in a Google Sheets file.",
"parameters": {
"type": "object",
"properties": {
"sheet_name": {
"type": "string",
"description": "The name of the sheet to analyze."
},
"recipient": {
"type": "string",
"description": "The name of the recipient."
},
},
"required": [
"sheet_name",
"recipient"
]
}
},
]
};
- En el editor, vuelve al archivo
main.gs
y haz clic en . - Después de 10 a 20 segundos, abre Gmail. Deberías ver un borrador de correo electrónico como el siguiente:
Puedes revisar el borrador del correo electrónico antes de enviarlo. Gemini Pro Vision escribirá por completo el correo electrónico después de que le proporciones una instrucción breve y el gráfico.
10. Crea una presentación preliminar con Apps Script
A continuación, automatizarás la creación de una presentación de estructura en Presentaciones de Google con Apps Script.
Para hacerlo, sigue estos pasos:
- En el archivo
main.gs
, reemplaza la consulta del usuario anterior por una nueva y agrega el siguiente código a la sentenciaif...else
:
function main() {
// const userQuery = "Draft an email for Mary with insights from the chart in the CollegeExpenses sheet.";
const userQuery = "Help me put together a deck about water conservation.";
if(...) {...}
// Add this code
else if(tool_use['name'] == 'createDeck') {
deckURL = createDeck(tool_use['args']['topic']);
Logger.log("Deck URL: " + deckURL);
}
else {...}
}
- En el archivo
utils.gs
, agrega el siguiente código:
function createDeck(topic) {
const prompt = `I'm preparing a ${NUM_SLIDES}-slide deck to discuss ${topic}. Please help me brainstorm and generate main bullet points for each slide. Keep the title of each slide short. Please produce the result as a valid JSON so that I can pass it to other APIs.`;
var geminiOutput = callGemini(prompt, 0.4);
// The Gemini model likes to enclose the JSON with ```json and ```
geminiOutput = geminiOutput.replace(/```(?:json|)/g, "");
const bulletPoints = JSON.parse(geminiOutput);
// Create a Google Slides presentation.
const presentation = SlidesApp.create("My New Presentation");
// Set up the opening slide.
var slide = presentation.getSlides()[0];
var shapes = slide.getShapes();
shapes[0].getText().setText(topic);
var body;
for (var i = 0; i < NUM_SLIDES; i++) {
slide = presentation.appendSlide(SlidesApp.PredefinedLayout.TITLE_AND_BODY);
shapes = slide.getShapes();
// Set title.
shapes[0].getText().setText(bulletPoints['slides'][i]['title']);
// Set body.
body = "";
for (var j = 0; j < bulletPoints['slides'][i]['bullets'].length; j++) {
body += '* ' + bulletPoints['slides'][i]['bullets'][j] + '\n';
}
shapes[1].getText().setText(body);
}
return presentation.getUrl();
}
Esta función llama a la API de Gemini para intercambiar ideas sobre un tema en particular y muestra las viñetas en el formato
de JSON y, luego, usar Apps Script para completar una presentación de esqueleto.
- En el archivo
utils.gs
, agrega el siguiente código al objetoWORKSPACE_TOOLS
después del comentarioYou add tools here
:
WORKSPACE_TOOLS = {
"function_declarations": [
// You add tools here.
{
"name": "createDeck",
"description": "Build a simple presentation deck with Google Slides and return the URL.",
"parameters": {
"type": "object",
"properties": {
"topic": {
"type": "string",
"description": "The topic that the presentation is about."
},
},
"required": [
"topic"
]
}
},
]
};
- En la parte superior del archivo
utils.gs
, define la siguiente constante:
const NUM_SLIDES = 3;
Esta es la cantidad de diapositivas que crea el modelo de Gemini además de la diapositiva de apertura.
- En el editor, vuelve al archivo
main.gs
y haz clic en . Luego de unos segundos, verás la URL de una presentación en el registro de ejecución. - Usa tu navegador para abrir la URL. Deberías ver una presentación de esqueleto llena de viñetas.
11. Ideas para explorar
Además de estas tres integraciones, puedes explorar las siguientes ideas:
- Crea un chatbot en Google Chat. Uno de los casos de uso más populares para los modelos grandes de lenguaje (LLM) es compilar un chatbot. Con la API de Gemini, es fácil compilar un chatbot para Google Chat. Para obtener más información, consulta la API de Google Chat y el codelab Cómo compilar apps para Google Chat con Gemini.
- Generación Aumentada de Recuperación (RAG) con tus propios datos en Google Drive o Keep. En este codelab, solo usarás un archivo de texto para resumir. Sin embargo, también puedes usar el contenido de tu cuenta personal de Google Drive y Keep, como notas, imágenes y archivos PDF, con la API de Gemini, una base de datos de vectores y, de manera opcional, una herramienta de organización, como LangChain, para ejecutar RAG y personalizar la respuesta del modelo en función de tus datos.
- Usar la capacidad de llamada a funciones de varios turnos de la API de Gemini. Las llamadas a funciones de la API de Gemini no se limitan a un turno, y puedes llamadas a funciones de varios turnos para tareas aún más complejas.
- Ve más allá de Google Workspace. Ahora que entiendes cómo integrar la API de Gemini en Google Workspace, puedes ir más allá de Google Workspace y aprovechar otras APIs del mundo.
12. Felicitaciones
Aprendiste sobre las capacidades multimodales y las llamadas a funciones de la API de Gemini. Las usaste para automatizar algunas tareas de Google Workspace con Apps Script.