Functie aanroepen in Azure Databricks
Belangrijk
Deze functie bevindt zich in openbare preview en wordt ondersteund op beide Foundation Model-API's betalen per token of ingerichte doorvoereindpunten.
In dit artikel wordt het aanroepen van functies beschreven en hoe u deze kunt gebruiken als onderdeel van uw generatieve AI-toepassingswerkstromen. Databricks Function Calling is openAI-compatibel en is alleen beschikbaar tijdens het model dat fungeert als onderdeel van Foundation Model-API's.
Wat is functie aanroepen?
Functie-aanroepen biedt een manier om de uitvoer van LLM's te beheren, zodat ze gestructureerde antwoorden betrouwbaarder genereren. Wanneer u een functieoproep gebruikt, beschrijft u functies in de API-aanroep door de functieargumenten te beschrijven met behulp van een JSON-schema. De LLM zelf roept deze functies niet aan, maar maakt in plaats daarvan een JSON-object dat gebruikers kunnen gebruiken om de functies in hun code aan te roepen.
Voor functie-aanroepen op Databricks zijn de basisvolgorde van de stappen als volgt:
- Roep het model aan met behulp van de ingediende query en een set functies die zijn gedefinieerd in de
tools
parameter. - Het model bepaalt of de gedefinieerde functies al dan niet moeten worden aangeroepen. Wanneer de functie wordt aangeroepen, is de inhoud een JSON-object met tekenreeksen die voldoen aan uw aangepaste schema.
- Parseer de tekenreeksen in JSON in uw code en roep uw functie aan met de opgegeven argumenten als deze bestaan.
- Roep het model opnieuw aan door het gestructureerde antwoord toe te voegen als een nieuw bericht. De structuur van het antwoord wordt gedefinieerd door de functies die u eerder hebt opgegeven.
tools
Vanaf hier geeft het model een overzicht van de resultaten en verzendt het die samenvatting naar de gebruiker.
Wanneer gebruikt u functie-aanroepen
Hier volgen voorbeelden van use cases voor functie-aanroepen:
- Maak assistenten die vragen kunnen beantwoorden door andere API's aan te roepen. U kunt bijvoorbeeld functies zoals
send_email(to: string, body: string)
ofcurrent_weather(location: string, unit: 'celsius' | 'fahrenheit')
. - API-aanroepen definiëren en gebruiken op basis van natuurlijke taal. Zoals het nemen van de verklaring: 'Wie zijn mijn belangrijkste klanten?' en dat doen in een API-aanroep met de naam
get_customers(min_revenue: int, created_before: string, limit: int)
en het aanroepen van die API.
Voor batchdeductie- of gegevensverwerkingstaken, zoals het converteren van ongestructureerde gegevens naar gestructureerde gegevens. Databricks raadt aan gestructureerde uitvoer te gebruiken.
Ondersteunde modellen
De volgende tabel bevat de ondersteunde modellen en welke modelfunctie elk model beschikbaar maakt.
- Zie Basismodel-API's voor beschikbaarheid van regio's voor modellen die beschikbaar worden gesteld door Foundation Model-API's.
- Zie Beschikbaarheid van regio's voor beschikbaarheid van regio's voor modellen die beschikbaar worden gesteld door externe modellen.
Belangrijk
Meta Llama 3.1 is gelicentieerd onder de LLAMA 3.1 Community License, Copyright © Meta Platforms, Inc. Alle rechten voorbehouden. Klanten zijn verantwoordelijk voor het garanderen van naleving van toepasselijke modellicenties.
Modelleren | Beschikbaar gemaakt met behulp van de functie voor modelbediening | Opmerkingen |
---|---|---|
Meta-Llama-3.1-405B-Instruct | Foundation Model-API's | Ondersteund voor workloads met betalen per token en ingerichte doorvoer. |
Meta-Llama-3.1-70B-Instruct | Foundation Model-API's | Ondersteund voor workloads met betalen per token en ingerichte doorvoer. |
Meta-Llama-3.1-8B-Instruct | Foundation Model-API's | Alleen ondersteund voor ingerichte doorvoerworkloads. |
gpt-4o | Externe modellen | |
gpt-4o-2024-08-06 | Externe modellen | |
gpt-4o-2024-05-13 | Externe modellen | |
gpt-4o-mini | Externe modellen |
Functie aanroepen gebruiken
Als u functie-aanroepen wilt gebruiken met uw generatieve AI-toepassing, moet u een functie parameters
en een description
.
Het standaardgedrag voor tool_choice
is "auto"
. Hiermee kan het model bepalen welke functies moeten worden aangeroepen en of ze moeten worden aangeroepen.
U kunt het standaardgedrag aanpassen, afhankelijk van uw use-case. Hieronder ziet u de volgende opties:
- Instellen
tool_choice: "required"
. In dit scenario roept het model altijd een of meer functies aan. Het model selecteert welke functie of functies moeten worden aangeroepen. - Instellen
tool_choice: {"type": "function", "function": {"name": "my_function"}}
. In dit scenario roept het model alleen een specifieke functie aan. - Stel deze
tool_choice: "none"
functieaanroepen uit en laat het model alleen een gebruikersgericht bericht genereren.
Hier volgt een voorbeeld van één beurt met behulp van de OpenAI SDK en tools
de bijbehorende parameter. Zie chattaak voor aanvullende syntaxisdetails.
Belangrijk
Tijdens de openbare preview is het aanroepen van functies in Databricks geoptimaliseerd voor aanroepen met één functie.
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
Basismodel-API's ondersteunen functiedefinities die door OpenAI worden geaccepteerd. Het gebruik van een eenvoudiger JSON-schema voor functie-aanroepdefinities resulteert echter in een hogere kwaliteit functie die JSON-generatie aanroept. Ter bevordering van het genereren van hogere kwaliteit ondersteunen Foundation Model-API's alleen een subset van JSON-schemaspecificaties.
De volgende definitiesleutels voor functie-aanroepen worden niet ondersteund:
- Reguliere expressies met behulp van
pattern
. - Complexe geneste of schema-samenstelling en validatie met:
anyOf
,oneOf
,allOf
, ,prefixItems
of$ref
. - Lijsten met typen, met uitzondering van het speciale geval waarbij
[type, “null”]
één type in de lijst een geldig JSON-type is en het andere is"null"
Daarnaast zijn de volgende beperkingen van toepassing:
- Het maximum aantal sleutels dat is opgegeven in het JSON-schema is
16
. - Basismodel-API's dwingen geen lengte- of groottebeperkingen af voor objecten en matrices.
- Dit omvat trefwoorden zoals
maxProperties
,minProperties
enmaxLength
.
- Dit omvat trefwoorden zoals
- Sterk geneste JSON-schema's leiden tot een lagere generatie van kwaliteit. Probeer indien mogelijk het JSON-schema plat te maken voor betere resultaten.
Tokengebruik
Promptinjectie en andere technieken worden gebruikt om de kwaliteit van gereedschapsoproepen te verbeteren. Dit heeft gevolgen voor het aantal invoer- en uitvoertokens dat door het model wordt gebruikt, wat op zijn beurt gevolgen heeft voor de facturering. Hoe meer hulpprogramma's u gebruikt, hoe meer uw invoertokens toenemen.
Beperkingen
Hier volgen beperkingen voor het aanroepen van functies tijdens de openbare preview:
- De huidige oplossing voor het aanroepen van functies is geoptimaliseerd voor functie-aanroepen met één draai. Aanroepen van functies met meerdere schakels wordt ondersteund tijdens de preview, maar is in ontwikkeling.
- Parallel functie aanroepen wordt niet ondersteund.
- Het maximum aantal functies dat kan worden gedefinieerd in
tools
32 functies. - Voor ingerichte doorvoerondersteuning wordt functie-aanroepen alleen ondersteund op nieuwe eindpunten. U kunt geen functie-aanroepen toevoegen aan eerder gemaakte eindpunten.
Voorbeeld van notitieblok
Zie het volgende notebook voor gedetailleerde voorbeelden van functie-aanroepen