Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de changer d’annuaire.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer d’annuaire.
Cet article décrit l’appel de fonction et comment l’utiliser dans le cadre des workflows de vos applications d’IA générative. L’appel de fonction Databricks compatible avec OpenAI est disponible uniquement pendant la mise en service de modèles dans le cadre des API Foundation Model et des points de terminaison de mise en service qui mettent en service des modèles externes.
En quoi consiste l’appel de fonction ?
L’appel de fonction vous permet de contrôler la sortie des LLM, afin qu’ils génèrent des réponses structurées de manière plus fiable. Lorsque vous utilisez un appel de fonction, vous décrivez les fonctions dans l’appel d’API en décrivant les arguments de fonction à l’aide d’un schéma JSON. Le LLM lui-même n’appelle pas ces fonctions, mais il crée plutôt un objet JSON permettant aux utilisateurs d’appeler les fonctions dans leur code.
Pour l’appel de fonction sur Databricks, la séquence de base des étapes est la suivante :
- Appelez le modèle à l’aide de la requête envoyée et d’un ensemble de fonctions définies dans le paramètre
tools. - Le modèle détermine s’il faut appeler ou non les fonctions définies. Lorsque la fonction est appelée, le contenu est un objet JSON de chaînes qui adhère à votre schéma personnalisé.
- Analysez les chaînes en JSON dans votre code et appelez votre fonction avec les arguments fournis, le cas échéant.
- Rappelez le modèle en ajoutant la réponse structurée en tant que nouveau message. La structure de la réponse est définie par les fonctions que vous avez précédemment fournies dans
tools. Ensuite, le modèle résume les résultats et envoie ce résumé à l’utilisateur.
Quand utiliser l’appel de fonction
Voici des exemples de cas d’utilisation de l’appel de fonction :
- Créer des assistants capables de répondre à des questions en appelant d’autres API. Par exemple, vous pouvez définir des fonctions telles que
send_email(to: string, body: string)oucurrent_weather(location: string, unit: 'celsius' | 'fahrenheit'). - Définissez et utilisez des appels d’API basés sur le langage naturel. Par exemple, vous pouvez prendre l’énoncé « Qui sont mes meilleurs clients ? » et en faire un appel d’API nommé
get_customers(min_revenue: int, created_before: string, limit: int), puis appeler cette API.
Pour les tâches d’inférence ou de traitement des données par lots, comme la conversion de données non structurées en données structurées, Databricks recommande d’utiliser des sorties structurées.
Modèles pris en charge
Le tableau suivant répertorie les modèles pris en charge et la fonctionnalité de mise en service de modèles mettant à disposition chaque modèle. Consultez les licences de développeur de modèles applicables et les termes de ces modèles.
- Pour les modèles mis à disposition par les API Foundation Model, consultez Limites des API Foundation Model pour la disponibilité régionale.
- Pour les modèles mis à disposition par des modèles externes, consultez Disponibilité régionale pour la disponibilité régionale.
Importante
Meta-Llama-3.1-405B-Instruct sera mis hors service, comme indiqué ci-dessous. Consultez les modèles supprimés pour le modèle de remplacement recommandé et pour obtenir des conseils sur la migration pendant la dépréciation.
- À compter du 15 février 2026, ce modèle ne sera pas disponible pour les charges de travail au paiement par jeton.
- À compter du 15 mai 2026, ce modèle n’est pas disponible pour les charges de travail de débit approvisionnées.
À compter du 11 décembre 2024, Meta-Llama-3.3-70B-Instruct remplace la prise en charge de Meta-Llama-3.1-70B-Instruct dans les points de terminaison de paiement par jeton des API Foundation Model.
| Modèle | Mise à disposition à l’aide de la fonctionnalité de mise en service de modèles | Notes |
|---|---|---|
| Claude-Sonnet-4.5 | API Foundation Model | Prise en charge sur les points de terminaison de paiement par jeton. |
| Claude-Haiku-4.5 | API Foundation Model | Prise en charge sur les points de terminaison de paiement par jeton. |
| Qwen3-Next 80B A3B Instruct (bêta) | API Foundation Model | Prise en charge sur les points de terminaison de paiement par jeton. |
| GPT OSS 20B | API Foundation Model | Prise en charge sur les points de terminaison de paiement par jeton et à débit provisionné. |
| GPT OSS 120B | API Foundation Model | Prise en charge sur les points de terminaison de paiement par jeton et à débit provisionné. |
| Gemma-3-12B | API Foundation Model | Prise en charge sur les points de terminaison de paiement par jeton et à débit provisionné. |
| Claude-Sonnet-4 | API Foundation Model | Prise en charge sur les points de terminaison de paiement par jeton. |
| Claude-Opus-4.5 | API Foundation Model | Prise en charge sur les points de terminaison de paiement par jeton. |
| Claude-Opus-4.1 | API Foundation Model | Prise en charge sur les points de terminaison de paiement par jeton. |
| claude-3-7-Sonnet | API Foundation Model | Prise en charge sur les points de terminaison de paiement par jeton. |
| Meta-Llama-4-Maverick | API Foundation Model | Prise en charge sur les charges de travail de paiement par jeton et à débit provisionné. |
| Meta-Llama-3.3-70B-Instruct | API Foundation Model | Prise en charge sur les charges de travail de paiement par jeton et à débit provisionné. |
| Meta-Llama-3.1-405B-Instruct | API Foundation Model | Prise en charge sur les charges de travail de paiement par jeton et à débit provisionné. |
| Meta-Llama-3.1-8B-Instruct | API Foundation Model | Prise en charge sur les charges de travail de paiement par jeton et à débit provisionné. |
| gpt-4o | Modèles externes | |
| gpt-4o-2024-08-06 | Modèles externes | |
| gpt-4o-2024-05-13 | Modèles externes | |
| gpt-4o-mini | Modèles externes | |
| claude-3-5-sonnet-latest | Modèles externes | Fournisseur de modèles anthropices |
| claude-3-5-haiku-latest | Modèles externes | Fournisseur de modèles anthropices |
| claude-3-5-opus-latest | Modèles externes | Fournisseur de modèles anthropices |
| claude-3-5-sonnet-20241022 | Modèles externes | Fournisseur de modèles anthropices. Ce modèle prend en charge l’appel d’outil à l’aide d’Utilisation informatique (bêta). |
| claude-3-5-haiku-20241022 | Modèles externes | Fournisseur de modèles anthropices |
| claude-3-5-sonnet-20240620 | Modèles externes | Fournisseur de modèles anthropices |
| claude-3-haiku-20240307 | Modèles externes | Fournisseur de modèles anthropices |
| claude-3-opus-20240229 | Modèles externes | Fournisseur de modèles anthropices |
| claude-3-sonnet-20240229 | Modèles externes | Fournisseur de modèles anthropices |
| claude-3-5-sonnet-20241022-v2:0 | Modèles externes | Fournisseur du modèle Bedrock Anthropic. Ce modèle prend en charge l’appel d’outil à l’aide d’Utilisation informatique (bêta). |
| claude-3-5-haiku-20241022-v1:0 | Modèles externes | Fournisseur de modèles Bedrock Anthropic |
| claude-3-5-sonnet-20240620-v1:0 | Modèles externes | Fournisseur de modèles Bedrock Anthropic |
| claude-3-sonnet-20240229-v1:0 | Modèles externes | Fournisseur de modèles Bedrock Anthropic |
| claude-3-opus-20240229-v1:0 | Modèles externes | Fournisseur de modèles Bedrock Anthropic |
Utilisez l’appel de fonction
Pour utiliser l’appel de fonction avec votre application d’IA générative, vous devez fournir les parameters de fonction et une description.
Le comportement par défaut pour tool_choice est "auto". Ainsi, le modèle peut décider des fonctions à appeler et s’il doit les appeler.
Vous pouvez personnaliser le comportement par défaut en fonction de votre cas d’utilisation. Voici les options qui s’offrent à vous :
- Définissez
tool_choice: "required". Dans ce scénario, le modèle appelle toujours une ou plusieurs fonctions. Le modèle sélectionne la ou les fonctions à appeler. - Définissez
tool_choice: {"type": "function", "function": {"name": "my_function"}}. Dans ce scénario, le modèle appelle uniquement une fonction spécifique. - Définissez
tool_choice: "none"pour désactiver l’appel de fonction et faire en sorte que le modèle génère uniquement un message destiné à l’utilisateur.
L’exemple suivant à un tour utilise le kit de développement logiciel (SDK) d’OpenAI et son paramètre tools. Pour plus d’informations sur la syntaxe, consultez l’API Chat Completions.
Importante
Pendant la préversion publique, l’appel de fonction sur Databricks est optimisé pour l’appel de fonction à un tour.
import os
import json
from openai import OpenAI
DATABRICKS_TOKEN = os.environ.get('YOUR_DATABRICKS_TOKEN')
DATABRICKS_BASE_URL = os.environ.get('YOUR_DATABRICKS_BASE_URL')
client = OpenAI(
api_key=DATABRICKS_TOKEN,
base_url=DATABRICKS_BASE_URL
)
tools = [
{
"type": "function",
"function": {
"name": "get_current_weather",
"description": "Get the current weather in a given location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA"
},
"unit": {
"type": "string",
"enum": [
"celsius",
"fahrenheit"
]
}
}
}
}
}
]
messages = [{"role": "user", "content": "What is the current temperature of Chicago?"}]
response = client.chat.completions.create(
model="databricks-meta-llama-3-3-70b-instruct",
messages=messages,
tools=tools,
tool_choice="auto",
)
print(json.dumps(response.choices[0].message.model_dump()['tool_calls'], indent=2))
Ce paramètre prend également en charge l’utilisation de l’ordinateur (bêta) pour les modèles Claude.
Schéma JSON
Les API Foundation Model prennent largement en charge les définitions de fonctions acceptées par OpenAI. Cependant, l’utilisation d’un schéma JSON plus simple pour les définitions d’appels de fonction entraîne une génération JSON d’appel de fonction de qualité supérieure. Pour promouvoir une génération de qualité supérieure, les API Foundation Model ne prennent en charge qu’un sous-ensemble des spécifications du schéma JSON.
Les clés de définition d’appel de fonction suivantes ne sont pas prises en charge :
- Expressions régulières utilisant
pattern - Composition et validation complexes imbriquées ou de schéma utilisant
anyOf,oneOf,allOf,prefixItemsou$ref. - Listes de types à l’exception du cas spécial de
[type, “null”]où un type dans la liste est un type JSON valide et l’autre est"null"
De plus, les limitations suivantes s’appliquent :
- Le nombre maximal de clés spécifié dans le schéma JSON est de
16. - Les API Foundation Model n’imposent pas de contraintes de longueur ou de taille pour les objets et les tableaux.
- Cela inclut des mots clés comme
maxProperties,minPropertiesetmaxLength.
- Cela inclut des mots clés comme
- Les schémas JSON fortement imbriqués entraînent une génération de qualité inférieure. Si possible, essayez d’aplatir le schéma JSON pour obtenir de meilleurs résultats.
Utilisation d’un jeton
L’injection d’invite et d’autres techniques permettent d’améliorer la qualité des appels d’outil. Cela impacte le nombre de jetons d’entrée et de sortie consommés par le modèle, ce qui entraîne des implications de facturation. Plus vous utilisez d’outils, plus vos jetons d’entrée sont nombreux.
Limitations
Les limitations suivantes s’appliquent à l’appel de fonction pendant la préversion publique :
- Pour les fonctions multitours appelant Databricks, vous recommandez les modèles Claude pris en charge.
- Si vous utilisez Llama 4 Maverick, la solution d’appel de fonction actuelle est optimisée pour les appels de fonction à tour unique. L’appel de fonction à plusieurs tours est pris en charge pendant la préversion, mais est en cours de développement.
- L’appel de fonction parallèle n’est pas pris en charge.
- Le nombre maximal de fonctions pouvant être définies dans
toolsest de 32. - Pour la prise en charge du débit provisionné, l’appel de fonction n’est pris en charge que sur les nouveaux points de terminaison. Vous ne pouvez pas ajouter d’appel de fonction aux points de terminaison créés précédemment.
Exemple de notebook
Voir le notebook suivant pour des exemples détaillés d’appels de fonction