Appel de fonction

Les fonctions personnalisées peuvent être définies et fournies à un modèle d'IA générative à l'aide d'appels de fonctions. Le modèle n'appelle pas directement ces fonctions, mais génère une sortie de données structurées qui spécifie le nom de la fonction et les arguments suggérés. Cette sortie permet d'appeler des API externes. Elle peut ensuite être réintégrée dans le modèle, ce qui permet d'obtenir des réponses aux requêtes plus complètes. Les appels de fonctions permettent aux LLM d'interagir avec des informations en temps réel et divers services tels que des bases de données, des systèmes de gestion de la relation client et des référentiels de documents, ce qui améliore leur capacité à fournir des réponses pertinentes et contextuelles.

Fonctionnement des appels de fonction

Les fonctions sont décrites à l'aide de déclarations de fonctions. Une fois que vous avez transmis une liste de déclarations de fonction dans une requête à un modèle de langage, celui-ci renvoie un objet au format de schéma compatible OpenAPI qui inclut les noms des fonctions et leurs arguments, et tente de répondre à la requête de l'utilisateur avec l'une des fonctions renvoyées. Le modèle de langage comprend l'objectif d'une fonction en analysant sa déclaration. Le modèle n'appelle pas réellement la fonction. À la place, un développeur utilise l'objet de schéma compatible OpenAPI dans la réponse pour appeler la fonction renvoyée par le modèle.

Lorsque vous mettez en œuvre les appels de fonction, vous créez une ou plusieurs déclarations de fonctions, puis vous ajoutez les déclarations de fonction à un objet tools qui est transmis au modèle. Chaque déclaration de fonction contient des informations sur une fonction qui inclut les éléments suivants:

  • Nom de la fonction
  • Paramètres de fonction dans un format de schéma compatible OpenAPI. Un sous-ensemble sélectionné est accepté. Lorsque vous utilisez curl, le schéma est spécifié à l'aide de JSON.
  • Description de la fonction (facultatif). Pour des résultats optimaux, nous vous recommandons d'inclure une description.

Ce document inclut des exemples curl qui effectuent des appels REST avec la classe GenerativeModel et ses méthodes.

Modèles compatibles

Les modèles suivants sont compatibles avec les appels de fonctions:

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

Mode d'appel de fonction

Vous pouvez utiliser la fonction qui appelle mode pour définir le comportement d'exécution de l'appel de fonction. Trois modes sont disponibles:

  • AUTO: comportement par défaut du modèle. Le modèle décide de prédire soit un appel de fonction, soit une réponse en langage naturel.
  • ANY: le modèle est tenu de toujours prédire un appel de fonction. Si allowed_function_names n'est pas fourni, le modèle choisit parmi toutes les déclarations de fonction disponibles. Si allowed_function_names est fourni, le modèle choisit parmi l'ensemble des fonctions autorisées.
  • NONE: le modèle ne prédirea pas un appel de fonction. Dans ce cas, le comportement du modèle est le même que si vous ne transmettiez aucune déclaration de fonction.

Vous pouvez également transmettre un ensemble d'allowed_function_names qui, lorsqu'il est fourni, limite les fonctions que le modèle appelle. Vous ne devez inclure allowed_function_names que lorsque le mode est ANY. Les noms de fonction doivent correspondre aux noms déclarés. Avec le mode défini sur ANY et l'élément allowed_function_names défini, le modèle prédit un appel de fonction à partir de l'ensemble des noms de fonction fournis.

Voici un exemple de requête qui définit le mode sur ANY et spécifie une liste de fonctions autorisées:

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

Fonction appelant des exemples cURL

Lorsque vous utilisez cURL, les informations sur la fonction et les paramètres sont incluses dans l'élément tools. Chaque déclaration de fonction dans l'élément tools contient le nom de la fonction, ses paramètres spécifiés à l'aide du schéma compatible OpenAPI et une description de la fonction. Les exemples suivants montrent comment utiliser des commandes curl avec des appels de fonction:

Exemple curl à un seul tour

Avec le mode "un seul tour", vous appelez un modèle de langue une fois. Avec les appels de fonction, vous pouvez utiliser un seul tour lorsque vous fournissez au modèle une requête en langage naturel et une liste de fonctions. Dans ce cas, le modèle utilise la déclaration de la fonction, qui inclut le nom, les paramètres et la description de la fonction, pour prédire quelle fonction appeler et les arguments à appeler.

L'exemple curl suivant est un exemple de transmission d'une description d'une fonction qui renvoie des informations sur l'emplacement de la lecture d'un film. Plusieurs déclarations de fonctions, telles que find_movies et find_theaters, sont incluses dans la requête.

Exemple de requête d'appel de fonction à un seul tour curl

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 réponse à cet exemple curl peut ressembler à ce qui suit.

Exemple de réponse d'appel de fonction à un seul tour curl

[{
  "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
  }
}]
    

Exemple d'un seul tour avec le mode N'IMPORTE LAQUELLE

L'exemple curl suivant est semblable à l'exemple d'un seul tour, mais il définit le mode sur ANY:

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

Appeler une fonction à un seul tour à l'aide de N'IMPORTE QUEL mode (requête)

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 réponse peut ressembler à ce qui suit :

Appel de fonction à un seul tour à l'aide de N'IMPORTE QUEL mode (réponse)

{
  "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"
      }
    ]
  }
}
    

Exemple d'un seul tour utilisant le mode TOUS et les fonctions autorisées

L'exemple curl suivant est semblable à l'exemple à un seul tour, mais il définit le mode sur ANY et inclut une liste de fonctions autorisées:

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

Appel de fonction à un seul tour à l'aide du mode N'IMPORTE LAQUELLE et des fonctions autorisées (requête)

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"]
    },
  }
}'
    

Le modèle ne peut pas prédire la fonction find_movies, car elle ne figure pas dans la liste des fonctions autorisées. Il prédit donc une autre fonction. La réponse peut être semblable à celle-ci:

Appel de fonction à un seul tour à l'aide du mode N'IMPORTE LAQUELLE et des fonctions autorisées (réponse)

{
  "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"
      }
    ]
  }
}
    

Exemples curl multitours

Vous pouvez mettre en œuvre un scénario d'appel de fonction multitour en procédant comme suit:

  1. Obtenez une réponse à un appel de fonction en appelant le modèle de langage. C'est le premier tour.
  2. Appelez le modèle de langage à l'aide de la réponse d'appel de fonction du premier tour et de la réponse de fonction que vous obtenez en appelant cette fonction. Il s'agit du deuxième tour.

La réponse du deuxième tour résume les résultats pour répondre à votre requête lors du premier tour ou contient un deuxième appel de fonction que vous pouvez utiliser pour obtenir plus d'informations sur votre requête.

Cet article inclut deux exemples curl multitours:

Exemple Curl qui utilise la réponse d'un tour précédent

L'exemple curl suivant appelle la fonction et les arguments renvoyés par l'exemple de tour unique précédent pour obtenir une réponse. La méthode et les paramètres renvoyés par l'exemple de tour unique sont dans cette entrée JSON.

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

Exemple de requête d'appel de fonction multitours curl

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 réponse à cet exemple curl inclut le résultat de l'appel de la méthode find_theaters. La réponse peut ressembler à ce qui suit :

Exemple de réponse d'appel de fonction multitours 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
  }
}
    

Exemple Curl qui appelle un modèle de langage plusieurs fois

L'exemple curl suivant appelle le modèle de langage plusieurs fois pour appeler une fonction. Chaque fois que le modèle appelle la fonction, elle peut utiliser une fonction différente pour répondre à une requête utilisateur différente dans la requête.

Exemple de requête d'appel de fonction multitours curl

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"]
      }
    }]
  }]
}'
    

Exemple de réponse d'appel de fonction multitours 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
  }
}
]
    

Bonnes pratiques

Suivez ces bonnes pratiques pour améliorer la précision et la fiabilité de vos appels de fonction.

Champs des touches de fonction

Il est essentiel de définir avec précision vos fonctions lorsque vous les intégrez dans vos requêtes. Chaque fonction repose sur des paramètres spécifiques qui guident son comportement et son interaction avec le modèle. Voici le détail des paramètres clés utilisés dans le tableau functions_declarations.

function_declarations (tableau):

  • Contient un ou plusieurs objets, chacun représentant une fonction distincte.

Dans chaque objet function_declarations:

  • name (chaîne): identifiant unique de la fonction dans l'appel d'API.
    • Bonne pratique: Utilisez des noms clairs et descriptifs sans espaces, points (.) ni tirets (-). Utilisez plutôt des traits de soulignement (_) ou la casse de chameau.
  • description (chaîne): explication complète de l'objectif et des fonctionnalités de la fonction.
    • Bonne pratique: Les descriptions de fonction doivent être détaillées, claires et spécifiques, et fournir des exemples si nécessaire. Par exemple, au lieu de find theaters, utilisez find theaters based on location and optionally movie title that is currently playing in theaters.. Évitez les descriptions trop vagues ou ambiguës.
  • parameters (objet): définit les données d'entrée requises par la fonction.
    • type (chaîne): spécifie le type de données global (par exemple, object).
    • properties (objet) :
      • Répertorie les paramètres individuels, chacun avec :
        • type (chaîne): type de données du paramètre (par exemple, string, integer, boolean).
          • Bonne pratique: Utilisez des paramètres fortement typés pour réduire les hallucinations du modèle. Par exemple, si les valeurs de paramètres proviennent d'un ensemble fini, utilisez un champ enum au lieu de lister les valeurs dans la description (par exemple, "type": "enum", "values": ["now_playing", "upcoming"]). Si la valeur du paramètre est toujours un entier, définissez le type sur integer au lieu de number.
        • description (chaîne): explication claire de la fonction du paramètre et du format attendu.
          • Bonne pratique: Fournissez des exemples concrets et des contraintes. Par exemple, utilisez The city and state, e.g. San Francisco, CA or a zip code e.g. 95616 au lieu de the location to search.
    • required (tableau) :
      • Tableau de chaînes listant les noms des paramètres obligatoires pour le fonctionnement de la fonction.

Invite utilisateur

Pour de meilleurs résultats, ajoutez les informations suivantes au début de la requête utilisateur:

  • Contexte supplémentaire pour le modèle. Par exemple : You are a movie API assistant to help users find movies and showtimes based on their preferences.
  • Détails ou instructions sur la façon et le moment d'utiliser les fonctions. Par exemple : Don't make assumptions on showtimes. Always use a future date for showtimes.
  • Des instructions pour poser des questions de clarification si les requêtes des utilisateurs sont ambiguës. Par exemple : Ask clarifying questions if not enough information is available to complete the request.

Paramètres d'échantillonnage

Pour le paramètre de température, utilisez 0 ou une autre valeur basse. Cela indique au modèle de générer des résultats plus fiables et de réduire les hallucinations.

Appel d'API

Si le modèle propose d'appeler une fonction qui envoie une commande, met à jour une base de données ou engendre des conséquences importantes, validez l'appel de fonction auprès de l'utilisateur avant de l'exécuter.