Funktionsanrop i Azure Databricks
Viktigt!
Den här funktionen finns i offentliga förhandsversionen och stöds på:
- Foundation Model-API:er betalar per token
- API:er för Foundation Model avsatt dataflöde
- Serveringsslutpunkter som hanterar externa modeller
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 instruktionen "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.
- 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 API:ers betalningsväxel per token-slutpunkter.
Viktigt!
Meta Llama 3.3 är licensierad enligt LLAMA 3.3 Community License, Copyright © Meta Platforms, Inc. Alla rättigheter reserverade. Kunderna ansvarar för att se till att de följer villkoren i den här licensen och Llama 3.3 Policy för godtagbar användning.
Meta Llama 3.1 är licensierad enligt LLAMA 3.1 Community License, Copyright © Meta Platforms, Inc. Alla rättigheter reserverade. Kunderna ansvarar för att säkerställa efterlevnaden av tillämpliga modelllicenser.
Modell | Tillgängliggjord med hjälp av funktion för modellservering | Kommentar |
---|---|---|
Meta-Llama-3.3-70B-Instruct | API:er för grundmodell | Stöds för arbetsbelastningar med betala per token och etablerat dataflöde. |
Meta-Llama-3.1-405B-Instruct | API:er för grundmodell | Stöds för arbetsbelastningar med betala per token och etablerat dataflöde. |
Meta-Llama-3.1-8B-Instruct | API:er för grundmodell | Stöds endast för etablerade dataflödesarbetsbelastningar. |
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-latest | Externa modeller | Antropisk modellprovider |
claude-3-5-sonnet-20241022 | Externa modeller | Mänsklig modellleverantör. 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 modelltjänstleverantö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 Anthropic modellleverantör |
claude-3-sonnet-20240229-v1:0 | Externa modeller | Bedrock Anthropic-modelltjänsteleverantör |
claude-3-opus-20240229-v1:0 | Externa modeller | "Leverantör av Bedrocks antropiska modeller" |
Använda 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.
Följande är ett exempel med en enda tur med hjälp av OpenAI SDK och dess tools
parameter. Mer syntaxinformation finns i Chattaktivitet .
Viktigt!
Under offentlig förhandsversion optimeras funktionsanrop på Databricks för funktionsanrop med en enda tur.
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 också Datoranvändning (beta) för modeller som tillhandahålls av Anthropic och Amazon Bedrock for Anthropic. För antropiska verktyg, inklusive Datoranvändning, använder du följande syntax för att anropa verktyget:
"tools": [
{
"type": # Specify tool type here,
"function": {
# Required parameters for the tool type
}
}
]
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
,prefixItems
eller$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
,minProperties
ochmaxLength
.
- 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:
- Den aktuella funktionsanropslösningen är optimerad för funktionsanrop med en enda tur. 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