Freigeben über


Funktionsaufruf in Azure Databricks

In diesem Artikel werden Funktionsaufrufe und deren Verwendung als Teil Ihrer generativen KI-Anwendungsworkflows beschrieben. Databricks Function Calling ist OpenAI-kompatibel und ist nur während des Modells verfügbar, das als Teil Foundation Model-APIs dient und Endpunkte bedient, die externen Modellendienen.

Was ist ein Funktionsaufruf?

Funktionenaufrufe ermöglichen es Ihnen, die Ausgabe von LLMs zu steuern, sodass strukturierte Antworten zuverlässiger generiert werden. Wenn Sie einen Funktionsaufruf verwenden, beschreiben Sie Funktionen im API-Aufruf, indem Sie die Funktionsargumente mithilfe eines JSON-Schemas beschreiben. Die LLM selbst ruft diese Funktionen nicht auf, sondern erstellt stattdessen ein JSON-Objekt, mit dem Benutzer die Funktionen in ihrem Code aufrufen können.

Bei Funktionsaufrufen für Databricks sind die grundlegenden Schritte wie folgt:

  1. Rufen Sie das Modell mithilfe der übermittelten Abfrage und einer Reihe von Funktionen auf, die im tools Parameter definiert sind.
  2. Das Modell entscheidet, ob die definierten Funktionen aufgerufen werden sollen oder nicht. Wenn die Funktion aufgerufen wird, ist der Inhalt ein JSON-Objekt von Zeichenfolgen, das ihrem benutzerdefinierten Schema entspricht.
  3. Analysieren Sie die Zeichenfolgen in JSON in Ihrem Code, und rufen Sie ihre Funktion mit den bereitgestellten Argumenten auf, falls vorhanden.
  4. Rufen Sie das Modell erneut auf, indem Sie die strukturierte Antwort als neue Nachricht anfügen. Die Struktur der Antwort wird durch die Funktionen definiert, die Sie zuvor in tools bereitgestellt haben. Von hier aus fasst das Modell die Ergebnisse zusammen und sendet diese Zusammenfassung an den Benutzer.

Wann man Funktionsaufrufe verwenden sollte

Im Folgenden sind Beispielanwendungsfälle für Funktionsaufrufe aufgeführt:

  • Erstellen Sie Assistenten, die Fragen beantworten können, indem Sie andere APIs aufrufen. Sie können z. B. Funktionen wie send_email(to: string, body: string) oder current_weather(location: string, unit: 'celsius' | 'fahrenheit') definieren.
  • Definieren und Verwenden von API-Aufrufen basierend auf natürlicher Sprache. Nehmen Sie z. B. die Aussage „Wer sind meine Top-Kunden?“ und erstellen Sie daraus einen API-Aufruf namens get_customers(min_revenue: int, created_before: string, limit: int) und rufen Sie dann diese API auf.

Für Batchrückschluss- oder Datenverarbeitungsaufgaben, z. B. das Konvertieren unstrukturierter Daten in strukturierte Daten. Databricks empfiehlt die Verwendung strukturierter Ausgaben.

Unterstützte Modelle

In der folgenden Tabelle sind die unterstützten Modelle und die jeweilige Modellbereitstellungsfunktion aufgeführt, die jedes Modell verfügbar macht. Siehe anwendbare Modellentwicklerlizenzen und -bedingungen für diese Modelle.

  • Modelle, die von Foundation Model-APIs zur Verfügung gestellt werden, finden Sie unter Foundation Model-APIs-Grenzwerte für die Regionsverfügbarkeit.
  • Informationen zu Modellen, die von externen Quellen bereitgestellt werden, finden Sie im Abschnitt "Regionsverfügbarkeit" zur Verfügbarkeit in verschiedenen Regionen.

Wichtig

  • Meta-Llama-3.1-405B-Instruct wird eingestellt, wie unten beschrieben. Siehe "Eingestellte Modelle" für das empfohlene Ersatzmodell und Anleitungen für die Migration während der Außerbetriebnahme.

    • Ab dem 15. Februar 2026 ist dieses Modell für Pay-per-Token-Workloads nicht verfügbar.
    • Ab dem 15. Mai 2026 ist dieses Modell nicht für bereitgestellte Durchsatzworkloads verfügbar.
  • Ab dem 11. Dezember 2024 ersetzt Meta-Llama-3.3-70B-Instruct die Unterstützung von Meta-Llama-3.1-70B-Instruct an den Pay-per-Token-Endpunkten der Foundation Model APIs.

Modell Verfügbar gemacht mithilfe der Modellbereitstellungsfunktion Hinweise
Claude-Sonnet-4.5 Foundation Model-APIs Unterstützt für Pay-per-Token-Endpunkte.
Claude-Haiku-4.5 Foundation Model-APIs Unterstützt für Pay-per-Token-Endpunkte.
Qwen3-Next 80B A3B-Anweisung (Beta) Foundation Model-APIs Unterstützt für Pay-per-Token-Endpunkte.
GPT OSS 20B Foundation Model-APIs Wird für Pay-per-Token und bereitgestellte Durchsatzendpunkte unterstützt.
GPT OSS 120B Foundation Model-APIs Wird für Pay-per-Token und bereitgestellte Durchsatzendpunkte unterstützt.
Gemma-3-12B Foundation Model-APIs Wird für Pay-per-Token und bereitgestellte Durchsatzendpunkte unterstützt.
Claude-Sonnet-4 Foundation Model-APIs Unterstützt für Pay-per-Token-Endpunkte.
Claude-Opus-4.5 Foundation Model-APIs Unterstützt für Pay-per-Token-Endpunkte.
Claude-Opus-4.1 Foundation Model-APIs Unterstützt für Pay-per-Token-Endpunkte.
claude-3-7-Sonnet Foundation Model-APIs Unterstützt für Pay-per-Token-Endpunkte.
Meta-Llama-4-Maverick Foundation Model-APIs Unterstützt für Workloads mit tokenbasierter Bezahlung und Workloads mit bereitgestelltem Durchsatz.
Meta-Llama-3.3-70B-Instruct Foundation Model-APIs Unterstützt für Workloads mit tokenbasierter Bezahlung und Workloads mit bereitgestelltem Durchsatz.
Meta-Llama-3.1-405B-Instruct Foundation Model-APIs Unterstützt für Workloads mit tokenbasierter Bezahlung und Workloads mit bereitgestelltem Durchsatz.
Meta-Llama-3.1-8B-Instruct Foundation Model-APIs Unterstützt für Workloads mit tokenbasierter Bezahlung und Workloads mit bereitgestelltem Durchsatz.
gpt-4o Externe Modelle
gpt-4o-2024-08-06 Externe Modelle
gpt-4o-2024-05-13 Externe Modelle
gpt-4o-mini Externe Modelle
claude-3-5-sonnet-latest Externe Modelle Anbieter anthropischer Modelle
claude-3-5-haiku-latest Externe Modelle Anbieter anthropischer Modelle
claude-3-5-opus-latest Externe Modelle Anbieter anthropischer Modelle
claude-3-5-sonnet-20241022 Externe Modelle Anthropic-Modellanbieter. Dieses Modell unterstützt Toolaufrufe mit Computernutzung (Beta).
claude-3-5-haiku-20241022 Externe Modelle Anbieter anthropischer Modelle
claude-3-5-sonnet-20240620 Externe Modelle Anbieter anthropischer Modelle
claude-3-haiku-20240307 Externe Modelle Anbieter anthropischer Modelle
claude-3-opus-20240229 Externe Modelle Anbieter anthropischer Modelle
claude-3-sonnet-20240229 Externe Modelle Anbieter anthropischer Modelle
claude-3-5-sonnet-20241022-v2:0 Externe Modelle Bedrock Anthropic-Modellanbieter. Dieses Modell unterstützt Toolaufrufe mit Computernutzung (Beta).
claude-3-5-haiku-20241022-v1:0 Externe Modelle Bedrock Anthropic-Modellanbieter
claude-3-5-sonnet-20240620-v1:0 Externe Modelle Bedrock Anthropic-Modellanbieter
claude-3-sonnet-20240229-v1:0 Externe Modelle Bedrock Anthropic-Modellanbieter
claude-3-opus-20240229-v1:0 Externe Modelle Bedrock Anthropic-Modellanbieter

Verwenden von Funktionsaufrufen

Um Funktionsaufrufe mit Ihrer generativen KI-Anwendung zu verwenden, müssen Sie eine Funktion parameters und eine Funktion description bereitstellen.

Das Standardverhalten für tool_choice lautet "auto". Auf diese Weise kann das Modell entscheiden, welche Funktionen aufgerufen werden sollen und ob sie aufgerufen werden sollen.

Sie können das Standardverhalten je nach Anwendungsfall anpassen. Die folgenden Optionen stehen zur Auswahl:

  • Legen Sie tool_choice: "required" fest. In diesem Szenario ruft das Modell immer eine oder mehrere Funktionen auf. Das Modell wählt aus, welche Funktion oder welche Funktionen aufgerufen werden sollen.
  • Legen Sie tool_choice: {"type": "function", "function": {"name": "my_function"}} fest. In diesem Szenario ruft das Modell nur eine bestimmte Funktion auf.
  • Legen Sie tool_choice: "none" fest, dass Funktionsaufrufe deaktiviert werden und das Modell nur eine benutzerorientierte Nachricht generiert.

Im Folgenden finden Sie ein einzelnes Beispiel für die Verwendung des OpenAI SDK und des zugehörigen tools Parameters. Weitere Syntaxdetails finden Sie unter chat completions API .

Wichtig

Während der Public Preview ist das Aufrufen von Funktionen für Databricks für Single-Turn-Funktionsaufrufe optimiert.

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))

Dieser Parameter unterstützt auch Computer Use (Beta) für Claude-Modelle.

JSON-Schema

Foundation Model-APIs unterstützen Funktionsdefinitionen, die von OpenAI akzeptiert werden. Die Verwendung eines einfacheren JSON-Schemas für Funktionsaufrufdefinitionen führt jedoch zur JSON-Generierung von Funktionsaufrufen mit höherer Qualität. Um die Generierung höherer Qualität zu fördern, unterstützen Foundation Model-APIs nur eine Teilmenge der JSON-Schemaspezifikationen.

Die folgenden Funktionsaufrufdefinitionsschlüssel werden nicht unterstützt:

  • Reguläre Ausdrücke, die pattern nutzen.
  • Komplexe geschachtelte oder schemabasierte Komposition und Validierung mit anyOf, oneOf, allOf, prefixItems oder $ref.
  • Listen von Typen mit Ausnahme des Sonderfalls [type, “null”], in dem ein Typ in der Liste ein gültiger JSON-Typ und der andere "null" ist

Darüber hinaus gelten die folgenden Einschränkungen:

  • Die maximale Anzahl der im JSON-Schema angegebenen Schlüssel ist 16.
  • Foundation-Modell-APIs erzwingen keine Längen- oder Größenbeschränkungen für Objekte und Arrays.
    • Dazu gehören Schlüsselwörter wie maxProperties, minProperties und maxLength.
  • Stark geschachtelte JSON-Schemas führen zu einer niedrigeren Qualitätsgenerierung. Versuchen Sie nach Möglichkeit, das JSON-Schema abzuflachen, um bessere Ergebnisse zu erzielen.

Verwendung von Token

Prompteinschleusung und andere Techniken werden verwendet, um die Qualität von Toolaufrufen zu verbessern. Dies wirkt sich auf die Anzahl der vom Modell verbrauchten Eingabe- und Ausgabetoken aus, was wiederum zu Abrechnungsauswirkungen führt. Je mehr Tools Sie verwenden, desto mehr erhöhen sich Ihre Eingabetoken.

Begrenzungen

Die Einschränkungen für Funktionsaufrufe während der öffentlichen Testversion sind wie folgt:

  • Für Multi-Turn-Funktionen empfiehlt Databricks die unterstützten Claude-Modelle.
  • Bei Verwendung von Llama 4 Maverick ist die aktuelle Funktionsaufruflösung für Einzelne Turn-Funktionsaufrufe optimiert. Multi-Turn-Funktionsaufrufe werden während der Vorschau unterstützt, befinden sich jedoch in der Entwicklung.
  • Parallele Funktionsaufrufe werden nicht unterstützt.
  • Die maximale Anzahl von Funktionen, die in tools definiert werden können, beträgt 32 Funktionen.
  • Zur Unterstützung des bereitgestellten Durchsatzes wird der Funktionsaufruf nur für neue Endpunkte unterstützt. Sie können keine Funktionsaufrufe zu zuvor erstellten Endpunkten hinzufügen.

Notebook-Beispiel

Detaillierte Beispiele für Funktionsaufrufe finden Sie im folgenden Notizbuch.

Beispiel-Notebook für Funktionsaufrufe

Notebook abrufen