Aller au contenu principal

Appel de fonction sur Databricks

Cet article décrit l'appel de fonction et comment l'utiliser dans le cadre de vos workflows d'application d'IA générative. Databricks Function Calling est compatible avec OpenAI et est disponible uniquement pendant le déploiement de modèles dans le cadre des API de modèles de fondation et des Endpoint de service qui servent les modèles externes.

Qu’est-ce que 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 la 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 que les utilisateurs peuvent utiliser pour appeler les fonctions dans leur code.

Pour les appels de fonction sur Databricks, la séquence de base des étapes est la suivante :

  1. Appelez le modèle en utilisant la query soumise et un ensemble de fonctions définies dans le paramètre tools.
  2. Le modèle décide d'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é.
  3. Analysez les chaînes en JSON dans votre code, et appelez votre fonction avec les arguments fournis s'ils existent.
  4. Appelez à nouveau le modèle en ajoutant la réponse structurée comme nouveau message. La structure de la réponse est définie par les fonctions que vous avez précédemment fournies dans tools. À partir de là, 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'usage pour l'appel de fonction :

  • Créez des assistants qui peuvent répondre aux questions en appelant d'autres APIs. Par exemple, vous pouvez définir des fonctions telles que send_email(to: string, body: string) ou current_weather(location: string, unit: 'celsius' | 'fahrenheit').
  • Définissez et utilisez des appels d'API basés sur le langage naturel. Comme la déclaration, « Qui sont mes meilleurs clients ? » et en faire un appel d'API nommé, get_customers(min_revenue: int, created_before: string, limit: int) et en appelant cette API.

Pour l'inférence batch ou les tâches de traitement de données, 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 quelle fonctionnalité de service de modèle rend chaque modèle disponible. Découvrez Conditions applicables au modèle pour ces modèles.

  • Pour les modèles mis à disposition par les API Foundation Model, consultez les limites des API Foundation Model pour la disponibilité régionale.
  • Pour les modèles mis à disposition par les modèles externes, consultez la disponibilité régionale pour connaître la disponibilité des régions.
important
  • Meta-Llama-3.1-405B-Instruct sera retiré comme indiqué ci-dessous. Consultez la page Modèles obsolètes et retirés pour connaître le modèle de remplacement recommandé et obtenir des conseils sur la migration pendant la période d'obsolescence.

    • À partir du 15 février 2026, ce modèle n'est pas disponible pour les charges de travail avec paiement par jeton.
    • À compter du 15 mai 2026, ce modèle n'est pas disponible pour les workloads de throughput provisionné.
  • À partir 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 endpoints de paiement au jeton des APIs de modèles de fondation.

Modèle

Rendu disponible à l'aide de la fonctionnalité de service de modèles

Notes

GPT-5.6 Sol

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton.

GPT-5.6 Terra

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton.

GPT-5.6 Luna

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton.

GPT-5.5 Pro

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton.

GPT-5.5

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton.

GPT-5.4

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton.

GPT-5,4 mini

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton.

GPT-5.4 nano

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton.

GPT-5.3 Codex

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton.

GPT-5.2

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton.

GPT-5.1

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton.

GPT-5

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton.

GPT-5 mini

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton.

GPT-5 nano

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton.

Gemini 3.6 Flash

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton. Pour les Endpoint Google Gemini, le champ id sur les parties de contenu function_call et function_response n'est pas pris en charge.

Gemini 3.5 Flash

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton. Pour les Endpoint Google Gemini, le champ id sur les parties de contenu function_call et function_response n'est pas pris en charge.

Gemini 3.1 Pro Preview

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton. Pour les Endpoint Google Gemini, le champ id sur les parties de contenu function_call et function_response n'est pas pris en charge.

Gemini 3,1 Flash Lite

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton. Pour les Endpoint Google Gemini, le champ id sur les parties de contenu function_call et function_response n'est pas pris en charge.

Gemini 3 Flash

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton. Pour les Endpoint Google Gemini, le champ id sur les parties de contenu function_call et function_response n'est pas pris en charge.

Gemini 2.5 Pro

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton. Pour les Endpoint Google Gemini, le champ id sur les parties de contenu function_call et function_response n'est pas pris en charge.

Gemini 2.5 Flash

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton. Pour les Endpoint Google Gemini, le champ id sur les parties de contenu function_call et function_response n'est pas pris en charge.

Claude-Sonnet-5

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton.

Claude-Sonnet-4.6

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton.

Claude-Sonnet-4.5

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton.

Qwen3.5 122B A10B

API Foundation Model

Pris en charge sur les endpoints de paiement au jeton et de throughput de provisionnement.

Qwen3-Next 80B A3B Instruct

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton.

GLM 5.2

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton.

Inkling

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton.

GPT OSS 20B

API Foundation Model

Pris en charge sur les endpoints de paiement au jeton et de throughput de provisionnement.

GPT OSS 120B

API Foundation Model

Pris en charge sur les endpoints de paiement au jeton et de throughput de provisionnement.

Gemma-3-12B

API Foundation Model

Pris en charge sur les endpoints de paiement au jeton et de throughput de provisionnement.

Claude-Sonnet-4

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton.

Claude-Opus-4.8

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton.

Claude-Opus-4.7

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton.

Claude-Opus-4.6

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton.

Claude-Opus-4.5

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton.

Claude-Opus-4.1

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton.

Meta-Llama 4 Maverick

API Foundation Model

Pris en charge pour le paiement au jeton et les workloads de throughput provisionné.

Meta-Llama-3.3-70B-Instruct

API Foundation Model

Pris en charge pour le paiement au jeton et les workloads de throughput provisionné.

Meta-Llama-3.1-405B-Instruct

API Foundation Model

Pris en charge pour le paiement au jeton et les workloads de throughput provisionné. À compter du 31 mars 2026, Meta-Llama-3.1-405B-Instruct sera retiré. Consultez Modèles obsolètes et retirés pour connaître le modèle de remplacement recommandé et obtenir des conseils sur la migration pendant la période d'obsolescence.

Meta-Llama-3.1-8B-Instruct

API Foundation Model

Pris en charge pour le paiement au jeton et les workloads de throughput provisionné.

gpt-4o

Modèles externes

gpt-4o-06-08-2024

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 Anthropic

claude-3-5-haiku-latest

Modèles externes

Fournisseur de modèles Anthropic

claude-3-5-opus-latest

Modèles externes

Fournisseur de modèles Anthropic

claude-3-5-sonnet-20241022

Modèles externes

Fournisseur de modèles Anthropic. Ce modèle prend en charge l’appel d’outil à l’aide de l’utilisation informatique (bêta).

claude-3-5-haiku-20241022

Modèles externes

Fournisseur de modèles Anthropic

claude-3-5-sonnet-20240620

Modèles externes

Fournisseur de modèles Anthropic

claude-3-haiku-20240307

Modèles externes

Fournisseur de modèles Anthropic

claude-3-opus-20240229

Modèles externes

Fournisseur de modèles Anthropic

claude-3-sonnet-20240229

Modèles externes

Fournisseur de modèles Anthropic

claude-3-5-sonnet-20241022-v2:0

Modèles externes

Fournisseur de modèles Bedrock Anthropic. Ce modèle prend en charge l’appel d’outil à l’aide de l’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

Modèle

Rendu disponible à l'aide de la fonctionnalité de service de modèles

Notes

GPT-5.6 Sol

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton.

GPT-5.6 Terra

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton.

GPT-5.6 Luna

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton.

GPT-5.5 Pro

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton.

GPT-5.5

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton.

GPT-5.4

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton.

GPT-5,4 mini

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton.

GPT-5.4 nano

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton.

GPT-5.3 Codex

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton.

GPT-5.2

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton.

GPT-5.1

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton.

GPT-5

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton.

GPT-5 mini

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton.

GPT-5 nano

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton.

Gemini 3.6 Flash

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton. Pour les Endpoint Google Gemini, le champ id sur les parties de contenu function_call et function_response n'est pas pris en charge.

Gemini 3.5 Flash

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton. Pour les Endpoint Google Gemini, le champ id sur les parties de contenu function_call et function_response n'est pas pris en charge.

Gemini 3.1 Pro Preview

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton. Pour les Endpoint Google Gemini, le champ id sur les parties de contenu function_call et function_response n'est pas pris en charge.

Gemini 3,1 Flash Lite

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton. Pour les Endpoint Google Gemini, le champ id sur les parties de contenu function_call et function_response n'est pas pris en charge.

Gemini 3 Flash

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton. Pour les Endpoint Google Gemini, le champ id sur les parties de contenu function_call et function_response n'est pas pris en charge.

Gemini 2.5 Pro

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton. Pour les Endpoint Google Gemini, le champ id sur les parties de contenu function_call et function_response n'est pas pris en charge.

Gemini 2.5 Flash

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton. Pour les Endpoint Google Gemini, le champ id sur les parties de contenu function_call et function_response n'est pas pris en charge.

Claude-Sonnet-5

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton.

Claude-Sonnet-4.6

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton.

Claude-Sonnet-4.5

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton.

Qwen3.5 122B A10B

API Foundation Model

Pris en charge sur les endpoints de paiement au jeton et de throughput de provisionnement.

Qwen3-Next 80B A3B Instruct

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton.

GLM 5.2

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton.

Inkling

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton.

GPT OSS 20B

API Foundation Model

Pris en charge sur les endpoints de paiement au jeton et de throughput de provisionnement.

GPT OSS 120B

API Foundation Model

Pris en charge sur les endpoints de paiement au jeton et de throughput de provisionnement.

Gemma-3-12B

API Foundation Model

Pris en charge sur les endpoints de paiement au jeton et de throughput de provisionnement.

Claude-Sonnet-4

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton.

Claude-Opus-4.8

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton.

Claude-Opus-4.7

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton.

Claude-Opus-4.6

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton.

Claude-Opus-4.5

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton.

Claude-Opus-4.1

API Foundation Model

Pris en charge sur les Endpoint de paiement par jeton.

Meta-Llama 4 Maverick

API Foundation Model

Pris en charge pour le paiement au jeton et les workloads de throughput provisionné.

Meta-Llama-3.3-70B-Instruct

API Foundation Model

Pris en charge pour le paiement au jeton et les workloads de throughput provisionné.

Meta-Llama-3.1-405B-Instruct

API Foundation Model

Pris en charge pour le paiement au jeton et les workloads de throughput provisionné. À compter du 31 mars 2026, Meta-Llama-3.1-405B-Instruct sera retiré. Consultez Modèles obsolètes et retirés pour connaître le modèle de remplacement recommandé et obtenir des conseils sur la migration pendant la période d'obsolescence.

Meta-Llama-3.1-8B-Instruct

API Foundation Model

Pris en charge pour le paiement au jeton et les workloads de throughput provisionné.

gpt-4o

Modèles externes

gpt-4o-06-08-2024

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 Anthropic

claude-3-5-haiku-latest

Modèles externes

Fournisseur de modèles Anthropic

claude-3-5-opus-latest

Modèles externes

Fournisseur de modèles Anthropic

claude-3-5-sonnet-20241022

Modèles externes

Fournisseur de modèles Anthropic. Ce modèle prend en charge l’appel d’outil à l’aide de l’utilisation informatique (bêta).

claude-3-5-haiku-20241022

Modèles externes

Fournisseur de modèles Anthropic

claude-3-5-sonnet-20240620

Modèles externes

Fournisseur de modèles Anthropic

claude-3-haiku-20240307

Modèles externes

Fournisseur de modèles Anthropic

claude-3-opus-20240229

Modèles externes

Fournisseur de modèles Anthropic

claude-3-sonnet-20240229

Modèles externes

Fournisseur de modèles Anthropic

claude-3-5-sonnet-20241022-v2:0

Modèles externes

Fournisseur de modèles Bedrock Anthropic. Ce modèle prend en charge l’appel d’outil à l’aide de l’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

:::

Utiliser l'appel de fonction

Pour utiliser l'appel de fonction avec votre application d'IA générative, vous devez fournir la fonction parameters et un description.

Le comportement par default pour tool_choice est "auto". Cela permet au modèle de décider quelles fonctions appeler et s'il faut les appeler.

Vous pouvez personnaliser le comportement default en fonction de votre cas d'utilisation. Voici vos options :

  • Définissez tool_choice: "required". Dans ce scénario, le modèle appelle toujours une ou plusieurs fonctions. Le modèle sélectionne quelle fonction ou quelles fonctions appeler.
  • Définissez tool_choice: {"type": "function", "function": {"name": "my_function"}}. Dans ce scénario, le modèle n’appelle qu’une fonction spécifique.
  • Définissez tool_choice: "none" pour désactiver l'appel de fonction et que le modèle ne génère qu'un message destiné à l'utilisateur.

Voici un exemple d'interaction unique utilisant le SDK OpenAI et son tools parameter. Consultez l'API d'Achèvements du chat pour plus de détails sur la syntaxe.

important

Pendant la prévisualisation publique, l'appel de fonction sur Databricks est optimisé pour l'appel de fonction en un seul tour.

Python
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 informatique (bêta) pour les modèles Claude.

Schéma JSON

Les API du modèle de fondation prennent en charge de manière générale 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 permet une génération JSON d’appels de fonction de meilleure qualité. Pour promouvoir une génération de meilleure qualité, les APIs Foundation Model ne prennent en charge qu'un sous-ensemble des spécifications de schémas 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 de schémas complexes ou imbriqués à l'aide de : anyOf, oneOf, allOf, prefixItems, ou $ref.
  • Listes de types à l'exception du cas particulier de [type, “null”] où un type de la liste est un type JSON valide et l'autre est "null"

En outre, les limitations suivantes s'appliquent :

  • Le nombre maximal de clés spécifié dans le schéma JSON est de 16.

  • Les APIs 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, minProperties et maxLength.
  • Les schémas JSON fortement imbriqués entraînent une génération de moindre qualité. Si possible, essayez d'aplatir le schéma JSON pour de meilleurs résultats.

Utilisation des jetons

L'injection d'invite et d'autres techniques sont utilisées pour améliorer la qualité des appels d'outils. Cela impacte le nombre de jetons d'entrée et de sortie consommés par le modèle, ce qui entraîne des implications en matière de facturation. Plus vous utilisez d'outils, plus vos jetons d'entrée augmentent.

Limitations

Voici les limitations relatives à l’appel de fonction lors de la prévisualisation publique :

  • Pour l'appel de fonction multi-tour, Databricks recommande 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 à un tour. L’appel de fonction multi-tour est pris en charge pendant la prévisualisation, mais il 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 tools est de 32 fonctions.
  • Pour la prise en charge du throughput provisionné, l'appel de fonction n'est pris en charge que sur les nouveaux endpoints. Vous ne pouvez pas ajouter d'appel de fonction aux Endpoint créés précédemment.
  • Pour les Google Gemini Endpoint, le champ id sur function_call et function_response n'est pas pris en charge.

Exemple de Notebook

Consultez le notebook suivant pour des exemples détaillés d'appels de fonction

Exemple de notebook d'appel de fonction