Llamadas a funciones con Gemma

Cuando usas un modelo de inteligencia artificial (IA) generativa, como Gemma, es posible que desees usarlo para operar interfaces de programación y completar tareas o responder preguntas. Instruir a un modelo definiendo una interfaz de programación y, luego, realizar una solicitud que use esa interfaz se denomina llamada a función.

Gemma no genera un token específico de la herramienta. Tu framework debe detectar una llamada a la herramienta comprobando si la estructura del resultado coincide con la especificación del resultado de la función solicitada.

Puedes usar la llamada a función para varias aplicaciones:

  • Crea una interfaz de lenguaje natural para una API de programación que permita a las personas que no son programadores operar una interfaz programática sin escribir código.
  • Genera llamadas de programación como parte de un flujo de trabajo de agente de IA

Las llamadas a funciones son compatibles con Gemma 3, pero la técnica de llamadas a funciones se puede usar con versiones anteriores de Gemma. En esta guía, se proporcionan instrucciones para construir instrucciones de Gemma que usan llamadas a funciones. Recomendamos Gemma3 27B para obtener el mejor rendimiento y Gemma3 12B para obtener un rendimiento y una latencia equilibrados.

Cómo llamar a funciones de programación

Para usar las llamadas a función con Gemma, crea una instrucción que proporcione instrucciones que especifiquen el formato de salida y definan las funciones disponibles.

Cuando se incluye la instrucción del usuario, el modelo genera una llamada a función, que es una cadena que coincide con el formato de salida especificado. Eso indica que tu framework de modelos debe analizar una solicitud para llamar a las funciones definidas.

En la siguiente muestra de instrucciones, se muestra un bloque de definición de función, junto con una sintaxis de llamada a función y un resultado de llamada a función del modelo. El siguiente ejemplo de instrucción está diseñado para usarse con una interfaz de programación para un catálogo de productos:

You have access to functions. If you decide to invoke any of the function(s),
 you MUST put it in the format of
[func_name1(params_name1=params_value1, params_name2=params_value2...), func_name2(params)]

You SHOULD NOT include any other text in the response if you call a function
[
  {
    "name": "get_product_name_by_PID",
    "description": "Finds the name of a product by its Product ID",
    "parameters": {
      "type": "object",
      "properties": {
        "PID": {
          "type": "string"
        }
      },
      "required": [
        "PID"
      ]
    }
  }
]
While browsing the product catalog, I came across a product that piqued my
interest. The product ID is 807ZPKBL9V. Can you help me find the name of this
product?

Esta instrucción debe producir la siguiente respuesta:

[get_product_name_by_PID(PID="807ZPKBL9V")]

En este ejemplo, se usa un resultado de llamada a función de estilo Python. Como alternativa, puedes especificar un formato de salida de estilo JSON, como se muestra en el siguiente ejemplo:

You have access to functions. If you decide to invoke any of the function(s),
you MUST put it in the format of
{"name": function name, "parameters": dictionary of argument name and its value}

You SHOULD NOT include any other text in the response if you call a function
[
  {
    "name": "get_product_name_by_PID",
    "description": "Finds the name of a product by its Product ID",
    "parameters": {
      "type": "object",
      "properties": {
        "PID": {
          "type": "string"
        }
      },
      "required": [
        "PID"
      ]
    }
  }
]
While browsing the product catalog, I came across a product that piqued my
interest. The product ID is 807ZPKBL9V. Can you help me find the name of this
product?

Esta instrucción debe producir la siguiente respuesta:

{"name": "get_product_name_by_PID", "parameters": {"PID": "807ZPKBL9V"}}

Componentes de la instrucción de llamada a función

Cuando uses llamadas a función con modelos de Gemma, la instrucción del modelo debe seguir este orden y esta estructura específicos:

  1. Configuración de llamadas a función
  2. Definiciones de la función

En las siguientes secciones, se proporcionan más detalles sobre cada uno de estos componentes de instrucciones.

Configuración de las llamadas a función

La sección setup de la instrucción de llamada a la función establece el comportamiento general esperado del modelo. Puedes agregar instrucciones generales adicionales para el comportamiento del modelo en esta sección, como especificar que el resultado se debe mostrar con una función print o console.log. Usa acentos graves simples al estilo de Markdown (func_name) para indicar la sintaxis del código.

You have access to functions. If you decide to invoke any of the function(s),
you MUST put it in the format of
{"name": function name, "parameters": dictionary of argument name and its value}

You SHOULD NOT include any other text in the response if you call a function

Estas instrucciones deben ser lo más claras y breves posible. Prioriza las instrucciones más importantes y ten cuidado con proporcionar muchas instrucciones generales. Los modelos de Gemma pueden ignorar las instrucciones que son demasiado detalladas o no se expresan con claridad, en particular cuando usas versiones de modelos con una cantidad menor de parámetros.

Definición de la función

La sección definition de la instrucción proporciona el nombre, los parámetros y el resultado de la función, incluida una descripción de cada uno. Puedes declarar funciones en el formato que se muestra. Se pueden definir una o varias funciones dentro del bloque de declaración de la función.

[
  {
    "name": "get_product_name_by_PID",
    "description": "Finds the name of a product by its Product ID",
    "parameters": {
      "type": "object",
      "properties": {
        "PID": {
          "type": "string"
        }
      },
      "required": [
        "PID"
      ]
    }
  },
  {
    "name": "get_product_price_by_PID",
    "description": "Finds the price of a product by its Product ID",
    "parameters": {
      "type": "object",
      "properties": {
        "PID": {
          "type": "string"
        }
      },
      "required": [
        "PID"
      ]
    }
  }
]

Próximos pasos

Consulta las formas de implementar y ejecutar modelos de Gemma: