Freigeben über


Aufrufen von Funktionen in Azure Databricks

Wichtig

Dieses Feature befindet sich in der öffentlichen Vorschau und wird sowohl für Foundation-Modell-APIs per Token als auch für bereitgestellte Durchsatzendpunkte unterstützt.This feature is in Public Preview and is supported on both Foundation Model APIs pay-per-token or provisioned throughput endpoints.

In diesem Artikel werden Funktionsaufrufe und deren Verwendung als Teil Ihrer generativen KI-Anwendungsworkflows beschrieben. Databricks-Funktionsaufrufe sind OpenAI-kompatibel und nur während der Modellbereitstellung als Teil von Foundation Model-APIs verfügbar.

Was ist ein Funktionsaufruf

Funktionsaufrufe bieten ihnen die Möglichkeit, 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. 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.

Gründe für die Verwendung von Funktionsaufrufen

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 und Verwenden von API-Aufrufen basierend auf natürlicher Sprache. Nehmen Sie 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 Batchleitungen 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 aufgeführt, und welche Modellfunktion die einzelnen Modelle zur Verfügung stellt.

  • 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 Modellen zur Verfügung gestellt werden, finden Sie unter "Regionsverfügbarkeit für die Verfügbarkeit von Regionen".

Wichtig

Meta Llama 3.1 ist unter der LLAMA 3.1 Community License, Copyright © Meta Platforms, Inc. lizenziert. Alle Rechte vorbehalten. Kunden sind dafür verantwortlich, die Einhaltung anwendbarer Modelllizenzen sicherzustellen.

Modell Verfügbar gemacht mithilfe der Modellbereitstellungsfunktion Hinweise
Meta-Llama-3.1-405B-Instruct Foundation Model-APIs Unterstützt für Pay-per-Token und bereitgestellte Durchsatzarbeitslasten.
Meta-Llama-3.1-70B-Instruct Foundation Model-APIs Unterstützt für Pay-per-Token und bereitgestellte Durchsatzarbeitslasten.
Meta-Llama-3.1-8B-Instruct Foundation Model-APIs Wird nur für bereitgestellte Durchsatzarbeitslasten unterstützt.
gpt-4o Externe Modelle
gpt-4o-2024-08-06 Externe Modelle
gpt-4o-2024-05-13 Externe Modelle
gpt-4o-mini Externe Modelle

Funktionsaufrufe verwenden

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 in der Chataufgabe.

Wichtig

Während der öffentlichen Vorschau 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-1-70b-instruct",
    messages=messages,
    tools=tools,
    tool_choice="auto",
)

print(json.dumps(response.choices[0].message.model_dump()['tool_calls'], indent=2))

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

Prompt-Eingaben 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 größer werden Ihre Eingabetoken.

Begrenzungen

Im Folgenden sind Einschränkungen für Funktionsaufrufe während der öffentlichen Vorschau aufgeführt:

  • Die aktuelle Funktionsaufruflösung ist für Single-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.
  • Für die Unterstützung des bereitgestellten Durchsatzes wird der Funktionsaufruf nur bei neuen Endpunkten 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.

Beispielnotizbuch für Funktionsaufrufe

Notebook abrufen