Wywoływanie funkcji w usłudze Azure Databricks
Ważne
Ta funkcja jest w publicznej wersji zapoznawczej i jest obsługiwana na:
- Interfejsy API modeli bazowych — płatność za token
- Interfejsy API modelu bazowego z zarezerwowaną przepustowością
- Obsługa punktów końcowych obsługujących modele zewnętrzne
W tym artykule opisano wywoływanie funkcji i sposób jej używania w ramach przepływów pracy aplikacji generowania sztucznej inteligencji. Wywoływanie funkcji usługi Databricks jest zgodne z interfejsem OpenAI i jest dostępne tylko podczas obsługi modelu w ramach interfejsów API modelu Foundation i obsługujących punkty końcowe obsługujące modele zewnętrzne.
Co to jest wywoływanie funkcji?
Wywołanie funkcji umożliwia sterowanie danymi wyjściowymi modułów LLM, dzięki czemu generują ustrukturyzowane odpowiedzi bardziej niezawodnie. Podczas używania wywołania funkcji opisujesz funkcje w wywołaniu API, opisując argumenty funkcji za pomocą schematu JSON. Sam moduł LLM nie wywołuje tych funkcji, ale zamiast tego tworzy obiekt JSON, którego użytkownicy mogą używać do wywoływania funkcji w kodzie.
W przypadku funkcji wywołującej usługę Databricks podstawowa sekwencja kroków jest następująca:
- Wywołaj model przy użyciu przesłanego zapytania i zestawu funkcji zdefiniowanych w parametrze
tools
. - Model decyduje, czy wywołać zdefiniowane funkcje. Po wywołaniu funkcji zawartość jest obiektem JSON zawierającym ciągi, zgodnym z twoim schematem niestandardowym.
- Przeanalizuj ciągi w formacie JSON w kodzie i wywołaj funkcję przy użyciu podanych argumentów, jeśli istnieją.
- Ponownie wywołaj model, dołączając ustrukturyzowaną odpowiedź jako nowy komunikat. Struktura odpowiedzi jest definiowana przez funkcje podane wcześniej w pliku
tools
. W tym miejscu model podsumowuje wyniki i wysyła to podsumowanie do użytkownika.
Kiedy należy używać wywoływania funkcji
Poniżej przedstawiono przykładowe przypadki użycia wywoływania funkcji:
- Utwórz asystentów, którzy mogą odpowiedzieć na pytania, wywołując inne interfejsy API. Można na przykład zdefiniować funkcje takie jak
send_email(to: string, body: string)
lubcurrent_weather(location: string, unit: 'celsius' | 'fahrenheit')
. - Definiowanie i używanie wywołań interfejsu API na podstawie języka naturalnego. Podobnie jak w przypadku podejmowania oświadczenia: "Kim są moi najlepsi klienci?" i tworzenie go w wywołaniu interfejsu API o nazwie
get_customers(min_revenue: int, created_before: string, limit: int)
i wywoływaniu tego interfejsu API.
W przypadku zadań wnioskowania wsadowego lub przetwarzania danych, takich jak konwertowanie danych bez struktury na dane ustrukturyzowane. Usługa Databricks zaleca używanie danych wyjściowych ze strukturą.
Obsługiwane modele
W poniższej tabeli wymieniono obsługiwane modele oraz funkcje serwujące, które udostępniają każdy z tych modeli.
- Aby uzyskać informacje o modelach udostępnianych przez interfejsy API modelu foundation, zobacz Podstawowe limity interfejsów API modelu dla dostępności regionów .
- Aby uzyskać informacje o modelach udostępnionych przez modele zewnętrzne, zobacz Dostępność regionów dla dostępności regionów.
Ważne
Począwszy od 11 grudnia 2024 r., Meta-Llama-3.3-70B-Instruct zastępuje obsługę Meta-Llama-3.1-70B-Instruct w podstawowych modelach API na punktach końcowych płatności za token.
Ważne
Meta Llama 3.3 jest licencjonowany w ramach licencji LLAMA 3.3 Community License, © Copyright Meta Platforms, Inc. Wszelkie prawa zastrzeżone. Klienci są odpowiedzialni za zapewnienie zgodności z postanowieniami niniejszej licencji oraz zasadami Llama 3.3 Akceptowalne użycie.
Meta Llama 3.1 jest licencjonowany na licencję społeczności LLAMA 3.1, Copyright © Meta Platform, Inc. Wszelkie prawa zastrzeżone. Klienci są odpowiedzialni za zapewnienie zgodności z odpowiednimi licencjami modelu.
Model | Udostępniono przy użyciu funkcji obsługi modelu | Uwagi |
---|---|---|
Meta-Llama-3.3-70B-Instruct | Podstawowe interfejsy API modelu | Obsługiwane w przypadku obciążeń z płatnością za token i aprowizowaną przepływnością. |
Meta-Llama-3.1-405B-Poinstruowanie | Podstawowe interfejsy API modelu | Obsługiwane w przypadku obciążeń z płatnością za token i aprowizowaną przepływnością. |
Meta-Llama-3.1-8B-Poinstruowanie | Podstawowe interfejsy API modelu | Obsługiwane tylko w przypadku obciążeń aprowizowanej przepływności. |
gpt-4o | Modele zewnętrzne | |
gpt-4o-2024-08-06 | Modele zewnętrzne | |
gpt-4o-2024-05-13 | Modele zewnętrzne | |
gpt-4o-mini | Modele zewnętrzne | |
claude-3-5-sonnet-latest | Modele zewnętrzne | Dostawca modelu antropotycznego |
claude-3-5-haiku-latest | Modele zewnętrzne | Dostawca modelu antropotycznego |
claude-3-5-opus-latest | Modele zewnętrzne | Dostawca modelu antropotycznego |
claude-3-5-sonnet-20241022 | Modele zewnętrzne | Dostawca modelu antropicznego. Ten model obsługuje wywoływanie narzędzi przy użyciu Computer Use (beta). |
claude-3-5-haiku-20241022 | Modele zewnętrzne | Dostawca modelu antropotycznego |
claude-3-5-sonnet-20240620 | Modele zewnętrzne | Dostawca modelu antropotycznego |
claude-3-haiku-20240307 | Modele zewnętrzne | Dostawca modelu antropotycznego |
claude-3-opus-20240229 | Modele zewnętrzne | Dostawca modelu antropotycznego |
claude-3-sonnet-20240229 | Modele zewnętrzne | Dostawca modelu antropotycznego |
claude-3-5-sonnet-20241022-v2:0 | Modele zewnętrzne | Dostawca modeli Bedrock Anthropic. Ten model obsługuje wywoływanie narzędzi przy użyciu Computer Use (beta). |
claude-3-5-haiku-20241022-v1:0 | Modele zewnętrzne | Dostawca modelu antropicznego Bedrock |
claude-3-5-sonnet-20240620-v1:0 | Modele zewnętrzne | Dostawca modelu antropicznego Bedrock |
claude-3-sonnet-20240229-v1:0 | Modele zewnętrzne | Dostawca modelu antropicznego Bedrock |
claude-3-opus-20240229-v1:0 | Modele zewnętrzne | Dostawca modelu antropicznego Bedrock |
Używanie wywoływania funkcji
Aby używać wywoływania funkcji z aplikacją generowania sztucznej inteligencji, należy podać funkcję parameters
i .description
Domyślne zachowanie dla elementu tool_choice
to "auto"
. Dzięki temu model może zdecydować, które funkcje mają być wywoływane i czy mają być wywoływane.
Możesz dostosować domyślne zachowanie w zależności od przypadku użycia. Dostępne są następujące opcje:
- Ustaw
tool_choice: "required"
. W tym scenariuszu model zawsze wywołuje jedną lub więcej funkcji. Model wybiera funkcję lub funkcje do wywołania. - Ustaw
tool_choice: {"type": "function", "function": {"name": "my_function"}}
. W tym scenariuszu model wywołuje tylko określoną funkcję. - Ustaw
tool_choice: "none"
, aby wyłączyć wywoływanie funkcji i umożliwić modelowi generowanie komunikatu dla użytkownika.
Poniżej przedstawiono pojedynczy przykład użycia zestawu OpenAI SDK i jego parametru tools
. Aby uzyskać dodatkowe informacje o składni, zobacz Zadanie czatu.
Ważne
W publicznej wersji zapoznawczej funkcja wywołująca usługę Databricks jest zoptymalizowana pod kątem wywoływania funkcji jednokrotnych.
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))
Ten parametr obsługuje również Computer Use (beta) dla modeli dostarczanych przez Anthropic i Amazon Bedrock for Anthropic. W przypadku narzędzi specyficznych dla środowiska antropicznego, w tym użycia komputera, użyj następującej składni, aby wywołać narzędzie:
"tools": [
{
"type": # Specify tool type here,
"function": {
# Required parameters for the tool type
}
}
]
Schemat JSON
Interfejsy API modelu foundation zasadniczo obsługują definicje funkcji akceptowane przez interfejs OpenAI. Jednak użycie prostszego schematu JSON dla definicji wywołań funkcji powoduje generowanie JSON o wyższej jakości wywołania funkcji. Aby podwyższyć jakość tworzenia, interfejsy API modelu podstawowego obsługują tylko podzestaw specyfikacji schematu JSON .
Następujące klucze definicji wywołań funkcji nie są obsługiwane:
- Wyrażenia regularne używające polecenia
pattern
. - Złożone zagnieżdżanie lub komponowanie schematów i ich walidacja przy użyciu:
anyOf
,oneOf
,allOf
,prefixItems
lub$ref
. - Listy typów z wyjątkiem specjalnego przypadku
[type, “null”]
, w którym jeden typ na liście jest prawidłowym typem JSON, a drugi jest"null"
Ponadto obowiązują następujące ograniczenia:
- Maksymalna liczba kluczy określonych w schemacie JSON wynosi
16
. - Interfejsy API modelu foundation nie wymuszają ograniczeń dotyczących długości ani rozmiaru obiektów i tablic.
- Obejmuje to słowa kluczowe, takie jak
maxProperties
,minProperties
imaxLength
.
- Obejmuje to słowa kluczowe, takie jak
- Silnie zagnieżdżone schematy JSON powodują generowanie niższej jakości. Jeśli to możliwe, spróbuj spłaszczać schemat JSON, aby uzyskać lepsze wyniki.
Użycie tokenu
Wstrzyknięcie monitu i inne techniki są używane w celu zwiększenia jakości wywołań narzędzi. Ma to wpływ na liczbę tokenów wejściowych i wyjściowych używanych przez model, co z kolei powoduje implikacje dotyczące rozliczeń. Tym więcej używanych narzędzi zwiększa liczbę tokenów wejściowych.
Ograniczenia
Poniżej przedstawiono ograniczenia dotyczące wywoływania funkcji w publicznej wersji zapoznawczej:
- Bieżące rozwiązanie wywołujące funkcję jest zoptymalizowane pod kątem wywołań funkcji jednokrotnych. Wywoływanie funkcji z wieloma zwrotami jest obsługiwane w wersji zapoznawczej, ale jest w trakcie opracowywania.
- Wywołania funkcji równoległych nie są obsługiwane.
- Maksymalna liczba funkcji, które można zdefiniować w programie
tools
, to 32 funkcje. - W przypadku obsługi aprowizowanej przepływności wywoływanie funkcji jest obsługiwane tylko w nowych punktach końcowych. Nie można dodać wywołania funkcji do wcześniej utworzonych punktów końcowych.
Przykład notesu
Zapoznaj się z poniższym notesem, aby uzyskać szczegółowe przykłady wywołań funkcji