Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
I den här artikeln beskrivs funktionsanrop och hur du använder det som en del av dina generativa AI-programarbetsflöden. Databricks-funktionsanrop är OpenAI-kompatibelt och är endast tillgängligt under modeller som fungerar som en del av Foundation Model-API:er och serverslutpunkter som betjänar externa modeller.
Vad är funktionsanrop?
Funktionsanrop är ett sätt för dig att styra utdata från LLM:er, så att de genererar strukturerade svar på ett mer tillförlitligt sätt. När du använder ett funktionsanrop beskriver du funktioner i API-anropet genom att beskriva funktionsargumenten med hjälp av ett JSON-schema. SJÄLVA LLM anropar inte dessa funktioner, utan skapar i stället ett JSON-objekt som användarna kan använda för att anropa funktionerna i sin kod.
För funktionsanrop i Databricks är den grundläggande sekvensen med steg följande:
- Anropa modellen med hjälp av den skickade frågan och en uppsättning funktioner som definierats i parametern
tools. - Modellen bestämmer om de definierade funktionerna ska anropas eller inte. När funktionen anropas är innehållet ett JSON-objekt med strängar som följer ditt anpassade schema.
- Parsa strängarna i JSON i koden och anropa funktionen med de angivna argumenten om de finns.
- Anropa modellen igen genom att lägga till det strukturerade svaret som ett nytt meddelande. Strukturen för svaret definieras av de funktioner som du tidigare angav i
tools. Härifrån sammanfattar modellen resultaten och skickar sammanfattningen till användaren.
När funktionsanrop ska användas
Följande är exempel på användningsfall för funktionsanrop:
- Skapa assistenter som kan svara på frågor genom att anropa andra API:er. Du kan till exempel definiera funktioner som
send_email(to: string, body: string)ellercurrent_weather(location: string, unit: 'celsius' | 'fahrenheit'). - Definiera och använda API-anrop baserat på naturligt språk. Som att ta uttalandet "Vilka är mina främsta kunder?" och gör det till ett API-anrop med namnet
get_customers(min_revenue: int, created_before: string, limit: int)och anropar det API:et.
För batchinferens eller databearbetningsuppgifter, som att konvertera ostrukturerade data till strukturerade data. Databricks rekommenderar att du använder strukturerade utdata.
Modeller som stöds
I följande tabell visas de modeller som stöds och vilken funktion för modellservering som gör varje modell tillgänglig. Se Tillämpliga licenser och villkor för modellutvecklare för dessa modeller.
- För modeller som görs tillgängliga av Foundation Model API:er, se Foundation Model API:er gränser för regiontillgänglighet.
- För modeller som görs tillgängliga av externa modeller, se Regiontillgänglighet för regiontillgänglighet.
Viktigt!
Från och med den 11 december 2024 ersätter Meta-Llama-3.3-70B-Instruct stödet för Meta-Llama-3.1-70B-Instruct i Foundation Model APIs betalning-per-token-slutpunkter.
| Modell | Tillgänglig med hjälp av modell-serving-funktionen | Anteckningar |
|---|---|---|
| Claude-Sonnet-4.5 | API:er för grundmodell | Stöds för pay-per-token-slutpunkter. |
| GPT OSS 20B | API:er för grundmodell | Stöds på pay-per-token och konfigurerade dataflödesslutpunkter. |
| GPT OSS 120B | API:er för grundmodell | Stöds på pay-per-token och konfigurerade dataflödesslutpunkter. |
| Gemma-3-12B | API:er för grundmodell | Stöds på pay-per-token och konfigurerade dataflödesslutpunkter. |
| Claude-Sonnet-4 | API:er för grundmodell | Stöds för pay-per-token-slutpunkter. |
| Claude-Opus-4.1 | API:er för grundmodell | Stöds för pay-per-token-slutpunkter. |
| Claude-3.7-Sonnet | API:er för grundmodell | Stöds för pay-per-token-slutpunkter. |
| Meta-Llama-4-Maverick | API:er för grundmodell | Stöds för arbetsbelastningar med per token-betalning och fastställt dataflöde. |
| Meta-Llama-3.3-70B-Instruct | API:er för grundmodell | Stöds för arbetsbelastningar med per token-betalning och fastställt dataflöde. |
| Meta-Llama-3.1-405B-Instruct | API:er för grundmodell | Stöds för arbetsbelastningar med per token-betalning och fastställt dataflöde. Från och med 31 mars 2026 dras Meta-Llama-3.1-405B-Instruct tillbaka. Se Tillbakadragna modeller för den rekommenderade ersättningsmodellen och vägledning om hur du migrerar under utfasningsperioden. |
| Meta-Llama-3.1-8B-Instruct | API:er för grundmodell | Stöds för arbetsbelastningar med per token-betalning och fastställt dataflöde. |
| gpt-4o | Externa modeller | |
| gpt-4o-2024-08-06 | Externa modeller | |
| gpt-4o-2024-05-13 | Externa modeller | |
| gpt-4o-mini | Externa modeller | |
| claude-3-5-sonnet-latest | Externa modeller | Antropisk modellprovider |
| claude-3-5-haiku-latest | Externa modeller | Antropisk modellprovider |
| claude-3-5-opus-senaste | Externa modeller | Antropisk modellprovider |
| claude-3-5-sonnet-20241022 | Externa modeller | Leverantör av Anthropic-modeller. Den här modellen stöder verktygssamtal med hjälp av Datoranvändning (beta). |
| claude-3-5-haiku-20241022 | Externa modeller | Antropisk modellprovider |
| claude-3-5-sonnet-20240620 | Externa modeller | Antropisk modellprovider |
| claude-3-haiku-20240307 | Externa modeller | Antropisk modellprovider |
| claude-3-opus-20240229 | Externa modeller | Antropisk modellprovider |
| claude-3-sonnet-20240229 | Externa modeller | Antropisk modellprovider |
| claude-3-5-sonnet-20241022-v2:0 | Externa modeller | Bedrock Anthropic modellleverantör. Den här modellen stöder verktygssamtal med hjälp av Datoranvändning (beta). |
| claude-3-5-haiku-20241022-v1:0 | Externa modeller | Bedrock leverantör av Anthropic-modeller |
| claude-3-5-sonnet-20240620-v1:0 | Externa modeller | Bedrock leverantör av Anthropic-modeller |
| claude-3-sonnet-20240229-v1:0 | Externa modeller | Bedrock leverantör av Anthropic-modeller |
| claude-3-opus-20240229-v1:0 | Externa modeller | Bedrock leverantör av Anthropic-modeller |
Använd funktionsanrop
Om du vill använda funktionsanrop med ditt generativa AI-program måste du ange funktionen parameters och en description.
Standardbeteendet för tool_choice är "auto". På så sätt kan modellen bestämma vilka funktioner som ska anropas och om de ska anropas.
Du kan anpassa standardbeteendet beroende på ditt användningsfall. Följande är dina alternativ:
- Ange
tool_choice: "required". I det här scenariot anropar modellen alltid en eller flera funktioner. Modellen väljer vilken funktion eller vilka funktioner som ska anropas. - Ange
tool_choice: {"type": "function", "function": {"name": "my_function"}}. I det här scenariot anropar modellen endast en specifik funktion. - Ställ in
tool_choice: "none"för att inaktivera funktionsanrop och låt modellen bara generera ett användaranslutet meddelande.
Här är ett exempel på ett enda steg som använder OpenAI SDK och dess tools-parameter. Mer syntaxinformation finns i Chattaktivitet .
Viktigt!
Under den offentliga förhandsversionen optimeras funktionsanrop på Databricks för funktionsanrop med ett enda anrop.
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))
Den här parametern stöder även datoranvändning (beta) för Claude-modeller.
JSON-schema
API:er för Foundation Model stöder i stort sett funktionsdefinitioner som godkänts av OpenAI. Men om du använder ett enklare JSON-schema för funktionsanropsdefinitioner resulterar det i JSON-generering av funktionsanrop av högre kvalitet. För att främja generering av högre kvalitet stöder Foundation Model-API:er endast en delmängd av JSON-schemaspecifikationer.
Följande definitionsnycklar för funktionsanrop stöds inte:
- Reguljära uttryck med
pattern. - Komplex kapsling eller schemasammansättning och validering använder:
anyOf,oneOf,allOf,prefixItemseller$ref. - Listor med typer förutom specialfallet
[type, “null”]där en typ i listan är en giltig JSON-typ och den andra är"null"
Dessutom gäller följande begränsningar:
- Det maximala antalet nycklar som anges i JSON-schemat är
16. - Foundation Model-API:er tillämpar inte längd- eller storleksbegränsningar för objekt och matriser.
- Detta inkluderar nyckelord som
maxProperties,minPropertiesochmaxLength.
- Detta inkluderar nyckelord som
- Starkt kapslade JSON-scheman resulterar i lägre kvalitet. Om möjligt kan du prova att platta ut JSON-schemat för bättre resultat.
Tokenanvändning
Snabbinmatning och andra tekniker används för att förbättra kvaliteten på verktygsanrop. Detta påverkar antalet indata- och utdatatoken som används av modellen, vilket i sin tur resulterar i faktureringskonsekvenser. Ju fler verktyg du använder, desto mer ökar dina indatatoken.
Begränsningar
Följande är begränsningar för funktionsanrop under offentlig förhandsversion:
- För multivändiga funktionsanrop rekommenderar Databricks de Claude-modeller som stöds.
- Om du använder Llama 4 Maverick är den nuvarande funktionsanropslösningen optimerad för enkla funktionsanrop. Multi-turn-funktionsanrop stöds under förhandsversionen, men är under utveckling.
- Parallell funktionsanrop stöds inte.
- Det maximala antalet funktioner som kan definieras i
toolsär 32 funktioner. - För stöd för etablerat dataflöde stöds funktionsanrop endast på nya slutpunkter. Du kan inte lägga till funktionsanrop till tidigare skapade slutpunkter.
Notebook-exempel
Se följande notebook-fil för detaljerade exempel på funktionsanrop