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:
- Rufen Sie das Modell mithilfe der übermittelten Abfrage und einer Reihe von Funktionen auf, die im
tools
Parameter definiert sind. - 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.
- Analysieren Sie die Zeichenfolgen in JSON in Ihrem Code, und rufen Sie ihre Funktion mit den bereitgestellten Argumenten auf, falls vorhanden.
- 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)
odercurrent_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
undmaxLength
.
- Dazu gehören Schlüsselwörter wie
- 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.