Delen via


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:

  1. Roep het model aan met behulp van de ingediende query en een set functies die zijn gedefinieerd in de tools parameter.
  2. 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.
  3. Parseer de tekenreeksen in JSON in uw code en roep uw functie aan met de opgegeven argumenten als deze bestaan.
  4. 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) of current_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.

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, , prefixItemsof $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, minPropertiesen maxLength.
  • 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

Voorbeeldnotitieblok voor functie-aanroepen

Notebook downloaden