Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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 Databricks jest kompatybilne z OpenAI i jest dostępne wyłącznie podczas serwowania modelu w ramach interfejsów API Foundation Model oraz punktów końcowych obsługujących 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 wywołania interfejsu API o nazwie
get_customers(min_revenue: int, created_before: string, limit: int)
i jego użycie.
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. Zobacz Odpowiednie licencje dla deweloperów modeli i postanowienia dotyczące tych modeli.
- Aby uzyskać informacje o modelach udostępnianych przez interfejsy API modelu bazowego, zobacz limity interfejsów API modelu bazowego dla dostępności regionalnej.
- 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.
Model | Udostępniono przy użyciu funkcji obsługi modelu | Uwagi |
---|---|---|
Claude-3.7-Sonnet | API modeli bazowych | Obsługiwane w punktach końcowych płatności za token. |
Meta-Llama-3.3-70B-Instruct | API modeli bazowych | Wspierane przy obciążeniach z płatnością za token i zagwarantowaną przepustowością. |
Meta-Llama-3.1-405B-Instruct | API modeli bazowych | Wspierane przy obciążeniach z płatnością za token i zagwarantowaną przepustowością. |
Meta-Llama-3.1-8B-Instruct | API modeli bazowych | Wspierane przy obciążeniach z płatnością za token i zagwarantowaną przepustowoś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-najnowszy | 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 w aplikacji generatywnej 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 pakietu SDK OpenAI i jego parametru tools
. Aby uzyskać dodatkowe informacje o składni, zobacz Zadanie czatu.
Ważne
Podczas publicznej wersji zapoznawczej wywoływanie funkcji na Databricks jest zoptymalizowane pod kątem wywoływania funkcji w trybie pojedynczym obrocie.
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ż używanie komputera (beta) dla modeli Claude'a.
Schemat JSON
API modelu bazowego zasadniczo obsługują definicje funkcji akceptowane przez 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
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
Technika wstrzykiwania danych wejściowych oraz inne metody są używane w celu poprawy 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ń. Im więcej narzędzi używasz, tym bardziej zwiększa się liczba tokenów wejściowych.
Ograniczenia
Poniżej przedstawiono ograniczenia dotyczące wywoływania funkcji w publicznej wersji zapoznawczej:
- Bieżące rozwiązanie do wywoływania funkcji jest zoptymalizowane pod kątem jednoliniowych wywołań funkcji. Wywoływanie funkcji w wielu etapach jest obsługiwane podczas wersji zapoznawczej, ale nadal znajduje się w fazie rozwoju.
- 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 przepływności aprowizowanej wywoływanie funkcji jest obsługiwane tylko na nowych punktach końcowych. Nie można dodać wywołania funkcji do wcześniej utworzonych punktów końcowych.
Przykład notatnika
Zapoznaj się z poniższym notesem, aby uzyskać szczegółowe przykłady wywołań funkcji