Függvényhívás az Azure Databricks rendszerben

Ez a cikk a függvényhívást és annak használatát ismerteti a generatív AI-alkalmazás munkafolyamatai részeként. A Databricks-függvényhívás OpenAI-kompatibilis, és csak az Foundation Model API-k részeként és a külső modelleketkiszolgáló végpontok kiszolgálása során érhető el.

Mi a függvényhívás?

A függvényhívással szabályozhatja az LLM-k kimenetét, így megbízhatóbb strukturált válaszokat hozhat létre. Függvényhívás használatakor az API-hívás függvényeit egy JSON-sémával írja le. Maga az LLM nem hívja meg ezeket a függvényeket, hanem létrehoz egy JSON-objektumot, amellyel a felhasználók meghívhatják a függvényeket a kódjukban.

A Databricks függvényhívásához a lépések alapvető sorrendje a következő:

  1. Hívja meg a modellt az elküldött lekérdezés és a tools paraméterben definiált függvénykészlet használatával.
  2. A modell dönti el, hogy meghívja-e a definiált függvényeket. A függvény meghívásakor a tartalom az egyéni sémához igazodó sztringek JSON-objektuma.
  3. Elemezze a sztringeket JSON-formátumúra a kódban, és hívja meg a függvényt a megadott argumentumokkal, ha léteznek.
  4. Hívja meg újra a modellt a strukturált válasz új üzenetként való hozzáfűzésével. A válasz struktúráját a korábban megadott függvények határozzák meg.tools Innen a modell összegzi az eredményeket, és elküldi az összegzést a felhasználónak.

Mikor érdemes függvényhívást használni?

A függvényhíváshoz az alábbi példahasználati esetek tartoznak:

  • Olyan asszisztenseket hozhat létre, amelyek más API-k meghívásával válaszolhatnak a kérdésekre. Definiálhat például olyan függvényeket, mint a send_email(to: string, body: string) vagy current_weather(location: string, unit: 'celsius' | 'fahrenheit')a .
  • Api-hívások definiálása és használata természetes nyelv alapján. Például a "Ki(k) a fő ügyfele(i)m?" és ezt egy elnevezett API-hívássá alakíthatja, get_customers(min_revenue: int, created_before: string, limit: int) és meghívhatja azt az API-t.

Kötegelt következtetéshez vagy adatfeldolgozási feladatokhoz, például strukturálatlan adatok strukturált adatokká alakításához. A Databricks strukturált kimenetek használatát javasolja.

Támogatott modellek

Az alábbi táblázat felsorolja a támogatott modelleket, és hogy melyik modell-kiszolgáló funkció teszi elérhetővé az egyes modelleket. Lásd a modellekre vonatkozó modellfeltételeket .

Fontos

  • A Meta-Llama-3.1-405B-Instruct az alábbiak szerint megszűnik. A Elavult és kivezetett modellek című témakörben találja az ajánlott helyettesítő modellt és az elavulási időszak alatti migrálásra vonatkozó útmutatást.

    • 2026. február 15-től a modell nem érhető el a tokenenkénti fizetési munkafolyamatokhoz.
    • 2026. május 15-től ez a modell nem érhető el kiosztott átviteli sebességű számítási feladatokhoz.
  • 2024. december 11-től a Meta-Llama-3.3-70B-Instruct felváltja a Meta-Llama-3.1-70B-Instruct támogatását az alapmodell API-k tokenenkénti fizetéses végpontjaiban.

Modell Modellmegjelenítési funkcióval elérhetővé téve Jegyzetek
Gemini 3.1 Flash Lite Alapmodell API-k Tokenenkénti fizetéses végpontokon támogatott. A Google Gemini-végpontok esetében a(z) id és function_call tartalomrészeknél a(z) function_response mező nem támogatott.
Claude-Sonnet-5 Alapmodell API-k Tokenenkénti fizetéses végpontokon támogatott.
Claude-Sonnet-4.6 Alapmodell API-k Tokenenkénti fizetéses végpontokon támogatott.
Claude-Sonnet-4.5 Alapmodell API-k Tokenenkénti fizetéses végpontokon támogatott.
Claude-Haiku-4.5 Alapmodell API-k Tokenenkénti fizetéses végpontokon támogatott.
Qwen3.5 122B A10B Alapmodell API-k Az egyedi tokenenkénti fizetési modell és a kiosztott adatátviteli kapacitás végpontjai támogatottak.
Qwen3-Next 80B A3B Utasítás Alapmodell API-k Tokenenkénti fizetéses végpontokon támogatott.
GPT OSS 20B Alapmodell API-k Az egyedi tokenenkénti fizetési modell és a kiosztott adatátviteli kapacitás végpontjai támogatottak.
GPT OSS 120B Alapmodell API-k Az egyedi tokenenkénti fizetési modell és a kiosztott adatátviteli kapacitás végpontjai támogatottak.
Gemma-3-12B Alapmodell API-k Az egyedi tokenenkénti fizetési modell és a kiosztott adatátviteli kapacitás végpontjai támogatottak.
Claude-Sonnet-4 Alapmodell API-k Tokenenkénti fizetéses végpontokon támogatott.
Claude-Opus-4.8 Alapmodell API-k Tokenenkénti fizetéses végpontokon támogatott.
Claude-Opus-4.7 Alapmodell API-k Tokenenkénti fizetéses végpontokon támogatott.
Claude-Opus-4.6 Alapmodell API-k Tokenenkénti fizetéses végpontokon támogatott.
Claude-Opus-4.5 Alapmodell API-k Tokenenkénti fizetéses végpontokon támogatott.
Claude-Opus-4.1 Alapmodell API-k Tokenenkénti fizetéses végpontokon támogatott.
Meta-Llama-4-Maverick Alapmodell API-k Felhasznált tokenenkénti fizetés és előre kiosztott átviteli kapacitás esetén támogatott.
Meta-Llama-3.3-70B-Instruct Alapmodell API-k Felhasznált tokenenkénti fizetés és előre kiosztott átviteli kapacitás esetén támogatott.
Meta-Llama-3.1-405B-Instruct Alapmodell API-k Felhasznált tokenenkénti fizetés és előre kiosztott átviteli kapacitás esetén támogatott.
Meta-Llama-3.1-8B-Instruct Alapmodell API-k Felhasznált tokenenkénti fizetés és előre kiosztott átviteli kapacitás esetén támogatott.
gpt-4o Külső modellek
gpt-4o-2024-08-06 Külső modellek
gpt-4o-2024-05-13 Külső modellek
gpt-4o-mini Külső modellek
claude-3-5-sonnet-latest Külső modellek Antropikus modellszolgáltató
claude-3-5-haiku-latest Külső modellek Antropikus modellszolgáltató
claude-3-5-opus-latest Külső modellek Antropikus modellszolgáltató
claude-3-5-sonnet-20241022 Külső modellek Antropikus modellszolgáltató. Ez a modell támogatja a Számítógép-használat (bétaverzió)használatával történő eszközhívást.
claude-3-5-haiku-20241022 Külső modellek Antropikus modellszolgáltató
claude-3-5-sonnet-20240620 Külső modellek Antropikus modellszolgáltató
claude-3-haiku-20240307 Külső modellek Antropikus modellszolgáltató
claude-3-opus-20240229 Külső modellek Antropikus modellszolgáltató
claude-3-sonnet-20240229 Külső modellek Antropikus modellszolgáltató
claude-3-5-sonnet-20241022-v2:0 Külső modellek Bedrock antropikus modell szolgáltató. Ez a modell támogatja a Számítógép-használat (bétaverzió)használatával történő eszközhívást.
claude-3-5-haiku-20241022-v1:0 Külső modellek Bedrock antropikus modellszolgáltató
claude-3-5-sonnet-20240620-v1:0 Külső modellek Bedrock antropikus modellszolgáltató
claude-3-sonnet-20240229-v1:0 Külső modellek Bedrock antropikus modellszolgáltató
claude-3-opus-20240229-v1:0 Külső modellek Bedrock antropikus modellszolgáltató

Használja a függvényhívást

Ha függvényhívást szeretne használni a generatív AI-alkalmazással, meg kell adnia egy függvényt parameters és egy description.

Az tool_choice alapértelmezett viselkedése "auto". Ez lehetővé teszi, hogy a modell eldöntse, mely függvényeket hívja meg, és hogy hívja-e őket.

A használati esettől függően testre szabhatja az alapértelmezett viselkedést. A következő lehetőségek közül választhat:

  • tool_choice: "required"beállítása. Ebben a forgatókönyvben a modell mindig meghív egy vagy több függvényt. A modell kiválasztja, hogy melyik függvényt vagy függvényt hívja meg.
  • tool_choice: {"type": "function", "function": {"name": "my_function"}}beállítása. Ebben a forgatókönyvben a modell csak egy adott függvényt hív meg.
  • Állítsa be a tool_choice: "none" a függvényhívás letiltására, és állítsa be, hogy a modell csak felhasználói üzenetet hozzon létre.

Következik egy példa, amely az OpenAI SDK-t és annak tools paraméterét használja egyetlen lépésben. További szintaxisadatokért tekintse meg a Csevegés befejezése API-t .

Fontos

A Nyilvános előzetes verzióban a Databricks függvényhívása egyfordulós függvényhívásra van optimalizálva.

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

Ez a paraméter a Claude-modellek számítógép-használatát (bétaverzióját) is támogatja.

JSON-séma

Az Alapmodell API-k széles körben támogatják az OpenAI által elfogadott függvénydefiníciókat. Ha azonban egyszerűbb JSON-sémát használ a függvényhívás-definíciókhoz, jobb minőségű függvényhívási JSON-generációt eredményez. A jobb minőségű generáció előmozdítása érdekében az alapmodell API-k csak JSON-sémaspecifikációk egy részét támogatják.

A következő függvényhívás-definíciós kulcsok nem támogatottak:

  • Reguláris kifejezések pattern használatával.
  • Összetett, beágyazott vagy sémaösszetétel és -ellenőrzés a következőkkel: anyOf, oneOf, allOf, prefixItemsvagy $ref.
  • Típuslisták, kivéve a [type, “null”] speciális esetét, ahol a listában szereplő egyik típus érvényes JSON-típus, a másik pedig "null"

Emellett a következő korlátozások érvényesek:

  • A JSON-sémában megadott kulcsok maximális száma 16.
  • Az alapmodell API-k nem kényszerítik ki az objektumokra és tömbökre vonatkozó hossz- és méretkorlátozásokat.
    • Ide tartoznak az olyan kulcsszavak, mint a maxProperties, minPropertiesés maxLength.
  • Az erősen beágyazott JSON-sémák alacsonyabb minőségű generációt eredményeznek. Ha lehetséges, próbálja meg elsimítani a JSON-sémát a jobb eredmények érdekében.

Token használata

A gyorsinjektálást és más technikákat az eszközhívások minőségének javítására használják. Ez hatással van a modell által felhasznált bemeneti és kimeneti tokenek számára, ami számlázási következményekkel jár. Minél több eszközt használ, annál nagyobb a bemeneti tokenek száma.

Korlátozások

A nyilvános előzetes verzióban a függvényhívásra vonatkozó korlátozások a következők:

  • Többfordulós függvények esetén a Databricks a támogatott Claude-modelleket javasolja.
  • A Llama 4 Maverick használata esetén az aktuális függvényhívási megoldás egyfordulós függvényhívásokra van optimalizálva. A többfordulós függvényhívás az előzetes verzióban támogatott, de fejlesztés alatt áll.
  • A párhuzamos függvényhívás nem támogatott.
  • A tools-ben definiálható függvények maximális száma 32.
  • A kiosztott átviteli sebesség támogatása esetén a függvényhívás csak az új végpontokon támogatott. Nem adhat hozzá függvényhívást a korábban létrehozott végpontokhoz.
  • A Google Gemini-végpontoknál a(z) id mező a(z) function_call és function_response esetén nem támogatott.

Jegyzetfüzet példa

Részletes függvényhívási példákért tekintse meg az alábbi jegyzetfüzetet

Függvényhívási példajegyzetfüzet

Jegyzetfüzet lekérése