Llamada a función

Las funciones personalizadas se pueden definir y proporcionar a un modelo de IA generativa mediante llamadas de funciones. El modelo no invoca estas funciones directamente, sino que genera un resultado de datos estructurados que especifica el nombre de la función y los argumentos sugeridos. Esta salida habilita la llamada a APIs externas y el resultado de la API se puede incorporar de nuevo en el modelo, lo que permite respuestas a consultas más completas. La llamada de funciones permite a los LLM interactuar con información en tiempo real y varios servicios, como bases de datos, sistemas de administración de relaciones con clientes y repositorios de documentos, lo que mejora su capacidad para proporcionar respuestas relevantes y contextuales.

Cómo funciona la llamada a función

Las funciones se describen mediante declaraciones de funciones. Después de pasar una lista de declaraciones de funciones en una consulta a un modelo de lenguaje, el modelo muestra un objeto en un formato de esquema compatible con OpenAPI que incluye los nombres de las funciones y sus argumentos, y trata de responder la consulta del usuario con una de las funciones que se muestran. El modelo de lenguaje comprende el propósito de una función mediante el análisis de la declaración de su función. El modelo en realidad no llama a la función. En su lugar, un desarrollador usa el objeto de esquema compatible con OpenAPI en la respuesta para llamar a la función que muestra el modelo.

Cuando implementas la llamada a función, crea una o más declaraciones de función y, luego, agrega las declaraciones de función a un objeto tools que se pasa al modelo. Cada declaración de función contiene información sobre una función que incluye lo siguiente:

  • Nombre de la función
  • Parámetros de la función en un formato de esquema compatible con OpenAPI. Se admite un subconjunto seleccionado. Cuando se usa curl, el esquema se especifica con JSON.
  • Descripción de la función (opcional). Para obtener mejores resultados, te recomendamos que incluyas una descripción.

En este documento, se incluyen ejemplos de curl que realizan llamadas REST con la clase GenerativeModel y sus métodos.

Modelos compatibles

Los siguientes modelos admiten la llamada a funciones:

  • gemini-1.0-pro
  • gemini-1.0-pro-001
  • gemini-1.5-pro-latest

Modo de llamada a funciones

Puedes usar la función que llama a mode para definir el comportamiento de ejecución de la llamada a funciones. Hay tres modos disponibles:

  • AUTO: Es el comportamiento predeterminado del modelo. El modelo decide predecir una llamada a función o una respuesta de lenguaje natural.
  • ANY: El modelo está restringido a predecir siempre una llamada a función. Si no se proporciona allowed_function_names, el modelo elige entre todas las declaraciones de funciones disponibles. Si se proporciona allowed_function_names, el modelo elige un elemento del conjunto de funciones permitidas.
  • NONE: El modelo no predecirá una llamada a función. En este caso, el comportamiento del modelo es el mismo que si no pasas ninguna declaración de función.

También puedes pasar un conjunto de allowed_function_names que, cuando se proporciona, limita las funciones a las que llamará el modelo. Solo debes incluir allowed_function_names cuando el modo sea ANY. Los nombres de las funciones deben coincidir con los nombres de la declaración de funciones. Con el modo establecido en ANY y el allowed_function_names configurado, el modelo predecirá una llamada a función a partir del conjunto de nombres de funciones proporcionados.

Esta es parte de una solicitud de ejemplo que establece el modo en ANY y especifica una lista de funciones permitidas:

"tool_config": {
  "function_calling_config": {
    "mode": "ANY",
    "allowed_function_names": ["find_theaters", "get_showtimes"]
  },
}

Muestras de cURL de llamada de funciones

Cuando usas cURL, la información de la función y los parámetros se incluye en el elemento tools. Cada declaración de función en el elemento tools contiene el nombre de la función, sus parámetros especificados mediante el esquema compatible con OpenAPI y una descripción de la función. En los siguientes ejemplos, se muestra cómo usar los comandos curl con las llamadas a funciones:

Muestra de curl de un solo turno

Un solo turno es cuando llamas al modelo de lenguaje una vez. Con las llamadas a función, un caso de uso de un solo turno puede ser cuando proporcionas al modelo una consulta en lenguaje natural y una lista de funciones. En este caso, el modelo usa la declaración de funciones, que incluye el nombre, los parámetros y la descripción de la función para predecir con qué función llamar y los argumentos con los que se debe llamar.

El siguiente ejemplo de curl es un ejemplo de cómo pasar una descripción de una función que muestra información sobre dónde se reproduce una película. Se incluyen varias declaraciones de funciones en la solicitud, como find_movies y find_theaters.

Solicitud de ejemplo de curl de llamada a función de un solo turno

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=$API_KEY \
  -H 'Content-Type: application/json' \
  -d '{
    "contents": {
      "role": "user",
      "parts": {
        "text": "Which theaters in Mountain View show Barbie movie?"
    }
  },
  "tools": [
    {
      "function_declarations": [
        {
          "name": "find_movies",
          "description": "find movie titles currently playing in theaters based on any description, genre, title words, etc.",
          "parameters": {
            "type": "object",
            "properties": {
              "location": {
                "type": "string",
                "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
              },
              "description": {
                "type": "string",
                "description": "Any kind of description including category or genre, title words, attributes, etc."
              }
            },
            "required": [
              "description"
            ]
          }
        },
        {
          "name": "find_theaters",
          "description": "find theaters based on location and optionally movie title which is currently playing in theaters",
          "parameters": {
            "type": "object",
            "properties": {
              "location": {
                "type": "string",
                "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
              },
              "movie": {
                "type": "string",
                "description": "Any movie title"
              }
            },
            "required": [
              "location"
            ]
          }
        },
        {
          "name": "get_showtimes",
          "description": "Find the start times for movies playing in a specific theater",
          "parameters": {
            "type": "object",
            "properties": {
              "location": {
                "type": "string",
                "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
              },
              "movie": {
                "type": "string",
                "description": "Any movie title"
              },
              "theater": {
                "type": "string",
                "description": "Name of the theater"
              },
              "date": {
                "type": "string",
                "description": "Date for requested showtime"
              }
            },
            "required": [
              "location",
              "movie",
              "theater",
              "date"
            ]
          }
        }
      ]
    }
  ]
}'
    

La respuesta a este ejemplo de curl puede ser similar a la siguiente.

Solicitud de ejemplo de curl de llamada a función de un solo turno

[{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "functionCall": {
              "name": "find_theaters",
              "args": {
                "movie": "Barbie",
                "location": "Mountain View, CA"
              }
            }
          }
        ]
      },
      "finishReason": "STOP",
      "safetyRatings": [
        {
          "category": "HARM_CATEGORY_HARASSMENT",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_HATE_SPEECH",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
          "probability": "NEGLIGIBLE"
        }
      ]
    }
  ],
  "usageMetadata": {
    "promptTokenCount": 9,
    "totalTokenCount": 9
  }
}]
    

Ejemplo de un solo turno con el modo ANY

El siguiente ejemplo de curl es similar al ejemplo de un solo turno, pero establece el mode en ANY:

"tool_config": {
  "function_calling_config": {
    "mode": "ANY"
  },
}

Llamada a función de un solo turno con el modo ANY (solicitud)

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=$API_KEY \
  -H 'Content-Type: application/json' \
  -d '{
    "contents": {
      "role": "user",
      "parts": {
        "text": "What movies are showing in North Seattle tonight?"
    }
  },
  "tools": [
    {
      "function_declarations": [
        {
          "name": "find_movies",
          "description": "find movie titles currently playing in theaters based on any description, genre, title words, etc.",
          "parameters": {
            "type": "object",
            "properties": {
              "location": {
                "type": "string",
                "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
              },
              "description": {
                "type": "string",
                "description": "Any kind of description including category or genre, title words, attributes, etc."
              }
            },
            "required": [
              "description"
            ]
          }
        },
        {
          "name": "find_theaters",
          "description": "find theaters based on location and optionally movie title which is currently playing in theaters",
          "parameters": {
            "type": "object",
            "properties": {
              "location": {
                "type": "string",
                "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
              },
              "movie": {
                "type": "string",
                "description": "Any movie title"
              }
            },
            "required": [
              "location"
            ]
          }
        },
        {
          "name": "get_showtimes",
          "description": "Find the start times for movies playing in a specific theater",
          "parameters": {
            "type": "object",
            "properties": {
              "location": {
                "type": "string",
                "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
              },
              "movie": {
                "type": "string",
                "description": "Any movie title"
              },
              "theater": {
                "type": "string",
                "description": "Name of the theater"
              },
              "date": {
                "type": "string",
                "description": "Date for requested showtime"
              }
            },
            "required": [
              "location",
              "movie",
              "theater",
              "date"
            ]
          }
        }
      ]
    }
  ],
  "tool_config": {
    "function_calling_config": {
      "mode": "ANY"
    },
  }
}'
    

La respuesta podría ser similar a la siguiente:

Llamada a función de un solo turno con el modo ANY (respuesta)

{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "functionCall": {
              "name": "find_movies",
              "args": {
                "description": "",
                "location": "North Seattle, WA"
              }
            }
          }
        ],
        "role": "model"
      },
      "finishReason": "STOP",
      "index": 0,
      "safetyRatings": [
        {
          "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_HARASSMENT",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_HATE_SPEECH",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
          "probability": "NEGLIGIBLE"
        }
      ]
    }
  ],
  "promptFeedback": {
    "safetyRatings": [
      {
        "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
        "probability": "NEGLIGIBLE"
      },
      {
        "category": "HARM_CATEGORY_HATE_SPEECH",
        "probability": "NEGLIGIBLE"
      },
      {
        "category": "HARM_CATEGORY_HARASSMENT",
        "probability": "NEGLIGIBLE"
      },
      {
        "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
        "probability": "NEGLIGIBLE"
      }
    ]
  }
}
    

Ejemplo de un solo turno con el modo ANY y funciones permitidas

El siguiente ejemplo de curl es similar al ejemplo de un solo turno, pero establece el mode en ANY e incluye una lista de funciones permitidas:

"tool_config": {
  "function_calling_config": {
    "mode": "ANY",
    "allowed_function_names": ["find_theaters", "get_showtimes"]
  },
}

Llamada a función de un solo turno con el modo ANY y funciones permitidas (solicitud)

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=$API_KEY \
  -H 'Content-Type: application/json' \
  -d '{
    "contents": {
      "role": "user",
      "parts": {
        "text": "What movies are showing in North Seattle tonight?"
    }
  },
  "tools": [
    {
      "function_declarations": [
        {
          "name": "find_movies",
          "description": "find movie titles currently playing in theaters based on any description, genre, title words, etc.",
          "parameters": {
            "type": "object",
            "properties": {
              "location": {
                "type": "string",
                "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
              },
              "description": {
                "type": "string",
                "description": "Any kind of description including category or genre, title words, attributes, etc."
              }
            },
            "required": [
              "description"
            ]
          }
        },
        {
          "name": "find_theaters",
          "description": "find theaters based on location and optionally movie title which is currently playing in theaters",
          "parameters": {
            "type": "object",
            "properties": {
              "location": {
                "type": "string",
                "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
              },
              "movie": {
                "type": "string",
                "description": "Any movie title"
              }
            },
            "required": [
              "location"
            ]
          }
        },
        {
          "name": "get_showtimes",
          "description": "Find the start times for movies playing in a specific theater",
          "parameters": {
            "type": "object",
            "properties": {
              "location": {
                "type": "string",
                "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
              },
              "movie": {
                "type": "string",
                "description": "Any movie title"
              },
              "theater": {
                "type": "string",
                "description": "Name of the theater"
              },
              "date": {
                "type": "string",
                "description": "Date for requested showtime"
              }
            },
            "required": [
              "location",
              "movie",
              "theater",
              "date"
            ]
          }
        }
      ]
    }
  ],
  "tool_config": {
    "function_calling_config": {
      "mode": "ANY",
      "allowed_function_names": ["find_theaters", "get_showtimes"]
    },
  }
}'
    

El modelo no puede predecir la función find_movies porque no está en la lista de funciones permitidas, por lo que predice una función diferente. La respuesta puede ser similar a la siguiente:

Llamada a función de un solo turno con el modo ANY y funciones permitidas (respuesta)

{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "functionCall": {
              "name": "find_theaters",
              "args": {
                "location": "North Seattle, WA",
                "movie": null
              }
            }
          }
        ],
        "role": "model"
      },
      "finishReason": "STOP",
      "index": 0,
      "safetyRatings": [
        {
          "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_HARASSMENT",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_HATE_SPEECH",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
          "probability": "NEGLIGIBLE"
        }
      ]
    }
  ],
  "promptFeedback": {
    "safetyRatings": [
      {
        "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
        "probability": "NEGLIGIBLE"
      },
      {
        "category": "HARM_CATEGORY_HATE_SPEECH",
        "probability": "NEGLIGIBLE"
      },
      {
        "category": "HARM_CATEGORY_HARASSMENT",
        "probability": "NEGLIGIBLE"
      },
      {
        "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
        "probability": "NEGLIGIBLE"
      }
    ]
  }
}
    

Ejemplos de curl de varios turnos

Para implementar una situación de llamada a función de varios turnos, haz lo siguiente:

  1. Obtén una respuesta de llamada a función mediante una llamada al modelo de lenguaje. Este es el primer turno.
  2. Llama al modelo de lenguaje con la respuesta de llamada a función del primer turno y la respuesta a función que obtienes de la llamada a esa función. Este es el segundo turno.

La respuesta del segundo turno resume los resultados para responder tu consulta en el primer turno o contiene una segunda llamada a función que puedes usar para obtener más información para tu consulta.

En este tema, se incluyen dos ejemplos de curl de varios turnos:

Ejemplo de curl que usa una respuesta de un turno anterior

El siguiente ejemplo de curl llama a la función y los argumentos que muestra el ejemplo anterior de un solo turno para obtener una respuesta. El método y los parámetros que muestra el ejemplo de un solo turno están en este JSON.

"functionCall": {
  "name": "find_theaters",
  "args": {
    "movie": "Barbie",
    "location": "Mountain View, CA"
  }
}

Solicitud de ejemplo de curl de llamada a función de varios turnos

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=$API_KEY \
  -H 'Content-Type: application/json' \
  -d '{
    "contents": [{
      "role": "user",
      "parts": [{
        "text": "Which theaters in Mountain View show Barbie movie?"
    }]
  }, {
    "role": "model",
    "parts": [{
      "functionCall": {
        "name": "find_theaters",
        "args": {
          "location": "Mountain View, CA",
          "movie": "Barbie"
        }
      }
    }]
  }, {
    "role": "function",
    "parts": [{
      "functionResponse": {
        "name": "find_theaters",
        "response": {
          "name": "find_theaters",
          "content": {
            "movie": "Barbie",
            "theaters": [{
              "name": "AMC Mountain View 16",
              "address": "2000 W El Camino Real, Mountain View, CA 94040"
            }, {
              "name": "Regal Edwards 14",
              "address": "245 Castro St, Mountain View, CA 94040"
            }]
          }
        }
      }
    }]
  }],
  "tools": [{
    "functionDeclarations": [{
      "name": "find_movies",
      "description": "find movie titles currently playing in theaters based on any description, genre, title words, etc.",
      "parameters": {
        "type": "OBJECT",
        "properties": {
          "location": {
            "type": "STRING",
            "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
          },
          "description": {
            "type": "STRING",
            "description": "Any kind of description including category or genre, title words, attributes, etc."
          }
        },
        "required": ["description"]
      }
    }, {
      "name": "find_theaters",
      "description": "find theaters based on location and optionally movie title which is currently playing in theaters",
      "parameters": {
        "type": "OBJECT",
        "properties": {
          "location": {
            "type": "STRING",
            "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
          },
          "movie": {
            "type": "STRING",
            "description": "Any movie title"
          }
        },
        "required": ["location"]
      }
    }, {
      "name": "get_showtimes",
      "description": "Find the start times for movies playing in a specific theater",
      "parameters": {
        "type": "OBJECT",
        "properties": {
          "location": {
            "type": "STRING",
            "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
          },
          "movie": {
            "type": "STRING",
            "description": "Any movie title"
          },
          "theater": {
            "type": "STRING",
            "description": "Name of the theater"
          },
          "date": {
            "type": "STRING",
            "description": "Date for requested showtime"
          }
        },
        "required": ["location", "movie", "theater", "date"]
      }
    }]
  }]
}'
    

La respuesta a este ejemplo de curl incluye el resultado de la llamada al método find_theaters. La respuesta podría ser similar a la siguiente:

Función de varios turnos que llama a la respuesta de ejemplo curl

{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "text": " OK. Barbie is showing in two theaters in Mountain View, CA: AMC Mountain View 16 and Regal Edwards 14."
          }
        ]
      }
    }
  ],
  "usageMetadata": {
    "promptTokenCount": 9,
    "candidatesTokenCount": 27,
    "totalTokenCount": 36
  }
}
    

Ejemplo de curl que llama a un modelo de lenguaje varias veces

En el siguiente ejemplo con curl, se llama al modelo de lenguaje varias veces para llamar a una función. Cada vez que el modelo llama a la función, puede usar una función diferente para responder una consulta de usuario diferente en la solicitud.

Solicitud de ejemplo de curl de llamada a función de varios turnos

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=$API_KEY \
  -H 'Content-Type: application/json' \
  -d '{
    "contents": [{
      "role": "user",
      "parts": [{
        "text": "Which theaters in Mountain View show Barbie movie?"
    }]
  }, {
    "role": "model",
    "parts": [{
      "functionCall": {
        "name": "find_theaters",
        "args": {
          "location": "Mountain View, CA",
          "movie": "Barbie"
        }
      }
    }]
  }, {
    "role": "function",
    "parts": [{
      "functionResponse": {
        "name": "find_theaters",
        "response": {
          "name": "find_theaters",
          "content": {
            "movie": "Barbie",
            "theaters": [{
              "name": "AMC Mountain View 16",
              "address": "2000 W El Camino Real, Mountain View, CA 94040"
            }, {
              "name": "Regal Edwards 14",
              "address": "245 Castro St, Mountain View, CA 94040"
            }]
          }
        }
      }
    }]
  },
  {
    "role": "model",
    "parts": [{
      "text": " OK. Barbie is showing in two theaters in Mountain View, CA: AMC Mountain View 16 and Regal Edwards 14."
    }]
  },{
    "role": "user",
    "parts": [{
      "text": "Can we recommend some comedy movies on show in Mountain View?"
    }]
  }],
  "tools": [{
    "functionDeclarations": [{
      "name": "find_movies",
      "description": "find movie titles currently playing in theaters based on any description, genre, title words, etc.",
      "parameters": {
        "type": "OBJECT",
        "properties": {
          "location": {
            "type": "STRING",
            "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
          },
          "description": {
            "type": "STRING",
            "description": "Any kind of description including category or genre, title words, attributes, etc."
          }
        },
        "required": ["description"]
      }
    }, {
      "name": "find_theaters",
      "description": "find theaters based on location and optionally movie title which is currently playing in theaters",
      "parameters": {
        "type": "OBJECT",
        "properties": {
          "location": {
            "type": "STRING",
            "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
          },
          "movie": {
            "type": "STRING",
            "description": "Any movie title"
          }
        },
        "required": ["location"]
      }
    }, {
      "name": "get_showtimes",
      "description": "Find the start times for movies playing in a specific theater",
      "parameters": {
        "type": "OBJECT",
        "properties": {
          "location": {
            "type": "STRING",
            "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
          },
          "movie": {
            "type": "STRING",
            "description": "Any movie title"
          },
          "theater": {
            "type": "STRING",
            "description": "Name of the theater"
          },
          "date": {
            "type": "STRING",
            "description": "Date for requested showtime"
          }
        },
        "required": ["location", "movie", "theater", "date"]
      }
    }]
  }]
}'
    

Función de varios turnos que llama a la respuesta de ejemplo curl

[{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "functionCall": {
              "name": "find_movies",
              "args": {
                "description": "comedy",
                "location": "Mountain View, CA"
              }
            }
          }
        ]
      },
      "finishReason": "STOP",
      "safetyRatings": [
        {
          "category": "HARM_CATEGORY_HARASSMENT",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_HATE_SPEECH",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
          "probability": "NEGLIGIBLE"
        }
      ]
    }
  ],
  "usageMetadata": {
    "promptTokenCount": 48,
    "totalTokenCount": 48
  }
}
]
    

Prácticas recomendadas

Sigue estas prácticas recomendadas para mejorar la exactitud y la confiabilidad de tus llamadas a funciones.

Campos de teclas de función

La definición precisa de las funciones es fundamental para integrarlas en las solicitudes. Cada función se basa en parámetros específicos que guían su comportamiento y su interacción con el modelo. A continuación, se muestra un desglose de los parámetros clave usados en el array functions_declarations.

function_declarations (array):

  • Contiene uno o más objetos, cada uno de los cuales representa una función distinta.

Dentro de cada objeto function_declarations:

  • name (string): Es el identificador único de la función dentro de la llamada a la API.
    • Práctica recomendada: Usa nombres claros y descriptivos sin espacios, puntos (.) ni guiones (-). En cambio, usa caracteres de guion bajo (_) o mayúsculas mediales.
  • description (cadena): Es una explicación completa del propósito y las capacidades de la función.
    • Práctica recomendada: Las descripciones de las funciones deben ser detalladas, claras y específicas, y proporcionar ejemplos si es necesario. Por ejemplo, en lugar de find theaters, usa find theaters based on location and optionally movie title that is currently playing in theaters.. Evita descripciones demasiado amplias o ambiguas.
  • parameters (objeto): Define los datos de entrada que requiere la función.
    • type (string): Especifica el tipo de datos general (p.ej., object).
    • properties (objeto):
      • Enumera los parámetros individuales, cada uno con lo siguiente:
        • type (string): Es el tipo de datos del parámetro (p.ej., string, integer y boolean).
          • Práctica recomendada: Usa parámetros de tipo fuerte para reducir las alucinaciones del modelo. Por ejemplo, si los valores del parámetro son de un conjunto finito, usa un campo enum en lugar de enumerar los valores en la descripción (p.ej., "type": "enum", "values": ["now_playing", "upcoming"]). Si el valor del parámetro es siempre un número entero, establece el tipo en integer, en lugar de number.
        • description (string): Es una explicación clara del propósito del parámetro y el formato esperado.
          • Práctica recomendada: proporciona ejemplos concretos y restricciones. Por ejemplo, en lugar de the location to search, usa The city and state, e.g. San Francisco, CA or a zip code e.g. 95616.
    • required (array):
      • Es un array de cadenas que enumera los nombres de parámetros que son obligatorios para que funcione la función.

Instrucción del usuario

Para obtener mejores resultados, antepone los siguientes detalles a la consulta del usuario:

  • Contexto adicional para el modelo. Por ejemplo, You are a movie API assistant to help users find movies and showtimes based on their preferences.
  • Detalles o instrucciones sobre cómo y cuándo usar las funciones Por ejemplo, Don't make assumptions on showtimes. Always use a future date for showtimes.
  • Instrucciones para hacer preguntas aclaratorias si las consultas de los usuarios son ambiguas Por ejemplo, Ask clarifying questions if not enough information is available to complete the request.

Parámetros de muestreo

Para el parámetro de temperatura, usa 0 o algún otro valor bajo. Esto le indica al modelo que genere resultados más seguros y reduzca las alucinaciones.

Invocación a la API

Si el modelo propone la invocación de una función que enviaría un pedido, actualizaría una base de datos o tendría consecuencias significativas, valida la llamada a función con el usuario antes de ejecutarla.