Wywoływanie funkcji w usłudze Azure Databricks
Ważne
Ta funkcja jest dostępna w publicznej wersji zapoznawczej i jest obsługiwana w obu interfejsach API modelu foundation pay-per-token lub aprowizowanych punktach końcowych przepływności.
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 technologią OpenAI i jest dostępne tylko podczas obsługi modelu jako części interfejsów API modelu foundation.
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. W przypadku używania wywołania funkcji opisano funkcje w wywołaniu interfejsu API, opisując argumenty funkcji przy użyciu 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 ciągów, który jest zgodny ze 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
Ważne
DBRX jest udostępniany w ramach licencji Databricks Open Model License, Copyright © Databricks, Inc. Wszelkie prawa zastrzeżone. Klienci są odpowiedzialni za zapewnienie zgodności z odpowiednimi licencjami modeli, w tym zasadami akceptowalnego użycia usługi Databricks.
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.
Wywołanie funkcji w usłudze Databricks obsługuje następujące modele interfejsów API modelu foundation w przypadku obciążeń z płatnością za token i aprowizowanej przepływności:
Zobacz Podstawowe limity interfejsów API modelu, aby uzyskać dostępność regionów .
Wywołanie funkcji w usłudze Databricks obsługuje następujące elementy tylko w przypadku obciążeń aprowizowanej przepływności:
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 wartość
tool_choice: "required"
. W tym scenariuszu model zawsze wywołuje jedną lub więcej funkcji. Model wybiera funkcję lub funkcje do wywołania. - Ustaw wartość
tool_choice: {"type": "function", "function": {"name": "my_function"}}
. W tym scenariuszu model wywołuje tylko określoną funkcję. - Ustaw
tool_choice: "none"
opcję wyłączania wywoływania funkcji i model generuje tylko komunikat dostępny 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-1-70b-instruct",
messages=messages,
tools=tools,
tool_choice="auto",
)
print(json.dumps(response.choices[0].message.model_dump()['tool_calls'], indent=2))
Schemat systemu 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ść generowania, interfejsy API modelu foundation 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żone lub skład schematu i 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 to
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 spowodują 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.
- Modele DBRX Poinstruuj i Meta Llama 3.1 8B Poinstruuj nie obsługują wywołań funkcji wieloeściowych.
- 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