Las funciones multimodales y de contexto extenso de Gemini impulsan aplicaciones como NotebookLM, Google Lens y muchas más, y ofrecen una gran variedad de usos innovadores para los desarrolladores.
En esta publicación de blog, destacamos algunos de los casos de uso que más nos entusiasman para la entrada de imágenes y videos en la API de Gemini, que esperamos generen nuevas ideas para lo que se puede crear con funciones de visión. Los ejemplos que se ilustran son de Gemini 1.5 Pro, nuestro modelo de rendimiento más sólido para aplicaciones de comprensión de imágenes y videos, pero recomendamos probar 1.5 Flash y 1.5 Flash-8B (y nuestros modelos experimentales) según la complejidad de tu tarea.
Los modelos de Gemini pueden hacer descripciones, responder preguntas y razonar sobre las imágenes. Además, ajustan la longitud de la descripción, el tono y el formato dependiendo de la indicación, por lo que puedes ajustar el comportamiento del modelo para tu caso práctico.
Gemini es capaz de comprender y procesar más de 1,000 páginas de documentos PDF. Con sus funciones de visión nativa, Gemini puede transcribir tablas con precisión; interpretar diseños complejos de varias columnas; comprender gráficos, bocetos, diagramas y texto escrito a mano dentro de documentos; y utilizar ese texto e información visual para realizar tareas de principio a fin.
Aquí hay un ejemplo en el que Gemini usa información de una serie de PDF para generar resultados estructurados y código.
Introdujimos 15 comunicados de ganancias de Alphabet, hasta el tercer trimestre de 2024 (152 páginas en total), y le pedimos a Gemini que extrajera los números de ingresos de Google de estos documentos, creara tablas que agregaran estos datos y, luego, escribiera código usando matplotlib para visualizar los ingresos y el crecimiento trimestral.
Indicación:
Estos son los informes de ganancias de los últimos 15 trimestres.
2. Genera una tabla de los ingresos totales para cada producto/servicio de Google: “Búsqueda de Google”, “YouTube Ads”, “Google Network”, “Suscripciones, plataformas y dispositivos de Google”, “Google Cloud” y “Other Bets” para cada trimestre (15 en total). Muestra los resultados en varias tablas (4 trimestres por tabla). Ten en cuenta que las suscripciones, plataformas y dispositivos de Google se llamó “Otros de Google” hasta el tercer trimestre de 2023.
Respuesta:
Estas son las tablas que solicitaste:
**1. Ingresos totales por trimestre (en millones de USD)**
| Fin del trimestre | Año | Ingresos totales |
|-------------------|------|--------------|
| 31 de marzo | 2021 | 55,314 |
| 30 de junio | 2021 | 61,880 |
| 30 de septiembre | 2021 | 65,118 |
| 31 de diciembre | 2021 | 75,325 |
| 31 de marzo | 2022 | 68,011 |
| 30 de junio | 2022 | 69,685 |
| 30 de septiembre | 2022 | 69,092 |
| 31 de diciembre | 2022 | 76,048 |
| 31 de marzo | 2023 | 69,787 |
| 30 de junio | 2023 | 74,604 |
| 30 de septiembre | 2023 | 76,693 |
| 31 de diciembre | 2023 | 86,310 |
| 31 de marzo | 2024 | 80,539 |
| 30 de junio | 2024 | 84,742 |
| 30 de septiembre | 2024 | 88,268 |
**2. Ingresos por producto/servicio de Google (en millones de USD)**
**2021 T1 - T4**
| Fin del trimestre | Búsqueda de Google | YouTube Ads | Google Network | Otros de Google | Google Cloud | Other Bets |
|----------------|--------------|------------|---------------|-------------|-------------|-----------|
| 31 de marzo de 2021 | 31,879 | 6,005 | 6,800 | 6,494 | 4,047 | 198 |
| 30 de junio de 2021 | 35,845 | 7,002 | 7,597 | 6,623 | 4,628 | 192 |
| 30 de septiembre de 2021 | 37,926 | 7,205 | 7,999 | 6,754 | 4,990 | 182 |
| 31 de diciembre de 2021 | 43,301 | 8,633 | 9,305 | 8,161 | 5,541 | 181 |
**2022 T1 - T4**
| Fin del cuatrimestre | Búsqueda de Google | YouTube Ads | Google Network | Otros de Google | Google Cloud | Other Bets |
|----------------|--------------|------------|---------------|-------------|-------------|-----------|
| 31 de marzo de 2022 | 39,618 | 6,869 | 8,174 | 6,811 | 5,821 | 440 |
| 30 de junio de 2022 | 40,689 | 7,340 | 8,259 | 6,553 | 6,276 | 193 |
| 30 de septiembre de 2022 | 39,539 | 7,071 | 7,872 | 6,895 | 6,868 | 209 |
| 31 de diciembre de 2022 | 42,604 | 7,963 | 8,475 | 8,796 | 7,315 | 226 |
**2023 T1 - T4**
| Fin del cuatrimestre | Búsqueda de Google | YouTube Ads | Google Network | Otros de Google | Google Cloud | Other Bets |
|----------------|--------------|------------|---------------|-------------|-------------|-----------|
| 31 de marzo de 2023 | 40,359 | 6,693 | 7,496 | 7,413 | 7,454 | 288 |
| 30 de junio de 2023 | 42,628 | 7,665 | 7,850 | 8,142 | 8,031 | 285 |
| 30 de septiembre de 2023 | 44,026 | 7,952 | 7,669 | 8,339 | 8,411 | 297 |
| 31 de diciembre de 2023 | 48,020 | 9,200 | 8,297 | 10,794 | 9,192 | 657 |
**2024 T1 - T3**
| Fin del cuatrimestre | Búsqueda de Google | YouTube Ads | Google Network | Suscripciones, plataformas y dispositivos | Google Cloud | Other Bets |
|----------------|--------------|------------|---------------|-----------------------------------|-------------|-----------|
| 31 de marzo de 2024 | 46,156 | 8,090 | 7,413 | 8,739 | 9,574 | 495 |
| 30 de junio de 2024 | 48,509 | 8,663 | 7,444 | 9,312 | 10,347 | 365 |
| 30 de septiembre de 2024 | 49,385 | 8,921 | 7,548 | 10,656 | 11,353 | 388 |
Indicación: Usando las tablas generadas, escribe código matplotlib para visualizar estos ingresos, en formato de gráfico de barras. En el eje X, traza el tiempo (cada uno de los 15 trimestres en orden cronológico). En el eje Y, traza los ingresos: ingresos totales y para cada producto y servicio para cada horizonte temporal. No dejes código para que complete el usuario. Omite “Other Bets” y asegúrate de que las barras sean equidistantes.
Indicación: ¡Genial! Ahora, ¿puedes generar un gráfico que muestre el crecimiento trimestral de los ingresos para cada una de las áreas de productos? El eje X debe ser el tiempo (cada uno de los 15 trimestres) y el eje Y debe ser el crecimiento porcentual de los ingresos, y debe haber 6 líneas en el gráfico. Incluye valores de variables en el código incluso si ya se definieron previamente. Excluye “Other Bets”.
El crecimiento de los ingresos trimestrales se define como ([ingresos del trimestre actual] - [ingresos del trimestre anterior])/(ingresos del trimestre anterior).
Puedes usar los modelos de Gemini 1.5 para comprender y extraer información de documentos del “mundo real”, como recibos, etiquetas, letreros, notas, bocetos de pizarra, registros personales y mucho más. Este es un ejemplo de cómo Gemini extrae valores para campos definidos por el usuario de una imagen de un recibo y lo devuelve como objeto JSON.
Los modelos de Gemini pueden extraer datos de las capturas de pantalla de las páginas web y devolver estos datos en formatos de resultados estructurados, como JSON. Esto permite acceder al contenido de la página en tiempo real como lo vería un ser humano, lo que incluye imágenes y videos en páginas web, y habilita aplicaciones como APIs de datos web y agentes de navegación.
A continuación, se muestra un ejemplo en el que Gemini convierte la información de esta página web de Google Play en un formato de resultados estructurados.
Indicación: Extrae cada uno de los libros de esta página web y devuelve una lista de objetos JSON, en la que cada uno contenga lo siguiente:
Solo muestra información que se ve en la página web
[
{
"name": "Warriors: A Starless Clan #6",
"author": "Erin Hunter",
"stars": null,
"price": "$14.95"
},
{
"name": "In Too Deep: A Reacher Novel",
"author": "Lee Child",
"stars": 4.7,
"price": "$16.95"
},
{
"name": "The Waiting: A Ballard and Bosch Novel",
"author": "Michael Connelly",
"stars": 4.8,
"price": "$16.95"
},
{
"name": "The Fury of the Gods",
"author": "John Gwynne",
"stars": 5.0,
"price": "$29.95"
},
{
"name": "Raised by Wolves: Patterson's Greatest Small-Town Thriller",
"author": "James Patterson",
"stars": null,
"price": "$14.95"
},
{
"name": "Iron Flame (1 of 2)",
"author": null,
"stars": 4.6,
"price": "$27.95"
},
{
"name": "The Message",
"author": "Ta-Nehisi Coates",
"stars": 4.9,
"price": "$14.95"
},
{
"name": "Revenge of the Tipping Point: Overstories, Superspreaders",
"author": "Malcolm Gladwell",
"stars": 4.6,
"price": "$14.95"
},
{
"name": "Counting Miracles: A Novel",
"author": "Nicholas Sparks",
"stars": 4.3,
"price": "$16.95"
},
{
"name": "Nexus: A Brief History of Information Networks from...",
"author": "Yuval Noah Harari",
"stars": 4.2,
"price": "$19.95"
},
{
"name": "Wind and Truth: Book Five of...",
"author": "Brandon Sanderson",
"stars": null,
"price": "$38.45"
},
{
"name": "Passions in Death: An Eve...",
"author": "J.D. Robb",
"stars": 4.5,
"price": "$14.95"
},
{
"name": "Sunrise on the Reaping (A Hunger Games Novel)",
"author": "Suzanne Collins",
"stars": null,
"price": "$19.95"
},
{
"name": "Michael Vey 10: The Colony",
"author": "Richard Paul Evans",
"stars": null,
"price": "$14.95"
},
{
"name": "The Echo Machine: How Right-Wing Extremism...",
"author": "David Pakman",
"stars": null,
"price": "$24.95"
},
{
"name": "The Perfect Crime (A Jessie...",
"author": null,
"stars": null,
"price": "$14.95"
},
{
"name": "Peppermint Peril (A Penny...",
"author": null,
"stars": null,
"price": "$4.99"
},
{
"name": "Lethal Prey",
"author": "John Sandford",
"stars": null,
"price": "$14.95"
},
{
"name": "The Song of Achilles: A Novel",
"author": "Madeline Miller",
"stars": 4.7,
"price": "$3.99"
},
{
"name": "A People's History of the United States",
"author": "Howard Zinn",
"stars": 4.1,
"price": "$4.99"
},
{
"name": "Termination Shock: A Novel",
"author": "Neal Stephenson",
"stars": 4.3,
"price": "$4.99"
},
{
"name": "Mere Christianity",
"author": "C.S. Lewis",
"stars": 4.8,
"price": "$4.99"
},
{
"name": "Local Woman Missing",
"author": "Mary Kubica",
"stars": 4.6,
"price": "$6.99"
},
{
"name": "Murder on the Orient Express: A Hercule Poirot Mystery",
"author": "Agatha Christie",
"stars": 4.4,
"price": "$4.99"
},
{
"name": "The Mountains Sing",
"author": "Nguyen Phan Que Mai",
"stars": 1.5,
"price": "$32.30"
},
{
"name": "The Bands of Mourning",
"author": "Brandon Sanderson",
"stars": 4.9,
"price": "$19.95"
},
{
"name": "The Institute: A Novel",
"author": "Stephen King",
"stars": 4.7,
"price": "$16.95"
},
{
"name": "Tom Lake: A Novel",
"author": "Ann Patchett",
"stars": 4.4,
"price": "$16.95"
},
{
"name": "All the Sinners Bleed: A Novel",
"author": "S.A. Cosby",
"stars": 4.7,
"price": "$14.95"
},
{
"name": "The Black Prism",
"author": "Brent Weeks",
"stars": 4.9,
"price": "$35.99"
},
{
"name": "The Hundred Years' War on Palestine: A History of Settle...",
"author": "Rashid Khalidi",
"stars": 4.6,
"price": "$14.95"
},
{
"name": "War",
"author": "Bob Woodward",
"stars": 3.7,
"price": "$14.95"
},
{
"name": "A People's History of the United States",
"author": "Howard Zinn",
"stars": 4.1,
"price": "$4.99"
},
{
"name": "Confronting the Presidents: No Spin Assessments from...",
"author": "Bill O'Reilly & Martin Dugard",
"stars": 4.8,
"price": "$19.95"
},
{
"name": "Chaos: Charles Manson, the CIA, and the Secret History o...",
"author": null,
"stars": 4.8,
"price": "$29.95"
},
{
"name": "The Demon of Unrest: A Saga of Hubris, Heartbreak, and...",
"author": "Erik Larson",
"stars": 3.1,
"price": "$19.95"
},
{
"name": "A Hidden Secret: A Kate Burkholder Short Story",
"author": "Linda Castillo",
"stars": 4.8,
"price": "$1.99"
},
{
"name": "MrBallen Presents: Strange, Dark & Mysterious: The...",
"author": null,
"stars": 5.0,
"price": "$13.95"
},
{
"name": "Angle of Investigation: Three Harry Bosch Stories",
"author": "Michael Connelly",
"stars": 4.4,
"price": "$12.95"
},
{
"name": "Cross Kill: An Alex Cross Story",
"author": "James Patterson",
"stars": 4.7,
"price": "$14.95"
},
{
"name": "Detective Cross",
"author": "James Patterson",
"stars": 4.6,
"price": "$14.95"
},
{
"name": "Blood Brothers: A Short Story Exclusive",
"author": "James Rollins",
"stars": 5.0,
"price": "$9.95"
}
]
Indicación en Google AI Studio
Puedes usar Gemini para detectar objetos en una imagen y generarles coordenadas de cuadro de límite. Las funciones de detección de objetos de Gemini son particularmente útiles para conectar a nivel visual la respuesta del modelo con la imagen y brindan valor agregado a los modelos especializados cuando se requiere hacerlo para razonar y encontrar objetos en función de criterios definidos por el usuario.
Este es un ejemplo de detección de objetos con Gemini 1.5 Pro:
Gemini detecta cada uno de los objetos de la imagen y genera coordenadas de cuadro de límite en su respuesta. La imagen que se muestra a continuación muestra los cuadros de límite (usando este cuaderno de Colab).
Gemini puede procesar videos de hasta 90 minutos, incluidos fotogramas visuales y audio. Con Gemini, puedes hacer lo siguiente:
Este es un ejemplo en el que usamos Gemini para generar un resumen en video:
Indicación: Genera notas técnicas de clase para este video de una manera que sea comprensible para un estudiante de secundaria. Asegúrate de seguir estas instrucciones:
Respuesta:
Here are the technical lecture notes you requested:
# **Achieving Rapid Response Times in Large Online Services**
Jeff Dean, Google
## **Introduction**
Rapid response times of web applications are important for making them more interactive, fluid, and easy to use for the user. It’s often challenging to keep web apps performing quickly when there’s a large fanout, or the number of servers that need to be contacted in order to fulfill the user’s request. This can be seen in Google Search, where the results page often requires information from thousands of servers to create. This is made even more challenging when Google services are run in a shared environment, or on a large cluster of servers where many different services can be performed. This allows for an array of network issues like traffic congestion, background activity, and spikes in foreground activity for other services being carried out on the same server cluster.
When the latency of applications under these conditions is inspected, they exhibit what's referred to as long-tail latencies. Jeff used an amusing picture of himself on an African safari getting his shirt pulled by a cheetah to illustrate this concept. As he explained, long tail latency means that when you measure the latency of your application and find that it performs quickly on average, the 99th percentile latency could be very long. For example, if your server has a 10 ms average response time and a 99th percentile latency of 1 second, then if you have to get data from only one of those servers, 1% of requests will take more than a second. But when you have to get a response from 100 servers, 63% of your requests will take over a second, since at least one of the servers is likely to be experiencing this high latency.
## **Basic Latency Reduction Techniques**
Some common ways of dealing with these issues are:
* Differentiated service classes: Prioritizing interactive requests and their network traffic much higher than background requests, as this is less likely to affect the user experience if these requests lag.
* Reduce head-of-line blocking: Dividing large requests into many smaller requests to prevent lag for higher-priority requests waiting behind them.
* Manage expensive background activities: Rate-limiting background activities or delaying them until there’s less traffic on the servers, as these are usually not directly associated with a user request.
## **Fault Tolerance vs. Tolerating Variability**
The speaker drew an analogy to fault tolerance, a common hardware technique where unreliable parts of the system, like hard drives or a computer's power supply, are used to create a whole reliable system. By analogy, he wants to use unpredictable components that vary greatly in performance to create a predictable and high-performing system. Jeff pointed out that while both fault tolerance and tolerating variability use extra resources, the difference between the two is in the timescale of their variability. The issues that fault tolerance measures are on a scale of tens or hundreds of events per day, while latency tolerance measures thousands of events per second.
## **Latency Tolerating Techniques**
Here are two techniques that Jeff describes for minimizing variability in latency:
### Cross Request Adaptation
* Collect statistics on the system. This could include latency rates, performance of backends, etc.
* Take action to improve the latency of future requests, for example, by load balancing.
* Timescale for these kinds of actions are generally on the order of tens of seconds to minutes.
### Within-Request Adaptation
* Within a single high-level request, cope with slow subsystems.
* Timescale for these kinds of actions are generally immediate, while the user is waiting for a request to be fulfilled.
## **Fine-Grained Dynamic Partitioning**
One cross request adaption technique that Jeff discussed was fine-grained dynamic partitioning. Normally, if you have ‘n’ servers, you could simply divide the workload into ‘n’ equal pieces, and each server can deal with one piece each, assuming that there’s no shared environment where other things can happen. But once you have a shared environment, the load becomes unpredictable and can result in a server getting overloaded. In the case of a shared environment, it’s recommended to have a server dealing with 10–100 different pieces of work. This allows for very fine-grain load balancing, because if one server is overloaded, one of those pieces of work can be assigned to another server. Another reason for doing this is that it speeds up failure recovery, because when a server dies, whatever it was responsible for is distributed to other machines, and if the workload has been divided into ‘n’ smaller tasks, this recovery process can happen in ‘n’ separate ways simultaneously.
## **Selective Replication**
Another technique often used by Google is called selective replication, where heavily-used pieces of information in the system are copied to other server clusters. This can be static, where the number of copies is fixed, or dynamic, where the number of copies of a piece of information is increased or decreased depending on the amount of traffic there is in requests associated with that information.
## **Latency-Induced Probation**
A third technique that Jeff described for dealing with unpredictable latency and interference effects from shared services was what he calls latency-induced probation, or the concept of removing capacity under load to improve latency. The steps for this are:
* Recognize that a server is slow to respond, even if it is a high priority server.
* Make a copy of the data in question on another server.
* Send a “shadow stream” of requests to the slow server. These requests are similar to “canary requests” in that they serve as a check to make sure the server is functioning.
* Once the latency of the slow server has gone down and the “canary” checks show it working, return it to service.
## **Backup Requests**
Another technique for minimizing latency variability is the use of backup requests, where a client sends a copy of the same request to two or more server clusters in order to improve latency. If one of the servers selected returns the data faster, the client sends a cancellation request for the duplicate request in the other server queue, if it’s possible to maintain information about where the original request was sent. However, the disadvantage of this is that it can double the processing required if two servers begin processing the request at about the same time. In the latter case, the client needs to check if the issue of simultaneous processing occurred, and if so, to send only one copy of the requested data.
The speaker then measured the improvement in latency using two different systems. The first was a loaded server cluster where data was replicated in two in-memory servers, and 1000 requests were spread across 100 tablets. The speaker measured the time it took for all 1000 keys to be retrieved. The second measurement used an almost completely idle system, but with the same parameters: data was replicated in two in-memory servers, 1000 requests were sent across 100 tablets, and the total retrieval time for all 1000 keys was measured. In both cases, backup requests reduced latency dramatically. The results for both loaded and idle servers, respectively, are shown in the tables below:
### Loaded cluster results:
| Policy | Avg | Std Dev | 95%ile | 99%ile | 99.9%ile |
| ------------- |:--------:|:-------:|:------:|:------:|:--------:|
| No backups | 33 ms | 1524 ms| 24 ms | 52 ms | 994 ms |
| Backup after 10 ms | 14 ms | 4 ms | 20 ms | 23 ms | 50 ms |
| Backup after 50 ms | 16 ms | 12 ms | 57 ms | 63 ms | 68 ms |
### Idle cluster results:
| Policy | 50%ile | 90%ile | 99%ile | 99.9%ile |
| ------------- |:--------:|:-------:|:------:|:--------:|
| No backups | 19 ms | 38 ms | 67 ms | 98 ms |
| Backup after 2 ms | 16 ms | 28 ms | 38 ms | 51 ms |
## Conclusion
These techniques can make online services more responsive and can dramatically cut down on processing time and costs.
Indicación en Google AI Studio
Gemini puede extraer información de los videos y generar resultados en formatos estructurados, como listas, tablas y objetos JSON. Esto es muy útil para tareas como la catalogación; la detección de entidades en dominios, como el comercio minorista, el tráfico y la seguridad del hogar; la extracción de datos no estructurados de grabaciones de pantalla; y muchas más.
Nota: Debido al muestreo de 1 FPS, el modelo puede ocasionalmente perderse algunos elementos de los videos. Estamos trabajando para habilitar pronto el muestro de más FPS para videos. Por lo tanto, por ahora recomendamos verificar los resultados generados en estos casos prácticos, si es necesario. Sin embargo, queremos mostrar vistazos de lo que estamos emprendiendo y de lo que serán nuestros modelos en los próximos meses.
Para comenzar a desarrollar con visión en la API de Gemini, visita nuestra guía para desarrolladores. También puedes unirte a nuestro foro de desarrolladores para conocer a otros colegas, hablar sobre tus casos prácticos y obtener ayuda de los miembros del equipo de la API de Gemini.