Udostępnij za pośrednictwem


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:

  1. Wywołaj model przy użyciu przesłanego zapytania i zestawu funkcji zdefiniowanych w parametrze tools.
  2. Model decyduje, czy wywołać zdefiniowane funkcje. Po wywołaniu funkcji zawartość jest obiektem JSON zawierającym ciągi, zgodnym z twoim schematem niestandardowym.
  3. Przeanalizuj ciągi w formacie JSON w kodzie i wywołaj funkcję przy użyciu podanych argumentów, jeśli istnieją.
  4. 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) lub current_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.

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, prefixItemslub $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, minPropertiesi maxLength.
  • 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

Przykładowy notes wywoływania funkcji

Zdobądź notes