Capacidades de agente

Gemini Robotics ER 2 puede escribir y ejecutar código de Python para manipular imágenes y aplicar lógica antes de responder. En esta página, se incluyen ejemplos de ejecución de código: detección de objetos con zoom y recorte, lectura de instrumentos, medición de fluidos, lectura de placas de circuitos y anotación de imágenes.

Para obtener el código ejecutable completo, consulta la guía de robótica.

Nivel de pensamiento

Puedes controlar el nivel de razonamiento para equilibrar la latencia y la exactitud. Las tareas espaciales, como la detección de objetos, se realizan bien con un nivel de pensamiento bajo. Las tareas complejas, como el recuento o la estimación de peso, se benefician de un valor más alto.

En el siguiente ejemplo, se establece el nivel de pensamiento en alto para una tarea de conteo compleja:

Python

from google import genai
from google.genai import types

client = genai.Client(
    enterprise=True,
    project="your-project-id",
    location="global",
)

# Load your image
with open('scene.jpeg', 'rb') as f:
    image_bytes = f.read()

response = client.models.generate_content(
    model="gemini-robotics-er-2-preview",
    contents=[
        types.Part.from_bytes(
            data=image_bytes,
            mime_type='image/jpeg',
        ),
        "Identify and count all objects on the table."
    ],
    config = types.GenerateContentConfig(
        thinking_config=types.ThinkingConfig(
            # Use MINIMAL or LOW for faster spatial tasks.
            thinking_level=types.ThinkingLevel.HIGH
        ),
    )
)

print(response.text)

Consulta Pensamiento para obtener más detalles.

Detección de objetos (zoom y recorte)

En el siguiente ejemplo, se muestra cómo usar la ejecución de código para acercar y recortar una imagen para obtener una vista más clara cuando se detectan objetos y se devuelven cuadros delimitadores.

Python

from google import genai
from google.genai import types

client = genai.Client(
    enterprise=True,
    project="your-project-id",
    location="global",
)

# Load your image
with open('sorting.jpeg', 'rb') as f:
    image_bytes = f.read()

prompt = """
Return JSON in the format {label: val, y: val, x: val, y2: val, x2: val} for
the compostable objects in this scene. Please Zoom and crop the image for a
clearer view. Return an annotated image of the final result with the bounding
boxes drawn on it to the API caller as a part of your process.
"""

response = client.models.generate_content(
    model="gemini-robotics-er-2-preview",
    contents=[
        types.Part.from_bytes(
            data=image_bytes,
            mime_type='image/jpeg',
        ),
        prompt
    ],
    config = types.GenerateContentConfig(
        tools=[types.Tool(code_execution=types.ToolCodeExecution)],
    )
)

print(response.text)

El resultado del modelo sería similar al siguiente:

[
  {"label": "compostable", "y": 256, "x": 482, "y2": 295, "x2": 546},
  {"label": "compostable", "y": 317, "x": 478, "y2": 350, "x2": 542},
  {"label": "compostable", "y": 586, "x": 556, "y2": 668, "x2": 595},
  {"label": "compostable", "y": 463, "x": 669, "y2": 511, "x2": 718},
  {"label": "compostable", "y": 178, "x": 565, "y2": 250, "x2": 609}
]

A continuación, se muestran los cuadros que devolvió el modelo.

Un ejemplo que muestra cuadros delimitadores para los objetos encontrados

Leer un indicador analógico y aplicar lógica

En el siguiente ejemplo, se muestra cómo usar el modelo para leer un indicador analógico y realizar cálculos de tiempo. Usa una instrucción del sistema para aplicar un resultado JSON.

Python

from google import genai
from google.genai import types

client = genai.Client(
    enterprise=True,
    project="your-project-id",
    location="global",
)

with open('gauge.jpeg', 'rb') as f:
    image_bytes = f.read()

system_instruction = "Be precise. When JSON is requested, reply with ONLY that JSON (no preface, no code block)."

response = client.models.generate_content(
    model="gemini-robotics-er-2-preview",
    contents=[
        types.Part.from_bytes(
            data=image_bytes,
            mime_type='image/jpeg',
        ),
        """Read the current value from this gauge. Then, calculate how long
        it will take at the current rate for the value to reach maximum.
        Reply in JSON: {"current_value": val, "max_value": val,
        "time_to_max_minutes": val}"""
    ],
    config = types.GenerateContentConfig(
        system_instruction=system_instruction,
        tools=[types.Tool(code_execution=types.ToolCodeExecution)],
    )
)

print(response.text)

Medir el fluido en un recipiente

En el siguiente ejemplo, se muestra cómo usar la ejecución de código para medir el nivel de líquido en un contenedor.

Python

from google import genai
from google.genai import types

client = genai.Client(
    enterprise=True,
    project="your-project-id",
    location="global",
)

with open('fluid.jpeg', 'rb') as f:
    image_bytes = f.read()

system_instruction = "Be precise. When JSON is requested, reply with ONLY that JSON (no preface, no code block)."

response = client.models.generate_content(
    model="gemini-robotics-er-2-preview",
    contents=[
        types.Part.from_bytes(
            data=image_bytes,
            mime_type='image/jpeg',
        ),
        """Measure the amount of fluid in the container. Reply in JSON:
        {"fluid_level_ml": val, "container_capacity_ml": val,
        "percentage_full": val}"""
    ],
    config = types.GenerateContentConfig(
        system_instruction=system_instruction,
        tools=[types.Tool(code_execution=types.ToolCodeExecution)],
    )
)

print(response.text)

Lee marcas en una placa de circuito

En el siguiente ejemplo, se muestra cómo usar la ejecución de código para leer las marcas de una placa de circuito.

Python

from google import genai
from google.genai import types

client = genai.Client(
    enterprise=True,
    project="your-project-id",
    location="global",
)

with open('circuit_board.jpeg', 'rb') as f:
    image_bytes = f.read()

system_instruction = "Be precise. When JSON is requested, reply with ONLY that JSON (no preface, no code block)."

response = client.models.generate_content(
    model="gemini-robotics-er-2-preview",
    contents=[
        types.Part.from_bytes(
            data=image_bytes,
            mime_type='image/jpeg',
        ),
        """Read all visible component labels and markings on this circuit
        board. Reply in JSON: {"components": [{"label": val,
        "location": [y, x]}]}"""
    ],
    config = types.GenerateContentConfig(
        system_instruction=system_instruction,
        tools=[types.Tool(code_execution=types.ToolCodeExecution)],
    )
)

print(response.text)

Ejemplo de marcas en una placa de circuito impreso

Anotación de imágenes

En el siguiente ejemplo, se muestra cómo usar la ejecución de código para anotar una imagen (como dibujar flechas para las instrucciones de eliminación) y devolver la imagen modificada.

Python

from google import genai
from google.genai import types

client = genai.Client(
    enterprise=True,
    project="your-project-id",
    location="global",
)

# Load your image
with open('sorting.jpeg', 'rb') as f:
    image_bytes = f.read()

prompt = """
Look at this image and return it as an annotated version using arrows of
different colors to represent which items should go in which bins for
disposal. You must return the final image to the API caller.
"""

response = client.models.generate_content(
    model="gemini-robotics-er-2-preview",
    contents=[
        types.Part.from_bytes(
            data=image_bytes,
            mime_type='image/jpeg',
        ),
        prompt
    ],
    config = types.GenerateContentConfig(
        tools=[types.Tool(code_execution=types.ToolCodeExecution)],
    )
)

print(response.text)

A continuación, se muestra un ejemplo de entrada de imagen.

Una imagen de entrada de ejemplo para la anotación

El resultado del modelo sería similar al siguiente:

  The annotated image shows the suggested disposal locations for the items on the table:
  - **Green bin (Compost/Organic)**: Green chili, red chili, grapes, and cherries.
  - **Blue bin (Recycling)**: Yellow crushed can and plastic container.
  - **Black bin (Trash)**: Chocolate bar wrapper, Welch's packet, and white tissue.

¿Qué sigue?

Para obtener más información sobre Gemini Robotics ER 2, consulta los siguientes recursos: